mirror of
https://github.com/dense-analysis/ale.git
synced 2026-03-01 12:56:57 +08:00
#333 Remember the IDs for highlights
This commit is contained in:
@@ -22,12 +22,16 @@ function! ale#highlight#UnqueueHighlights(buffer) abort
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:RemoveOldHighlights() abort
|
||||
function! s:GetALEMatches() abort
|
||||
let l:list = []
|
||||
|
||||
for l:match in getmatches()
|
||||
if l:match['group'] ==# 'ALEError' || l:match['group'] ==# 'ALEWarning'
|
||||
call matchdelete(l:match['id'])
|
||||
call add(l:list, l:match)
|
||||
endif
|
||||
endfor
|
||||
|
||||
return l:list
|
||||
endfunction
|
||||
|
||||
function! ale#highlight#UpdateHighlights() abort
|
||||
@@ -36,7 +40,9 @@ function! ale#highlight#UpdateHighlights() abort
|
||||
let l:loclist = l:has_new_items ? remove(s:buffer_highlights, l:buffer) : []
|
||||
|
||||
if l:has_new_items || !g:ale_enabled
|
||||
call s:RemoveOldHighlights()
|
||||
for l:match in s:GetALEMatches()
|
||||
call matchdelete(l:match['id'])
|
||||
endfor
|
||||
endif
|
||||
|
||||
if l:has_new_items
|
||||
@@ -46,7 +52,10 @@ function! ale#highlight#UpdateHighlights() abort
|
||||
let l:line = l:item.lnum
|
||||
let l:size = 1
|
||||
|
||||
call matchaddpos(l:group, [[l:line, l:col, l:size]])
|
||||
" Rememeber the match ID for the item.
|
||||
" This ID will be used to preserve loclist items which are set
|
||||
" many times.
|
||||
let l:item.match_id = matchaddpos(l:group, [[l:line, l:col, l:size]])
|
||||
endfor
|
||||
endif
|
||||
endfunction
|
||||
@@ -64,7 +73,7 @@ function! ale#highlight#SetHighlights(buffer, loclist) abort
|
||||
"
|
||||
" We'll filter the loclist down to items we can set now.
|
||||
let s:buffer_highlights[a:buffer] = filter(
|
||||
\ deepcopy(a:loclist),
|
||||
\ copy(a:loclist),
|
||||
\ 'v:val.bufnr == a:buffer && v:val.col > 0'
|
||||
\)
|
||||
|
||||
|
||||
@@ -125,8 +125,7 @@ function! ale#sign#SetSigns(buffer, loclist) abort
|
||||
\ : 'ALEWarningSign'
|
||||
|
||||
" Save the sign IDs we are setting back on our loclist objects.
|
||||
" These IDs can be used later for changing line numbers of items
|
||||
" we keep, based on what Vim adjusts automatically.
|
||||
" These IDs will be used to preserve items which are set many times.
|
||||
for l:obj in l:sublist
|
||||
let l:obj.sign_id = l:sign_id
|
||||
endfor
|
||||
|
||||
Reference in New Issue
Block a user