IntelliJ-EmmyLua
IntelliJ-EmmyLua copied to clipboard
分别在不同的lua文件中定义的方法不能提示
Environment(环境)
| name | version |
|---|---|
| IDEA version | IC2018.2.7 |
| EmmyLua version | 1.3.0-eap-7 |
| OS | Windows 7 |
What are the steps to reproduce this issue?(重现步骤?)
A.lua ww={} ww.gg={}
B.lua ww.gg.bb={ aa=function() end, bb=function() end }
C.lua ww.gg.cc=function() end
What happens?(出现什么问题?)
ww.gg.没提示
What were you expecting to happen?(期望?)
能够提示
Any logs, error output, etc?(有没有什么log, error输出?)
(If it’s long, please paste to https://ghostbin.com/ and insert the link here.)
Any other comments?(其它说明)
…
不行的。你应该 B.lua wwggbb={ aa=function() end, bb=function() end }
C.lua wwggcc=function() end
调用 local gg={} gg.bb=wwggbb gg.cc=wwggcc ww.gg = gg
然后ww.gg.bb.理论上就有提示
我的项目是cocos2dx-lua引擎写的,因为禁用全局变量,所有全局变量都是通过cc.exports来导出,导致都不能提示
辣就hin惨了……手写注解来提示?
随便写一个lua文件(实际项目用不到的,但在IDEA里)
api.lua
ww = {
gg = {
aa = function() end,
bb = function() end,
---@type fun():void
cc = nil
}
}
我的项目是cocos2dx-lua引擎写的,因为禁用全局变量,所有全局变量都是通过cc.exports来导出,导致都不能提示
其实有一个比较垃圾的办法: 在项目的入口代码中加上: rawset(_G, "Global", cc.exports) Global = Global 即:偷偷声明一个Global的对象,作为cc.exports的别名 然后后面全局的函数和变量都通过Global来创建: Global.bb={ aa=function() end, bb=function() end } Global.cc = function() end
这样,当你通过Global.XXX来访问的时候就会有代码提示了。。。
辣就hin惨了……手写注解来提示?
请教一下如何手写注解,我手写注解好像也没用