EmmyLua / VSCode-EmmyLua

Lua IDE/Debugger Plugin for VSCode
641 stars 95 forks source link

插件仿佛消失了,变量子函数补全功能都没了,没看到错误 #163

Closed tinymins closed 5 months ago

tinymins commented 5 months ago

image

降级到 0.7.6 恢复正常,0.7.7 和 0.8.0 自动补全都没了:

0.7.6

image

0.7.7、0.8.0

image

CppCXY commented 5 months ago

一方面是因为我希望大部分类是只读的这样好做类型检查, 另一方面是解决大量类的联合导致的补全性能问题: 如果存在一个函数用于构造一个表的基础数据 function f()end, 如果多个实例都由这个函数构造:

local a = f()
local c = f()

按照以前简单的类型传递, 对a的所有修改会让c也有对应的提示:

a.a = 123
c. // 此时提示出a

这明显是更不合理的.

所以从0.7.7开始每一个local变量都有自己类型类型不再简单传递, 表达式类型成为他的关联类型, 在local变量上定义的方法归这个变量本身所有.

当然如果希望一个变量是另一个变量的延续, 可以为变量使用emmylua 声明其类型和引用其类型:

---@class SomeGlobal
SomeGlobal = {}
---@type SomeGlobal
local x = SomeGlobal
tinymins commented 5 months ago

感谢! 按照您给的方式增加了---@type问题已解决。

关于 一方面是因为我希望大部分类是只读的这样好做类型检查 ,类确实是只读的,但是因为类过于庞大所以分了多个文件进行定义,类似C#的 PartialClass