LuaLS / LuaLS/lua-language-server
No autocomplete for the "submodules" of a library when those included from init.lua
まだ誰も着手していません。
- 主要言語
- Lua
- スター
- 4.4k
- フォーク
- 442
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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:
and init.lua is
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:
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
Coc-config:
{
"suggest.noselect": true,
"Lua.workspace.library" : [
"/usr/local/share/lua/5.1"
]
}
The problem
If I write
local Button = require('likelihud.ImageButton')
I get autocomplete for Button.
But if instead I do
local ui = require('likelihud')
I get only those fields when I do ui., but the fields are unknown. :
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 ?
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
提供された init.lua モジュールと rockspec から始め、示されている workspace.library 設定を使って LuaLS で 2 つの require パターンを再現します。動的な require パスがどのように解決され、返されたテーブルのフィールドがどのように型を受け取るかを追跡します。ui. が init.lua からエクスポートされたモジュールに対して、既知の型付きフィールドを提供すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- lua
- 領域
- developer-experience, tooling
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 52/100