Saltearse al contenido

Servidores LSP

OpenCode se integra con tus servidores LSP.

OpenCode se integra con tu Language Server Protocol (LSP) para ayudar al LLM a interactuar con tu base de codigo. Utiliza diagnosticos para proporcionar retroalimentacion al LLM.


Integrados

OpenCode viene con varios servidores LSP integrados para lenguajes populares:

LSP ServerExtensionsRequirements
astro.astroSe instala automaticamente para proyectos Astro
bash.sh, .bash, .zsh, .kshInstala automaticamente bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Se instala automaticamente 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 automaticamente 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
jdtls.javaJava SDK (version 21+) instalado
kotlin-ls.kt, .ktsSe instala automaticamente para proyectos Kotlin
lua-ls.luaSe instala automaticamente 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.phpSe instala automaticamente 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.svelteSe instala automaticamente para proyectos Svelte
terraform.tf, .tfvarsSe instala automaticamente desde releases de GitHub
tinymist.typ, .typcSe instala automaticamente desde releases de GitHub
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsdependencia typescript en el proyecto
vue.vueSe instala automaticamente para proyectos Vue
yaml-ls.yaml, .ymlInstala automaticamente Red Hat yaml-language-server
zls.zig, .zoncomando zig disponible

Los servidores LSP se activan automaticamente cuando se detecta una de las extensiones de archivo anteriores y se cumplen los requisitos.


Como funciona

Cuando opencode abre un archivo, sigue estos pasos:

  1. Verifica la extension del archivo contra todos los servidores LSP habilitados.
  2. Inicia el servidor LSP apropiado si aun no esta en ejecucion.

Configurar

Puedes personalizar los servidores LSP a traves de la seccion lsp en tu configuracion de opencode.

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

Cada servidor LSP admite lo siguiente:

PropertyTypeDescription
disabledbooleanEstablecer en true para desactivar 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 inicializacion para enviar al servidor LSP

Veamos algunos ejemplos.


Desactivar servidores LSP

Para desactivar todos los servidores LSP globalmente, establece lsp en false:

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

Para desactivar un servidor LSP especifico, establece disabled en 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"]
}
}
}

Informacion adicional

PHP Intelephense

PHP Intelephense ofrece funciones premium a traves de una clave de licencia. Puedes proporcionar una clave de licencia colocando (unicamente) la clave en un archivo de texto en:

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

El archivo debe contener solo la clave de licencia sin contenido adicional.