Defensive coding against stepping over other plugins' signs.
This commit is contained in:
parent
6c88bae55d
commit
1e3e0a8254
@ -19,7 +19,7 @@ if has('reltime')
|
|||||||
lockvar! g:syntastic_start
|
lockvar! g:syntastic_start
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let g:syntastic_version = '3.4.0-105'
|
let g:syntastic_version = '3.4.0-106'
|
||||||
lockvar g:syntastic_version
|
lockvar g:syntastic_version
|
||||||
|
|
||||||
" Sanity checks {{{1
|
" Sanity checks {{{1
|
||||||
|
@ -42,7 +42,6 @@ function! g:SyntasticSignsNotifier.refresh(loclist) " {{{2
|
|||||||
call self._signErrors(a:loclist)
|
call self._signErrors(a:loclist)
|
||||||
endif
|
endif
|
||||||
call self._removeSigns(old_signs)
|
call self._removeSigns(old_signs)
|
||||||
let s:first_sign_id = exists('s:next_sign_id') ? s:next_sign_id : 5000
|
|
||||||
endfunction " }}}2
|
endfunction " }}}2
|
||||||
|
|
||||||
" }}}1
|
" }}}1
|
||||||
@ -96,18 +95,27 @@ function! g:SyntasticSignsNotifier._signErrors(loclist) " {{{2
|
|||||||
let seen = {}
|
let seen = {}
|
||||||
|
|
||||||
for i in issues
|
for i in issues
|
||||||
if !has_key(seen, i['lnum'])
|
if i['lnum'] > 0 && !has_key(seen, i['lnum'])
|
||||||
let seen[i['lnum']] = 1
|
let seen[i['lnum']] = 1
|
||||||
|
|
||||||
if i['lnum'] > 0
|
|
||||||
let sign_severity = i['type'] ==? 'W' ? 'Warning' : 'Error'
|
let sign_severity = i['type'] ==? 'W' ? 'Warning' : 'Error'
|
||||||
let sign_subtype = get(i, 'subtype', '')
|
let sign_subtype = get(i, 'subtype', '')
|
||||||
let sign_type = 'Syntastic' . sign_subtype . sign_severity
|
let sign_type = 'Syntastic' . sign_subtype . sign_severity
|
||||||
|
let where = " line=" . i['lnum'] . " name=" . sign_type . " buffer=" . i['bufnr']
|
||||||
|
|
||||||
execute "sign place " . s:next_sign_id . " line=" . i['lnum'] . " name=" . sign_type . " buffer=" . i['bufnr']
|
" try to find a free ID
|
||||||
|
" XXX: this can turn into an infinite loop
|
||||||
|
let done = 0
|
||||||
|
while !done
|
||||||
|
try
|
||||||
|
execute "sign place " . s:next_sign_id . where
|
||||||
call add(self._bufSignIds(), s:next_sign_id)
|
call add(self._bufSignIds(), s:next_sign_id)
|
||||||
let s:next_sign_id += 1
|
let s:next_sign_id += 1
|
||||||
endif
|
let done = 1
|
||||||
|
catch /\m^Vim\%((\a\+)\)\=:E885/
|
||||||
|
let s:next_sign_id += 500
|
||||||
|
endtry
|
||||||
|
endwhile
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
|
Loading…
Reference in New Issue
Block a user