summaryrefslogtreecommitdiff
path: root/server/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/core')
-rw-r--r--server/src/core/completion.lua23
1 files changed, 17 insertions, 6 deletions
diff --git a/server/src/core/completion.lua b/server/src/core/completion.lua
index 7da54412..3b6e67e7 100644
--- a/server/src/core/completion.lua
+++ b/server/src/core/completion.lua
@@ -216,12 +216,7 @@ local function sortPairs(t)
end
end
-local function searchFields(vm, source, word, callback)
- local parent = source:get 'parent'
- if not parent then
- return
- end
- local map = {}
+local function searchFieldsByInfo(parent, word, source, map)
parent:eachInfo(function (info, src)
local k = info[1]
if src == source then
@@ -250,6 +245,22 @@ local function searchFields(vm, source, word, callback)
map[k] = v
end
end)
+end
+
+local function searchFields(vm, source, word, callback)
+ local parent = source:get 'parent'
+ if not parent then
+ return
+ end
+ local map = {}
+ local current = parent
+ for _ = 1, 3 do
+ searchFieldsByInfo(current, word, source, map)
+ current = current:getMetaMethod('__index')
+ if not current then
+ break
+ end
+ end
parent:eachChild(function (k, v)
if map[k] then
return