File size: 10,709 Bytes
3e05655 | 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 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | ---
title: LSP-servere
description: opencode integreres med LSP-serverne dine.
---
OpenCode kan integreres med Language Server Protocol (LSP)-servere for å bruke diagnostikk som tilbakemelding til agenten.
---
## 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 er deaktivert som standard. Når det er aktivert, starter servere 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 LSP er aktivert og 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.
---
## Beste praksis
LSP kan hjelpe agenten med å finne og fikse problemer ved å gi diagnostikk fra språkservere. Dette er nyttig i noen prosjekter, men er ikke alltid en klar gevinst.
Språkservere kan komme ut av synk, bruke mye minne, variere etter versjon eller prosjekt og redusere agentarbeidsflyter. I mange prosjekter er det bedre at agenten kjører lint, typecheck eller andre diagnostiske CLI-verktøy direkte, slik at feil mates tilbake i agentløkken uten disse avveiningene. Dokumenter disse kommandoene i instruksjonsfiler som `AGENTS.md` eller skills, slik at agenten vet hva den skal kjøre. Aktiver LSP når prosjektet ditt har nytte av ekstra språkservertilbakemelding.
---
## Konfigurasjon
Du kan aktivere og tilpasse LSP-servere gjennom `lsp`-delen i OpenCode-konfigurasjonen.
For å aktivere alle innebygde LSP-servere, sett `lsp` til `true`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"lsp": true
}
```
Bruk et objekt for å beholde innebygde servere aktivert mens du konfigurerer overstyringer eller egendefinerte servere.
```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
Hvis `lsp` utelates, er alle LSP-servere deaktivert. For å deaktivere alle LSP-servere etter at en annen konfigurasjon har aktivert dem, 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.
|