IntelliJ-EmmyLua icon indicating copy to clipboard operation
IntelliJ-EmmyLua copied to clipboard

提案:支持将某张表的字段添加到全局变量中;全局变量区分环境

Open sumneko opened this issue 4 years ago • 5 comments

当前设计见:https://github.com/sumneko/lua-language-server/issues/283 该设计还需要进一步讨论

需求为: 一些项目的全局环境受限,比如通过 module_ENV 将部分脚本的环境隔离开 一些项目会同时运行多个Lua虚拟机,他们的状态应该互相独立

sumneko avatar Dec 05 '20 07:12 sumneko

有过类似的需求 ,不过我的设想是支持partial class,你的例子可以写成

---@partial class _G
local t = {
    X = 1,
    Y = 2,
    Z = 3,
}

print(X) -- `X` is `t.X`

tangzx avatar Dec 06 '20 02:12 tangzx

这样的话,第2个需求就是指定某个class为当前的全局环境嘛?这样相比我之前的方案可以减少一个概念,感觉不错

sumneko avatar Dec 06 '20 04:12 sumneko

我重新编辑了设计,有空请查看一下

sumneko avatar Dec 07 '20 06:12 sumneko

环境是干嘛的?

tangzx avatar Dec 07 '20 06:12 tangzx

例如通过沙盒加载的代码,或者使用了 module 的代码块,他们在访问全局变量时,可以从一个指定的表(class?)中访问,而不是从 _G 中访问。

我目前的想法是,可以通过注解修改从注解开始,到当前代码块结束(或者遇到另一个此类注解)中代码的全局环境。

相关需求可以参考:https://github.com/sumneko/lua-language-server/milestone/1

sumneko avatar Dec 07 '20 06:12 sumneko