mirror of
https://github.com/tbabej/taskwiki.git
synced 2025-08-23 02:23:07 +02:00
CallbackSplitMixin: Result to rather hackish approach to pickling SelectedTasks due to py2/py3/nvim differences
This commit is contained in:
parent
590749d1aa
commit
fa40752ceb
1 changed files with 15 additions and 12 deletions
|
@ -410,22 +410,25 @@ class CallbackSplitMixin(object):
|
|||
|
||||
# We can't save the current instance in vim variable
|
||||
# so save the pickled version
|
||||
if six.PY2:
|
||||
vim.current.buffer.vars['taskwiki_callback'] = pickle.dumps(self)
|
||||
else:
|
||||
vim.current.buffer.vars['taskwiki_callback'] = base64.encodebytes(
|
||||
bytes(pickle.dumps(self))
|
||||
).decode()
|
||||
dump = pickle.dumps((
|
||||
{k:v for k,v in self.__dict__.items() if k != 'selected'},
|
||||
self.selected.__dict__)
|
||||
)
|
||||
|
||||
vim.current.buffer.vars['taskwiki_callback'] = base64.encodestring(
|
||||
bytes(dump)
|
||||
)
|
||||
|
||||
# Remap <CR> to calling the callback and wiping the buffer
|
||||
vim.command(
|
||||
"nnoremap <silent> <buffer> <enter> :"
|
||||
+ vim.vars['taskwiki_py'].decode() +
|
||||
"callback = pickle.loads(" +
|
||||
( "base64.decodebytes("
|
||||
"vim.current.buffer.vars['taskwiki_callback'])); "
|
||||
if six.PY3 else
|
||||
"vim.current.buffer.vars['taskwiki_callback']); " ) +
|
||||
+ util.decode_bytes(vim.vars['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'])))); "
|
||||
"callback.__dict__.update(orig_dict);"
|
||||
"callback.selected.__dict__ = selected_dict;"
|
||||
"callback.callback(); "
|
||||
"vim.command('bwipe') <CR>"
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue