Skip to content

Commit

Permalink
fix: signatureHelp error on basedpyright
Browse files Browse the repository at this point in the history
  • Loading branch information
jinzhongjia committed Jan 1, 2025
1 parent a783d90 commit 2a5164f
Showing 1 changed file with 23 additions and 14 deletions.
37 changes: 23 additions & 14 deletions lua/LspUI/signature/util.lua
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,27 @@ local is_there_virtual_text = false
--- @field doc string?

--- @param help lsp.SignatureHelp|nil
--- @param client_name string|nil
--- @return signature_info? res len will not be zero
local build_signature_info = function(help)
local build_signature_info = function(help, client_name)
if not help then
return nil
end
if #help.signatures == 0 then
return nil
end

local active_signature = help.activeSignature and help.activeSignature + 1
or 1
local active_parameter = help.activeParameter and help.activeParameter + 1
or 1

local active_signature, active_parameter
-- this logic is in order to handle certain lsp specification implementations that are not standard
if client_name == "basedpyright" then
active_signature = help.activeSignature and help.activeSignature or 1
active_parameter = help.activeParameter and help.activeParameter or 1
else
active_signature = help.activeSignature and help.activeSignature + 1
or 1
active_parameter = help.activeParameter and help.activeParameter + 1
or 1
end
--- @type signature_info
---@diagnostic disable-next-line: missing-fields
local res = {}
Expand Down Expand Up @@ -90,11 +97,11 @@ local signature_group

local signature_namespace = api.nvim_create_namespace("LspUI_signature")

--- @type { data: lsp.SignatureHelp?, }
--- @type { data: lsp.SignatureHelp?,client_name:string|nil }
local backup = {}

--- @param buffer_id number buffer's id
--- @param callback fun(result: lsp.SignatureHelp|nil) callback function
--- @param callback fun(result: lsp.SignatureHelp|nil,client_name:string|nil) callback function
M.request = function(buffer_id, callback)
-- this buffer id maybe invalid
if not api.nvim_buf_is_valid(buffer_id) then
Expand Down Expand Up @@ -127,7 +134,7 @@ M.request = function(buffer_id, callback)
)
return
end
callback(result)
callback(result, client.name)
end,
buffer_id
)
Expand Down Expand Up @@ -156,8 +163,9 @@ local signature_handle = function()
backup.data = nil
return
end
M.request(current_buffer, function(result)
M.request(current_buffer, function(result, client_name)
backup.data = result
backup.client_name = client_name

local mode_info = vim.api.nvim_get_mode()
local mode = mode_info["mode"]
Expand All @@ -175,7 +183,7 @@ local signature_handle = function()
end

local current_window = api.nvim_get_current_win()
M.render(result, current_buffer, current_window)
M.render(result, current_buffer, current_window, client_name)
end)
end

Expand All @@ -197,8 +205,9 @@ end
--- @param data lsp.SignatureHelp|nil
--- @param buffer_id integer
--- @param windows_id integer
M.render = function(data, buffer_id, windows_id)
local info = build_signature_info(data)
--- @param client_name string|nil
M.render = function(data, buffer_id, windows_id, client_name)
local info = build_signature_info(data, client_name)
if not info then
return
end
Expand Down Expand Up @@ -304,7 +313,7 @@ end

--- @return signature_info?
M.status_line = function()
return build_signature_info(backup.data)
return build_signature_info(backup.data, backup.client_name)
end

return M

0 comments on commit 2a5164f

Please sign in to comment.