diff options
author | Robert Muir <rcmuir@gmail.com> | 2025-02-13 05:08:11 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-13 11:08:11 +0100 |
commit | b42dc232c53211e718a39d8df2f80402f7ad9ac6 (patch) | |
tree | c879ea6b631fc55c369f338f5c9095d3282273e1 /runtime/lua/vim/lsp/completion.lua | |
parent | 0c3d2c9560193a136c5c16353d232dd59f99353f (diff) | |
download | rneovim-b42dc232c53211e718a39d8df2f80402f7ad9ac6.tar.gz rneovim-b42dc232c53211e718a39d8df2f80402f7ad9ac6.tar.bz2 rneovim-b42dc232c53211e718a39d8df2f80402f7ad9ac6.zip |
fix(lsp): autotrigger should only trigger on client's triggerCharacters (#32266)
Problem: autotrigger option of vim.lsp.completion.enable() would trigger
all clients, as long as it matched at least one client's
triggerCharacters.
Solution: trigger only the clients with triggerCharacters matching the
character. overtriggering still happens if any client returns
isIncomplete=true (this case is more involved).
Co-authored-by: Mathias Fussenegger <f.mathias@zignar.net>
Diffstat (limited to 'runtime/lua/vim/lsp/completion.lua')
-rw-r--r-- | runtime/lua/vim/lsp/completion.lua | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp/completion.lua b/runtime/lua/vim/lsp/completion.lua index cf6d07745f..09d38bbce3 100644 --- a/runtime/lua/vim/lsp/completion.lua +++ b/runtime/lua/vim/lsp/completion.lua @@ -518,11 +518,14 @@ local function on_insert_char_pre(handle) end local char = api.nvim_get_vvar('char') - if not completion_timer and handle.triggers[char] then + local matched_clients = handle.triggers[char] + if not completion_timer and matched_clients then completion_timer = assert(vim.uv.new_timer()) completion_timer:start(25, 0, function() reset_timer() - vim.schedule(M.trigger) + vim.schedule(function() + trigger(api.nvim_get_current_buf(), matched_clients) + end) end) end end |