Servidores LSP
OpenCode se integra con tus servidores LSP.
OpenCode se integra con el Language Server Protocol (LSP) para ayudar al LLM a interactuar con tu base de código. Utiliza diagnósticos para proporcionar retroalimentación al LLM.
Soporte Integrado
OpenCode incluye varios servidores LSP integrados para lenguajes populares:
| Servidor LSP | Extensiones | Requisitos |
|---|---|---|
| astro | .astro | Instalación automática para proyectos Astro |
| bash | .sh, .bash, .zsh, .ksh | Instalación automática de bash-language-server |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Instalación automática para proyectos C/C++ |
| csharp | .cs | .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 (versión 21+) instalado |
| kotlin-ls | .kt, .kts | Instalación automática para proyectos Kotlin |
| lua-ls | .lua | Instalación automática 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 | Instalación automática para proyectos PHP |
| prisma | .prisma | Comando prisma disponible |
| pyright | .py, .pyi | Dependencia pyright instalada |
| 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 | Instalación automática para proyectos Svelte |
| terraform | .tf, .tfvars | Instalación automática desde GitHub releases |
| tinymist | .typ, .typc | Instalación automática desde GitHub releases |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Dependencia typescript en el proyecto |
| vue | .vue | Instalación automática para proyectos Vue |
| yaml-ls | .yaml, .yml | Instalación automática de Red Hat yaml-language-server |
| zls | .zig, .zon | Comando zig disponible |
Los servidores LSP se habilitan automáticamente 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 configurando la variable de entorno
OPENCODE_DISABLE_LSP_DOWNLOADatrue.
Cómo Funciona
Cuando opencode abre un archivo:
- Verifica la extensión del archivo contra todos los servidores LSP habilitados.
- Inicia el servidor LSP apropiado si aún no está ejecutándose.
Configuración
Puedes personalizar los servidores LSP a través de la sección lsp en tu configuración de opencode.
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}Cada servidor LSP soporta lo siguiente:
| Propiedad | Tipo | Descripción |
|---|---|---|
disabled | boolean | Establecer a true para deshabilitar el servidor LSP |
command | string[] | El comando para iniciar el servidor LSP |
extensions | string[] | Extensiones de archivo que este servidor LSP debe manejar |
env | object | Variables de entorno al iniciar el servidor |
initialization | object | Opciones de inicialización para enviar 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": {
"env": {
"RUST_LOG": "debug"
}
}
}
}Opciones de inicialización
Usa la propiedad initialization para pasar opciones de inicialización al servidor LSP. Estas son configuraciones específicas del servidor enviadas durante la solicitud LSP initialize:
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"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 las opciones disponibles.
Deshabilitar servidores LSP
Para deshabilitar todos los servidores LSP globalmente, establece lsp a false:
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}Para deshabilitar un servidor LSP específico, establece disabled a 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 a través de una clave de licencia. Puedes proporcionar una clave de licencia colocándola (solo la clave) en un archivo de texto en:
- macOS/Linux:
$HOME/intelephense/licence.txt - Windows:
%USERPROFILE%/intelephense/licence.txt
El archivo debe contener solo la clave de licencia sin contenido adicional.