Fix #924 - Make changing the sign column color work again

This commit is contained in:
w0rp 2017-09-12 21:17:54 +01:00
parent 4e9420d1f5
commit 91df9ba2c0
2 changed files with 36 additions and 12 deletions

View File

@ -184,16 +184,6 @@ function! s:GroupLoclistItems(buffer, loclist) abort
return l:grouped_items return l:grouped_items
endfunction endfunction
function! ale#sign#SetSignColumnHighlight(has_problems) abort
highlight clear SignColumn
if a:has_problems
highlight link SignColumn ALESignColumnWithErrors
else
highlight link SignColumn ALESignColumnWithoutErrors
endif
endfunction
function! s:UpdateLineNumbers(buffer, current_sign_list, loclist) abort function! s:UpdateLineNumbers(buffer, current_sign_list, loclist) abort
let l:line_map = {} let l:line_map = {}
let l:line_numbers_changed = 0 let l:line_numbers_changed = 0
@ -347,7 +337,19 @@ function! ale#sign#SetSigns(buffer, loclist) abort
\ l:sign_map, \ l:sign_map,
\) \)
" Change the sign column color if the option is on.
if g:ale_change_sign_column_color && !empty(a:loclist)
highlight clear SignColumn
highlight link SignColumn ALESignColumnWithErrors
endif
for l:command in l:command_list for l:command in l:command_list
silent! execute l:command silent! execute l:command
endfor endfor
" Reset the sign column color when there are no more errors.
if g:ale_change_sign_column_color && empty(a:loclist)
highlight clear SignColumn
highlight link SignColumn ALESignColumnWithoutErrors
endif
endfunction endfunction

View File

@ -1,4 +1,6 @@
Before: Before:
Save g:ale_change_sign_column_color
function! ParseHighlight(name) abort function! ParseHighlight(name) abort
redir => l:output redir => l:output
silent execute 'highlight ' . a:name silent execute 'highlight ' . a:name
@ -20,14 +22,34 @@ Before:
let g:sign_highlight = ParseHighlight('SignColumn') let g:sign_highlight = ParseHighlight('SignColumn')
After: After:
Restore
delfunction ParseHighlight delfunction ParseHighlight
call SetHighlight('SignColumn', g:sign_highlight) call SetHighlight('SignColumn', g:sign_highlight)
delfunction SetHighlight delfunction SetHighlight
unlet! g:sign_highlight unlet! g:sign_highlight
sign unplace *
Execute(The SignColumn highlight shouldn't be changed if the option is off):
let g:ale_change_sign_column_color = 0
let b:sign_highlight = ParseHighlight('SignColumn')
call ale#sign#SetSigns(bufnr(''), [
\ {'bufnr': bufnr(''), 'lnum': 1, 'col': 1, 'type': 'W', 'text': 'x'},
\])
AssertEqual b:sign_highlight, ParseHighlight('SignColumn')
call ale#sign#SetSigns(bufnr(''), [])
AssertEqual b:sign_highlight, ParseHighlight('SignColumn')
Execute(The SignColumn highlight should be set and reset): Execute(The SignColumn highlight should be set and reset):
call ale#sign#SetSignColumnHighlight(1) let g:ale_change_sign_column_color = 1
call ale#sign#SetSigns(bufnr(''), [
\ {'bufnr': bufnr(''), 'lnum': 1, 'col': 1, 'type': 'W', 'text': 'x'},
\])
AssertEqual 'links to ALESignColumnWithErrors', ParseHighlight('SignColumn') AssertEqual 'links to ALESignColumnWithErrors', ParseHighlight('SignColumn')
call ale#sign#SetSignColumnHighlight(0) call ale#sign#SetSigns(bufnr(''), [])
AssertEqual 'links to ALESignColumnWithoutErrors', ParseHighlight('SignColumn') AssertEqual 'links to ALESignColumnWithoutErrors', ParseHighlight('SignColumn')