Merge pull request #643 from dNItro/master

Add support to do transformation on multiple lines
This commit is contained in:
Stanislav Seletskiy 2016-01-27 15:45:13 +05:00
commit 0657e61e61
3 changed files with 15 additions and 0 deletions

View File

@ -1235,6 +1235,13 @@ The options can be any combination of >
i - case insensitive
By default, regular expression matching is case sensitive. With this
option, matching is done without regard to case.
m - multiline
By default, the '^' and '$' special characters only apply to the
start and end of the entire string; so if you select multiple lines,
transformations are made on them entirely as a whole single line
string. With this option, '^' and '$' special characters match the
start or end of any line within a string ( separated by newline
character - '\n' ).
a - ascii conversion
By default, transformation are made on the raw utf-8 string. With
this option, matching is done on the corresponding ASCII string

View File

@ -124,6 +124,8 @@ class TextObjectTransformation(object):
self._match_this_many = 0
if 'i' in token.options:
flags |= re.IGNORECASE
if 'm' in token.options:
flags |= re.MULTILINE
if 'a' in token.options:
self._convert_to_ascii = True

View File

@ -179,6 +179,12 @@ class Transformation_OptionIgnoreCase_ECR(_VimTest):
wanted = 'TEST blah'
class Transformation_OptionMultiline_ECR(_VimTest):
snippets = ('test', r"${VISUAL/^/* /mg}")
keys = 'test\ntest\ntest' + ESC + 'V2k' + EX + 'test' + EX
wanted = '* test\n* test\n* test'
class Transformation_OptionReplaceGlobal_ECR(_VimTest):
snippets = ('test', r"$1 ${1/, */-/g}")
keys = 'test' + EX + 'a, nice, building'