LuaLS / LuaLS/lua-language-server

[Feature Request] Add Lua config file support

未关闭
#3,198 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

主要语言
Lua
星标
4.4k
派生
442
PR 合并指标
30 天内没有已合并 PR

描述

There are some Lua files that are used for configuration, such as `.busted` or `*.rockspec` files. It would be nice if:

- Any globals defined in them are ignored by default
- Global types and return types can be defined for them in a type definition file

This behavior could all be described by creating a type definition file with a special `(config)` option next to `@meta`. The require name is replaced by a Lua pattern that matches the filename or URI. Either that, or it could be specified as a config-specific option using `---@meta (config: PATTERN)`

```lua
-- library/rockspec.d.lua

---@meta (config) "[%w%.%-%_]+%.rockspec$"

---the rockspec format
---@type string
_G.rockspec_format = nil

---the package name
---@type string
_G.package = nil

---the package version
---@type string
_G.version = nil

---a description of the rock
---@class luarocks.rockspec.description
---@field summary string? -- a short sentence that succinctly describes the rock
---@field description string? -- a paragraph-size description that describes the rock
---@field ...
_G.description = {}
```

For configurations that require returning a table, you could define a local variable with the right type and return it.

```lua
-- library/busted.d.lua

---@meta (config) "%.busted$"

---@class .busted.config
---@field coverage boolean? -- use luacov for coverage
---@field verbose boolean? -- print more things
---@field ...

---a dictionary of Busted configurations. You can specify which one using the
---`--run` option. Uses `default` if no configuration is specified
---@class .busted
---@field default .busted.config?
---@field [string] .busted.config?
local busted_config = {}

return busted_config
```

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

首先查看提议的特定于配置的 `@meta` 语法,以及 `library/rockspec.d.lua` 和 `library/busted.d.lua` 中的示例定义。比较匹配配置文件名或 URI 的各种方案。当 Lua 配置文件默认可以忽略全局变量,并使用匹配的定义文件中的类型和返回值定义时,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
lua
领域
devtools
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
基本清楚
新手友好度
30/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。