Zum Inhalt springen

LSP Server

OpenCode lässt sich in Ihren LSP-Server integrieren.

OpenCode lässt sich in Ihr Language Server Protocol (LSP) integrieren, um die Interaktion von LLM mit Ihrer Codebasis zu unterstützen. Es verwendet Diagnosefunktionen, um dem LLM Feedback zu geben.


Eingebaut

OpenCode verfügt über mehrere integrierte LSP-Server für gängige Sprachen:

LSP ServerErweiterungenAnforderungen
astro.astroAutomatische Installation für Astro-Projekte
bash.sh, .bash, .zsh, .kshInstalliert den bash-language-server automatisch
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Automatische Installation für C/C++-Projekte
csharp.cs.NET SDK installed
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp-Befehl verfügbar
dart.dartdart-Befehl verfügbar
deno.ts, .tsx, .js, .jsx, .mjsdeno-Befehl verfügbar (automatische Erkennung von deno.json/deno.jsonc)
elixir-ls.ex, .exselixir-Befehl verfügbar
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint dependency in project
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installed
gleam.gleamgleam-Befehl verfügbar
gopls.gogo-Befehl verfügbar
hls.hs, .lhshaskell-language-server-wrapper-Befehl verfügbar
jdtls.javaJava SDK (version 21+) installiert
kotlin-ls.kt, .ktsAutomatische Installation für Kotlin-Projekte
lua-ls.luaAutomatische Installation für Lua-Projekte
nixd.nixnixd-Befehl verfügbar
ocaml-lsp.ml, .mliocamllsp-Befehl verfügbar
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint dependency in project
php intelephense.phpAutomatische Installation für PHP-Projekte
prisma.prismaprisma-Befehl verfügbar
pyright.py, .pyipyright dependency installed
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruBefehle ruby und gem verfügbar
rust.rsrust-analyzer-Befehl verfügbar
sourcekit-lsp.swift, .objc, .objcppswift installed (xcode on macOS)
svelte.svelteAutomatische Installation für Svelte-Projekte
terraform.tf, .tfvarsAutomatische Installation von GitHub-Releases
tinymist.typ, .typcAutomatische Installation von GitHub-Releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript dependency in project
vue.vueAutomatische Installation für Vue-Projekte
yaml-ls.yaml, .ymlInstalliert den Red Hat yaml-language-server automatisch
zls.zig, .zonzig-Befehl verfügbar

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


Wie es funktioniert

Wenn OpenCode eine Datei öffnet, geschieht Folgendes:

  1. Überprüft die Dateierweiterung anhand aller aktivierten LSP-Server.
  2. Startet den entsprechenden LSP-Server, falls er noch nicht ausgeführt wird.

Konfigurieren

Sie können LSP-Server über den Abschnitt lsp in Ihrer OpenCode-Konfiguration anpassen.

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

Jeder LSP-Server unterstützt Folgendes:

EigentumGeben Sieein Beschreibung
disabledboolescher WertSetzen Sie dies auf true, um den LSP-Server zu deaktivieren
commandstring[]Der Befehl zum Starten des LSP-Servers
extensionsstring[]Dateierweiterungen, die dieser LSP-Server verarbeiten soll
envObjektUmgebungsvariablen, die beim Starten des Servers festgelegt werden
initializationObjektInitialisierungsoptionen zum Senden an den LSP-Server

Schauen wir uns einige Beispiele an.


Umgebungsvariablen

Verwenden Sie die Eigenschaft env, um Umgebungsvariablen festzulegen, wenn Sie den Server LSP starten:

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

Initialisierungsoptionen

Verwenden Sie die Eigenschaft initialization, um Initialisierungsoptionen an den Server LSP zu übergeben. Dies sind serverspezifische Einstellungen, die während der LSP initialize-Anfrage gesendet werden:

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

Deaktivieren von LSP-Servern

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

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

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

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

Benutzerdefinierter LSP-Server

Sie können einen benutzerdefinierten LSP-Server hinzufügen, indem Sie den Befehl und die Dateierweiterungen angeben:

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

Weitere Informationen

PHP Intelepense

PHP Intelepense bietet Premium-Funktionen über einen Lizenzschlüssel. Sie können einen Lizenzschlüssel bereitstellen, indem Sie (nur) den Schlüssel in eine Textdatei einfügen unter:

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

Die Datei sollte nur den Lizenzschlüssel ohne zusätzlichen Inhalt enthalten.