LuaLS / LuaLS/lua-language-server

Lazy load workspace libraries

Ouverte
#1,745 8 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

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

Description

I'm using sumneko_lua with Neovim and I wanted to have completions from the Lua plugins I have installed, so I inserted all the paths to the plugins that I have into Lua.workspace.library

But the problem is that it that sumneko_lua loads all the files inside those libraries right on startup, causing a massive increase to my RAM usage. Normally sumneko_lua only takes up 100-200 MB, but after adding 40+ library paths, sumneko now takes up to 600-700 MB.

Is it possible to load the libraries into the workspace, only when it is needed?
For example, I don't believe the library needs to be loaded when you're only completing a require statement:

local foobar = require("foob|

sumneko_lua only needs to scan the directories listed in Lua.workspace.library to find the correct files.

Once the require statement is completed, and its return value is interacted with:

local foobar = require("foobar")
foobar.call_functi|

sumneko_lua can now then load the library in order to produce the completions.

Is it possible for something like this to be implemented?

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 suivre comment les chemins de Lua.workspace.library sont chargés et comment la complétion des instructions require trouve les fichiers correspondants. Examinez ensuite à quel moment la bibliothèque requise devient disponible pour la complétion des membres. Le travail est terminé lorsque les chemins des bibliothèques sont recherchés sans charger tous les fichiers au démarrage, tout en conservant le fonctionnement des complétions telles que require("foobar") et foobar.call_function.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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