Fix #741 - Set highlights for entire lines when signs are disabled

This commit is contained in:
w0rp 2017-11-17 14:29:51 +00:00
parent 22ec81e1de
commit 5635b3c864
3 changed files with 60 additions and 3 deletions

View File

@ -91,6 +91,22 @@ function! ale#highlight#UpdateHighlights() abort
\ 'matchaddpos(l:group, v:val)'
\)
endfor
" If highlights are enabled and signs are not enabled, we should still
" offer line highlights by adding a separate set of highlights.
if !g:ale_set_signs
for l:item in l:item_list
if l:item.type is# 'W'
let l:group = 'ALEWarningLine'
elseif l:item.type is# 'I'
let l:group = 'ALEInfoLine'
else
let l:group = 'ALEErrorLine'
endif
call matchaddpos(l:group, [l:item.lnum])
endfor
endif
endfunction
function! ale#highlight#BufferHidden(buffer) abort

View File

@ -1149,6 +1149,17 @@ g:ale_set_highlights *g:ale_set_highlights*
|ALEStyleError| - Items with `'type': 'E'` and `'sub_type': 'style'`
|ALEStyleWarning| - Items with `'type': 'W'` and `'sub_type': 'style'`
When |g:ale_set_signs| is set to `0`, the following highlights for entire
lines will be set.
|ALEErrorLine| - All items with `'type': 'E'`
|ALEWarningLine| - All items with `'type': 'W'`
|ALEInfoLine| - All items with `'type': 'I'`
Vim can only highlight the characters up to the last column in a buffer for
match highlights, whereas the line highlights when signs are enabled will
run to the edge of the screen.
g:ale_set_loclist *g:ale_set_loclist*
@ -1366,7 +1377,10 @@ ALEErrorLine *ALEErrorLine*
Default: Undefined
The highlight for lines where error signs appear. See |g:ale_set_signs|.
The highlight for an entire line where errors appear. Only the first
line for a problem will be highlighted.
See |g:ale_set_signs| and |g:ale_set_highlights|.
ALEErrorSign *ALEErrorSign*
@ -1394,7 +1408,10 @@ ALEInfoLine *ALEInfoLine*
Default: Undefined
The highlight for lines where info signs appear. See |g:ale_set_signs|.
The highlight for entire lines where info messages appear. Only the first
line for a problem will be highlighted.
See |g:ale_set_signs| and |g:ale_set_highlights|.
ALEStyleError *ALEStyleError*
@ -1436,7 +1453,10 @@ ALEWarningLine *ALEWarningLine*
Default: Undefined
The highlight for lines where warning signs appear. See |g:ale_set_signs|.
The highlight for entire lines where warnings appear. Only the first line
for a problem will be highlighted.
See |g:ale_set_signs| and |g:ale_set_highlights|.
ALEWarningSign *ALEWarningSign*

View File

@ -1,5 +1,6 @@
Before:
Save g:ale_enabled
Save g:ale_set_signs
function! GenerateResults(buffer, output)
return [
@ -258,3 +259,23 @@ Execute(Highlights should be cleared when ALE is disabled):
call ale#highlight#UpdateHighlights()
AssertEqual [], GetMatchesWithoutIDs()
Execute(Line highlights should be set when signs are disabled):
let g:ale_set_signs = 0
call ale#highlight#SetHighlights(bufnr(''), [
\ {'bufnr': bufnr(''), 'type': 'E', 'lnum': 1, 'col': 1},
\ {'bufnr': bufnr(''), 'type': 'W', 'lnum': 2, 'col': 1},
\ {'bufnr': bufnr(''), 'type': 'I', 'lnum': 3, 'col': 1},
\])
AssertEqual
\ [
\ {'group': 'ALEError', 'priority': 10, 'pos1': [1, 1, 1]},
\ {'group': 'ALEWarning', 'priority': 10, 'pos1': [2, 1, 1]},
\ {'group': 'ALEInfo', 'priority': 10, 'pos1': [3, 1, 1]},
\ {'group': 'ALEErrorLine', 'priority': 10, 'pos1': [1]},
\ {'group': 'ALEWarningLine', 'priority': 10, 'pos1': [2]},
\ {'group': 'ALEInfoLine', 'priority': 10, 'pos1': [3]},
\ ],
\ GetMatchesWithoutIDs()