Español
Documentación
Servidores LSP

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 LSPExtensionesRequisitos
astro.astroInstalación automática para proyectos Astro
bash.sh, .bash, .zsh, .kshInstalació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, .ednComando clojure-lsp disponible
dart.dartComando dart disponible
deno.ts, .tsx, .js, .jsx, .mjsComando deno disponible (detecta automáticamente deno.json/deno.jsonc)
elixir-ls.ex, .exsComando elixir disponible
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueDependencia eslint en el proyecto
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK instalado
gleam.gleamComando gleam disponible
gopls.goComando go disponible
hls.hs, .lhsComando haskell-language-server-wrapper disponible
jdtls.javaJava SDK (versión 21+) instalado
kotlin-ls.kt, .ktsInstalación automática para proyectos Kotlin
lua-ls.luaInstalación automática para proyectos Lua
nixd.nixComando nixd disponible
ocaml-lsp.ml, .mliComando ocamllsp disponible
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteDependencia oxlint en el proyecto
php intelephense.phpInstalación automática para proyectos PHP
prisma.prismaComando prisma disponible
pyright.py, .pyiDependencia pyright instalada
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruComandos ruby y gem disponibles
rust.rsComando rust-analyzer disponible
sourcekit-lsp.swift, .objc, .objcppswift instalado (xcode en macOS)
svelte.svelteInstalación automática para proyectos Svelte
terraform.tf, .tfvarsInstalación automática desde GitHub releases
tinymist.typ, .typcInstalación automática desde GitHub releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsDependencia typescript en el proyecto
vue.vueInstalación automática para proyectos Vue
yaml-ls.yaml, .ymlInstalación automática de Red Hat yaml-language-server
zls.zig, .zonComando 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_DOWNLOAD a true.

Cómo Funciona

Cuando opencode abre un archivo:

  1. Verifica la extensión del archivo contra todos los servidores LSP habilitados.
  2. 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.

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

Cada servidor LSP soporta lo siguiente:

PropiedadTipoDescripción
disabledbooleanEstablecer a true para deshabilitar el servidor LSP
commandstring[]El comando para iniciar el servidor LSP
extensionsstring[]Extensiones de archivo que este servidor LSP debe manejar
envobjectVariables de entorno al iniciar el servidor
initializationobjectOpciones 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:

opencode.json
{
  "$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:

opencode.json
{
  "$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:

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

Para deshabilitar un servidor LSP específico, establece disabled a true:

opencode.json
{
  "$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:

opencode.json
{
  "$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.