EmmyLua / IntelliJ-EmmyLua

Lua IDE/Debugger Plugin for IntelliJ IDEA
https://emmylua.github.io
Apache License 2.0
1.74k stars 293 forks source link

希望添加类似Extension 方法的注解。 #433

Closed Gowa2017 closed 2 years ago

Gowa2017 commented 3 years ago

需求的说明: 为了进行热更,我没有使用 Lua 的 require 来进行模块的加载,而是自己定义了自己的加载机制。大体代码类型:

local env = {}
local f, s = loadfile("mod.lua","bt",env)
f()

这样我就可以在 env 来使用任何在 "mod.lua" 内定义的非 local 的变量。对于使用 class 的形式定义的表,没有问题。可以识别到。

但对于一个模块内,我定义一些一些只是函数的东西,因为没有使用 require 的 模式,最后进行 return 来导出,因此对于如下代码:

function a()
end

function b()
end

我将不能使用 "env.a" 的形式进行补全。我希望 @field 将不只是工作在与 @class 一起,而是可以单独工作在方法上或变量上,如:

---@class Mod

---@extension Mod fun() @a 是 Mod 的一个扩展方法
function a()
end

--- 或者扩展一下 @field 的用法
---@field Mod.b fun() @ b 是 Mod 类的成员
function b()
end