summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2021-09-28 17:44:46 +0800
committer最萌小汐 <sumneko@hotmail.com>2021-09-28 17:44:46 +0800
commitc45a21271556b6c689ee61fd5353846f469e4622 (patch)
treedf0ce3ef26ba916b230ffc27e25168e3947f2273
parentf1a974b7ea759adcd4af571bc7752d5b4761927b (diff)
downloadlua-language-server-c45a21271556b6c689ee61fd5353846f469e4622.zip
#477 supports hover
-rw-r--r--script/core/definition.lua3
-rw-r--r--script/core/hover/description.lua14
-rw-r--r--script/core/searcher.lua1
-rw-r--r--script/parser/guide.lua1
-rw-r--r--test/crossfile/hover.lua17
5 files changed, 26 insertions, 10 deletions
diff --git a/script/core/definition.lua b/script/core/definition.lua
index 335e178e..d77ddac1 100644
--- a/script/core/definition.lua
+++ b/script/core/definition.lua
@@ -172,6 +172,9 @@ return function (uri, offset)
goto CONTINUE
end
end
+ if src.type == 'doc.param' then
+ goto CONTINUE
+ end
results[#results+1] = {
target = src,
diff --git a/script/core/hover/description.lua b/script/core/hover/description.lua
index fc220c74..f0534373 100644
--- a/script/core/hover/description.lua
+++ b/script/core/hover/description.lua
@@ -344,16 +344,10 @@ local function tyrDocParamComment(source)
if source.parent.type ~= 'funcargs' then
return
end
- if not source.bindDocs then
- return
- end
- for _, doc in ipairs(source.bindDocs) do
- if doc.type == 'doc.param' then
- if doc.param[1] == source[1] then
- if doc.comment then
- return doc.comment.text
- end
- break
+ for _, def in ipairs(vm.getDefs(source)) do
+ if def.type == 'doc.param' then
+ if def.comment then
+ return def.comment.text
end
end
end
diff --git a/script/core/searcher.lua b/script/core/searcher.lua
index 487de982..4d72b038 100644
--- a/script/core/searcher.lua
+++ b/script/core/searcher.lua
@@ -115,6 +115,7 @@ local pushDefResultsMap = util.switch()
: case 'doc.field.name'
: case 'doc.type.enum'
: case 'doc.resume'
+ : case 'doc.param'
: case 'doc.type.array'
: case 'doc.type.table'
: case 'doc.type.ltable'
diff --git a/script/parser/guide.lua b/script/parser/guide.lua
index 58981763..07bbc0cd 100644
--- a/script/parser/guide.lua
+++ b/script/parser/guide.lua
@@ -55,6 +55,7 @@ local type = type
---@field returnIndex integer
---@field docs parser.guide.object[]
---@field state table
+---@field comment table
---@field _root parser.guide.object
---@field _noders noders
---@field _mnode parser.guide.object
diff --git a/test/crossfile/hover.lua b/test/crossfile/hover.lua
index 1c46214c..97e6218d 100644
--- a/test/crossfile/hover.lua
+++ b/test/crossfile/hover.lua
@@ -969,3 +969,20 @@ p: T
| b -- comment 3
-- comment 4
```]]}
+
+TEST {{ path = 'a.lua', content = '', }, {
+ path = 'b.lua',
+ content = [[
+---@param x number # aaa
+local f
+
+function f(<?x?>) end
+]]
+},
+hover = [[
+```lua
+local x: number
+```
+
+---
+ aaa]]}