UltiSnips/test/test_Visual.py
Zhong Liu f4304d59cc fix bug when vim option 'selection' is 'exclusive' (#883)
here is a vim option ``selection``.
if the value is `exclusive`, the mark `'>` is one more then real visual selection.
so var `ebyte` or `ec` must subtract 1.

and that is not a windows bug.
because gvim on windows sourced `$VIMRUNTIME\mswin.vim` by default.
the line 17 of `mswin.vim` execute `:behave mswin` will change option `selection` to `exclusive`.

more deailt in issue #863
2018-04-11 10:19:45 +02:00

212 lines
7.2 KiB
Python

from test.vim_test_case import VimTestCase as _VimTest
from test.constant import *
class Visual_NoVisualSelection_Ignore(_VimTest):
snippets = ('test', 'h${VISUAL}b')
keys = 'test' + EX + 'abc'
wanted = 'hbabc'
class Visual_SelectOneWord(_VimTest):
snippets = ('test', 'h${VISUAL}b')
keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX
wanted = 'hblablubb'
class Visual_SelectOneWordInclusive(_VimTest):
snippets = ('test', 'h${VISUAL}b', '', 'i')
keys = 'xxxyyyyxxx' + ESC + '4|vlll' + EX + 'test' + EX
wanted = 'xxxhyyyybxxx'
class Visual_SelectOneWordExclusive(_VimTest):
snippets = ('test', 'h${VISUAL}b', '', 'i')
keys = 'xxxyyyyxxx' + ESC + '4|vlll' + EX + 'test' + EX
wanted = 'xxxhyyybyxxx'
def _extra_vim_config(self, vim_config):
vim_config.append('set selection=exclusive')
class Visual_SelectOneWord_ProblemAfterTab(_VimTest):
snippets = ('test', 'h${VISUAL}b', '', 'i')
keys = '\tblablub' + ESC + '5hv3l' + EX + 'test' + EX
wanted = '\tbhlablbub'
class VisualWithDefault_ExpandWithoutVisual(_VimTest):
snippets = ('test', 'h${VISUAL:world}b')
keys = 'test' + EX + 'hi'
wanted = 'hworldbhi'
class VisualWithDefaultWithSlashes_ExpandWithoutVisual(_VimTest):
snippets = ('test', r"h${VISUAL:\/\/ body}b")
keys = 'test' + EX + 'hi'
wanted = 'h// bodybhi'
class VisualWithDefault_ExpandWithVisual(_VimTest):
snippets = ('test', 'h${VISUAL:world}b')
keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX
wanted = 'hblablubb'
class Visual_ExpandTwice(_VimTest):
snippets = ('test', 'h${VISUAL}b')
keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + '\ntest' + EX
wanted = 'hblablubb\nhb'
class Visual_SelectOneWord_TwiceVisual(_VimTest):
snippets = ('test', 'h${VISUAL}b${VISUAL}a')
keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX
wanted = 'hblablubbblabluba'
class Visual_SelectOneWord_Inword(_VimTest):
snippets = ('test', 'h${VISUAL}b', 'Description', 'i')
keys = 'blablub' + ESC + '0lv4l' + EX + 'test' + EX
wanted = 'bhlablubb'
class Visual_SelectOneWord_TillEndOfLine(_VimTest):
snippets = ('test', 'h${VISUAL}b', 'Description', 'i')
keys = 'blablub' + ESC + '0v$' + EX + 'test' + EX + ESC + 'o'
wanted = 'hblablub\nb'
class Visual_SelectOneWordWithTabstop_TillEndOfLine(_VimTest):
snippets = ('test', 'h${2:ahh}${VISUAL}${1:ups}b', 'Description', 'i')
keys = 'blablub' + ESC + '0v$' + EX + 'test' + \
EX + 'mmm' + JF + 'n' + JF + 'done' + ESC + 'o'
wanted = 'hnblablub\nmmmbdone'
class Visual_InDefaultText_SelectOneWord_NoOverwrite(_VimTest):
snippets = ('test', 'h${1:${VISUAL}}b')
keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + JF + 'hello'
wanted = 'hblablubbhello'
class Visual_InDefaultText_SelectOneWord(_VimTest):
snippets = ('test', 'h${1:${VISUAL}}b')
keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX + 'hello'
wanted = 'hhellob'
class Visual_CrossOneLine(_VimTest):
snippets = ('test', 'h${VISUAL}b')
keys = 'bla blub\n helloi' + ESC + '0k4lvjll' + EX + 'test' + EX
wanted = 'bla hblub\n hellobi'
class Visual_LineSelect_Simple(_VimTest):
snippets = ('test', 'h${VISUAL}b')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX
wanted = 'hhello\n nice\n worldb'
class Visual_InDefaultText_LineSelect_NoOverwrite(_VimTest):
snippets = ('test', 'h${1:bef${VISUAL}aft}b')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi'
wanted = 'hbefhello\n nice\n worldaftbhi'
class Visual_InDefaultText_LineSelect_Overwrite(_VimTest):
snippets = ('test', 'h${1:bef${VISUAL}aft}b')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + \
EX + 'test' + EX + 'jup' + JF + 'hi'
wanted = 'hjupbhi'
class Visual_LineSelect_CheckIndentSimple(_VimTest):
snippets = ('test', 'beg\n\t${VISUAL}\nend')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX
wanted = 'beg\n\thello\n\tnice\n\tworld\nend'
class Visual_LineSelect_CheckIndentTwice(_VimTest):
snippets = ('test', 'beg\n\t${VISUAL}\nend')
keys = ' hello\n nice\n\tworld' + ESC + 'Vkk' + EX + 'test' + EX
wanted = 'beg\n\t hello\n\t nice\n\t\tworld\nend'
class Visual_InDefaultText_IndentSpacesToTabstop_NoOverwrite(_VimTest):
snippets = ('test', 'h${1:beforea${VISUAL}aft}b')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi'
wanted = 'hbeforeahello\n\tnice\n\tworldaftbhi'
class Visual_InDefaultText_IndentSpacesToTabstop_Overwrite(_VimTest):
snippets = ('test', 'h${1:beforea${VISUAL}aft}b')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + \
EX + 'test' + EX + 'ups' + JF + 'hi'
wanted = 'hupsbhi'
class Visual_InDefaultText_IndentSpacesToTabstop_NoOverwrite1(_VimTest):
snippets = ('test', 'h${1:beforeaaa${VISUAL}aft}b')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi'
wanted = 'hbeforeaaahello\n\t nice\n\t worldaftbhi'
class Visual_InDefaultText_IndentBeforeTabstop_NoOverwrite(_VimTest):
snippets = ('test', 'hello\n\t ${1:${VISUAL}}\nend')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi'
wanted = 'hello\n\t hello\n\t nice\n\t world\nendhi'
class Visual_LineSelect_WithTabStop(_VimTest):
snippets = ('test', 'beg\n\t${VISUAL}\n\t${1:here_we_go}\nend')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + \
EX + 'test' + EX + 'super' + JF + 'done'
wanted = 'beg\n\thello\n\tnice\n\tworld\n\tsuper\nenddone'
class Visual_LineSelect_CheckIndentWithTS_NoOverwrite(_VimTest):
snippets = ('test', 'beg\n\t${0:${VISUAL}}\nend')
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX
wanted = 'beg\n\thello\n\tnice\n\tworld\nend'
class Visual_LineSelect_DedentLine(_VimTest):
snippets = ('if', 'if {\n\t${VISUAL}$0\n}')
keys = 'if' + EX + 'one\n\ttwo\n\tthree' + ESC + \
ARR_U * 2 + 'V' + ARR_D + EX + '\tif' + EX
wanted = 'if {\n\tif {\n\t\tone\n\t\ttwo\n\t}\n\tthree\n}'
class VisualTransformation_SelectOneWord(_VimTest):
snippets = ('test', r"h${VISUAL/./\U$0\E/g}b")
keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX
wanted = 'hBLABLUBb'
class VisualTransformationWithDefault_ExpandWithoutVisual(_VimTest):
snippets = ('test', r"h${VISUAL:world/./\U$0\E/g}b")
keys = 'test' + EX + 'hi'
wanted = 'hWORLDbhi'
class VisualTransformationWithDefault_ExpandWithVisual(_VimTest):
snippets = ('test', r"h${VISUAL:world/./\U$0\E/g}b")
keys = 'blablub' + ESC + '0v6l' + EX + 'test' + EX
wanted = 'hBLABLUBb'
class VisualTransformation_LineSelect_Simple(_VimTest):
snippets = ('test', r"h${VISUAL/./\U$0\E/g}b")
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX
wanted = 'hHELLO\n NICE\n WORLDb'
class VisualTransformation_InDefaultText_LineSelect_NoOverwrite(_VimTest):
snippets = ('test', r"h${1:bef${VISUAL/./\U$0\E/g}aft}b")
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + EX + 'test' + EX + JF + 'hi'
wanted = 'hbefHELLO\n NICE\n WORLDaftbhi'
class VisualTransformation_InDefaultText_LineSelect_Overwrite(_VimTest):
snippets = ('test', r"h${1:bef${VISUAL/./\U$0\E/g}aft}b")
keys = 'hello\nnice\nworld' + ESC + 'Vkk' + \
EX + 'test' + EX + 'jup' + JF + 'hi'
wanted = 'hjupbhi'