summaryrefslogtreecommitdiff
path: root/server/src/core
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2019-03-21 14:40:27 +0800
committer最萌小汐 <sumneko@hotmail.com>2019-03-21 14:40:27 +0800
commit9323ee02699e8f12a7ce19df873e69256b3a2678 (patch)
treea200861ed6aee2413b3f5b52151ce891964ffc45 /server/src/core
parent1c038bc8af402ed05ebc10b78b8274c95ee0b4e1 (diff)
downloadlua-language-server-9323ee02699e8f12a7ce19df873e69256b3a2678.zip
优先取call内部的参数
Diffstat (limited to 'server/src/core')
-rw-r--r--server/src/core/find_source.lua11
1 files changed, 11 insertions, 0 deletions
diff --git a/server/src/core/find_source.lua b/server/src/core/find_source.lua
index 65df6b95..4c4c460c 100644
--- a/server/src/core/find_source.lua
+++ b/server/src/core/find_source.lua
@@ -20,8 +20,19 @@ local function findAtPos(sources, pos, level)
return nil
end
table.sort(res, function (a, b)
+ if a == b then
+ return false
+ end
local rangeA = a.finish - a.start
local rangeB = b.finish - b.start
+ -- 特殊处理:func 'str' 的情况下,list与string的范围会完全相同,此时取string
+ if rangeA == rangeB then
+ if b.type == 'call' and #b == 1 and b[1] == a then
+ return true
+ else
+ return false
+ end
+ end
return rangeA < rangeB
end)
local source = res[level or 1]