util: Implement and use get_var helper instead of manually decoding variables

This commit is contained in:
Tomas Babej 2017-01-08 18:58:14 +01:00
parent bbdf73fe22
commit 61d0d89be9
5 changed files with 28 additions and 16 deletions

View file

@ -56,9 +56,9 @@ class TaskCache(object):
def __init__(self):
# Determine defaults
default_rc = vim.vars.get('taskwiki_taskrc_location') or '~/.taskrc'
default_data = vim.vars.get('taskwiki_data_location') or None
extra_warrior_defs = vim.vars.get('taskwiki_extra_warriors', {})
default_rc = util.get_var('taskwiki_taskrc_location') or '~/.taskrc'
default_data = util.get_var('taskwiki_data_location') or None
extra_warrior_defs = util.get_var('taskwiki_extra_warriors', {})
# Handle bytes (vim returnes bytes for Python3)
if six.PY3:

View file

@ -315,7 +315,7 @@ class Meta(object):
}
# If tw support is enabled, try to find definition in TW first
if vim.vars.get('taskwiki_source_tw_colors'):
if util.get_var('taskwiki_source_tw_colors'):
tw = cache.get_relevant_tw()
@ -422,11 +422,11 @@ class CallbackSplitMixin(object):
# Remap <CR> to calling the callback and wiping the buffer
vim.command(
"nnoremap <silent> <buffer> <enter> :"
+ util.decode_bytes(vim.vars['taskwiki_py']) +
+ util.get_var('taskwiki_py') +
"callback = {0}('');".format(self.__class__.__name__) +
"orig_dict, selected_dict = pickle.loads("
"base64.decodestring("
"six.b(util.decode_bytes(vim.current.buffer.vars['taskwiki_callback'])))); "
"six.b(util.get_var('taskwiki_callback')))); "
"callback.__dict__.update(orig_dict);"
"callback.selected.__dict__ = selected_dict;"
"callback.callback(); "

View file

@ -1,6 +1,5 @@
import vim
from taskwiki import constants
from taskwiki import util
class TaskSorter(object):
def __init__(self, cache, tasks, sortstring=None):
@ -8,7 +7,7 @@ class TaskSorter(object):
self.tasks = tasks
self.sortstring = (
sortstring or
vim.vars.get('taskwiki_sort_default') or
util.get_var('taskwiki_sort_default') or
constants.DEFAULT_SORT_ORDER
) + ',line_number+'

View file

@ -237,16 +237,16 @@ def show_in_split(lines, size=None, position="belowright", vertical=False,
size = max([len(strip_ansi_escape_sequence(l)) for l in lines]) + 1
# If absolute maximum width was set, do not exceed it
if vim.vars.get('taskwiki_split_max_width'):
size = min(size, vim.vars.get('taskwiki_split_max_width'))
if get_var('taskwiki_split_max_width'):
size = min(size, get_var('taskwiki_split_max_width'))
else:
# Number of lines
size = len(lines)
# If absolute maximum height was set, do not exceed it
if vim.vars.get('taskwiki_split_max_height'):
size = min(size, vim.vars.get('taskwiki_split_max_height'))
if get_var('taskwiki_split_max_height'):
size = min(size, get_var('taskwiki_split_max_height'))
# Set cursorline in the window
cursorline_activated_in_window = None
@ -294,7 +294,7 @@ def show_in_split(lines, size=None, position="belowright", vertical=False,
# Remove cursorline in original window if it was this split which set it
if cursorline_activated_in_window is not None:
vim.command("au BufLeave,BufDelete,BufWipeout <buffer> "
+ decode_bytes(vim.vars['taskwiki_py']) +
+ get_var('taskwiki_py') +
" vim.windows[{0}].options['cursorline']=False"
.format(cursorline_activated_in_window))
@ -407,3 +407,16 @@ def decode_bytes(var):
}
return var
def get_var(name, default=None):
"""
Provide a layer for getting a variable value out of vim, consistent over
vim+py22/vim+py3/neovim combinations.
"""
value = vim.vars.get(name)
if value is None:
return default
else:
return decode_bytes(value)

View file

@ -52,7 +52,7 @@ class ViewPort(object):
self.tasks = set()
self.sort = (
sort or
vim.vars.get('taskwiki_sort_order') or
util.get_var('taskwiki_sort_order') or
constants.DEFAULT_SORT_ORDER
)
@ -217,7 +217,7 @@ class ViewPort(object):
tw = cache.warriors[match.group('source') or 'default']
sort_id = match.group('sort')
sorts_configured = vim.vars.get('taskwiki_sort_orders', {})
sorts_configured = util.get_var('taskwiki_sort_orders', {})
sortstring = None