diff --git a/EXAMPLES.md b/EXAMPLES.md index 9178817..08bb0c8 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -23,6 +23,8 @@ function! GFM() \ lang, lang, lang) endfor let b:current_syntax='mkd' + + syntax sync fromstart endfunction ``` diff --git a/autoload/easy_align.vim b/autoload/easy_align.vim index e1d7f52..6ccdc51 100644 --- a/autoload/easy_align.vim +++ b/autoload/easy_align.vim @@ -389,7 +389,7 @@ function! s:parse_args(args) " Poor man's option parser let idx = 0 while 1 - let midx = match(args, '{.*}\s*$', idx) + let midx = match(args, '\s*{.*}\s*$', idx) if midx == -1 | break | endif let cand = strpart(args, midx) @@ -399,6 +399,9 @@ function! s:parse_args(args) let o = eval(cand) if type(o) == 4 let option = o + if args[midx - 1 : midx] == '\ ' + let midx += 1 + endif let args = strpart(args, 0, midx) break endif @@ -471,10 +474,15 @@ function! easy_align#align(just, expr) range if regexp let dict = { 'pattern': ch } else - if ch =~ '^\\\s\+$' - let ch = ' ' - elseif ch =~ '^\\\\\s\+$' - let ch = '\' + " Resolving command-line ambiguity + if !empty(a:expr) + " '\ ' => ' ' + if ch =~ '^\\\s\+$' + let ch = ' ' + " '\\' => '\' + elseif ch =~ '^\\\\\s*$' + let ch = '\' + endif endif if !has_key(delimiters, ch) echon "\rUnknown delimiter key: ". ch diff --git a/test/basic.expected b/test/basic.expected index 461b25a..2013dfb 100644 --- a/test/basic.expected +++ b/test/basic.expected @@ -374,6 +374,11 @@ static std::map* scores = pointer; ``` + Paul<<< McCartney{{{ 1942 +George<<< Harrison {{{ 1943 + Ringo<<< Starr {{{ 1940 + Pete<<< Best {{{ 1941 + Paul McCartney 1942 George Harrison 1943 Ringo Starr 1940 diff --git a/test/basic.script b/test/basic.script index 251130d..3d3f249 100644 --- a/test/basic.script +++ b/test/basic.script @@ -1 +1 @@ -4Gvipjyvip Pvip 2 Pvip * Pvip Pvip 2 Pvip * Pvip ** Pvip - Pvip -2 Pvip -1 Pvip ** 60zzvipjyvip *|Pvip *|Pvip **|80zzvip **|gv 3|vip *|90zzvip *,100zzvipjyvip =Pvip *=Pvip **=Pvip =vip 2=198Gvipjyvip =Pvip -=Pf:jj3E =209Gvip - 214zzvipjyvip #P:let g:easy_align_delimiters = { '#': {'pattern': '#\+', 'ignores': ['String'] } } vip #227zzvip :239zzvip *=vipjyP:let g:easy_align_ignores = [] vip *=:unlet g:easy_align_delimiters :unlet g:easy_align_ignores 4Gvipy4GP7Gojkkvip:EasyAlign /1/{'ml':'{{', 'mr-r':'}}'} vipjyPvip:EasyAlign */../ 263zzvipjygv .Pvip *.Pvip * .Pvip .vip 2.Pvip **.Pvip **.Pvip -.G303zzvip .310zzvipjygv *|Pvip *|Pvip |gv -|gv **|gv *|gv **|jji jjjhi vip ** |339Gpvip:EasyAlign*|{'ml': 5, 'mrr': 0 } 349Gpvip:EasyAlign*/|/{'ml':'<', 'mrr': 4} 362G:let g:easy_align_delimiters = { 'd': { 'pattern': '\s\+\(\S\+\s*[;=]\)\@=', 'left_margin': 0, 'right_margin': 0 } } vip dgv =236GvipjyPvip :377Gvip gv 2 382Gvipjyvip:EasyAlign/-\+/ Pvip:EasyAlign2/-\+/ Pvip:EasyAlign*/-\+/ Pvip:EasyAlign*/-\+/{'da': L} Pvip:EasyAlign/-\+/{'da': c} Pvip:EasyAlign*/-\+/{'delimiter_align':'C'} Pvip:EasyAlign*/-\+/{'da': 'x'} 381Gpvip:EasyAlign/-\+/{'da':r} :let g:easy_align_delimiter_align = 'l' Pvip:EasyAlign/-\+/ Pvip:EasyAlign*/-\+/ :unlet g:easy_align_delimiter_align :let g:easy_align_delimiters['_'] = { 'pattern': '-\+', 'delimiter_align': 'c' } Pvip _Pvip *-vip *_Pvip:EasyAlign*_{'da':l} Pvip:EasyAlign*_ Pvip:EasyAlign*_{'da': 'R'} +4Gvipjyvip Pvip 2 Pvip * Pvip Pvip 2 Pvip * Pvip ** Pvip - Pvip -2 Pvip -1 Pvip ** 60zzvipjyvip *|Pvip *|Pvip **|80zzvip **|gv 3|vip *|90zzvip *,100zzvipjyvip =Pvip *=Pvip **=Pvip =vip 2=198Gvipjyvip =Pvip -=Pf:jj3E =209Gvip - 214zzvipjyvip #P:let g:easy_align_delimiters = { '#': {'pattern': '#\+', 'ignores': ['String'] } } vip #227zzvip :239zzvip *=vipjyP:let g:easy_align_ignores = [] vip *=:unlet g:easy_align_delimiters :unlet g:easy_align_ignores 4Gvipy4GP7Gojkkvip:EasyAlign /1/{'ml':'{{', 'mr-r':'}}'} vipjyPvip:EasyAlign */../ 263zzvipjygv .Pvip *.Pvip * .Pvip .vip 2.Pvip **.Pvip **.Pvip -.G303zzvip .310zzvipjygv *|Pvip *|Pvip |gv -|gv **|gv *|gv **|jji jjjhi vip ** |339Gpvip:EasyAlign*|{'ml': 5, 'mrr': 0 } 349Gpvip:EasyAlign*/|/{'ml':'<', 'mrr': 4} 362G:let g:easy_align_delimiters = { 'd': { 'pattern': '\s\+\(\S\+\s*[;=]\)\@=', 'left_margin': 0, 'right_margin': 0 } } vip dgv =236GvipjyPvip :377Gvip gv 2 382Gvipjyvip:EasyAlign/-\+/ Pvip:EasyAlign2/-\+/ Pvip:EasyAlign*/-\+/ Pvip:EasyAlign*/-\+/{'da': L} Pvip:EasyAlign/-\+/{'da': c} Pvip:EasyAlign*/-\+/{'delimiter_align':'C'} Pvip:EasyAlign*/-\+/{'da': 'x'} 381Gpvip:EasyAlign/-\+/{'da':r} :let g:easy_align_delimiter_align = 'l' Pvip:EasyAlign/-\+/ Pvip:EasyAlign*/-\+/ :unlet g:easy_align_delimiter_align :let g:easy_align_delimiters['\'] = { 'pattern': '-\+', 'delimiter_align': 'c' } Pvip \Pvip *-vip *\Pvip:EasyAlign *\\ {'da':l} Pvip:EasyAlign*\\ Pvip:EasyAlign*\\{'da': 'R'} 377GvipjyPvip:EasyAlign\ {'l': '<<<'} gv:EasyAlign 2 \ {'l': '{{{'} diff --git a/test/include.vim b/test/include.vim index b972fda..2114fd0 100644 --- a/test/include.vim +++ b/test/include.vim @@ -16,6 +16,8 @@ function! GFM() \ lang, lang, lang) endfor let b:current_syntax='mkd' + + syntax sync fromstart endfunction silent! unlet g:easy_align_delimiters @@ -39,5 +41,4 @@ set buftype=nofile silent! ScrollPositionHide call GFM() -syntax sync fromstart