Deutsch
Dokumentation
LSP Server

LSP-Server

OpenCode integriert sich mit Ihren LSP-Servern.

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

Integrierte Unterstützung

OpenCode enthält mehrere integrierte LSP-Server für beliebte Sprachen:

LSP-ServerErweiterungenAnforderungen
astro.astroAutomatische Installation für Astro-Projekte
bash.sh, .bash, .zsh, .kshAutomatische Installation von bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Automatische Installation für C/C++-Projekte
csharp.cs.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 automatisch deno.json/deno.jsonc)
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
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 Abhängigkeit im Projekt
php intelephense.phpAutomatische Installation für PHP-Projekte
prisma.prismaprisma Befehl verfügbar
pyright.py, .pyipyright Abhängigkeit 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.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 Abhängigkeit im Projekt
vue.vueAutomatische Installation für Vue-Projekte
yaml-ls.yaml, .ymlAutomatische Installation von Red Hat yaml-language-server
zls.zig, .zonzig Befehl verfügbar

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

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

Funktionsweise

Wenn opencode eine Datei öffnet:

  1. Prüft es die Dateierweiterung gegen alle aktivierten LSP-Server.
  2. Startet den entsprechenden LSP-Server, falls noch nicht ausgeführt.

Konfiguration

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

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

Jeder LSP-Server unterstützt Folgendes:

EigenschaftTypBeschreibung
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 Serverstart
initializationobjectInitialisierungsoptionen für den LSP-Server

Schauen wir uns einige Beispiele an.

Umgebungsvariablen

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

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

Initialisierungsoptionen

Verwenden Sie die initialization-Eigenschaft, 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": {
    "typescript": {
      "initialization": {
        "preferences": {
          "importModuleSpecifierPreference": "relative"
        }
      }
    }
  }
}

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

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 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 in einer Textdatei an folgender Stelle ablegen (nur den Schlüssel):

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

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