Aller au contenu

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 LSPRallongesExigences
astro.astroInstallations automatiques pour les projets Astro
bash.sh, .bash, .zsh, .kshInstalle 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, .ednCommande clojure-lsp disponible
dart.dartCommande dart disponible
deno.ts, .tsx, .js, .jsx, .mjsCommande deno disponible (détection automatique deno.json/deno.jsonc)
elixir-ls.ex, .exCommande elixir disponible
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueDépendance eslint dans le projet
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installé
gleam.gleamCommande gleam disponible
gopls.goCommande go disponible
hls.hs, .lhsCommande haskell-language-server-wrapper disponible
jdtls.javaJava SDK (version 21+) installé
kotlin-ls.kt, .ktsInstallations automatiques pour les projets Kotlin
lua-ls.luaInstallations automatiques pour les projets Lua
nixd.nixCommande nixd disponible
ocaml-lsp.ml, .mliCommande ocamllsp disponible
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteDépendance oxlint dans le projet
php intelephense.phpInstallations automatiques pour les projets PHP
prisma.prismaCommande prisma disponible
pyright.py, .pyiDépendance pyright installée
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruCommandes ruby et gem disponibles
rust.rsCommande rust-analyzer disponible
sourcekit-lsp.swift, .objc, .objcppswift installé (xcode sur macOS)
svelte.svelteInstallations automatiques pour les projets Svelte
terraform.tf, .tfvarsInstallations automatiques à partir des versions GitHub
tinymist.typ, .typcInstallations automatiques à partir des versions GitHub
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsDépendance typescript dans le projet
vue.vueInstallations automatiques pour les projets Vue
yaml-ls.yaml, .ymlInstalle automatiquement le serveur yaml-langage-Red Hat
zls.zig, .zonCommande 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 :

  1. Vérifie l’extension du fichier par rapport à tous les serveurs LSP activés.
  2. 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.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}

Chaque serveur LSP prend en charge les éléments suivants :

PropriétéTapezDescriptif
disabledbooléenDéfinissez ceci sur true pour désactiver le serveur LSP
commandchaîne[]La commande pour démarrer le serveur LSP
extensionschaîne[]Extensions de fichiers que ce serveur LSP doit gérer
envobjetVariables d’environnement à définir lors du démarrage du serveur
initializationobjetOptions 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 :

opencode.json
{
"$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 :

opencode.json
{
"$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 :

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}

Pour désactiver un serveur LSP spécifique, définissez disabled sur true :

opencode.json
{
"$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 :

opencode.json
{
"$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.