57 lines
1.8 KiB
VimL
57 lines
1.8 KiB
VimL
let g:PymodeSigns = {}
|
|
|
|
|
|
fun! pymode#tools#signs#init() "{{{
|
|
call g:PymodeSigns.setup()
|
|
endfunction "}}}
|
|
|
|
|
|
fun! g:PymodeSigns.enabled() "{{{
|
|
return (g:pymode_lint_signs && has('signs'))
|
|
endfunction "}}}
|
|
|
|
|
|
fun! g:PymodeSigns.setup() "{{{
|
|
if self.enabled()
|
|
execute 'sign define PymodeW text=' . g:pymode_lint_todo_symbol . " texthl=Todo"
|
|
execute 'sign define PymodeD text=' . g:pymode_lint_docs_symbol . " texthl=String"
|
|
execute 'sign define PymodeC text=' . g:pymode_lint_comment_symbol . " texthl=Comment"
|
|
execute 'sign define PymodeR text=' . g:pymode_lint_visual_symbol . " texthl=Visual"
|
|
execute 'sign define PymodeE text=' . g:pymode_lint_error_symbol . " texthl=Error"
|
|
execute 'sign define PymodeI text=' . g:pymode_lint_info_symbol . " texthl=Info"
|
|
execute 'sign define PymodeF text=' . g:pymode_lint_pyflakes_symbol . " texthl=Info"
|
|
endif
|
|
let self._sign_ids = []
|
|
let self._next_id = 10000
|
|
let self._messages = {}
|
|
endfunction "}}}
|
|
|
|
|
|
fun! g:PymodeSigns.refresh(loclist) "{{{
|
|
if self.enabled()
|
|
call self.clear()
|
|
call self.place(a:loclist)
|
|
endif
|
|
endfunction "}}}
|
|
|
|
|
|
fun! g:PymodeSigns.clear() "{{{
|
|
let ids = copy(self._sign_ids)
|
|
for i in ids
|
|
execute "sign unplace " . i
|
|
call remove(self._sign_ids, index(self._sign_ids, i))
|
|
endfor
|
|
endfunction "}}}
|
|
|
|
|
|
fun! g:PymodeSigns.place(loclist) "{{{
|
|
let seen = {}
|
|
for issue in a:loclist._loclist
|
|
if !has_key(seen, issue.lnum)
|
|
let seen[issue.lnum] = 1
|
|
call add(self._sign_ids, self._next_id)
|
|
execute printf('sign place %d line=%d name=%s buffer=%d', self._next_id, issue.lnum, "Pymode".issue.type[0], issue.bufnr)
|
|
let self._next_id += 1
|
|
endif
|
|
endfor
|
|
endfunction "}}}
|