diff options
author | Hirokazu Hata <h.hata.ai.t@gmail.com> | 2020-02-18 13:38:52 +0900 |
---|---|---|
committer | Hirokazu Hata <h.hata.ai.t@gmail.com> | 2020-02-19 07:27:29 +0900 |
commit | 4ac376740c85ee337fc10627a793452300801ce0 (patch) | |
tree | 9f1331f76a0708fbe697ae797398cfce20f96e40 /runtime/lua/vim/lsp.lua | |
parent | e2ed8053bf722d4d111fac7dcdb07179fdea8752 (diff) | |
download | rneovim-4ac376740c85ee337fc10627a793452300801ce0.tar.gz rneovim-4ac376740c85ee337fc10627a793452300801ce0.tar.bz2 rneovim-4ac376740c85ee337fc10627a793452300801ce0.zip |
lsp: fix textDocument/completion handling
fix: #11826
Some lanuguage servers return complementary candidates whose prefixes do not match are also returned.
So we exclude completion candidates whose prefix does not match.
ex) Microsoft python-language-server, rust-analyzer
Diffstat (limited to 'runtime/lua/vim/lsp.lua')
-rw-r--r-- | runtime/lua/vim/lsp.lua | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua index 94f0d62d8d..bc0da25ae5 100644 --- a/runtime/lua/vim/lsp.lua +++ b/runtime/lua/vim/lsp.lua @@ -945,12 +945,14 @@ function lsp.omnifunc(findstart, base) -- Get the start position of the current keyword local textMatch = vim.fn.match(line_to_cursor, '\\k*$') + local prefix = line_to_cursor:sub(textMatch+1) + local params = util.make_position_params() local items = {} lsp.buf_request(bufnr, 'textDocument/completion', params, function(err, _, result) if err or not result then return end - local matches = util.text_document_completion_list_to_complete_items(result) + local matches = util.text_document_completion_list_to_complete_items(result, prefix) -- TODO(ashkan): is this the best way to do this? vim.list_extend(items, matches) vim.fn.complete(textMatch+1, items) |