LuaLS / LuaLS/lua-language-server

[Feature Request] Add Lua config file support

Ouverte
#3,198 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Lua
Étoiles
4.4k
Forks
442
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par examiner la syntaxe `@meta` spécifique à la configuration proposée et les définitions d’exemple dans `library/rockspec.d.lua` et `library/busted.d.lua`. Comparez les alternatives pour faire correspondre les noms de fichiers de configuration ou les URI. C’est terminé lorsque les fichiers de configuration Lua peuvent ignorer les variables globales par défaut et utiliser les définitions de types et de retours des fichiers de définition correspondants.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
lua
Domaine
devtools
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.