From 3c5ff2671305041d03cde8dafb05d4aed0cc0a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Fri, 21 Dec 2018 16:50:01 +0800 Subject: =?UTF-8?q?=E6=89=BE=E5=BD=93=E5=89=8D=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/method/init.lua | 1 + server/src/method/initialize.lua | 4 ++ server/src/method/textDocument/signatureHelp.lua | 48 ++++++++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 server/src/method/textDocument/signatureHelp.lua (limited to 'server/src/method') diff --git a/server/src/method/init.lua b/server/src/method/init.lua index 22c58289..ea7fa05a 100644 --- a/server/src/method/init.lua +++ b/server/src/method/init.lua @@ -18,6 +18,7 @@ init 'textDocument/implementation' init 'textDocument/publishDiagnostics' init 'textDocument/rename' init 'textDocument/references' +init 'textDocument/signatureHelp' init 'workspace/didChangeWatchedFiles' init 'workspace/didChangeWorkspaceFolders' diff --git a/server/src/method/initialize.lua b/server/src/method/initialize.lua index 05a1bb49..4bc3ff2e 100644 --- a/server/src/method/initialize.lua +++ b/server/src/method/initialize.lua @@ -12,6 +12,10 @@ return function (lsp) referencesProvider = true, -- 支持“重命名” renameProvider = true, + -- 支持“签名帮助” + signatureHelpProvider = { + triggerCharacters = { '(', ',' }, + }, -- 文本同步方式 textDocumentSync = { -- 打开关闭文本时通知 diff --git a/server/src/method/textDocument/signatureHelp.lua b/server/src/method/textDocument/signatureHelp.lua new file mode 100644 index 00000000..0fb7fd10 --- /dev/null +++ b/server/src/method/textDocument/signatureHelp.lua @@ -0,0 +1,48 @@ +local matcher = require 'matcher' + +return function (lsp, params) + local uri = params.textDocument.uri + local vm, lines = lsp:loadVM(uri) + if not vm then + 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说明', + }, + }, + }, + }, + } + } +end -- cgit v1.2.3