Servidores LSP
Dropstone se integra con tus servidores LSP.
Dropstone puede integrarse con tu Protocolo de Servidor de Lenguaje (LSP) para ayudar al LLM a interactuar con tu base de código. Utiliza diagnósticos para proporcionar retroalimentación al LLM.
Integrados
Dropstone viene con 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 | Se 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 (versión 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 extensión 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 | Se instala automáticamente Red Hat yaml-language-server |
| 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.
Cómo funciona
Cuando LSP está habilitado y dropstone abre un archivo, hace lo siguiente:
- Verifica la extensión del archivo contra todos los servidores LSP habilitados.
- Inicia el servidor LSP apropiado si no está ya en ejecución.
Configurar
Puedes habilitar y personalizar servidores LSP a través de la sección lsp en tu configuración de dropstone.
Para habilitar todos los servidores LSP integrados, establece lsp en true.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Usa un objeto para mantener los integrados habilitados mientras configuras anulaciones o servidores personalizados.
{
"$schema": "https://dropstone.io/schema/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 | Establece esto en 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 a establecer al iniciar el servidor |
initialization | object | Opciones de inicialización a 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://dropstone.io/schema/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. Estas son configuraciones específicas del servidor enviadas durante la solicitud LSP initialize:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
Note:
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 se deshabilitan. Para deshabilitar todos los servidores LSP después de que otra configuración los haya habilitado, establece lsp en false:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": false
}
Para deshabilitar un servidor LSP específico, establece disabled en true:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Servidores LSP personalizados
Puedes agregar servidores LSP personalizados especificando el comando y las extensiones de archivo:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
Información adicional
PHP Intelephense
PHP Intelephense ofrece características premium a través de 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 solo la clave de licencia sin contenido adicional.