python#importcompl#all works with LSP
authorSergey Matveev <stargrave@stargrave.org>
Sun, 21 Nov 2021 13:27:03 +0000 (16:27 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 21 Nov 2021 13:27:03 +0000 (16:27 +0300)
vim/.vim/autoload/python/importcompl.vim

index cc26c792bb8726b6ce93d3bcc6fc592d337e597e..aa9a1685df669c28aac1952af2ebbc3ecf9b64a3 100644 (file)
@@ -56,13 +56,12 @@ function! python#importcompl#all() abort
             let imports[m[2]] = m[1]
         endfor
     endfor
-    let lines = getloclist(winnr())
-    if len(lines) == 0 | let lines = getqflist() | endif
     let result = []
-    for line in lines
-        let m = matchlist(line.text, '\(E0602\|F821\).*' . "'" . '\(\w\+\)' . "'$")
-        if len(m) == 0 || !has_key(imports, m[2]) | continue | endif
-        call insert(result, imports[m[2]])
+    for diag in lsp#ui#vim#diagnostics#get_all_buffer_diagnostics()
+        if diag["message"] !~ "^undefined name" | continue | endif
+        let m = diag["message"][strridx(diag["message"][:-2], "'")+1:-2]
+        if len(m) == 0 || !has_key(imports, m) | continue | endif
+        call insert(result, imports[m])
     endfor
     call sort(result, "i")
     call uniq(result)