LSP-Server
OpenCode integriert sich mit Ihren LSP-Servern.
OpenCode integriert sich mit Ihrem Language Server Protocol (LSP), um dem LLM zu helfen, mit Ihrer Codebasis zu interagieren. Es verwendet Diagnosen, um dem LLM Feedback zu geben.
Integriert
OpenCode wird mit mehreren integrierten LSP-Servern fur beliebte Sprachen geliefert:
| LSP Server | Extensions | Requirements |
|---|---|---|
| astro | .astro | Installiert automatisch fur Astro-Projekte |
| bash | .sh, .bash, .zsh, .ksh | Installiert automatisch bash-language-server |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Installiert automatisch fur C/C++-Projekte |
| csharp | .cs | .NET SDK installiert |
| clojure-lsp | .clj, .cljs, .cljc, .edn | verfugbarer clojure-lsp Befehl |
| dart | .dart | verfugbarer dart Befehl |
| deno | .ts, .tsx, .js, .jsx, .mjs | verfugbarer deno Befehl (erkennt automatisch deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | verfugbarer elixir Befehl |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | eslint-Abhangigkeit im Projekt |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK installiert |
| gleam | .gleam | verfugbarer gleam Befehl |
| gopls | .go | verfugbarer go Befehl |
| jdtls | .java | Java SDK (Version 21+) installiert |
| kotlin-ls | .kt, .kts | Installiert automatisch fur Kotlin-Projekte |
| lua-ls | .lua | Installiert automatisch fur Lua-Projekte |
| nixd | .nix | verfugbarer nixd Befehl |
| ocaml-lsp | .ml, .mli | verfugbarer ocamllsp Befehl |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | oxlint-Abhangigkeit im Projekt |
| php intelephense | .php | Installiert automatisch fur PHP-Projekte |
| prisma | .prisma | verfugbarer prisma Befehl |
| pyright | .py, .pyi | pyright-Abhangigkeit installiert |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | verfugbare ruby und gem Befehle |
| rust | .rs | verfugbarer rust-analyzer Befehl |
| sourcekit-lsp | .swift, .objc, .objcpp | swift installiert (xcode unter macOS) |
| svelte | .svelte | Installiert automatisch fur Svelte-Projekte |
| terraform | .tf, .tfvars | Installiert automatisch von GitHub-Releases |
| tinymist | .typ, .typc | Installiert automatisch von GitHub-Releases |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | typescript-Abhangigkeit im Projekt |
| vue | .vue | Installiert automatisch fur Vue-Projekte |
| yaml-ls | .yaml, .yml | Installiert automatisch Red Hat yaml-language-server |
| zls | .zig, .zon | verfugbarer zig Befehl |
LSP-Server werden automatisch aktiviert, wenn eine der oben genannten Dateierweiterungen erkannt wird und die Anforderungen erfullt sind.
Funktionsweise
Wenn opencode eine Datei offnet, folgt es diesen Schritten:
- Uberpruft die Dateiendung gegen alle aktivierten LSP-Server.
- Startet den entsprechenden LSP-Server, falls noch nicht ausgefuhrt.
Konfiguration
Sie konnen LSP-Server uber den Abschnitt lsp in Ihrer opencode-Konfiguration anpassen.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}Jeder LSP-Server unterstutzt Folgendes:
| Property | Type | Description |
|---|---|---|
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 Starten des Servers |
initialization | object | Initialisierungsoptionen zum Senden an den LSP-Server |
Lassen Sie uns einige Beispiele betrachten.
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 spezifischen LSP-Server zu deaktivieren, setzen Sie disabled auf true:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "disabled": true } }}Benutzerdefinierte LSP-Server
Sie konnen benutzerdefinierte LSP-Server hinzufugen, indem Sie den Befehl und Dateierweiterungen angeben:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "custom-lsp": { "command": ["custom-lsp-server", "--stdio"], "extensions": [".custom"] } }}Zusatzliche Informationen
PHP Intelephense
PHP Intelephense bietet Premium-Funktionen uber einen Lizenzschlussel. Sie konnen einen Lizenzschlussel bereitstellen, indem Sie (nur) den Schlussel in einer Textdatei unter folgendem Platzieren:
- Unter macOS/Linux:
$HOME/intelephense/licence.txt - Unter Windows:
%USERPROFILE%/intelephense/licence.txt
Die Datei sollte nur den Lizenzschlussel ohne zusaatzlichen Inhalt enthalten.