LuaLS / LuaLS/lua-language-server

[Feature Request] Add Lua config file support

Abierto
#3,198 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Lua
Estrellas
4.4k
Forks
442
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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)

-- 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.

-- 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

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza revisando la sintaxis @meta específica de la configuración propuesta y las definiciones de ejemplo en library/rockspec.d.lua y library/busted.d.lua. Compara las alternativas para hacer coincidir nombres de archivos de configuración o URI. Se considera terminado cuando los archivos de configuración de Lua pueden ignorar las variables globales de forma predeterminada y usar definiciones de tipos y de retorno de los archivos de definiciones coincidentes.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
lua
Área
devtools
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
30/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.