Skip to content

LSP serveri

OpenCode se integriše sa vašim LSP serverima.

OpenCode se integriše sa vašim Language Server Protocol (LSP) serverima kako bi pomogao LLM-u u interakciji s kodnom bazom. Koristi dijagnostiku za slanje povratnih informacija modelu.

Ugrađeno

OpenCode dolazi sa nekoliko ugrađenih LSP servera za popularne jezike:

LSP serverEkstenzijeZahtjevi
astro.astroAutomatske instalacije za Astro projekte
bash.sh, .bash, .zsh, .kshAutomatski instalira bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Automatske instalacije za C/C++ projekte
csharp.cs.NET SDK instaliran
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp komanda dostupna
dart.dartdart komanda dostupna
deno.ts, .tsx, .js, .jsx, .mjsdeno komanda dostupna (automatski detektuje deno.json/deno.jsonc)
elixir-ls.ex, .exselixir komanda dostupna
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint ovisnost u projektu
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK instaliran
gleam.bleamgleam komanda dostupna
gopls.gogo komanda dostupna
hls.hs, .lhshaskell-language-server-wrapper komanda dostupna
jdtls.javaJava SDK (version 21+) instaliran
kotlin-ls.kt, .ktsAutomatske instalacije za Kotlin projekte
lua-ls.luaAutomatske instalacije za Lua projekte
nixd.nixnixd komanda dostupna
ocaml-lsp.ml, .mliocamllsp komanda dostupna
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint zavisnost u projektu
php intelephense.phpAutomatske instalacije za PHP projekte
prisma.prismaprisma komanda dostupna
pyright.py, .pyipyright ovisnost instalirana
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby i gem komande dostupne
rust.rsrust-analyzer komanda dostupna
sourcekit-lsp.swift, .objc, .objcppswift instaliran (xcode na macOS-u)
svelte.svelteAutomatske instalacije za Svelte projekte
terraform.tf, .tfvarsAutomatske instalacije iz GitHub izdanja
tinymist.typ, .typcAutomatske instalacije iz GitHub izdanja
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript zavisnost u projektu
vue.vueAutomatske instalacije za Vue projekte
yaml-ls.yaml, .ymlAutomatski instalira Red Hat yaml-language-server
zls.zig, .zonzig komanda dostupna
LSP serveri su automatski omogućeni kada se otkrije jedna od gore navedenih ekstenzija datoteke i zahtjevi su ispunjeni.

Kako radi

Kada opencode otvori fajl, on:

  1. Provjerava ekstenziju datoteke u odnosu na sve omogućene LSP servere.
  2. Pokreće odgovarajući LSP server ako već nije pokrenut.

Konfiguriši

Možete prilagoditi LSP servere kroz lsp odjeljak u vašoj opencode konfiguraciji.

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}

Svaki LSP server podržava sljedeće:

SvojstvoVrstaOpis
disabledbooleanPostavite ovo na true da onemogućite LSP server
commandstring[]Naredba za pokretanje LSP servera
extensionsstring[]Ekstenzije datoteka koje ovaj LSP server treba da rukuje
envobjektVarijable okruženja koje treba postaviti prilikom pokretanja servera
initializationobjektOpcije inicijalizacije za slanje na LSP server
Pogledajmo neke primjere.

Varijable okruženja

Koristite svojstvo env za postavljanje varijabli okruženja prilikom pokretanja LSP servera:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}

Opcije inicijalizacije

Koristite svojstvo initialization da prosledite opcije inicijalizacije na LSP server. Ovo su postavke specifične za server poslane tokom LSP initialize zahtjeva:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}

Onemogućavanje LSP servera

Da biste onemogućili sve LSP servere globalno, postavite lsp na false:

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

Da onemogućite specifičan LSP server, postavite disabled na true:

opencode.json
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}

Prilagođeni LSP serveri

Možete dodati prilagođene LSP servere navodeći ekstenzije naredbe i datoteke:

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

Dodatne informacije

PHP Intelephense

PHP Intelephense nudi vrhunske funkcije putem licencnog ključa. Možete dati licencni ključ postavljanjem (samo) ključa u tekstualnu datoteku na:

  • Na macOS/Linuxu: $HOME/intelephense/license.txt
  • Na Windowsima: %USERPROFILE%/intelephense/license.txt Datoteka treba da sadrži samo licencni ključ bez dodatnog sadržaja.