Aller au contenu

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 ServerExtensionsRequirements
astro.astroS’installe automatiquement pour les projets Astro
bash.sh, .bash, .zsh, .kshInstalle 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, .edncommande clojure-lsp disponible
dart.dartcommande dart disponible
deno.ts, .tsx, .js, .jsx, .mjscommande deno disponible (detecte automatiquement deno.json/deno.jsonc)
elixir-ls.ex, .exscommande elixir disponible
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vuedependance eslint dans le projet
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installe
gleam.gleamcommande gleam disponible
gopls.gocommande go disponible
jdtls.javaJava SDK (version 21+) installe
kotlin-ls.kt, .ktsS’installe automatiquement pour les projets Kotlin
lua-ls.luaS’installe automatiquement 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, .sveltedependance oxlint dans le projet
php intelephense.phpS’installe automatiquement pour les projets PHP
prisma.prismacommande prisma disponible
pyright.py, .pyidependance pyright installee
ruby-lsp (rubocop).rb, .rake, .gemspec, .rucommandes ruby et gem disponibles
rust.rscommande rust-analyzer disponible
sourcekit-lsp.swift, .objc, .objcppswift installe (xcode sur macOS)
svelte.svelteS’installe automatiquement pour les projets Svelte
terraform.tf, .tfvarsS’installe automatiquement depuis les releases GitHub
tinymist.typ, .typcS’installe automatiquement depuis les releases GitHub
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsdependance typescript dans le projet
vue.vueS’installe automatiquement pour les projets Vue
yaml-ls.yaml, .ymlInstalle automatiquement Red Hat yaml-language-server
zls.zig, .zoncommande 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 :

  1. Verifie l’extension du fichier par rapport a tous les serveurs LSP actives.
  2. 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.

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

Chaque serveur LSP prend en charge les elements suivants :

PropertyTypeDescription
disabledbooleanDefinir sur true pour desactiver le serveur LSP
commandstring[]La commande pour demarrer le serveur LSP
extensionsstring[]Extensions de fichiers que ce serveur LSP doit gerer
envobjectVariables d’environnement a definir au demarrage
initializationobjectOptions 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 :

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

Pour desactiver un serveur LSP specifique, definissez 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 personnalises en specifiant la commande et les extensions de fichiers :

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