From 6da2b175e20ed3c03b0dfcfc9046de1e0e5d4444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Sat, 23 Nov 2019 00:05:30 +0800 Subject: =?UTF-8?q?=E6=AD=A3=E8=B7=AF=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/method/textDocument/signatureHelp.lua | 50 ++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 script/method/textDocument/signatureHelp.lua (limited to 'script/method/textDocument/signatureHelp.lua') diff --git a/script/method/textDocument/signatureHelp.lua b/script/method/textDocument/signatureHelp.lua new file mode 100644 index 00000000..01d6289d --- /dev/null +++ b/script/method/textDocument/signatureHelp.lua @@ -0,0 +1,50 @@ +local core = require 'core' + +return function (lsp, params) + local uri = params.textDocument.uri + local vm, lines = lsp:loadVM(uri) + if not vm then + return + end + local position = lines:position(params.position.line + 1, params.position.character + 1) + local hovers = core.signature(vm, position) + if not hovers then + return + end + + local hover = hovers[1] + local desc = {} + desc[#desc+1] = hover.description + local active + local signatures = {} + for i, hover in ipairs(hovers) do + local signature = { + label = hover.label, + documentation = { + kind = 'markdown', + value = table.concat(desc, '\n'), + }, + } + if hover.argLabel then + if not active then + active = i + end + signature.parameters = { + { + label = { + hover.argLabel[1] - 1, + hover.argLabel[2], + } + } + } + end + signatures[i] = signature + end + + local response = { + signatures = signatures, + activeSignature = active and active - 1 or 0, + } + + return response +end -- cgit v1.2.3