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 Server | Erweiterungen | Anforderungen |
|---|---|---|
| astro | .astro | Automatische Installation für Astro-Projekte |
| bash | .sh, .bash, .zsh, .ksh | Installiert 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, .edn | clojure-lsp-Befehl verfügbar |
| dart | .dart | dart-Befehl verfügbar |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno-Befehl verfügbar (automatische Erkennung von deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | elixir-Befehl verfügbar |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | eslint dependency in project |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK installed |
| 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 dependency in project |
| php intelephense | .php | Automatische Installation für PHP-Projekte |
| prisma | .prisma | prisma-Befehl verfügbar |
| pyright | .py, .pyi | pyright dependency installed |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Befehle ruby und gem verfügbar |
| rust | .rs | rust-analyzer-Befehl verfügbar |
| sourcekit-lsp | .swift, .objc, .objcpp | swift installed (xcode on 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 dependency in project |
| vue | .vue | Automatische Installation für Vue-Projekte |
| yaml-ls | .yaml, .yml | Installiert den Red Hat yaml-language-server automatisch |
| zls | .zig, .zon | zig-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:
- Überprüft die Dateierweiterung anhand aller aktivierten LSP-Server.
- 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.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}Jeder LSP-Server unterstützt Folgendes:
| Eigentum | Geben Sie | ein Beschreibung |
|---|---|---|
disabled | boolescher Wert | Setzen Sie dies auf true, 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 | Objekt | Umgebungsvariablen, die beim Starten des Servers festgelegt werden |
initialization | Objekt | Initialisierungsoptionen 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:
{ "$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:
{ "$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:
{ "$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 } }}Benutzerdefinierter LSP-Server
Sie können einen benutzerdefinierten 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"] } }}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.