diff options
author | Shantanu Raj <s@sraj.me> | 2025-02-09 19:02:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-09 10:02:46 -0800 |
commit | 24d7debdfb779bbc4efcd911b9d49dffe4822c2b (patch) | |
tree | 8cff4c42b660aec186203546f4c6be192e0bdaac | |
parent | 198a952c13a1f44c216d3e83b65295cf78802f30 (diff) | |
download | rneovim-24d7debdfb779bbc4efcd911b9d49dffe4822c2b.tar.gz rneovim-24d7debdfb779bbc4efcd911b9d49dffe4822c2b.tar.bz2 rneovim-24d7debdfb779bbc4efcd911b9d49dffe4822c2b.zip |
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
-rw-r--r-- | runtime/lua/vim/lsp/buf.lua | 1 |
1 files changed, 1 insertions, 0 deletions
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 |