Remove error highlights when buffers are cleaned up
This commit is contained in:
parent
72449d7cb1
commit
d8dcc56af5
@ -13,6 +13,7 @@ function! ale#cleanup#Buffer(buffer) abort
|
|||||||
" Clear delayed highlights for a buffer being removed.
|
" Clear delayed highlights for a buffer being removed.
|
||||||
if g:ale_set_highlights
|
if g:ale_set_highlights
|
||||||
call ale#highlight#UnqueueHighlights(a:buffer)
|
call ale#highlight#UnqueueHighlights(a:buffer)
|
||||||
|
call ale#highlight#RemoveHighlights([])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call remove(g:ale_buffer_info, a:buffer)
|
call remove(g:ale_buffer_info, a:buffer)
|
||||||
|
@ -46,18 +46,25 @@ function! s:GetCurrentMatchIDs(loclist) abort
|
|||||||
return l:current_id_map
|
return l:current_id_map
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#highlight#UpdateHighlights() abort
|
" Given a loclist for current items to highlight, remove all highlights
|
||||||
let l:buffer = bufnr('%')
|
" except these which have matching loclist item entries.
|
||||||
let l:has_new_items = has_key(s:buffer_highlights, l:buffer)
|
function! ale#highlight#RemoveHighlights(loclist) abort
|
||||||
let l:loclist = l:has_new_items ? remove(s:buffer_highlights, l:buffer) : []
|
let l:current_id_map = s:GetCurrentMatchIDs(a:loclist)
|
||||||
let l:current_id_map = s:GetCurrentMatchIDs(l:loclist)
|
|
||||||
|
|
||||||
if l:has_new_items || !g:ale_enabled
|
|
||||||
for l:match in s:GetALEMatches()
|
for l:match in s:GetALEMatches()
|
||||||
if !has_key(l:current_id_map, l:match.id)
|
if !has_key(l:current_id_map, l:match.id)
|
||||||
call matchdelete(l:match.id)
|
call matchdelete(l:match.id)
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#highlight#UpdateHighlights() abort
|
||||||
|
let l:buffer = bufnr('%')
|
||||||
|
let l:has_new_items = has_key(s:buffer_highlights, l:buffer)
|
||||||
|
let l:loclist = l:has_new_items ? remove(s:buffer_highlights, l:buffer) : []
|
||||||
|
|
||||||
|
if l:has_new_items || !g:ale_enabled
|
||||||
|
call ale#highlight#RemoveHighlights(l:loclist)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Remove anything with a current match_id
|
" Remove anything with a current match_id
|
||||||
|
@ -74,3 +74,20 @@ Execute(Existing highlights should be kept):
|
|||||||
\ {'group': 'ALEWarning', 'id': 8, 'priority': 10, 'pos1': [4, 1, 1]},
|
\ {'group': 'ALEWarning', 'id': 8, 'priority': 10, 'pos1': [4, 1, 1]},
|
||||||
\ ],
|
\ ],
|
||||||
\ getmatches()
|
\ getmatches()
|
||||||
|
|
||||||
|
" This test is important for preventing ALE from showing highlights for
|
||||||
|
" the wrong files.
|
||||||
|
Execute(Highlights set by ALE should be removed when buffer cleanup is done):
|
||||||
|
call ale#engine#InitBufferInfo(bufnr('%'))
|
||||||
|
|
||||||
|
call ale#highlight#SetHighlights(bufnr('%'), [
|
||||||
|
\ {'bufnr': bufnr('%'), 'type': 'E', 'lnum': 3, 'col': 2},
|
||||||
|
\])
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ [{'group': 'ALEError', 'id': 9, 'priority': 10, 'pos1': [3, 2, 1]}],
|
||||||
|
\ getmatches()
|
||||||
|
|
||||||
|
call ale#cleanup#Buffer(bufnr('%'))
|
||||||
|
|
||||||
|
AssertEqual [], getmatches()
|
||||||
|
Loading…
Reference in New Issue
Block a user