Aller au contenu

Serveur de langage (Language Server)

Le Serveur de Langage Gram (@gram-lang/language-server) est le cerveau derrière l’intégration de Gram dans vos éditeurs. En implémentant le standard Language Server Protocol (LSP), il déploie des fonctionnalités d’IDE avancées pour les fichiers .gram sur une multitude d’éditeurs (et pas uniquement VS Code).

Le serveur agit comme un processus de fond persistant, qui analyse vos fichiers .gram à l’aide des paquets @gram-lang/parser et @gram-lang/kitchen.

Le workflow en temps réel :

  1. Éditeur ➔ Dispatche les modifications du fichier à chaque frappe au clavier.

  2. Serveur de Langage ➔ Intercepte les diffs et demande au Compilateur Gram de réévaluer l’AST en mémoire.

  3. Compilateur Gram ➔ Analyse la nouvelle structure et émet les avertissements, les macros, et les dépendances.

  4. Serveur de Langage ➔ Traduit ces données en requêtes LSP standards (Diagnostics, Jetons sémantiques, Inlay Hints) et les renvoie à l’éditeur.

Le Serveur de Langage Gram couvre les capacités standards suivantes :

Capacité LSPImplémentation Gram
DiagnosticsRemontée en temps réel des erreurs de syntaxe et de structure (ex : dépendances circulaires).
Semantic TokensColoration syntaxique pilotée par l’AST, idéale pour différencier les modificateurs, unités et ingrédients composites.
CompletionAutocomplétion intelligente pour les ingrédients, les unités et les variables.
HoverAffiche les macros nutritionnels et les conversions volume-masse au survol de la souris.
Go to DefinitionNavigue d’une référence intermédiaire directement vers sa déclaration initiale.
Find ReferencesLocaliser toutes les utilisations d’une variable intermédiaire spécifique.
RenameRenomme de manière sûre et atomique une variable intermédiaire (partout où elle est utilisée).
Code ActionsSuggestions de corrections rapides (quick fixes : déclarer une variable manquante, convertir un volume en masse).
Document FormattingNettoie les espaces, la syntaxe des composites et les en-têtes via @gram-lang/format (13 règles canoniques).
Inlay HintsAffiche les temps de préparation cumulés directement inline dans l’éditeur.
Code LensInjecte des boutons d’action interactifs (comme le calcul des Macros).
Document SymbolAlimente la vue Plan (Outline) de l’éditeur pour naviguer dans la structure de la recette.
Folding RangePermet de replier proprement le frontmatter YAML et les ## Sections de la recette.