Deutsch
Dokumentation
LSP Server

LSP-Server

OpenCode integriert sich in Ihre LSP-Server.

OpenCode kann sich in Ihr Language Server Protocol (LSP) integrieren, um dem LLM bei der Interaktion mit Ihrer Codebasis zu helfen. Es verwendet Diagnosen, um dem LLM Feedback zu geben.


Integriert

OpenCode wird mit mehreren integrierten LSP-Servern für gängige Sprachen geliefert:

LSP-ServerErweiterungenAnforderungen
astro.astroInstalliert sich automatisch für Astro-Projekte
bash.sh, .bash, .zsh, .kshInstalliert bash-language-server automatisch
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Installiert sich automatisch für C/C++-Projekte
csharp.cs, .csx.NET SDK installiert
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp-Befehl verfügbar
dart.dartdart-Befehl verfügbar
deno.ts, .tsx, .js, .jsx, .mjsdeno-Befehl verfügbar (erkennt deno.json/deno.jsonc automatisch)
elixir-ls.ex, .exselixir-Befehl verfügbar
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint-Abhängigkeit im Projekt
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installiert
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
julials.jljulia und LanguageServer.jl installiert
kotlin-ls.kt, .ktsInstalliert sich automatisch für Kotlin-Projekte
lua-ls.luaInstalliert sich automatisch 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-Abhängigkeit im Projekt
php intelephense.phpInstalliert sich automatisch für PHP-Projekte
prisma.prismaprisma-Befehl verfügbar
pyright.py, .pyipyright-Abhängigkeit installiert
razor.razor, .cshtml.NET SDK und VS Code C#-Erweiterung installiert
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby- und gem-Befehle verfügbar
rust.rsrust-analyzer-Befehl verfügbar
sourcekit-lsp.swift, .objc, .objcppswift installiert (xcode auf macOS)
svelte.svelteInstalliert sich automatisch für Svelte-Projekte
terraform.tf, .tfvarsInstalliert sich automatisch aus GitHub-Releases
tinymist.typ, .typcInstalliert sich automatisch aus GitHub-Releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript-Abhängigkeit im Projekt
vue.vueInstalliert sich automatisch für Vue-Projekte
yaml-ls.yaml, .ymlInstalliert Red Hat yaml-language-server automatisch
zls.zig, .zonzig-Befehl verfügbar

Wenn LSP aktiviert ist, starten die Server, sobald eine der oben genannten Dateierweiterungen erkannt wird und die Anforderungen erfüllt sind.

Hinweis: Sie können automatische Downloads von LSP-Servern deaktivieren, indem Sie die Umgebungsvariable OPENCODE_DISABLE_LSP_DOWNLOAD auf true setzen.


So funktioniert es

Wenn LSP aktiviert ist und opencode eine Datei öffnet, geschieht Folgendes:

  1. Es überprüft die Dateierweiterung gegen alle aktivierten LSP-Server.
  2. Es startet den passenden LSP-Server, falls dieser noch nicht läuft.

Konfiguration

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

Um alle integrierten LSP-Server zu aktivieren, setzen Sie lsp auf true.

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

Verwenden Sie ein Objekt, um die integrierten Server aktiviert zu lassen und gleichzeitig Überschreibungen oder benutzerdefinierte Server zu konfigurieren.

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

Jeder konfigurierte LSP-Server-Eintrag unterstützt Folgendes:

Server-Einträge benötigen command, es sei denn, sie deaktivieren lediglich einen Server.

EigenschaftTypBeschreibung
disabledbooleanSetzen 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
envobjectUmgebungsvariablen, die beim Starten des Servers gesetzt werden
initializationobjectInitialisierungsoptionen, die an den LSP-Server gesendet werden

Sehen wir uns einige Beispiele an.


Umgebungsvariablen

Verwenden Sie die Eigenschaft env, um Umgebungsvariablen beim Starten des LSP-Servers zu setzen:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "rust": {
      "command": ["rust-analyzer"],
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}

Initialisierungsoptionen

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

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

Hinweis: Initialisierungsoptionen variieren je nach LSP-Server. Prüfen Sie die Dokumentation Ihres LSP-Servers auf verfügbare Optionen.


LSP-Server deaktivieren

Wenn lsp weggelassen wird, sind alle LSP-Server deaktiviert. Um alle LSP-Server zu deaktivieren, nachdem eine andere Konfiguration sie aktiviert hat, 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
    }
  }
}

Benutzerdefinierte LSP-Server

Sie können benutzerdefinierte 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"]
    }
  }
}

Zusätzliche Informationen

PHP Intelephense

PHP Intelephense bietet Premium-Funktionen über einen Lizenzschlüssel. Sie können einen Lizenzschlüssel bereitstellen, indem Sie (nur) den Schlüssel in eine Textdatei an folgendem Ort ablegen:

  • 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.