Salta ai contenuti

Server LSP

OpenCode si integra con i tuoi server LSP.

OpenCode si integra con il tuo Language Server Protocol (LSP) per aiutare l’LLM a interagire con la tua codebase. Usa le diagnostiche per fornire feedback all’LLM.


Integrati

OpenCode include diversi server LSP integrati per linguaggi popolari:

Server LSPEstensioniRequisiti
astro.astroInstallazione automatica per progetti Astro
bash.sh, .bash, .zsh, .kshInstallazione automatica di bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Installazione automatica per progetti C/C++
csharp.cs.NET SDK installato
clojure-lsp.clj, .cljs, .cljc, .edncomando clojure-lsp disponibile
dart.dartcomando dart disponibile
deno.ts, .tsx, .js, .jsx, .mjscomando deno disponibile (rileva automaticamente deno.json/deno.jsonc)
elixir-ls.ex, .exscomando elixir disponibile
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vuedipendenza eslint nel progetto
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installato
gleam.gleamcomando gleam disponibile
gopls.gocomando go disponibile
hls.hs, .lhscomando haskell-language-server-wrapper disponibile
jdtls.javaJava SDK (version 21+) installato
kotlin-ls.kt, .ktsInstallazione automatica per progetti Kotlin
lua-ls.luaInstallazione automatica per progetti Lua
nixd.nixcomando nixd disponibile
ocaml-lsp.ml, .mlicomando ocamllsp disponibile
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .sveltedipendenza oxlint nel progetto
php intelephense.phpInstallazione automatica per progetti PHP
prisma.prismacomando prisma disponibile
pyright.py, .pyidipendenza pyright installata
ruby-lsp (rubocop).rb, .rake, .gemspec, .rucomandi ruby e gem disponibili
rust.rscomando rust-analyzer disponibile
sourcekit-lsp.swift, .objc, .objcppswift installato (xcode su macOS)
svelte.svelteInstallazione automatica per progetti Svelte
terraform.tf, .tfvarsInstallazione automatica dalle release GitHub
tinymist.typ, .typcInstallazione automatica dalle release GitHub
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsdipendenza typescript nel progetto
vue.vueInstallazione automatica per progetti Vue
yaml-ls.yaml, .ymlInstallazione automatica di Red Hat yaml-language-server
zls.zig, .zoncomando zig disponibile

I server LSP vengono abilitati automaticamente quando viene rilevata una delle estensioni qui sopra e i requisiti sono soddisfatti.


Come funziona

Quando opencode apre un file:

  1. Controlla l’estensione del file rispetto a tutti i server LSP abilitati.
  2. Avvia il server LSP appropriato se non e gia in esecuzione.

Configura

Puoi personalizzare i server LSP tramite la sezione lsp nella configurazione di opencode.

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

Ogni server LSP supporta i seguenti campi:

ProprietaTipoDescrizione
disabledbooleanImposta a true per disabilitare il server LSP
commandstring[]Il comando per avviare il server LSP
extensionsstring[]Estensioni file gestite da questo server LSP
envobjectVariabili d’ambiente da impostare all’avvio
initializationobjectOpzioni di inizializzazione da inviare al server

Vediamo alcuni esempi.


Variabili d’ambiente

Usa la proprieta env per impostare variabili d’ambiente quando avvii il server LSP:

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

Opzioni di inizializzazione

Usa la proprieta initialization per passare opzioni di inizializzazione al server LSP. Sono impostazioni specifiche del server inviate durante la richiesta LSP initialize:

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

Disabilitare i server LSP

Per disabilitare tutti i server LSP globalmente, imposta lsp a false:

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

Per disabilitare un server LSP specifico, imposta disabled a true:

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

Server LSP personalizzati

Puoi aggiungere server LSP personalizzati specificando il comando e le estensioni file:

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

Informazioni aggiuntive

PHP Intelephense

PHP Intelephense offre funzionalita premium tramite una chiave di licenza. Puoi fornire la chiave inserendo (solo) la chiave in un file di testo in:

  • Su macOS/Linux: $HOME/intelephense/license.txt
  • Su Windows: %USERPROFILE%/intelephense/license.txt

Il file deve contenere solo la chiave di licenza, senza contenuti aggiuntivi.