Serveurs LSP
OpenCode s'intègre à vos serveurs LSP.
OpenCode s’intègre à votre protocole de serveur de langue (LSP) pour aider le LLM à interagir avec votre base de code. Il utilise des diagnostics pour fournir des commentaires au LLM.
Intégré
OpenCode est livré avec plusieurs serveurs LSP intégrés pour les langues populaires :
| Serveur LSP | Rallonges | Exigences |
|---|---|---|
| astro | .astro | Installations automatiques pour les projets Astro |
| bash | .sh, .bash, .zsh, .ksh | Installe automatiquement le serveur bash-langage |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Installations automatiques pour les projets C/C++ |
| csharp | .cs | .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étection automatique deno.json/deno.jsonc) |
| elixir-ls | .ex, .ex | 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é |
| kotlin-ls | .kt, .kts | Installations automatiques pour les projets Kotlin |
| lua-ls | .lua | Installations automatiques 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 | Installations automatiques pour les projets PHP |
| prisma | .prisma | Commande prisma disponible |
| pyright | .py, .pyi | Dépendance pyright installée |
| 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 | Installations automatiques pour les projets Svelte |
| terraform | .tf, .tfvars | Installations automatiques à partir des versions GitHub |
| tinymist | .typ, .typc | Installations automatiques à partir des versions GitHub |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Dépendance typescript dans le projet |
| vue | .vue | Installations automatiques pour les projets Vue |
| yaml-ls | .yaml, .yml | Installe automatiquement le serveur yaml-langage-Red Hat |
| zls | .zig, .zon | Commande zig disponible |
Les serveurs LSP sont automatiquement activés lorsque l’une des extensions de fichier ci-dessus est détectée et que les exigences sont remplies.
Comment ça marche
Lorsque opencode 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.
Configurer
Vous pouvez personnaliser les serveurs LSP via la section lsp de votre configuration opencode.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}Chaque serveur LSP prend en charge les éléments suivants :
| Propriété | Tapez | Descriptif |
|---|---|---|
disabled | booléen | Définissez ceci sur true pour désactiver le serveur LSP |
command | chaîne[] | La commande pour démarrer le serveur LSP |
extensions | chaîne[] | Extensions de fichiers que ce serveur LSP doit gérer |
env | objet | Variables d’environnement à définir lors du démarrage du serveur |
initialization | objet | 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 lors du démarrage du serveur LSP :
{ "$schema": "https://opencode.ai/config.json", "lsp": { "rust": { "env": { "RUST_LOG": "debug" } } }}Options d’initialisation
Utilisez la propriété initialization pour transmettre les options d’initialisation au serveur LSP. Il s’agit de paramètres spécifiques au serveur envoyés lors de la requête LSP initialize :
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "initialization": { "preferences": { "importModuleSpecifierPreference": "relative" } } } }}Désactivation des serveurs LSP
Pour désactiver tous les serveurs LSP dans le monde, définissez lsp sur false :
{ "$schema": "https://opencode.ai/config.json", "lsp": false}Pour désactiver un serveur LSP spécifique, définissez disabled sur true :
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "disabled": true } }}Serveurs LSP personnalisés
Vous pouvez ajouter des serveurs LSP personnalisés en spécifiant les extensions de commande et de fichier :
{ "$schema": "https://opencode.ai/config.json", "lsp": { "custom-lsp": { "command": ["custom-lsp-server", "--stdio"], "extensions": [".custom"] } }}Informations Complé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 à l’adresse :
- Le macOS/Linux :
$HOME/intelephense/license.txt - Le Windows :
%USERPROFILE%/intelephense/license.txt
Le fichier doit contenir uniquement la clé de licence sans contenu supplémentaire.