mirror of
https://github.com/dense-analysis/ale.git
synced 2026-01-09 13:02:28 +08:00
Remove error highlights when buffers are cleaned up
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user