From ee0723fde3a1055d0b5586bb7b365c5a4efbcb65 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Mon, 3 Jun 2019 16:57:54 +0200 Subject: [PATCH] QuickfixsignsListBufferSigns: use sign_getplaced TODO: does not set/have the "sign" attribute (easily), only used with AssertUniqueSigns, where it could be removed/replaced - maybe only for the new method / if missing then?! Fixes https://github.com/tomtom/quickfixsigns_vim/issues/83. --- autoload/quickfixsigns.vim | 1 + plugin/quickfixsigns.vim | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/autoload/quickfixsigns.vim b/autoload/quickfixsigns.vim index 4a577e5..0b85a70 100755 --- a/autoload/quickfixsigns.vim +++ b/autoload/quickfixsigns.vim @@ -69,6 +69,7 @@ function! quickfixsigns#AssertUniqueSigns(bufnr, bufsigns) "{{{3 for bsign in a:bufsigns let key = printf("%s|%s", bsign.lnum, bsign.name) if has_key(dict, key) + " XXX: only usage of "sign.sign" echom ("QuickFixSigns AssertUniqueSigns: duplicate bufnr=". a:bufnr .":") bsign.sign else let dict[key] = 1 diff --git a/plugin/quickfixsigns.vim b/plugin/quickfixsigns.vim index 5bd5d11..3558450 100755 --- a/plugin/quickfixsigns.vim +++ b/plugin/quickfixsigns.vim @@ -849,6 +849,19 @@ function! QuickfixsignsListBufferSigns(bufnr) "{{{3 if a:bufnr == -1 return [] endif + + if exists('*sign_getplaced') + let r = [] + for sign in sign_getplaced(a:bufnr)[0].signs + call add(r, { + \ 'lnum': sign.lnum, + \ 'id': sign.id, + \ 'name': sign.name, + \ }) + endfor + return r + endif + let signss = s:Redir('sign place buffer='. a:bufnr) if exists('signss') let signs = split(signss, '\n')