#149 - Set different highlights for info, style error, and style warning problems

This commit is contained in:
w0rp 2017-05-21 19:22:48 +01:00
parent 57ad32f986
commit 23ee0d0992
3 changed files with 59 additions and 5 deletions

View File

@ -6,10 +6,22 @@ if !hlexists('ALEError')
highlight link ALEError SpellBad highlight link ALEError SpellBad
endif endif
if !hlexists('ALEStyleError')
highlight link ALEStyleError ALEError
endif
if !hlexists('ALEWarning') if !hlexists('ALEWarning')
highlight link ALEWarning SpellCap highlight link ALEWarning SpellCap
endif endif
if !hlexists('ALEStyleWarning')
highlight link ALEStyleWarning ALEWarning
endif
if !hlexists('ALEInfo')
highlight link ALEInfo ALEWarning
endif
" This map holds highlights to be set when buffers are opened. " This map holds highlights to be set when buffers are opened.
" We can only set highlights for whatever the current buffer is, so we will " We can only set highlights for whatever the current buffer is, so we will
" wait until the buffer is entered again to show the highlights, unless " wait until the buffer is entered again to show the highlights, unless
@ -84,7 +96,21 @@ function! ale#highlight#UpdateHighlights() abort
if g:ale_enabled if g:ale_enabled
for l:item in l:loclist for l:item in l:loclist
let l:col = l:item.col let l:col = l:item.col
let l:group = l:item.type ==# 'E' ? 'ALEError' : 'ALEWarning'
if l:item.type ==# 'W'
if get(l:item, 'sub_type', '') ==# 'style'
let l:group = 'ALEStyleWarning'
else
let l:group = 'ALEWarning'
endif
elseif l:item.type ==# 'I'
let l:group = 'ALEInfo'
elseif get(l:item, 'sub_type', '') ==# 'style'
let l:group = 'ALEStyleError'
else
let l:group = 'ALEError'
endif
let l:line = l:item.lnum let l:line = l:item.lnum
let l:size = has_key(l:item, 'end_col') ? l:item.end_col - l:col + 1 : 1 let l:size = has_key(l:item, 'end_col') ? l:item.end_col - l:col + 1 : 1

View File

@ -507,10 +507,15 @@ g:ale_set_highlights *g:ale_set_highlights*
Type: |Number| Type: |Number|
Default: `has('syntax')` Default: `has('syntax')`
When this option is set to `1`, highlights will be set in for erros and When this option is set to `1`, highlights will be set for problems.
warnings. The `ALEError` and `ALEWarning` highlight groups will be used to
provide highlights, and default to linking to `SpellBad` and `SpellCap` ALE will use the following highlight groups for problems:
respectively by default.
`ALEError` - Items with `'type': 'E'`
`ALEWarning` - Items with `'type': 'W'`
`ALEInfo` - Items with `'type': 'I'`
`ALEStyleError` - Items with `'type': 'E'` and `'sub_type': 'style'`
`ALEStyleWarning` - Items with `'type': 'W'` and `'sub_type': 'style'`
g:ale_set_loclist *g:ale_set_loclist* g:ale_set_loclist *g:ale_set_loclist*

View File

@ -150,3 +150,26 @@ Execute(Higlight end columns should set an appropriate size):
\ {'group': 'ALEWarning', 'id': 16, 'priority': 10, 'pos1': [4, 1, 5]}, \ {'group': 'ALEWarning', 'id': 16, 'priority': 10, 'pos1': [4, 1, 5]},
\ ], \ ],
\ getmatches() \ getmatches()
Execute(Higlight end columns should set an appropriate size):
call ale#highlight#SetHighlights(bufnr('%'), [
\ {'bufnr': bufnr('%'), 'type': 'E', 'lnum': 1, 'col': 1},
\ {'bufnr': bufnr('%'), 'type': 'E', 'lnum': 2, 'col': 1},
\ {'bufnr': bufnr('%'), 'type': 'E', 'sub_type': 'style', 'lnum': 3, 'col': 1},
\ {'bufnr': bufnr('%'), 'type': 'W', 'lnum': 4, 'col': 1},
\ {'bufnr': bufnr('%'), 'type': 'W', 'lnum': 5, 'col': 1},
\ {'bufnr': bufnr('%'), 'type': 'W', 'sub_type': 'style', 'lnum': 6, 'col': 1},
\ {'bufnr': bufnr('%'), 'type': 'I', 'lnum': 7, 'col': 1},
\])
AssertEqual
\ [
\ {'group': 'ALEError', 'id': 17, 'priority': 10, 'pos1': [1, 1, 1]},
\ {'group': 'ALEError', 'id': 18, 'priority': 10, 'pos1': [2, 1, 1]},
\ {'group': 'ALEStyleError', 'id': 19, 'priority': 10, 'pos1': [3, 1, 1]},
\ {'group': 'ALEWarning', 'id': 20, 'priority': 10, 'pos1': [4, 1, 1]},
\ {'group': 'ALEWarning', 'id': 21, 'priority': 10, 'pos1': [5, 1, 1]},
\ {'group': 'ALEStyleWarning', 'id': 22, 'priority': 10, 'pos1': [6, 1, 1]},
\ {'group': 'ALEInfo', 'id': 23, 'priority': 10, 'pos1': [7, 1, 1]},
\ ],
\ getmatches()