diff --git a/autoload/easy_align.vim b/autoload/easy_align.vim index 4de8f5d..3884662 100644 --- a/autoload/easy_align.vim +++ b/autoload/easy_align.vim @@ -251,8 +251,14 @@ function! s:do_align(just, all_tokens, all_delims, fl, ll, fc, lc, pattern, nth, let delim = delims[nth] let token = s:rtrim( tokens[nth] ) let token = s:rtrim( strpart(token, 0, len(token) - len(s:rtrim(delim))) ) - if empty(delim) && !exists('tokens[nth + 1]') && a:just == 0 && a:ignore_unmatched - continue + if empty(delim) && !exists('tokens[nth + 1]') && a:ignore_unmatched + if a:just == 0 + continue + " Do not ignore on right-justification mode, except when the end of the + " line is highlighted as ignored syntax (e.g. comments or strings). + elseif s:highlighted_as(line, a:fc + len(token) - 1, a:ignores) + continue + endif endif let indent = len(matchstr(tokens[0], '^\s\+')) diff --git a/test/basic.expected b/test/basic.expected index d407b60..7a50062 100644 --- a/test/basic.expected +++ b/test/basic.expected @@ -355,15 +355,15 @@ my_object . |batch_size |Fixnum |nil |number of maximum items to be assigned at once | |logger |Logger |nil |logger instance for debug logs | - | Option <| Type <| Default<| Description <| - | -- <| -- <| -- <| -- <| - | threads <| Fixnum <| 1 <| number of threads in the thread pool <| - | queues <| Fixnum <| 1 <| number of concurrent queues <| - | queue_size<| Fixnum <| 1000 <| size of each queue <| - | interval <| Numeric<| 0 <| dispatcher interval for batch processing <| - | batch <| Boolean<| false <| enables batch processing mode <| - | batch_size<| Fixnum <| nil <| number of maximum items to be assigned at once<| - | logger <| Logger <| nil <| logger instance for debug logs <| + | Option ~| Type ~| Default~| Description ~| + | -- ~| -- ~| -- ~| -- ~| + | threads ~| Fixnum ~| 1 ~| number of threads in the thread pool ~| + | queues ~| Fixnum ~| 1 ~| number of concurrent queues ~| + | queue_size~| Fixnum ~| 1000 ~| size of each queue ~| + | interval ~| Numeric~| 0 ~| dispatcher interval for batch processing ~| + | batch ~| Boolean~| false ~| enables batch processing mode ~| + | batch_size~| Fixnum ~| nil ~| number of maximum items to be assigned at once~| + | logger ~| Logger ~| nil ~| logger instance for debug logs ~| ```c @@ -374,10 +374,10 @@ 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 + Pete@@@ Best {{{ 1941 Paul McCartney 1942 George Harrison 1943 @@ -624,3 +624,30 @@ eggplant = 5 daisy = 4 eggplant = 5 + +```c + + int a = 1; + long b = 2; + float c = 3; + string d = 4; +// this line should not get aligned + long int e = 5; + std::map f; +std::map g; /* this? */ +short h /* how about this? */ = 6; + string i = "asdf"; + +int a = 1; +long b = 2; +float c = 3; +string d = 4; +// this line should not get aligned +long int e = 5; +std::map f; +std::map g; /* this? */ +short h /* how about this? */ = 6; +string i = "asdf"; + +``` + diff --git a/test/basic.md b/test/basic.md index f89393e..919d210 100644 --- a/test/basic.md +++ b/test/basic.md @@ -136,3 +136,19 @@ Pete Best 1941 daisy = 4 eggplant = 5 + +```c + +int a = 1; +long b = 2; +float c = 3; +string d = 4; +// this line should not get aligned +long int e = 5; +std::map f; +std::map g; /* this? */ +short h /* how about this? */ = 6; +string i = "asdf"; + +``` + diff --git a/test/basic.script b/test/basic.script index bbecbc8..3cf14b4 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'} 377GvipjyPvip:EasyAlign\ {'l': '<<<'} gv:EasyAlign 2 \ {'l': '{{{'} 507Gvipjygv:EasyAlign= Pvip:EasyAlign = {'idt': s} Pvip:EasyAlign= {'idt': d} Pvip:EasyAlign**={'indentation': 'd'} Pvip:EasyAlign!= Pvip:EasyAlign! **= {'indent': s} Pvip:EasyAlign!* = {'idt': D} Pvip:EasyAlign! ={'idt':'S'} 507GPvip:EasyAlign-={'idt':d} PA = 2j.j.j.j.vip:EasyAlign2={'idt': s} 507GPljjjj$:EasyAlign = {'idt': s} Pljjjj$:EasyAlign={'indent':d} Phhxxvip:EasyAlign={'idt':'s'} 525Gvipjy507GPPvip:EasyAlign*={'idt':s} Pvip:EasyAlign!**={'idt':s} Pvip:EasyAlign = {'idt': D} 525G^hhr1jr1jr1jr1jr1llkkkk$:EasyAlign = { 'idt': s } 513GvipjyPvip:EasyAlign*={'idt':n} Pvip:EasyAlign = { 'idt': N } Pvip:EasyAlign!*= {'idt': 'n'} +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': '{{{'} 507Gvipjygv:EasyAlign= Pvip:EasyAlign = {'idt': s} Pvip:EasyAlign= {'idt': d} Pvip:EasyAlign**={'indentation': 'd'} Pvip:EasyAlign!= Pvip:EasyAlign! **= {'indent': s} Pvip:EasyAlign!* = {'idt': D} Pvip:EasyAlign! ={'idt':'S'} 507GPvip:EasyAlign-={'idt':d} PA = 2j.j.j.j.vip:EasyAlign2={'idt': s} 507GPljjjj$:EasyAlign = {'idt': s} Pljjjj$:EasyAlign={'indent':d} Phhxxvip:EasyAlign={'idt':'s'} 525Gvipjy507GPPvip:EasyAlign*={'idt':s} Pvip:EasyAlign!**={'idt':s} Pvip:EasyAlign = {'idt': D} 525G^hhr1jr1jr1jr1jr1llkkkk$:EasyAlign = { 'idt': s } 513GvipjyPvip:EasyAlign*={'idt':n} Pvip:EasyAlign = { 'idt': N } Pvip:EasyAlign!*= {'idt': 'n'} 630Gvipjygv =Pvip =