summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/content/docs/de/lsp.mdx
blob: 60f8316c6b6c1a80c2edae989a6da5a22cd07ba9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
---
title: LSP Server
description: 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.

---

## Integriert

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.

:::note
Sie können LSP-Server-Downloads automatisch deaktivieren, indem Sie die Umgebungsvariable `OPENCODE_DISABLE_LSP_DOWNLOAD` auf `true` setzen.
:::

---

## Funktionsweise

Wenn OpenCode eine Datei öffnet, geschieht Folgendes:

1. Überprüft die Dateierweiterung anhand aller aktivierten LSP-Server.
2. Startet den entsprechenden LSP-Server, falls er noch nicht ausgeführt wird.

---

## Konfiguration

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

```json title="opencode.json"
{
  "$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:

```json title="opencode.json" {5-7}
{
  "$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:

```json title="opencode.json" {5-9}
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "initialization": {
        "preferences": {
          "importModuleSpecifierPreference": "relative"
        }
      }
    }
  }
}
```

:::note
Die Initialisierungsoptionen variieren je nach LSP-Server. Überprüfen Sie die Dokumentation Ihres LSP-Servers auf verfügbare Optionen.
:::

---

### Deaktivieren von LSP-Servern

Um **alle** LSP-Server global zu deaktivieren, setzen Sie `lsp` auf `false`:

```json title="opencode.json" {3}
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": false
}
```

Um einen **bestimmten** LSP-Server zu deaktivieren, setzen Sie `disabled` auf `true`:

```json title="opencode.json" {5}
{
  "$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:

```json title="opencode.json" {4-7}
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"]
    }
  }
}
```

---

## Weitere Informationen

### PHP Intelephense

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.