From 24d7debdfb779bbc4efcd911b9d49dffe4822c2b Mon Sep 17 00:00:00 2001 From: Shantanu Raj Date: Sun, 9 Feb 2025 19:02:46 +0100 Subject: fix(lsp): signature_help highlights wrong parameter #32382 Problem: With some LSP servers, `vim.lsp.buf.signature_help` (CTRL-s in insert-mode) highlights the first parameter regardless of the current cursor position. - On some lsps the `textDocument/signatureHelp` response only includes the `activeParameter` field on the `lsp.SignatureHelp` object. ```lua { { result = { activeParameter = 2, signatures = { { documentation = { kind = "markdown", value = "" }, label = "getBuyers(ctx context.Context, orderDB boil.ContextExecutor, supplierID string) ([]*BuyerWithLocation, error)", parameters = { { label = "ctx context.Context" }, { label = "orderDB boil.ContextExecutor" }, { label = "supplierID string" } } } } } } } ``` Solution: Ensure we retain this information before showing the signature information. Closes #32381 --- runtime/lua/vim/lsp/buf.lua | 1 + 1 file changed, 1 insertion(+) (limited to 'runtime/lua/vim') diff --git a/runtime/lua/vim/lsp/buf.lua b/runtime/lua/vim/lsp/buf.lua index 48aa809ebd..d4a7e066f6 100644 --- a/runtime/lua/vim/lsp/buf.lua +++ b/runtime/lua/vim/lsp/buf.lua @@ -315,6 +315,7 @@ local function process_signature_help_results(results) local result = r.result --- @type lsp.SignatureHelp if result and result.signatures and result.signatures[1] then for _, sig in ipairs(result.signatures) do + sig.activeParameter = sig.activeParameter or result.activeParameter signatures[#signatures + 1] = { client, sig } end end -- cgit