From 3c65e369c20ca153464297e3f9758502dec2383d Mon Sep 17 00:00:00 2001 From: Holger Rapp Date: Wed, 18 Jan 2012 10:23:42 +0100 Subject: [PATCH] All tests pass --- plugin/UltiSnips/TextObjects.py | 12 ++- test.py | 151 ++++++++++++++++---------------- 2 files changed, 86 insertions(+), 77 deletions(-) diff --git a/plugin/UltiSnips/TextObjects.py b/plugin/UltiSnips/TextObjects.py index c9ebe2c..e6dcd58 100644 --- a/plugin/UltiSnips/TextObjects.py +++ b/plugin/UltiSnips/TextObjects.py @@ -16,6 +16,9 @@ from UltiSnips.Lexer import tokenize, EscapeCharToken, VisualToken, \ VimLCodeToken, ShellCodeToken from UltiSnips.Util import IndentUtil +import sys # TODO +sys.setrecursionlimit(100) # TODO + __all__ = [ "Mirror", "Transformation", "SnippetInstance" ] from debug import debug @@ -679,6 +682,8 @@ class Visual(NoneditableTextObject): this will be the empty string """ def __init__(self, parent, token): + # TODO: rework this: get indent directly from vim buffer and + # only update once. # Find our containing snippet for visual_content snippet = parent @@ -694,9 +699,12 @@ class Visual(NoneditableTextObject): NoneditableTextObject.__init__(self, parent, token, initial_text = self._text) - def _do_update(self): - self.current_text = self._text + def _really_updateman(self, done, not_done): + self._replace_text(TextBuffer(self._text)) + self._parent._del_child(self) + return True + # TODO: __repr__ is now basically the same for all elements def __repr__(self): return "Visual(%s -> %s)" % (self._start, self._end) diff --git a/test.py b/test.py index e7a3175..8c857c6 100755 --- a/test.py +++ b/test.py @@ -1458,81 +1458,82 @@ class TransformationUsingBackspaceToDeleteDefaultValue_ECR(_VimTest): keys = "test" + EX + BS wanted = "snip " # End: Transformations #}}} -### ${VISUAL} {{{# -##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_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(_VimTest): -## snippets = ("test", "h${VISUAL}b") -## keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX -## wanted = "hhello\nnice\nworld\nb" -##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\nnice\nworld\naftbhi" -##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_CheckIndent(_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_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" -## -## -## -### End: ${VISUAL} #}}} +# ${VISUAL} {{{# +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_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" + +# TODO: with indent in default text +class Visual_LineSelect(_VimTest): + snippets = ("test", "h${VISUAL}b") + keys = "hello\nnice\nworld" + ESC + "Vkk" + EX + "test" + EX + wanted = "hhello\nnice\nworld\nb" +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\nnice\nworld\naftbhi" +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_CheckIndent(_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_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" + + + +# End: ${VISUAL} #}}} # Recursive (Nested) Snippets {{{# class RecTabStops_SimpleCase_ExceptCorrectResult(_VimTest):