diff --git a/autoload/ale/sign.vim b/autoload/ale/sign.vim index 521d7c3..09b774c 100644 --- a/autoload/ale/sign.vim +++ b/autoload/ale/sign.vim @@ -34,8 +34,15 @@ if !hlexists('ALESignColumnWithoutErrors') silent highlight SignColumn redir end - execute 'highlight ALESignColumnWithoutErrors ' - \ . join(split(l:output)[2:]) + let l:highlight_syntax = join(split(l:output)[2:]) + + let l:match = matchlist(l:highlight_syntax, '\vlinks to (.+)$') + + if !empty(l:match) + execute 'highlight link ALESignColumnWithoutErrors ' . l:match[1] + else + execute 'highlight ALESignColumnWithoutErrors ' . l:highlight_syntax + endif endfunction call s:SetSignColumnWithoutErrorsHighlight() diff --git a/test/sign/test_sign_column_highlighting.vader b/test/sign/test_sign_column_highlighting.vader index da8bac2..81f80c9 100644 --- a/test/sign/test_sign_column_highlighting.vader +++ b/test/sign/test_sign_column_highlighting.vader @@ -1,22 +1,42 @@ Before: - function! ParseSignColumnHighlight() abort + function! ParseHighlight(name) abort redir => l:output - silent highlight SignColumn + silent execute 'highlight ' . a:name redir end return join(split(l:output)[2:]) endfunction - let g:sign_highlight = ParseSignColumnHighlight() + function! SetHighlight(name, syntax) abort + let l:match = matchlist(a:syntax, '\vlinks to (.+)$') + + if !empty(l:match) + execute 'highlight link ' . a:name . ' ' . l:match[1] + else + execute 'highlight ' . a:name . ' ' a:syntax + endif + endfunction + + let g:sign_highlight = ParseHighlight('SignColumn') After: - delfunction ParseSignColumnHighlight - execute 'highlight SignColumn ' . g:sign_highlight + delfunction ParseHighlight + call SetHighlight('SignColumn', g:sign_highlight) + delfunction SetHighlight unlet! g:sign_highlight Execute(The SignColumn highlight should be set and reset): call ale#sign#SetSignColumnHighlight(1) - AssertEqual 'links to ALESignColumnWithErrors', ParseSignColumnHighlight() + AssertEqual 'links to ALESignColumnWithErrors', ParseHighlight('SignColumn') call ale#sign#SetSignColumnHighlight(0) - AssertEqual 'links to ALESignColumnWithoutErrors', ParseSignColumnHighlight() + AssertEqual 'links to ALESignColumnWithoutErrors', ParseHighlight('SignColumn') + +Execute(ALESignColumnWithoutErrors should link to what SignColumn links to): + highlight clear SignColumn + highlight link SignColumn LineNr + highlight clear ALESignColumnWithoutErrors + + runtime 'autoload/ale/sign.vim' + + AssertEqual 'links to LineNr', ParseHighlight('ALESignColumnWithoutErrors')