Servidores LSP
OpenCode se integra con tus servidores LSP.
OpenCode puede integrarse con tu Language Server Protocol (LSP) para ayudar al LLM a interactuar con tu base de código. Usa los diagnósticos para proporcionar retroalimentación al LLM.
Integrados
OpenCode incluye varios servidores LSP integrados para lenguajes populares:
| Servidor LSP | Extensiones | Requisitos |
|---|---|---|
| astro | .astro | Se instala automáticamente para proyectos Astro |
| bash | .sh, .bash, .zsh, .ksh | Instala automáticamente bash-language-server |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Se instala automáticamente para proyectos C/C++ |
| csharp | .cs, .csx | .NET SDK instalado |
| clojure-lsp | .clj, .cljs, .cljc, .edn | Comando clojure-lsp disponible |
| dart | .dart | Comando dart disponible |
| deno | .ts, .tsx, .js, .jsx, .mjs | Comando deno disponible (detecta automáticamente deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | Comando elixir disponible |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Dependencia eslint en el proyecto |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK instalado |
| gleam | .gleam | Comando gleam disponible |
| gopls | .go | Comando go disponible |
| hls | .hs, .lhs | Comando haskell-language-server-wrapper disponible |
| jdtls | .java | Java SDK (version 21+) instalado |
| julials | .jl | julia y LanguageServer.jl instalados |
| kotlin-ls | .kt, .kts | Se instala automáticamente para proyectos Kotlin |
| lua-ls | .lua | Se instala automáticamente para proyectos Lua |
| nixd | .nix | Comando nixd disponible |
| ocaml-lsp | .ml, .mli | Comando ocamllsp disponible |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Dependencia oxlint en el proyecto |
| php intelephense | .php | Se instala automáticamente para proyectos PHP |
| prisma | .prisma | Comando prisma disponible |
| pyright | .py, .pyi | Dependencia pyright instalada |
| razor | .razor, .cshtml | .NET SDK y la extensión de C# de VS Code instalados |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Comandos ruby y gem disponibles |
| rust | .rs | Comando rust-analyzer disponible |
| sourcekit-lsp | .swift, .objc, .objcpp | swift instalado (xcode en macOS) |
| svelte | .svelte | Se instala automáticamente para proyectos Svelte |
| terraform | .tf, .tfvars | Se instala automáticamente desde GitHub releases |
| tinymist | .typ, .typc | Se instala automáticamente desde GitHub releases |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Dependencia typescript en el proyecto |
| vue | .vue | Se instala automáticamente para proyectos Vue |
| yaml-ls | .yaml, .yml | Instala automáticamente el yaml-language-server de Red Hat |
| zls | .zig, .zon | Comando zig disponible |
Cuando LSP está habilitado, los servidores se inician cuando se detecta una de las extensiones de archivo anteriores y se cumplen los requisitos.
Nota: Puedes deshabilitar las descargas automáticas de servidores LSP estableciendo la variable de entorno
OPENCODE_DISABLE_LSP_DOWNLOADentrue.
Cómo funciona
Cuando LSP está habilitado y opencode abre un archivo:
- Comprueba la extensión del archivo contra todos los servidores LSP habilitados.
- Inicia el servidor LSP apropiado si no se está ejecutando ya.
Configuración
Puedes habilitar y personalizar los servidores LSP mediante la sección lsp en tu configuración de opencode.
Para habilitar todos los servidores LSP integrados, establece lsp en true.
{
"$schema": "https://opencode.ai/config.json",
"lsp": true
}Usa un objeto para mantener los integrados habilitados mientras configuras anulaciones o servidores personalizados.
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}Cada entrada de servidor LSP configurada admite lo siguiente:
Las entradas de servidor necesitan command a menos que solo deshabiliten un servidor.
| Propiedad | Tipo | Descripción |
|---|---|---|
disabled | boolean | Establécelo en true para deshabilitar el servidor LSP |
command | string[] | El comando para iniciar el servidor LSP |
extensions | string[] | Las extensiones de archivo que este servidor LSP debe manejar |
env | object | Variables de entorno que se establecen al iniciar el servidor |
initialization | object | Opciones de inicialización que se envían al servidor LSP |
Veamos algunos ejemplos.
Variables de entorno
Usa la propiedad env para establecer variables de entorno al iniciar el servidor LSP:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"command": ["rust-analyzer"],
"env": {
"RUST_LOG": "debug"
}
}
}
}Opciones de inicialización
Usa la propiedad initialization para pasar opciones de inicialización al servidor LSP. Estos son ajustes específicos del servidor que se envían durante la solicitud initialize de LSP:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}Nota: Las opciones de inicialización varían según el servidor LSP. Consulta la documentación de tu servidor LSP para conocer las opciones disponibles.
Deshabilitar servidores LSP
Si se omite lsp, todos los servidores LSP están deshabilitados. Para deshabilitar todos los servidores LSP después de que otra configuración los haya habilitado, establece lsp en false:
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}Para deshabilitar un servidor LSP específico, establece disabled en true:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}Servidores LSP personalizados
Puedes agregar servidores LSP personalizados especificando el comando y las extensiones de archivo:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}Información adicional
PHP Intelephense
PHP Intelephense ofrece funciones premium mediante una clave de licencia. Puedes proporcionar una clave de licencia colocando (solo) la clave en un archivo de texto en:
- En macOS/Linux:
$HOME/intelephense/license.txt - En Windows:
%USERPROFILE%/intelephense/license.txt
El archivo debe contener únicamente la clave de licencia, sin contenido adicional.