Sommaire de la documentation

// Documentation Singularity

Serveurs de langage (LSP)

Un serveur de langage donne à l’éditeur une compréhension de votre code : il analyse les fichiers du projet et répond aux demandes de complétion, de diagnostic ou de navigation de Singularity.

À quoi sert un serveur de langage

Le protocole LSP sépare l’éditeur de l’outil qui comprend un langage. Singularity ouvre votre fichier dans CodeMirror, puis le serveur correspondant analyse le texte et le projet. Vous n’avez pas à configurer le protocole : activez simplement le serveur du langage utilisé.

Un serveur n’exécute pas votre programme et ne remplace ni le compilateur ni les tests. Ses réponses restent des aides d’édition ; validez toujours le résultat avec les outils du projet.

Langages pris en charge

Le panneau LSP de Singularity 2.0.0 propose exactement 31 serveurs :

  • TypeScript et JavaScript ; JSON ; HTML ; CSS, SCSS et Less
  • Rust ; Go ; Python (Pyright) ; Python (Ruff) ; C et C++ ; Java
  • Lua ; TOML ; YAML ; Bash ; Elixir ; Ansible ; Dart ; Dockerfile
  • GraphQL ; Haskell ; PHP ; Kotlin ; Markdown ; C# ; PowerShell
  • Ruby ; Swift ; Svelte ; Terraform ; Vue ; Zig

TypeScript/JavaScript, JSON, HTML et CSS sont activés par défaut. Les autres serveurs sont désactivés au départ. Python et YAML ont chacun deux serveurs possibles ; l’ordre d’enregistrement détermine lequel prend en charge un fichier lorsque les extensions se chevauchent.

Installer un serveur

  1. Ouvrez Réglages, puis choisissez LSP.
  2. Vérifiez que l’intégration LSP générale est active.
  3. Activez l’interrupteur du langage voulu, puis ouvrez un fichier correspondant.

La ligne du serveur indique son mode de lancement. Pour une entrée npx, npm télécharge si nécessaire la version par défaut épinglée dans son cache géré par npm. Pour une entrée marquée on PATH, Singularity ne télécharge aucun binaire : installez le serveur avec l’outil recommandé par son écosystème et rendez sa commande accessible dans le PATH de l’application.

Panneau LSP des réglages de Singularity avec la liste des serveurs
Réglages → LSP centralise l’activation, le mode de lancement et les mises à jour.

Mettre à jour

Le panneau vérifie les versions à son ouverture. Quand tout est à jour, Rechercher des mises à jour force une nouvelle vérification. Si plusieurs versions sont disponibles, développez Détails pour les examiner ou choisissez Tout mettre à jour pour les installer l’une après l’autre.

Une version épinglée est la version de référence déclarée par Singularity : le repli npx l’utilise au lieu de récupérer aveuglément latest. La vérification peut néanmoins proposer une version plus récente. La mise à jour des serveurs npx effectue une installation npm globale ; les serveurs fournis par le PATH restent à mettre à jour avec leur gestionnaire habituel.

Ce que ça apporte dans l’éditeur

Les fonctions réellement branchées sont la complétion pendant la saisie ou avec Ctrl+Espace, les informations au survol, l’aide de signature, les diagnostics, les actions rapides, les indices intégrés et le plan des symboles du document.

Le menu contextuel permet d’aller à la définition, à la définition de type ou à l’implémentation, de rechercher les références, de renommer et de formater. La recherche de symboles du projet est disponible avec Cmd+T sur macOS ou Ctrl+T ailleurs. Les imports automatiques, le formatage d’une sélection, les jetons sémantiques et l’aperçu intégré d’une définition ne sont pas disponibles actuellement.

Diagnostiquer un serveur qui ne démarre pas

Ouvrez Aide → Ouvrir le dossier des journaux ou Aide → Afficher le fichier journal, puis recherchez les entrées de portée lsp. Elles indiquent notamment un échec de lancement, une erreur d’exécution ou la sortie d’erreur du serveur.

  • Serveur on PATH : la commande n’est pas installée ou le PATH visible par Singularity ne la contient pas.
  • Serveur npx : Node.js, npm ou l’accès au registre npm manque.
  • Le serveur est désactivé, l’intégration LSP générale est coupée ou l’extension du fichier ne correspond pas.
  • Deux serveurs revendiquent la même extension, notamment pour Python ou YAML.
  • Le projet ne contient pas la configuration ou le SDK attendu par le serveur.

Après correction, fermez puis rouvrez le fichier. Pour les problèmes plus généraux de démarrage, de journaux ou d’environnement, consultez Dépannage.