summaryrefslogtreecommitdiff
path: root/script/core
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2020-12-05 20:52:34 +0800
committer最萌小汐 <sumneko@hotmail.com>2020-12-05 20:52:34 +0800
commit5aace85b14473a161e9c64a410b06bf90d563762 (patch)
tree14fb0c91af7796595d2159162c8021cb20b49512 /script/core
parentbab7c96347957948d59a85ebb3e3288c8273e3bb (diff)
downloadlua-language-server-5aace85b14473a161e9c64a410b06bf90d563762.zip
hover function by keyword `function`
Diffstat (limited to 'script/core')
-rw-r--r--script/core/find-source.lua16
-rw-r--r--script/core/hover/init.lua1
-rw-r--r--script/core/reference.lua8
3 files changed, 17 insertions, 8 deletions
diff --git a/script/core/find-source.lua b/script/core/find-source.lua
index 32de102c..edbb1e2c 100644
--- a/script/core/find-source.lua
+++ b/script/core/find-source.lua
@@ -1,9 +1,25 @@
local guide = require 'parser.guide'
+local function isValidFunctionPos(source, offset)
+ for i = 1, #source.keyword // 2 do
+ local start = source.keyword[i * 2 - 1]
+ local finish = source.keyword[i * 2]
+ if offset >= start and offset <= finish then
+ return true
+ end
+ end
+ return false
+end
+
return function (ast, offset, accept)
local len = math.huge
local result
guide.eachSourceContain(ast.ast, offset, function (source)
+ if source.type == 'function' then
+ if not isValidFunctionPos(source, offset) then
+ return
+ end
+ end
local start, finish = guide.getStartFinish(source)
if finish - start < len and accept[source.type] then
result = source
diff --git a/script/core/hover/init.lua b/script/core/hover/init.lua
index dac357c0..28aef3e6 100644
--- a/script/core/hover/init.lua
+++ b/script/core/hover/init.lua
@@ -143,6 +143,7 @@ local accept = {
['string'] = true,
['number'] = true,
['doc.type.name'] = true,
+ ['function'] = true,
}
local function getHoverByUri(uri, offset)
diff --git a/script/core/reference.lua b/script/core/reference.lua
index a522909f..f828e0cb 100644
--- a/script/core/reference.lua
+++ b/script/core/reference.lua
@@ -3,11 +3,6 @@ local files = require 'files'
local vm = require 'vm'
local findSource = require 'core.find-source'
-local function isValidFunction(source, offset)
- -- 必须点在 `function` 这个单词上才能查找函数引用
- return offset >= source.start and offset < source.start + #'function'
-end
-
local function sortResults(results)
-- 先按照顺序排序
table.sort(results, function (a, b)
@@ -65,9 +60,6 @@ return function (uri, offset)
if not source then
return nil
end
- if source.type == 'function' and not isValidFunction(source, offset) and not TEST then
- return nil
- end
local metaSource = vm.isMetaFile(uri)