diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2018-12-06 10:23:19 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2018-12-06 10:23:19 +0800 |
commit | 81913034c6481c95ace92b647370e80dcee954bb (patch) | |
tree | d69ebafe085f393429b3809fbd7675838c1b9f92 /server/src/method | |
parent | cd57345c054659f27e7b9fdf91d30074a6dca997 (diff) | |
download | lua-language-server-81913034c6481c95ace92b647370e80dcee954bb.zip |
hover定义
Diffstat (limited to 'server/src/method')
-rw-r--r-- | server/src/method/init.lua | 1 | ||||
-rw-r--r-- | server/src/method/initialize.lua | 2 | ||||
-rw-r--r-- | server/src/method/textDocument/hover.lua | 25 |
3 files changed, 28 insertions, 0 deletions
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 |