summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/matcher/compile.lua2
-rw-r--r--server/src/matcher/hover.lua10
-rw-r--r--server/src/matcher/init.lua1
-rw-r--r--server/src/matcher/rename.lua2
-rw-r--r--server/src/method/init.lua1
-rw-r--r--server/src/method/initialize.lua2
-rw-r--r--server/src/method/textDocument/hover.lua25
-rw-r--r--server/src/service.lua2
8 files changed, 42 insertions, 3 deletions
diff --git a/server/src/matcher/compile.lua b/server/src/matcher/compile.lua
index 4eddd594..68fdf9b6 100644
--- a/server/src/matcher/compile.lua
+++ b/server/src/matcher/compile.lua
@@ -259,7 +259,7 @@ function mt:markSimple(simple)
var = self:searchCall(obj, simple, i)
elseif tp == ':' then
var = self:createLocal('self', simple[i-1], self:getVar(simple[i-1][1]))
- var.disable_rename = true
+ var.disableRename = true
elseif tp == 'name' then
if obj.index then
self:checkName(obj)
diff --git a/server/src/matcher/hover.lua b/server/src/matcher/hover.lua
new file mode 100644
index 00000000..e930c27e
--- /dev/null
+++ b/server/src/matcher/hover.lua
@@ -0,0 +1,10 @@
+local findResult = require 'matcher.find_result'
+
+return function (results, pos)
+ local result = findResult(results, pos)
+ if not result then
+ return nil
+ end
+
+ return nil
+end
diff --git a/server/src/matcher/init.lua b/server/src/matcher/init.lua
index e0134c5b..99149582 100644
--- a/server/src/matcher/init.lua
+++ b/server/src/matcher/init.lua
@@ -3,6 +3,7 @@ local api = {
implementation = require 'matcher.implementation',
references = require 'matcher.references',
rename = require 'matcher.rename',
+ hover = require 'matcher.hover',
compile = require 'matcher.compile',
}
diff --git a/server/src/matcher/rename.lua b/server/src/matcher/rename.lua
index 51613a72..1838960f 100644
--- a/server/src/matcher/rename.lua
+++ b/server/src/matcher/rename.lua
@@ -27,7 +27,7 @@ local function parseResult(result, newName)
if tp == 'var' then
local var = result.var
local key = result.info.source[1]
- if var.disable_rename and key == 'self' then
+ if var.disableRename and key == 'self' then
return positions
end
if result.info.source.index then
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
diff --git a/server/src/service.lua b/server/src/service.lua
index c5987150..267ac29e 100644
--- a/server/src/service.lua
+++ b/server/src/service.lua
@@ -88,7 +88,7 @@ function mt:_buildTextCache()
local passed = os.clock() - clock
log.debug(('\n\z
Cache completion\n\z
- Cost: [%.3f]秒\n\z
+ Cost: [%.3f] sec\n\z
Num: [%d]\n\z
Size: [%.3f]kb\n\z
Speed:[%.3f]kb/s\n\z