Implement filter option (#16, #17)

This commit implements filter option which can be used to filter lines within
the range based on the given pattern. The value of filter option should be
either `g/pattern/` or `v/pattern/`. The former aligns lines that match the
pattern, the latter aligns lines that do not match the pattern.
This commit is contained in:
Junegunn Choi
2013-10-27 03:10:04 +09:00
parent 1a232ac19b
commit 2832a76cea
4 changed files with 182 additions and 7 deletions

View File

@@ -1343,5 +1343,95 @@ Expect:
a = b = c
aabba = bbbbb
###########################################################
Given (test filter option):
aaa=aaa=aaa
aaaaa=aaaaa=aaaaa
aaaaaaa=aaaaaaa=aaaaaaab
bbbbb=bbbbb=bbbbb
aaa=aaa=aaa
Do (g/a/):
vip\<Enter>
\<C-F>g/a/\<Enter>
*=
Expect:
aaa = aaa = aaa
aaaaa = aaaaa = aaaaa
aaaaaaa = aaaaaaa = aaaaaaab
bbbbb=bbbbb=bbbbb
aaa = aaa = aaa
Do (g/a - you can omit the trailing /):
vip\<Enter>
\<C-F>g/a\<Enter>
*=
Expect:
aaa = aaa = aaa
aaaaa = aaaaa = aaaaa
aaaaaaa = aaaaaaa = aaaaaaab
bbbbb=bbbbb=bbbbb
aaa = aaa = aaa
Do (v/b/):
vip\<Enter>
\<C-F>v/b/\<Enter>
*=
Expect:
aaa = aaa = aaa
aaaaa = aaaaa = aaaaa
aaaaaaa=aaaaaaa=aaaaaaab
bbbbb=bbbbb=bbbbb
aaa = aaa = aaa
Do (invalid filter expression):
vip\<Enter>
\<C-F>haha\<Enter>
*=
Expect:
aaa = aaa = aaa
aaaaa = aaaaa = aaaaa
aaaaaaa = aaaaaaa = aaaaaaab
bbbbb = bbbbb = bbbbb
aaa = aaa = aaa
Execute (g-filter in shorthand notation):
%EasyAlign*=g/a/
Expect:
aaa = aaa = aaa
aaaaa = aaaaa = aaaaa
aaaaaaa = aaaaaaa = aaaaaaab
bbbbb=bbbbb=bbbbb
aaa = aaa = aaa
Execute (v-filter in shorthand notation):
%EasyAlign*=v/b/
Expect:
aaa = aaa = aaa
aaaaa = aaaaa = aaaaa
aaaaaaa=aaaaaaa=aaaaaaab
bbbbb=bbbbb=bbbbb
aaa = aaa = aaa
Execute (filter in dictionary format):
%EasyAlign*={'filter': 'v/b/'}
Expect:
aaa = aaa = aaa
aaaaa = aaaaa = aaaaa
aaaaaaa=aaaaaaa=aaaaaaab
bbbbb=bbbbb=bbbbb
aaa = aaa = aaa
###########################################################
Execute:
Restore