Zum Inhalt springen

LSP-Server

OpenCode integriert sich mit Ihren LSP-Servern.

OpenCode integriert sich mit Ihrem Language Server Protocol (LSP), um dem LLM zu helfen, mit Ihrer Codebasis zu interagieren. Es verwendet Diagnosen, um dem LLM Feedback zu geben.


Integriert

OpenCode wird mit mehreren integrierten LSP-Servern fur beliebte Sprachen geliefert:

LSP ServerExtensionsRequirements
astro.astroInstalliert automatisch fur Astro-Projekte
bash.sh, .bash, .zsh, .kshInstalliert automatisch bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Installiert automatisch fur C/C++-Projekte
csharp.cs.NET SDK installiert
clojure-lsp.clj, .cljs, .cljc, .ednverfugbarer clojure-lsp Befehl
dart.dartverfugbarer dart Befehl
deno.ts, .tsx, .js, .jsx, .mjsverfugbarer deno Befehl (erkennt automatisch deno.json/deno.jsonc)
elixir-ls.ex, .exsverfugbarer elixir Befehl
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint-Abhangigkeit im Projekt
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installiert
gleam.gleamverfugbarer gleam Befehl
gopls.goverfugbarer go Befehl
jdtls.javaJava SDK (Version 21+) installiert
kotlin-ls.kt, .ktsInstalliert automatisch fur Kotlin-Projekte
lua-ls.luaInstalliert automatisch fur Lua-Projekte
nixd.nixverfugbarer nixd Befehl
ocaml-lsp.ml, .mliverfugbarer ocamllsp Befehl
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint-Abhangigkeit im Projekt
php intelephense.phpInstalliert automatisch fur PHP-Projekte
prisma.prismaverfugbarer prisma Befehl
pyright.py, .pyipyright-Abhangigkeit installiert
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruverfugbare ruby und gem Befehle
rust.rsverfugbarer rust-analyzer Befehl
sourcekit-lsp.swift, .objc, .objcppswift installiert (xcode unter macOS)
svelte.svelteInstalliert automatisch fur Svelte-Projekte
terraform.tf, .tfvarsInstalliert automatisch von GitHub-Releases
tinymist.typ, .typcInstalliert automatisch von GitHub-Releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript-Abhangigkeit im Projekt
vue.vueInstalliert automatisch fur Vue-Projekte
yaml-ls.yaml, .ymlInstalliert automatisch Red Hat yaml-language-server
zls.zig, .zonverfugbarer zig Befehl

LSP-Server werden automatisch aktiviert, wenn eine der oben genannten Dateierweiterungen erkannt wird und die Anforderungen erfullt sind.


Funktionsweise

Wenn opencode eine Datei offnet, folgt es diesen Schritten:

  1. Uberpruft die Dateiendung gegen alle aktivierten LSP-Server.
  2. Startet den entsprechenden LSP-Server, falls noch nicht ausgefuhrt.

Konfiguration

Sie konnen LSP-Server uber den Abschnitt lsp in Ihrer opencode-Konfiguration anpassen.

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

Jeder LSP-Server unterstutzt Folgendes:

PropertyTypeDescription
disabledbooleanAuf true setzen, um den LSP-Server zu deaktivieren
commandstring[]Der Befehl zum Starten des LSP-Servers
extensionsstring[]Dateierweiterungen, die dieser LSP-Server verarbeiten soll
envobjectUmgebungsvariablen beim Starten des Servers
initializationobjectInitialisierungsoptionen zum Senden an den LSP-Server

Lassen Sie uns einige Beispiele betrachten.


LSP-Server deaktivieren

Um alle LSP-Server global zu deaktivieren, setzen Sie lsp auf false:

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

Um einen spezifischen LSP-Server zu deaktivieren, setzen Sie disabled auf true:

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

Benutzerdefinierte LSP-Server

Sie konnen benutzerdefinierte LSP-Server hinzufugen, indem Sie den Befehl und Dateierweiterungen angeben:

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

Zusatzliche Informationen

PHP Intelephense

PHP Intelephense bietet Premium-Funktionen uber einen Lizenzschlussel. Sie konnen einen Lizenzschlussel bereitstellen, indem Sie (nur) den Schlussel in einer Textdatei unter folgendem Platzieren:

  • Unter macOS/Linux: $HOME/intelephense/licence.txt
  • Unter Windows: %USERPROFILE%/intelephense/licence.txt

Die Datei sollte nur den Lizenzschlussel ohne zusaatzlichen Inhalt enthalten.