LuaLS / LuaLS/lua-language-server

No autocomplete for the "submodules" of a library when those included from init.lua

Abierto
#3,409 1 comentario 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

Dear developers, I've read similar existing issues but didn't find the answer.

I have a library (which I am the developer of) which has this structure:

Image

and `init.lua` is

```lua
local UI = (...) .. '.'

return {
Block = require(UI .. 'Block'),
Image = require(UI .. 'Image'),
Label = require(UI .. 'Label'),
Layout = require(UI .. 'Layout'),
Rectangle = require(UI .. 'Rectangle'),
Stack = require(UI .. 'Stack'),

ImageButton = require(UI .. 'ImageButton'),
TextField = require(UI .. 'TextField'),

utils = require(UI .. 'utils')
}
```

and the rockspec contains this:

```lua
build = {
type = 'builtin',
modules = {
['likelihud'] = 'likelihud/init.lua',
['likelihud.Block'] = 'likelihud/Block.lua',
['likelihud.Image'] = 'likelihud/Image.lua',
['likelihud.Label'] = 'likelihud/Label.lua',
['likelihud.Layout'] = 'likelihud/Layout.lua',
['likelihud.Rectangle'] = 'likelihud/Rectangle.lua',
['likelihud.Stack'] = 'likelihud/Stack.lua',
['likelihud.ImageButton'] = 'likelihud/ImageButton.lua',
['likelihud.TextField'] = 'likelihud/TextField.lua',
['likelihud.utils'] = 'likelihud/utils.lua',
},
}
```
So after install I have

Image

Coc-config:

```json
{
"suggest.noselect": true,
"Lua.workspace.library" : [
"/usr/local/share/lua/5.1"
]
}
```

# The problem

If I write

```lua
local Button = require('likelihud.ImageButton')
```
I get autocomplete for `Button`.

But if instead I do

```lua
local ui = require('likelihud')
```
I get only those fields when I do `ui.`, _but the fields are unknown._ :

Image

So the problem LSP doesn't resolve this `(...) .. '.'` inside `init.lua`. Should I somehow change how `init.lua` provides those files or how to fix that ?

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 con el módulo init.lua y el rockspec proporcionados, y luego reproduce los dos patrones de require en LuaLS con la configuración workspace.library mostrada. Sigue cómo se resuelven las rutas dinámicas de require y cómo los campos de las tablas devueltas reciben tipos; el trabajo estará terminado cuando ui. ofrezca campos conocidos y tipados para los módulos exportados por init.lua.

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

Evaluación

Stack tecnológico
lua
Área
developer-experience, tooling
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
52/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.