summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2020-11-10 10:38:34 +0800
committer最萌小汐 <sumneko@hotmail.com>2020-11-10 10:38:34 +0800
commit63896ba92a934bdb6a4952882f486d1389a92a67 (patch)
tree687c6c807dacbfae54ea9a21a0cf984227cc8a7f
parent86f40ba0cbdb6ef0762e7b7bd681568f83d312e7 (diff)
downloadlua-language-server-63896ba92a934bdb6a4952882f486d1389a92a67.zip
#244 向前搜索赋值不受搜索深度影响,经测试该功能对性能影响很小
-rw-r--r--script-beta/parser/guide.lua8
-rw-r--r--test-beta/crossfile/definition.lua32
-rw-r--r--test-beta/crossfile/hover.lua7
3 files changed, 40 insertions, 7 deletions
diff --git a/script-beta/parser/guide.lua b/script-beta/parser/guide.lua
index 88a09481..cbb64cf4 100644
--- a/script-beta/parser/guide.lua
+++ b/script-beta/parser/guide.lua
@@ -1780,6 +1780,9 @@ function m.searchSameFieldsInValue(status, ref, start, queue, mode)
end
function m.checkSameSimpleAsTableField(status, ref, start, queue)
+ if not status.deep then
+ return
+ end
local parent = ref.parent
if not parent or parent.type ~= 'tablefield' then
return
@@ -1809,6 +1812,9 @@ function m.checkSearchLevel(status)
end
function m.checkSameSimpleAsReturn(status, ref, start, queue)
+ if not status.deep then
+ return
+ end
if not ref.parent or ref.parent.type ~= 'return' then
return
end
@@ -2007,7 +2013,7 @@ function m.checkSameSimple(status, simple, data, mode, queue)
m.checkSameSimpleInValueOfCallMetaTable(status, ref, i, queue)
-- 检查自己是特殊变量的分支的情况
m.checkSameSimpleInSpecialBranch(status, ref, i, queue)
- if cmode == 'ref' and status.deep then
+ if cmode == 'ref' then
-- 检查形如 { a = f } 的情况
m.checkSameSimpleAsTableField(status, ref, i, queue)
-- 检查形如 return m 的情况
diff --git a/test-beta/crossfile/definition.lua b/test-beta/crossfile/definition.lua
index 743325c2..5bc99a19 100644
--- a/test-beta/crossfile/definition.lua
+++ b/test-beta/crossfile/definition.lua
@@ -1,6 +1,7 @@
-local files = require 'files'
-local furi = require 'file-uri'
-local core = require 'core.definition'
+local files = require 'files'
+local furi = require 'file-uri'
+local core = require 'core.definition'
+local config = require 'config'
rawset(_G, 'TEST', true)
@@ -558,6 +559,31 @@ TEST {
},
}
+config.config.intelliSense.searchDepth = 0
+
+TEST {
+ {
+ path = 'a.lua',
+ content = [[
+ local t = GlobalTable
+
+ t.settings = {
+ <!test!> = 1
+ }
+ ]],
+ },
+ {
+ path = 'b.lua',
+ content = [[
+ local b = GlobalTable.settings
+
+ print(b.<?test?>)
+ ]]
+ },
+}
+
+config.config.intelliSense.searchDepth = 5
+
TEST {
{
path = 'a.lua',
diff --git a/test-beta/crossfile/hover.lua b/test-beta/crossfile/hover.lua
index 8cd5eada..a049a66a 100644
--- a/test-beta/crossfile/hover.lua
+++ b/test-beta/crossfile/hover.lua
@@ -1,6 +1,7 @@
-local files = require 'files'
-local furi = require 'file-uri'
-local core = require 'core.hover'
+local files = require 'files'
+local furi = require 'file-uri'
+local core = require 'core.hover'
+local config = require 'config'
rawset(_G, 'TEST', true)