diff --git a/autoload/ale/sign.vim b/autoload/ale/sign.vim index 31663721..a0dde359 100644 --- a/autoload/ale/sign.vim +++ b/autoload/ale/sign.vim @@ -45,25 +45,23 @@ if !hlexists('ALESignColumnWithErrors') highlight link ALESignColumnWithErrors error endif +function! ale#sign#SetUpDefaultColumnWithoutErrorsHighlight() abort + redir => l:output + 0verbose silent highlight SignColumn + redir end + + 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] + elseif l:highlight_syntax isnot# 'cleared' + execute 'highlight ALESignColumnWithoutErrors ' . l:highlight_syntax + endif +endfunction + if !hlexists('ALESignColumnWithoutErrors') - function! s:SetSignColumnWithoutErrorsHighlight() abort - redir => l:output - silent highlight SignColumn - redir end - - 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] - elseif l:highlight_syntax isnot# 'cleared' - execute 'highlight ALESignColumnWithoutErrors ' . l:highlight_syntax - endif - endfunction - - call s:SetSignColumnWithoutErrorsHighlight() - delfunction s:SetSignColumnWithoutErrorsHighlight + call ale#sign#SetUpDefaultColumnWithoutErrorsHighlight() endif " Signs show up on the left for error markers. diff --git a/test/sign/test_sign_column_highlighting.vader b/test/sign/test_sign_column_highlighting.vader index 4457a45c..0b506fa7 100644 --- a/test/sign/test_sign_column_highlighting.vader +++ b/test/sign/test_sign_column_highlighting.vader @@ -1,12 +1,13 @@ Before: Save g:ale_change_sign_column_color + Save &verbose function! ParseHighlight(name) abort redir => l:output silent execute 'highlight ' . a:name redir end - return join(split(l:output)[2:]) + return substitute(join(split(l:output)[2:]), ' Last set.*', '', '') endfunction function! SetHighlight(name, syntax) abort @@ -53,3 +54,15 @@ Execute(The SignColumn highlight should be set and reset): call ale#sign#SetSigns(bufnr(''), []) AssertEqual 'links to ALESignColumnWithoutErrors', ParseHighlight('SignColumn') + +Execute(The SignColumn should be correctly parsed when verbose=1): + set verbose=1 + highlight SignColumn ctermfg=246 ctermbg=7 guifg=#839496 guibg=Grey + + call ale#sign#SetUpDefaultColumnWithoutErrorsHighlight() + + AssertEqual + \ has('nvim') + \ ? 'ctermfg=246 ctermbg=7 guifg=#839496 guibg=Grey' + \ : 'term=standout ctermfg=246 ctermbg=7 guifg=#839496 guibg=Grey', + \ ParseHighlight('ALESignColumnWithoutErrors')