Remove error highlights when buffers are cleaned up

This commit is contained in:
w0rp
2017-04-19 22:55:06 +01:00
parent 72449d7cb1
commit d8dcc56af5
3 changed files with 31 additions and 6 deletions

View File

@@ -13,6 +13,7 @@ function! ale#cleanup#Buffer(buffer) abort
" Clear delayed highlights for a buffer being removed.
if g:ale_set_highlights
call ale#highlight#UnqueueHighlights(a:buffer)
call ale#highlight#RemoveHighlights([])
endif
call remove(g:ale_buffer_info, a:buffer)

View File

@@ -46,18 +46,25 @@ function! s:GetCurrentMatchIDs(loclist) abort
return l:current_id_map
endfunction
" Given a loclist for current items to highlight, remove all highlights
" except these which have matching loclist item entries.
function! ale#highlight#RemoveHighlights(loclist) abort
let l:current_id_map = s:GetCurrentMatchIDs(a:loclist)
for l:match in s:GetALEMatches()
if !has_key(l:current_id_map, l:match.id)
call matchdelete(l:match.id)
endif
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) : []
let l:current_id_map = s:GetCurrentMatchIDs(l:loclist)
if l:has_new_items || !g:ale_enabled
for l:match in s:GetALEMatches()
if !has_key(l:current_id_map, l:match.id)
call matchdelete(l:match.id)
endif
endfor
call ale#highlight#RemoveHighlights(l:loclist)
endif
" Remove anything with a current match_id