Dropstone Docs

Servidores LSP

Dropstone se integra com seus servidores LSP.

Dropstone pode se integrar com seu Language Server Protocol (LSP) para ajudar o LLM a interagir com sua base de código. Ele usa diagnósticos para fornecer feedback ao LLM.


Built-in

Dropstone vem com vários servidores LSP built-in para linguagens populares:

LSP ServerExtensionsRequirements
astro.astroAuto-installs for Astro projects
bash.sh, .bash, .zsh, .kshAuto-installs bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Auto-installs for C/C++ projects
csharp.cs, .csx.NET SDK installed
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp command available
dart.dartdart command available
deno.ts, .tsx, .js, .jsx, .mjsdeno command available (auto-detects deno.json/deno.jsonc)
elixir-ls.ex, .exselixir command available
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint dependency in project
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installed
gleam.gleamgleam command available
gopls.gogo command available
hls.hs, .lhshaskell-language-server-wrapper command available
jdtls.javaJava SDK (version 21+) installed
julials.jljulia and LanguageServer.jl installed
kotlin-ls.kt, .ktsAuto-installs for Kotlin projects
lua-ls.luaAuto-installs for Lua projects
nixd.nixnixd command available
ocaml-lsp.ml, .mliocamllsp command available
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint dependency in project
php intelephense.phpAuto-installs for PHP projects
prisma.prismaprisma command available
pyright.py, .pyipyright dependency installed
razor.razor, .cshtml.NET SDK and VS Code C# extension installed
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby and gem commands available
rust.rsrust-analyzer command available
sourcekit-lsp.swift, .objc, .objcppswift installed (xcode on macOS)
svelte.svelteAuto-installs for Svelte projects
terraform.tf, .tfvarsAuto-installs from GitHub releases
tinymist.typ, .typcAuto-installs from GitHub releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript dependency in project
vue.vueAuto-installs for Vue projects
yaml-ls.yaml, .ymlAuto-installs Red Hat yaml-language-server
zls.zig, .zonzig command available

Quando LSP está ativado, os servidores iniciam quando uma das extensões de arquivo acima é detectada e os requisitos são atendidos.


Como Funciona

Quando LSP está ativado e dropstone abre um arquivo, ele:

  1. Verifica a extensão do arquivo em relação a todos os servidores LSP ativados.
  2. Inicia o servidor LSP apropriado se ainda não estiver em execução.

Configurar

Você pode ativar e personalizar servidores LSP através da seção lsp em sua configuração dropstone.

Para ativar todos os servidores LSP built-in, defina lsp como true.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": true
}

Use um objeto para manter os built-ins ativados enquanto configura substituições ou servidores personalizados.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {}
}

Cada entrada de servidor LSP configurada suporta o seguinte:

As entradas do servidor precisam de command a menos que apenas desativem um servidor.

PropertyTypeDescription
disabledbooleanDefina como true para desativar o servidor LSP
commandstring[]O comando para iniciar o servidor LSP
extensionsstring[]Extensões de arquivo que este servidor LSP deve manipular
envobjectVariáveis de ambiente a definir ao iniciar servidor
initializationobjectOpções de inicialização a enviar para o servidor LSP

Vamos ver alguns exemplos.


Variáveis de ambiente

Use a propriedade env para definir variáveis de ambiente ao iniciar o servidor LSP:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "rust": {
      "command": ["rust-analyzer"],
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}

Opções de inicialização

Use a propriedade initialization para passar opções de inicialização para o servidor LSP. Estas são configurações específicas do servidor enviadas durante a solicitação LSP initialize:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"],
      "initialization": {
        "preferences": {
          "importModuleSpecifierPreference": "relative"
        }
      }
    }
  }
}

Note:

As opções de inicialização variam por servidor LSP. Verifique a documentação do seu servidor LSP para opções disponíveis.


Desativando servidores LSP

Se lsp for omitido, todos os servidores LSP serão desativados. Para desativar todos os servidores LSP após outra configuração tê-los ativado, defina lsp como false:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": false
}

Para desativar um servidor LSP específico, defina disabled como true:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

Servidores LSP personalizados

Você pode adicionar servidores LSP personalizados especificando o comando e as extensões de arquivo:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"]
    }
  }
}

Informações Adicionais

PHP Intelephense

PHP Intelephense oferece recursos premium através de uma chave de licença. Você pode fornecer uma chave de licença colocando (apenas) a chave em um arquivo de texto em:

  • No macOS/Linux: $HOME/intelephense/license.txt
  • No Windows: %USERPROFILE%/intelephense/license.txt

O arquivo deve conter apenas a chave de licença sem conteúdo adicional.

Ctrl+I