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
189
|
---
title: LSP-servere
description: opencode integreres med LSP-serverne dine.
---
OpenCode integreres med din Language Server Protocol (LSP) for å hjelpe LLM med å samhandle med kodebasen din. Den bruker diagnostikk for å gi tilbakemelding til LLM.
---
## Innebygde servere
OpenCode kommer med flere innebygde LSP-servere for populære språk:
| LSP Server | Filendelser | Krav |
| ------------------ | ------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| astro | .astro | Installeres automatisk for Astro-prosjekter |
| bash | .sh, .bash, .zsh, .ksh | Installerer bash-language-server automatisk |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Installeres automatisk for C/C++-prosjekter |
| csharp | .cs | `.NET SDK` installert |
| clojure-lsp | .clj, .cljs, .cljc, .edn | `clojure-lsp` kommando tilgjengelig |
| dart | .dart | `dart` kommando tilgjengelig |
| deno | .ts, .tsx, .js, .jsx, .mjs | `deno` kommando tilgjengelig (automatisk oppdager deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | `elixir` kommando tilgjengelig |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` avhengighet i prosjekt |
| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` installert |
| gleam | .gleam | `gleam` kommando tilgjengelig |
| gopls | .go | `go` kommando tilgjengelig |
| hls | .hs, .lhs | `haskell-language-server-wrapper` kommando tilgjengelig |
| jdtls | .java | `Java SDK (version 21+)` installert |
| julials | .jl | `julia` og `LanguageServer.jl` installert |
| kotlin-ls | .kt, .kts | Installeres automatisk for Kotlin-prosjekter |
| lua-ls | .lua | Installeres automatisk for Lua-prosjekter |
| nixd | .nix | `nixd` kommando tilgjengelig |
| ocaml-lsp | .ml, .mli | `ocamllsp` kommando tilgjengelig |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` avhengighet i prosjekt |
| php intelephense | .php | Installeres automatisk for PHP-prosjekter |
| prisma | .prisma | `prisma` kommando tilgjengelig |
| pyright | .py, .pyi | `pyright` avhengighet installert |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | `ruby` og `gem` kommandoer tilgjengelig |
| rust | .rs | `rust-analyzer` kommando tilgjengelig |
| sourcekit-lsp | .swift, .objc, .objcpp | `swift` installert (`xcode` på macOS) |
| svelte | .svelte | Installeres automatisk for Svelte-prosjekter |
| terraform | .tf, .tfvars | Installeres automatisk fra GitHub-utgivelser |
| tinymist | .typ, .typc | Installeres automatisk fra GitHub-utgivelser |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` avhengighet i prosjekt |
| vue | .vue | Installeres automatisk for Vue-prosjekter |
| yaml-ls | .yaml, .yml | Installerer Red Hat yaml-language-server automatisk |
| zls | .zig, .zon | `zig` kommando tilgjengelig |
LSP-servere aktiveres automatisk når en av filtypene ovenfor oppdages og kravene oppfylles.
:::note
Du kan deaktivere automatiske LSP-servernedlastinger ved å sette miljøvariabelen `OPENCODE_DISABLE_LSP_DOWNLOAD` til `true`.
:::
---
## Slik fungerer det
Når opencode åpner en fil, gjør den:
1. Kontrollerer filtypen mot alle aktiverte LSP-servere.
2. Starter den riktige LSP-serveren hvis den ikke allerede kjører.
---
## Konfigurasjon
Du kan tilpasse LSP-servere gjennom `lsp`-delen i OpenCode-konfigurasjonen.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}
```
Hver LSP-server støtter følgende:
| Egenskap | Type | Beskrivelse |
| ---------------- | -------- | -------------------------------------------------------- |
| `disabled` | boolean | Sett dette til `true` for å deaktivere LSP-serveren |
| `command` | string[] | Kommandoen for å starte LSP-serveren |
| `extensions` | string[] | Filendelser denne LSP-serveren skal håndtere |
| `env` | object | Miljøvariabler som skal angis når serveren startes |
| `initialization` | object | Initialiseringsalternativer for å sende til LSP-serveren |
La oss se på noen eksempler.
---
### Miljøvariabler
Bruk egenskapen `env` til å angi miljøvariabler når du starter LSP-serveren:
```json title="opencode.json" {5-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}
```
---
### Initialiseringsalternativer
Bruk egenskapen `initialization` til å sende initialiseringsalternativer til LSP-serveren. Dette er serverspesifikke innstillinger sendt under LSP `initialize`-forespørselen:
```json title="opencode.json" {5-9}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
```
:::note
Initialiseringsalternativer varierer etter LSP-server. Sjekk dokumentasjonen til LSP-serveren for tilgjengelige alternativer.
:::
---
### Deaktivering av LSP-servere
For å deaktivere **alle** LSP-servere globalt, sett `lsp` til `false`:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}
```
For å deaktivere en **spesifikk** LSP-server, sett `disabled` til `true`:
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
```
---
### Egendefinerte LSP-servere
Du kan legge til egendefinerte LSP-servere ved å spesifisere kommandoen og filtypene:
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
```
---
## Tilleggsinformasjon
### PHP Intelephense
PHP Intelephense tilbyr førsteklasses funksjoner gjennom en lisensnøkkel. Du kan oppgi en lisensnøkkel ved å plassere (bare) nøkkelen i en tekstfil på:
- På macOS/Linux: `$HOME/intelephense/license.txt`
- På Windows: `%USERPROFILE%/intelephense/license.txt`
Filen skal bare inneholde lisensnøkkelen uten ekstra innhold.
|