Serveurs LSP
Dropstone s'intègre avec vos serveurs LSP.
Dropstone peut s'intégrer avec votre Language Server Protocol (LSP) pour aider le LLM à interagir avec votre base de code. Il utilise les diagnostics pour fournir des retours au LLM.
Intégrés
Dropstone est livré avec plusieurs serveurs LSP intégrés pour les langages populaires :
| Serveur LSP | Extensions | Exigences |
|---|---|---|
| astro | .astro | Installation automatique pour les projets Astro |
| bash | .sh, .bash, .zsh, .ksh | Installation automatique de bash-language-server |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Installation automatique pour les projets C/C++ |
| csharp | .cs, .csx | .NET SDK installé |
| clojure-lsp | .clj, .cljs, .cljc, .edn | Commande clojure-lsp disponible |
| dart | .dart | Commande dart disponible |
| deno | .ts, .tsx, .js, .jsx, .mjs | Commande deno disponible (détecte automatiquement deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | Commande elixir disponible |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Dépendance eslint dans le projet |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK installé |
| gleam | .gleam | Commande gleam disponible |
| gopls | .go | Commande go disponible |
| hls | .hs, .lhs | Commande haskell-language-server-wrapper disponible |
| jdtls | .java | Java SDK (version 21+) installé |
| julials | .jl | julia et LanguageServer.jl installés |
| kotlin-ls | .kt, .kts | Installation automatique pour les projets Kotlin |
| lua-ls | .lua | Installation automatique pour les projets Lua |
| nixd | .nix | Commande nixd disponible |
| ocaml-lsp | .ml, .mli | Commande ocamllsp disponible |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Dépendance oxlint dans le projet |
| php intelephense | .php | Installation automatique pour les projets PHP |
| prisma | .prisma | Commande prisma disponible |
| pyright | .py, .pyi | Dépendance pyright installée |
| razor | .razor, .cshtml | .NET SDK et extension C# VS Code installés |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Commandes ruby et gem disponibles |
| rust | .rs | Commande rust-analyzer disponible |
| sourcekit-lsp | .swift, .objc, .objcpp | swift installé (xcode sur macOS) |
| svelte | .svelte | Installation automatique pour les projets Svelte |
| terraform | .tf, .tfvars | Installation automatique depuis les versions GitHub |
| tinymist | .typ, .typc | Installation automatique depuis les versions GitHub |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Dépendance typescript dans le projet |
| vue | .vue | Installation automatique pour les projets Vue |
| yaml-ls | .yaml, .yml | Installation automatique du yaml-language-server de Red Hat |
| zls | .zig, .zon | Commande zig disponible |
Lorsque LSP est activé, les serveurs démarrent quand l'une des extensions ci-dessus est détectée et que les exigences sont satisfaites.
Fonctionnement
Lorsque LSP est activé et que dropstone ouvre un fichier, il :
- Vérifie l'extension du fichier par rapport à tous les serveurs LSP activés.
- Démarre le serveur LSP approprié s'il n'est pas déjà en cours d'exécution.
Configuration
Vous pouvez activer et personnaliser les serveurs LSP via la section lsp dans votre configuration dropstone.
Pour activer tous les serveurs LSP intégrés, définissez lsp à true.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Utilisez un objet pour garder les serveurs intégrés activés tout en configurant des remplacements ou des serveurs personnalisés.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {}
}
Chaque entrée de serveur LSP configurée supporte les propriétés suivantes :
Les entrées de serveur ont besoin de command sauf s'ils désactivent uniquement un serveur.
| Propriété | Type | Description |
|---|---|---|
disabled | boolean | Définissez ceci à true pour désactiver le serveur LSP |
command | string[] | La commande pour démarrer le serveur LSP |
extensions | string[] | Extensions de fichier que ce serveur LSP doit gérer |
env | object | Variables d'environnement à définir au démarrage du serveur |
initialization | object | Options d'initialisation à envoyer au serveur LSP |
Regardons quelques exemples.
Variables d'environnement
Utilisez la propriété env pour définir les variables d'environnement au démarrage du serveur LSP :
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"rust": {
"command": ["rust-analyzer"],
"env": {
"RUST_LOG": "debug"
}
}
}
}
Options d'initialisation
Utilisez la propriété initialization pour passer les options d'initialisation au serveur LSP. Ce sont des paramètres spécifiques au serveur envoyés lors de la requête LSP initialize :
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
Note:
Les options d'initialisation varient selon le serveur LSP. Consultez la documentation de votre serveur LSP pour connaître les options disponibles.
Désactiver les serveurs LSP
Si lsp est omis, tous les serveurs LSP sont désactivés. Pour désactiver tous les serveurs LSP après qu'une autre configuration les ait activés, définissez lsp à false :
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": false
}
Pour désactiver un serveur LSP spécifique, définissez disabled à true :
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Serveurs LSP personnalisés
Vous pouvez ajouter des serveurs LSP personnalisés en spécifiant la commande et les extensions de fichier :
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
Informations supplémentaires
PHP Intelephense
PHP Intelephense offre des fonctionnalités premium via une clé de licence. Vous pouvez fournir une clé de licence en plaçant (uniquement) la clé dans un fichier texte à :
- Sur macOS/Linux :
$HOME/intelephense/license.txt - Sur Windows :
%USERPROFILE%/intelephense/license.txt
Le fichier doit contenir uniquement la clé de licence sans contenu supplémentaire.