LuaLS / LuaLS/lua-language-server

VS Code variable resolution in @source annotations/relativity of paths

Ouverte
#3,388 0 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

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

Linux

What is the issue affecting?

Diagnostics/Syntax Checking

Expected Behaviour

Intuitively, I expected:

  1. ---@source annotations in meta files with relative paths to be resolved relative to the workspace
  2. VS Code variables in the @source path to be resolved when resolving a path
Actual Behaviour
  1. @source paths are resolved relative to the meta file itself
  2. VS Code variables in the path are not resolved
Reproduction steps
  1. Create .vscode/luals/library/foo.d.lua with:
    ---@meta
    --- @class foo
    _G.foo = {}
    
    ---@source grault/foo.lua:1
    function bar() end
    
  2. Create baz.lua with:
    require("foo")
    local quux = foo.bar()
    
  3. In extension settings, set:
    {
      "Lua.workspace.userThirdParty": ["${fileWorkspaceFolder}/LuaLS"]
    }
    

[!NOTE]
The variable ${fileWorkspaceFolder} resolves correctly and adds the meta file to the list of search paths

  1. Open baz.lua in VS Code editor
  2. Right click bar
  3. Select Go to Definition
  4. Observe:
    VS Code opens a non-existent source file tab to .vscode/luals/library/grault/foo.lua
Additional Notes

This could be two separate issues, but they're tightly related -- one as a Documentation Issue that the relativity of the resolution of the path should be added to the docs, and two as a Bug/Feature Request that VS Code variables be resolved in the @source paths as they are in the settings

Attempting to work around this using VS Code variables has the variable unresolved and taken literally. For example, setting the @source path to /${fileWorkspaceFolder}/grault/foo.lua:1 causes VS Code to open a tab to that literal string instead of the expected /home/me/my_project/grault/foo.lua:1

Log File

No response

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

Reproduisez l’exemple avec .vscode/luals/library/foo.d.lua, baz.lua et le paramètre workspace.userThirdParty. Commencez par retracer la façon dont les chemins @source sont résolus et dont les variables de VS Code sont développées, puis vérifiez le comportement des chemins relatifs et la substitution des variables par rapport à la cible Go to Definition attendue. Documentez la relativité de chemin choisie si elle reste inchangée.

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

Évaluation

Stack technique
lua, vscode
Domaine
devtools
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
55/100

Recevez les nouvelles issues par e-mail

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