summaryrefslogtreecommitdiff
path: root/script/vm/global.lua
blob: af30ffdd2d47a45f1debc3c630526c90cd084eae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
local library = require 'core.library'
local libraryBuilder = require 'vm.library'
local sourceMgr = require 'vm.source'

return function (lsp)
    local global = lsp and lsp.globalValue
    if not global then
        libraryBuilder.clear()
        local t = {}
        for name, lib in pairs(library.global) do
            t[name] = libraryBuilder.value(lib)
        end

        global = t._G
        global:markGlobal()
        global:set('ENV', true)
        for k, v in pairs(t) do
            global:setChild(k, v, sourceMgr.dummy())
        end
    end
    if lsp then
        lsp.globalValue = global
    end
    return global
end