diff options
author | w0rp <devw0rp@gmail.com> | 2017-03-14 20:26:44 +0000 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-03-14 20:26:44 +0000 |
commit | d19a35485fef949c823657d548f4c0ddd78bbe4f (patch) | |
tree | b31f1f99748f4058a2be73ab71b8f07e28879934 /autoload | |
parent | 5836d9a9a732f34929b8c78150e9e3ed41bb7318 (diff) | |
download | ale-d19a35485fef949c823657d548f4c0ddd78bbe4f.zip |
#333 Keep any loclist items which have match_id values set on them
Diffstat (limited to 'autoload')
-rw-r--r-- | autoload/ale/highlight.vim | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/autoload/ale/highlight.vim b/autoload/ale/highlight.vim index 54103aa9..8d70ead5 100644 --- a/autoload/ale/highlight.vim +++ b/autoload/ale/highlight.vim @@ -34,17 +34,35 @@ function! s:GetALEMatches() abort return l:list endfunction +function! s:GetCurrentMatchIDs(loclist) abort + let l:current_id_map = {} + + for l:item in a:loclist + if has_key(l:item, 'match_id') + let l:current_id_map[l:item.match_id] = 1 + endif + endfor + + return l:current_id_map +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() - call matchdelete(l:match['id']) + if !has_key(l:current_id_map, l:match.id) + call matchdelete(l:match.id) + endif endfor endif + " Remove anything with a current match_id + call filter(l:loclist, '!has_key(v:val, ''match_id'')') + if l:has_new_items for l:item in l:loclist let l:col = l:item.col |