From 81913034c6481c95ace92b647370e80dcee954bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= Date: Thu, 6 Dec 2018 10:23:19 +0800 Subject: =?UTF-8?q?hover=E5=AE=9A=E4=B9=89?= 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 | 2 ++ server/src/method/textDocument/hover.lua | 25 +++++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 server/src/method/textDocument/hover.lua (limited to 'server/src/method') diff --git a/server/src/method/init.lua b/server/src/method/init.lua index 7a465f98..c01152a7 100644 --- a/server/src/method/init.lua +++ b/server/src/method/init.lua @@ -12,6 +12,7 @@ init 'textDocument/definition' init 'textDocument/didOpen' init 'textDocument/didChange' init 'textDocument/didClose' +init 'textDocument/hover' init 'textDocument/implementation' init 'textDocument/rename' init 'textDocument/references' diff --git a/server/src/method/initialize.lua b/server/src/method/initialize.lua index ac125ae8..161959d4 100644 --- a/server/src/method/initialize.lua +++ b/server/src/method/initialize.lua @@ -2,6 +2,8 @@ return function (lsp, data) lsp._inited = true return { capabilities = { + -- 支持“悬浮” + hoverProvider = true, -- 支持“转到定义” definitionProvider = true, -- 支持“转到实现” diff --git a/server/src/method/textDocument/hover.lua b/server/src/method/textDocument/hover.lua new file mode 100644 index 00000000..2fd7aaec --- /dev/null +++ b/server/src/method/textDocument/hover.lua @@ -0,0 +1,25 @@ +local parser = require 'parser' +local matcher = require 'matcher' + +return function (lsp, params) + local uri = params.textDocument.uri + local results, lines = lsp:loadText(uri) + if not results then + return nil + end + -- lua是从1开始的,因此都要+1 + local position = lines:position(params.position.line + 1, params.position.character + 1, 'utf8') + local text, kind = matcher.hover(results, position) + if not text then + return nil + end + + local response = { + contents = { + value = text, + kind = kind, + } + } + + return response +end -- cgit debian/1.2.3+git2.25.1-1-2-gaceb0