summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-11-17 14:29:51 +0000
committerw0rp <devw0rp@gmail.com>2017-11-17 14:29:57 +0000
commit5635b3c86437f22123a19601bebcaa335c1ceb2e (patch)
tree9610581c9bea3176e67d1e65f66ef4f51db12782
parent22ec81e1de48cf442238dac9f85a579e04bf70cb (diff)
downloadale-5635b3c86437f22123a19601bebcaa335c1ceb2e.zip
Fix #741 - Set highlights for entire lines when signs are disabled
-rw-r--r--autoload/ale/highlight.vim16
-rw-r--r--doc/ale.txt26
-rw-r--r--test/test_highlight_placement.vader21
3 files changed, 60 insertions, 3 deletions
diff --git a/autoload/ale/highlight.vim b/autoload/ale/highlight.vim
index 47256f0b..e3c749fb 100644
--- a/autoload/ale/highlight.vim
+++ b/autoload/ale/highlight.vim
@@ -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
diff --git a/doc/ale.txt b/doc/ale.txt
index 697c592e..7b9deeee 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -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*
diff --git a/test/test_highlight_placement.vader b/test/test_highlight_placement.vader
index 6a84e571..725faff4 100644
--- a/test/test_highlight_placement.vader
+++ b/test/test_highlight_placement.vader
@@ -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()