diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2020-12-05 20:52:34 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2020-12-05 20:52:34 +0800 |
commit | 5aace85b14473a161e9c64a410b06bf90d563762 (patch) | |
tree | 14fb0c91af7796595d2159162c8021cb20b49512 /script/core | |
parent | bab7c96347957948d59a85ebb3e3288c8273e3bb (diff) | |
download | lua-language-server-5aace85b14473a161e9c64a410b06bf90d563762.zip |
hover function by keyword `function`
Diffstat (limited to 'script/core')
-rw-r--r-- | script/core/find-source.lua | 16 | ||||
-rw-r--r-- | script/core/hover/init.lua | 1 | ||||
-rw-r--r-- | script/core/reference.lua | 8 |
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) |