199 lines
4.4 KiB
Python
199 lines
4.4 KiB
Python
|
from test.constant import *
|
||
|
from test.vim_test_case import VimTestCase as _VimTest
|
||
|
|
||
|
|
||
|
class ContextSnippets_SimpleSnippet(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
snippet a "desc" "True" e
|
||
|
abc
|
||
|
endsnippet
|
||
|
"""}
|
||
|
keys = 'a' + EX
|
||
|
wanted = 'abc'
|
||
|
|
||
|
class ContextSnippets_ExpandOnTrue(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
global !p
|
||
|
def check_context():
|
||
|
return True
|
||
|
endglobal
|
||
|
|
||
|
snippet a "desc" "check_context()" e
|
||
|
abc
|
||
|
endsnippet
|
||
|
"""}
|
||
|
keys = 'a' + EX
|
||
|
wanted = 'abc'
|
||
|
|
||
|
|
||
|
class ContextSnippets_DoNotExpandOnFalse(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
global !p
|
||
|
def check_context():
|
||
|
return False
|
||
|
endglobal
|
||
|
|
||
|
snippet a "desc" "check_context()" e
|
||
|
abc
|
||
|
endsnippet
|
||
|
"""}
|
||
|
keys = 'a' + EX
|
||
|
wanted = keys
|
||
|
|
||
|
|
||
|
class ContextSnippets_UseContext(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
global !p
|
||
|
def wrap(ins):
|
||
|
return "< " + ins + " >"
|
||
|
endglobal
|
||
|
|
||
|
snippet a "desc" "wrap(snip.buffer[snip.line])" e
|
||
|
{ `!p snip.rv = context` }
|
||
|
endsnippet
|
||
|
"""}
|
||
|
keys = 'a' + EX
|
||
|
wanted = '{ < a > }'
|
||
|
|
||
|
|
||
|
class ContextSnippets_SnippetPriority(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
snippet i "desc" "re.search('err :=', snip.buffer[snip.line-1])" e
|
||
|
if err != nil {
|
||
|
${1:// pass}
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet i
|
||
|
if ${1:true} {
|
||
|
${2:// pass}
|
||
|
}
|
||
|
endsnippet
|
||
|
"""}
|
||
|
|
||
|
keys = r"""
|
||
|
err := some_call()
|
||
|
i""" + EX + JF + """
|
||
|
i""" + EX
|
||
|
wanted = r"""
|
||
|
err := some_call()
|
||
|
if err != nil {
|
||
|
// pass
|
||
|
}
|
||
|
if true {
|
||
|
// pass
|
||
|
}"""
|
||
|
|
||
|
|
||
|
class ContextSnippets_PriorityKeyword(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
snippet i "desc" "True" e
|
||
|
a
|
||
|
endsnippet
|
||
|
|
||
|
priority 100
|
||
|
snippet i
|
||
|
b
|
||
|
endsnippet
|
||
|
"""}
|
||
|
|
||
|
keys = 'i' + EX
|
||
|
wanted = 'b'
|
||
|
|
||
|
|
||
|
class ContextSnippets_ReportError(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
snippet e "desc" "Tru" e
|
||
|
error
|
||
|
endsnippet
|
||
|
"""}
|
||
|
|
||
|
keys = 'e' + EX
|
||
|
wanted = 'e' + EX
|
||
|
expected_error = r"NameError: name 'Tru' is not defined"
|
||
|
|
||
|
|
||
|
class ContextSnippets_ReportErrorOnIndexOutOfRange(_VimTest):
|
||
|
# Working around: https://github.com/neovim/python-client/issues/128.
|
||
|
skip_if = lambda self: 'Bug in Neovim.' \
|
||
|
if self.vim_flavor == 'neovim' else None
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
snippet e "desc" "snip.buffer[123]" e
|
||
|
error
|
||
|
endsnippet
|
||
|
"""}
|
||
|
|
||
|
keys = 'e' + EX
|
||
|
wanted = 'e' + EX
|
||
|
expected_error = r"IndexError: line number out of range"
|
||
|
|
||
|
|
||
|
class ContextSnippets_CursorIsZeroBased(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
snippet e "desc" "snip.cursor" e
|
||
|
`!p snip.rv = str(snip.context)`
|
||
|
endsnippet
|
||
|
"""}
|
||
|
|
||
|
keys = "e" + EX
|
||
|
wanted = "(2, 1)"
|
||
|
|
||
|
|
||
|
class ContextSnippets_ContextIsClearedBeforeExpand(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
pre_expand "snip.context = 1 if snip.context is None else 2"
|
||
|
snippet e "desc" w
|
||
|
`!p snip.rv = str(snip.context)`
|
||
|
endsnippet
|
||
|
"""}
|
||
|
|
||
|
keys = "e" + EX + " " + "e" + EX
|
||
|
wanted = "1 1"
|
||
|
|
||
|
class ContextSnippets_ContextHasAccessToVisual(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
snippet test "desc" "snip.visual_text == '123'" we
|
||
|
Yes
|
||
|
endsnippet
|
||
|
|
||
|
snippet test "desc" w
|
||
|
No
|
||
|
endsnippet
|
||
|
"""}
|
||
|
|
||
|
keys = "123" + ESC + "vhh" + EX + "test" + EX + " zzz" + ESC + \
|
||
|
"vhh" + EX + "test" + EX
|
||
|
wanted = "Yes No"
|
||
|
|
||
|
|
||
|
class ContextSnippets_Header_ExpandOnTrue(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
global !p
|
||
|
def check_context():
|
||
|
return True
|
||
|
endglobal
|
||
|
|
||
|
context "check_context()"
|
||
|
snippet a "desc" e
|
||
|
abc
|
||
|
endsnippet
|
||
|
"""}
|
||
|
keys = 'a' + EX
|
||
|
wanted = 'abc'
|
||
|
|
||
|
|
||
|
class ContextSnippets_Header_DoNotExpandOnFalse(_VimTest):
|
||
|
files = { 'us/all.snippets': r"""
|
||
|
global !p
|
||
|
def check_context():
|
||
|
return False
|
||
|
endglobal
|
||
|
|
||
|
context "check_context()"
|
||
|
snippet a "desc" e
|
||
|
abc
|
||
|
endsnippet
|
||
|
"""}
|
||
|
keys = 'a' + EX
|
||
|
wanted = keys
|