tabstops can be overwritten from interpolation

It adds new type of flexibility, where just entered text can be
dynamically modified if some conditions are satisfied (e.g. dynamically
add line wraps).
This commit is contained in:
Stanislav Seletskiy 2016-03-28 12:21:09 +06:00
parent a514585cde
commit 7536ac9002
2 changed files with 19 additions and 0 deletions

View File

@ -28,6 +28,14 @@ class _Tabs(object):
return ''
return ts.current_text
def __setitem__(self, no, value):
ts = self._to._get_tabstop(
self._to,
int(no)) # pylint:disable=protected-access
if ts is None:
return
ts.overwrite(value)
_VisualContent = namedtuple('_VisualContent', ['mode', 'text'])

View File

@ -429,6 +429,17 @@ class PythonCode_AccessKilledTabstop_OverwriteFirst(_VimTest):
keys = 'test' + EX + 'aaa'
wanted = 'aaa'
class PythonCode_CanOverwriteTabstop(_VimTest):
snippets = (
'test',
"""$1`!p if len(t[1]) > 3 and len(t[2]) == 0:
t[2] = t[1][2:];
t[1] = t[1][:2] + '-\\n\\t';
vim.command('call feedkeys("\<End>", "n")');
`$2""")
keys = 'test' + EX + 'blah' + ', bah'
wanted = "bl-\n\tah, bah"
class PythonVisual_NoVisualSelection_Ignore(_VimTest):
snippets = ('test', 'h`!p snip.rv = snip.v.mode + snip.v.text`b')