diff options
-rw-r--r-- | server/src/method/textDocument/signatureHelp.lua | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/server/src/method/textDocument/signatureHelp.lua b/server/src/method/textDocument/signatureHelp.lua index 0fb7fd10..763e7a15 100644 --- a/server/src/method/textDocument/signatureHelp.lua +++ b/server/src/method/textDocument/signatureHelp.lua @@ -4,45 +4,37 @@ return function (lsp, params) local uri = params.textDocument.uri local vm, lines = lsp:loadVM(uri) if not vm then - return {} + return end -- lua是从1开始的,因此都要+1 local position = lines:position(params.position.line + 1, params.position.character + 1) - do return end - return { - activeSignature = 0, - activeParameter = 1, - signatures = { - { - label = 'xxxx(a, b, c)', - documentation = { - kind = 'markdown', - value = '函数说明', - }, - parameters = { - { - label = 'a', - documentation = { - kind = 'markdown', - value = '参数a说明', - }, - }, - { - label = 'b', - documentation = { - kind = 'markdown', - value = '参数b说明', - }, - }, - { - label = 'c', - documentation = { - kind = 'markdown', - value = '参数c说明', - }, - }, + local hovers = matcher.signature(vm, position) + if not hovers then + return + end + + local signatures = {} + for i, hover in ipairs(hovers) do + signatures[i] = { + label = hover.label, + documentation = { + kind = 'markdown', + value = hover.description, + }, + parameters = { + { + label = hover.argLabel, }, }, } + end + + local response = { + signatures = signatures, + activeSignature = #signatures - 1, } + + log.debug(table.dump(response)) + + return response end |