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

分别在不同的lua文件中定义的方法不能提示

Open wwwfox opened this issue 6 years ago • 6 comments

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?(其它说明)

wwwfox avatar Dec 14 '18 08:12 wwwfox

不行的。你应该 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.理论上就有提示

ice1000 avatar Dec 14 '18 09:12 ice1000

我的项目是cocos2dx-lua引擎写的,因为禁用全局变量,所有全局变量都是通过cc.exports来导出,导致都不能提示

wwwfox avatar Dec 22 '18 06:12 wwwfox

辣就hin惨了……手写注解来提示?

ice1000 avatar Dec 22 '18 06:12 ice1000

随便写一个lua文件(实际项目用不到的,但在IDEA里) api.lua

ww = {
    gg = {
        aa = function()  end,
        bb = function()  end,
        ---@type fun():void
        cc = nil
    }
}

tangzx avatar Dec 22 '18 06:12 tangzx

我的项目是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来访问的时候就会有代码提示了。。。

luchuanbaker avatar Dec 25 '18 13:12 luchuanbaker

辣就hin惨了……手写注解来提示?

请教一下如何手写注解,我手写注解好像也没用

hydraulic avatar Mar 22 '24 01:03 hydraulic