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 il LLM a interagire con la tua codebase. Utilizza le diagnostiche per fornire feedback al LLM.


Integrati

OpenCode include diversi server LSP integrati per linguaggi popolari:

LSP ServerExtensionsRequirements
astro.astroSi installa automaticamente per progetti Astro
bash.sh, .bash, .zsh, .kshInstalla automaticamente bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Si installa automaticamente 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
jdtls.javaJava SDK (versione 21+) installato
kotlin-ls.kt, .ktsSi installa automaticamente per progetti Kotlin
lua-ls.luaSi installa automaticamente 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.phpSi installa automaticamente 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.svelteSi installa automaticamente per progetti Svelte
terraform.tf, .tfvarsSi installa automaticamente dalle release di GitHub
tinymist.typ, .typcSi installa automaticamente dalle release di GitHub
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsdipendenza typescript nel progetto
vue.vueSi installa automaticamente per progetti Vue
yaml-ls.yaml, .ymlInstalla automaticamente Red Hat yaml-language-server
zls.zig, .zoncomando zig disponibile

I server LSP vengono attivati automaticamente quando viene rilevata una delle estensioni di file sopra indicate ei requisiti sono soddisfatti.


Come funziona

Quando opencode apre un file, segue questi passaggi:

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

Configurazione

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

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

Ogni server LSP supporta quanto segue:

PropertyTypeDescription
disabledbooleanImposta su true per disabilitare il server LSP
commandstring[]Il comando per avviare il server LSP
extensionsstring[]Estensioni di file che questo server LSP deve gestire
envobjectVariabili d’ambiente all’avvio del server
initializationobjectOpzioni di inizializzazione da inviare al server LSP

Vediamo alcuni esempi.


Disabilitare i server LSP

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

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

Per disabilitare un server LSP specifico, imposta disabled su 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 di 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 una chiave di licenza inserendo (solo) la chiave in un file di testo in:

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

Il file deve contenere solo la chiave di licenza senza contenuto aggiuntivo.