Serveurs LSP
OpenCode s'integre avec vos serveurs LSP.
OpenCode s’integre avec votre Language Server Protocol (LSP) pour aider le LLM a interagir avec votre base de code. Il utilise les diagnostics pour fournir des commentaires au LLM.
Integres
OpenCode est fourni avec plusieurs serveurs LSP integres pour les langages populaires :
| LSP Server | Extensions | Requirements |
|---|---|---|
| astro | .astro | S’installe automatiquement pour les projets Astro |
| bash | .sh, .bash, .zsh, .ksh | Installe automatiquement bash-language-server |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | S’installe automatiquement pour les projets C/C++ |
| csharp | .cs | .NET SDK installe |
| clojure-lsp | .clj, .cljs, .cljc, .edn | commande clojure-lsp disponible |
| dart | .dart | commande dart disponible |
| deno | .ts, .tsx, .js, .jsx, .mjs | commande deno disponible (detecte automatiquement deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | commande elixir disponible |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | dependance eslint dans le projet |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK installe |
| gleam | .gleam | commande gleam disponible |
| gopls | .go | commande go disponible |
| jdtls | .java | Java SDK (version 21+) installe |
| kotlin-ls | .kt, .kts | S’installe automatiquement pour les projets Kotlin |
| lua-ls | .lua | S’installe automatiquement 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 | dependance oxlint dans le projet |
| php intelephense | .php | S’installe automatiquement pour les projets PHP |
| prisma | .prisma | commande prisma disponible |
| pyright | .py, .pyi | dependance pyright installee |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | commandes ruby et gem disponibles |
| rust | .rs | commande rust-analyzer disponible |
| sourcekit-lsp | .swift, .objc, .objcpp | swift installe (xcode sur macOS) |
| svelte | .svelte | S’installe automatiquement pour les projets Svelte |
| terraform | .tf, .tfvars | S’installe automatiquement depuis les releases GitHub |
| tinymist | .typ, .typc | S’installe automatiquement depuis les releases GitHub |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | dependance typescript dans le projet |
| vue | .vue | S’installe automatiquement pour les projets Vue |
| yaml-ls | .yaml, .yml | Installe automatiquement Red Hat yaml-language-server |
| zls | .zig, .zon | commande zig disponible |
Les serveurs LSP sont automatiquement actives lorsque l’une des extensions de fichiers ci-dessus est detectee et que les conditions requises sont remplies.
Fonctionnement
Lorsqu’OpenCode ouvre un fichier, il :
- Verifie l’extension du fichier par rapport a tous les serveurs LSP actives.
- Demarre le serveur LSP approprie s’il n’est pas deja en cours d’execution.
Configuration
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 elements suivants :
| Property | Type | Description |
|---|---|---|
disabled | boolean | Definir sur true pour desactiver le serveur LSP |
command | string[] | La commande pour demarrer le serveur LSP |
extensions | string[] | Extensions de fichiers que ce serveur LSP doit gerer |
env | object | Variables d’environnement a definir au demarrage |
initialization | object | Options d’initialisation a envoyer au serveur LSP |
Examinons quelques exemples.
Desactivation des serveurs LSP
Pour desactiver tous les serveurs LSP globalement, definissez lsp sur false :
{ "$schema": "https://opencode.ai/config.json", "lsp": false}Pour desactiver un serveur LSP specifique, definissez disabled sur true :
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "disabled": true } }}Serveurs LSP personnalisés
Vous pouvez ajouter des serveurs LSP personnalises en specifiant la commande et les extensions de fichiers :
{ "$schema": "https://opencode.ai/config.json", "lsp": { "custom-lsp": { "command": ["custom-lsp-server", "--stdio"], "extensions": [".custom"] } }}Informations supplementaires
PHP Intelephense
PHP Intelephense offre des fonctionnalites premium via une cle de licence. Vous pouvez fournir une cle de licence en plaçant (uniquement) la cle dans un fichier texte à :
- Sur macOS/Linux :
$HOME/intelephense/licence.txt - Sur Windows :
%USERPROFILE%/intelephense/licence.txt
Le fichier doit contenir uniquement la cle de licence sans contenu supplementaire.