diff options
author | sumneko <sumneko@hotmail.com> | 2019-04-15 16:47:21 +0800 |
---|---|---|
committer | sumneko <sumneko@hotmail.com> | 2019-04-15 16:47:21 +0800 |
commit | 12373b0f4e0b44ed98c9eaa8ce0c6b8c3f3697b5 (patch) | |
tree | 36b197259121c6ea0166cd35d16337776b757b5b /server | |
parent | 31cb7ffd42ba378b1d8f7688c81a0af8562d2d86 (diff) | |
download | lua-language-server-12373b0f4e0b44ed98c9eaa8ce0c6b8c3f3697b5.zip |
find_name 排序结果
Diffstat (limited to 'server')
-rw-r--r-- | server/src/core/hover/name.lua | 13 | ||||
-rw-r--r-- | server/test/find_lib/init.lua | 2 |
2 files changed, 11 insertions, 4 deletions
diff --git a/server/src/core/hover/name.lua b/server/src/core/hover/name.lua index e5880884..763083b9 100644 --- a/server/src/core/hover/name.lua +++ b/server/src/core/hover/name.lua @@ -17,14 +17,21 @@ return function (source) end if not declarat then -- 如果声明者没有给名字,则找一个合适的名字 - local name = value:eachInfo(function (info, src) + local names = {} + value:eachInfo(function (info, src) if info.type == 'local' or info.type == 'set' or info.type == 'return' then if src.type == 'name' and src.uri == value.uri then - return src[1] + names[#names+1] = src end end end) - return name or '' + if #names == 0 then + return '' + end + table.sort(names, function (a, b) + return a.id < b.id + end) + return names[1][1] or '' end return getName(declarat, source) diff --git a/server/test/find_lib/init.lua b/server/test/find_lib/init.lua index 770c4121..bc60cfad 100644 --- a/server/test/find_lib/init.lua +++ b/server/test/find_lib/init.lua @@ -28,7 +28,7 @@ TEST 'req<require>' [[ local <?req?> = require ]] -TEST 'xx<require>' [[ +TEST 'req<require>' [[ local req = require local t = { xx = req, |