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-Server | Erweiterungen | Anforderungen |
|---|---|---|
| astro | .astro | Automatische Installation für Astro-Projekte |
| bash | .sh, .bash, .zsh, .ksh | Automatische 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, .edn | clojure-lsp Befehl verfügbar |
| dart | .dart | dart Befehl verfügbar |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno Befehl verfügbar (erkennt automatisch deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | elixir Befehl verfügbar |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | eslint Abhängigkeit im Projekt |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK installiert |
| gleam | .gleam | gleam Befehl verfügbar |
| gopls | .go | go Befehl verfügbar |
| hls | .hs, .lhs | haskell-language-server-wrapper Befehl verfügbar |
| jdtls | .java | Java SDK (Version 21+) installiert |
| kotlin-ls | .kt, .kts | Automatische Installation für Kotlin-Projekte |
| lua-ls | .lua | Automatische Installation für Lua-Projekte |
| nixd | .nix | nixd Befehl verfügbar |
| ocaml-lsp | .ml, .mli | ocamllsp Befehl verfügbar |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | oxlint Abhängigkeit im Projekt |
| php intelephense | .php | Automatische Installation für PHP-Projekte |
| prisma | .prisma | prisma Befehl verfügbar |
| pyright | .py, .pyi | pyright Abhängigkeit installiert |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | ruby und gem Befehle verfügbar |
| rust | .rs | rust-analyzer Befehl verfügbar |
| sourcekit-lsp | .swift, .objc, .objcpp | swift installiert (xcode auf macOS) |
| svelte | .svelte | Automatische Installation für Svelte-Projekte |
| terraform | .tf, .tfvars | Automatische Installation von GitHub Releases |
| tinymist | .typ, .typc | Automatische Installation von GitHub Releases |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | typescript Abhängigkeit im Projekt |
| vue | .vue | Automatische Installation für Vue-Projekte |
| yaml-ls | .yaml, .yml | Automatische Installation von Red Hat yaml-language-server |
| zls | .zig, .zon | zig 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_DOWNLOADauftruesetzen.
Funktionsweise
Wenn opencode eine Datei öffnet:
- Prüft es die Dateierweiterung gegen alle aktivierten LSP-Server.
- 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.
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}Jeder LSP-Server unterstützt Folgendes:
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
disabled | boolean | Auf true setzen, um den LSP-Server zu deaktivieren |
command | string[] | Der Befehl zum Starten des LSP-Servers |
extensions | string[] | Dateierweiterungen, die dieser LSP-Server verarbeiten soll |
env | object | Umgebungsvariablen beim Serverstart |
initialization | object | Initialisierungsoptionen 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:
{
"$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:
{
"$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:
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}Um einen bestimmten LSP-Server zu deaktivieren, setzen Sie disabled auf true:
{
"$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:
{
"$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.