diff options
-rw-r--r-- | autoload/ale/completion.vim | 4 | ||||
-rw-r--r-- | test/completion/test_lsp_completion_parsing.vader | 39 |
2 files changed, 43 insertions, 0 deletions
diff --git a/autoload/ale/completion.vim b/autoload/ale/completion.vim index c15a4867..c3139da5 100644 --- a/autoload/ale/completion.vim +++ b/autoload/ale/completion.vim @@ -296,6 +296,10 @@ function! ale#completion#ParseLSPCompletions(response) abort \}) endfor + if has_key(l:info, 'prefix') + return ale#completion#Filter(l:buffer, l:results, l:info.prefix) + endif + return l:results endfunction diff --git a/test/completion/test_lsp_completion_parsing.vader b/test/completion/test_lsp_completion_parsing.vader index c9c51a66..23bbd14c 100644 --- a/test/completion/test_lsp_completion_parsing.vader +++ b/test/completion/test_lsp_completion_parsing.vader @@ -390,3 +390,42 @@ Execute(Should handle Python completion results correctly): \ ] \ } \ }) + +Execute(Should handle Python completion results correctly): + let b:ale_completion_info = { + \ 'completion_filter': 'ale#completion#python#CompletionItemFilter', + \ 'prefix': 'mig', + \} + + AssertEqual + \ [ + \ {'word': 'migrations', 'menu': 'xxx', 'info': 'migrations', 'kind': 'f', 'icase': 1}, + \ {'word': 'MigEngine', 'menu': 'xxx', 'info': 'mig engine', 'kind': 'f', 'icase': 1}, + \ ], + \ ale#completion#ParseLSPCompletions({ + \ 'jsonrpc': '2.0', + \ 'id': 6, + \ 'result': { + \ 'isIncomplete': v:false, + \ 'items': [ + \ { + \ 'label': 'migrations', + \ 'kind': 3, + \ 'detail': 'xxx', + \ 'documentation': 'migrations', + \ }, + \ { + \ 'label': 'MigEngine', + \ 'kind': 3, + \ 'detail': 'xxx', + \ 'documentation': 'mig engine', + \ }, + \ { + \ 'label': 'ignore me', + \ 'kind': 3, + \ 'detail': 'nope', + \ 'documentation': 'nope', + \ }, + \ ] + \ } + \ }) |