summaryrefslogtreecommitdiff
path: root/script/vm/global-manager.lua
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2022-04-01 17:54:19 +0800
committer最萌小汐 <sumneko@hotmail.com>2022-04-01 17:54:19 +0800
commitd699b4cac83b81b023323076b74d3d03b6b13ee6 (patch)
treef5b22d0425e0e467a1604d43b4ed6b22b697c81e /script/vm/global-manager.lua
parent231e4e3b2be6f815c1d6734185537f777ef32d88 (diff)
downloadlua-language-server-d699b4cac83b81b023323076b74d3d03b6b13ee6.zip
update
Diffstat (limited to 'script/vm/global-manager.lua')
-rw-r--r--script/vm/global-manager.lua20
1 files changed, 20 insertions, 0 deletions
diff --git a/script/vm/global-manager.lua b/script/vm/global-manager.lua
index 99d1b697..fc9ff633 100644
--- a/script/vm/global-manager.lua
+++ b/script/vm/global-manager.lua
@@ -224,6 +224,26 @@ function m.getGlobal(cate, name, field)
return m.globals[key]
end
+---@param cate vm.global.cate
+---@param name string
+---@return vm.node.global[]
+function m.getFields(cate, name)
+ local globals = {}
+ local key = cate .. '|' .. name
+
+ -- TODO: optimize
+ for gid, global in pairs(m.globals) do
+ if gid ~= key
+ and util.stringStartWith(gid, key)
+ and gid:sub(#key + 1, #key + 1) == m.ID_SPLITE
+ and not gid:find(m.ID_SPLITE, #key + 2) then
+ globals[#globals+1] = global
+ end
+ end
+
+ return globals
+end
+
---@param source parser.object
function m.compileObject(source)
if source._globalNode ~= nil then