Gå til indhold

LSP Servere

OpenCode integreres med dine LSP-servere.

OpenCode integreres med Language Server Protocol (LSP) for at hjælpe LLM med at interagere med din kodebase. Den bruger diagnostik til at give feedback til LLM.


Indbygget

OpenCode leveres med flere indbyggede LSP-servere til populære sprog:

LSP ServerUdvidelserKrav
astro.astroAutoinstallationer til Astro-projekter
bash.sh,.bash,.zsh,.kshAutoinstallerer bash-language-server
clangd.c,.cpp,.cc,.cxx,.c++,.h,.hpp,.hh,.hxx,.h++Autoinstallationer for C/C++ projekter
csharp.cs.NET SDK installere
clojure-lsp.clj,.cljs,.cljc,.ednclojure-lsp kommando tilgængelig
dart.dartdart kommando tilgængelig
deno.ts,.tsx,.js,.jsx,.mjsdeno kommando tilgængelig (auto-detects deno.json/deno.jsonc)
eliksir-ls.ex,.exselixir kommando tilgængelig
eslint.ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vueeslint afhængighed i projekt
fsharp.fs,.fsi,.fsx,.fsscript.NET SDK installere
gleam.gleamgleam kommando tilgængelig
gopls.gogo kommando tilgængelig
hls.hs,.lhshaskell-language-server-wrapper kommando tilgængelig
jdtls.javaJava SDK (version 21+) installere
kotlin-ls.kt,.ktsAutoinstallationer til Kotlin-projekter
lua-ls.luaAutoinstallationer til Lua-projekter
nixd.nixnixd kommando tilgængelig
ocaml-lsp.ml,.mliocamllsp kommando tilgængelig
oxlint.ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue,.astro,.svelteoxlint afhængighed i projekt
php intelephense.phpAutomatiske installationer til PHP-projekter
prisma.prismaprisma kommando tilgængelig
pyright.py,.pyipyright afhængig installeret
ruby-lsp (rubocop).rb,.rake,.gemspec,.ruruby og gem kommandoer tilgængelige
rust.rsrust-analyzer kommando tilgængelig
sourcekit-lsp.swift,.objc,.objcppswift installere (xcode på macOS)
svelte.svelteAutoinstallationer til Svelte-projekter
terraform.tf,.tfvarsAutomatiske installationer fra GitHub-udgivelser
tinymist.typ,.typcAutomatiske installationer fra GitHub-udgivelser
typescript.ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.ctstypescript afhængighed i projekt
vue.vueAutoinstallationer til Vue-projekter
yaml-ls.yaml,.ymlAutoinstallerer Red Hat yaml-language-server
zls.zig,.zonzig kommando tilgængelig

LSP-servere aktiveres automatisk, når en af ​​ovnstående filtypenavne opdages, og kravene er opfyldt.


Sådan fungerer det

Når opencode åbner en fil, vil den:

  1. Kontrollerer filtypenavnet mod alle aktiverede LSP-servere.
  2. Starter den relevante LSP-server, hvis den ikke allerede kører.

Konfigurer

Du kan tilpasse LSP-servere gennem sektionen lsp i din opencode-konfiguration.

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

Hver LSP- server understøtter følgende:

EgenskabTypeBeskrivelse
disabledbooleanIndstil dette til true for at deaktivere LSP-serveren
commandstring[]Kommandoen til at starte LSP-serveren
extensionsstring[]Filtypenavne, som denne LSP-server skal håndtere
envobjectMiljøvariabler, der skal indstilles, når serveren starter
initializationobjectInitialiseringsmuligheder for at sende til LSP-serveren

Lad os se på nogle eksempler.


Miljøvariabler

Brug egenskaben env til at indstille miljøvariabler, når du starter LSP-serveren:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}

Initialiseringsmuligheder

Brug egenskaben initialization til at videregive initialiseringsindstillinger til LSP-serveren. Disse er serverspecifikke indstillinger sendt under LSP initialize anmodningen:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}

Deaktivering af LSP-servere

For at deaktivere alle LSP-servere globalt, skal du indstille lsp til false:

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

For at deaktivere en specifik LSP-server skal du indstille disabled til true:

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

Brugerdefinerede LSP-servere

Du kan tilføje brugerdefinerede LSP-servere ved at angive kommandoen og filtypenavne:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}

Yderligere oplysninger

PHP Intelephense

PHP Intelephense tilbyder premium funktioner gennem en licensnøgle. Du kan angive en licensnøgle ved at placere (kun) nøglen i en tekstfil på:

  • På macOS/Linux: $HOME/intelephense/license.txt
  • På Windows: %USERPROFILE%/intelephense/license.txt

Filen bør kun indeholde licensnøglen uden yderligere indhold.