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 Server | Extensions | Requirements |
|---|---|---|
| astro | .astro | Auto-installs for Astro projects |
| bash | .sh, .bash, .zsh, .ksh | Auto-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, .edn | clojure-lsp command available |
| dart | .dart | dart command available |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno command available (auto-detects deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | elixir command available |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | eslint dependency in project |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK installed |
| gleam | .gleam | gleam command available |
| gopls | .go | go command available |
| hls | .hs, .lhs | haskell-language-server-wrapper command available |
| jdtls | .java | Java SDK (version 21+) installed |
| julials | .jl | julia and LanguageServer.jl installed |
| kotlin-ls | .kt, .kts | Auto-installs for Kotlin projects |
| lua-ls | .lua | Auto-installs for Lua projects |
| nixd | .nix | nixd command available |
| ocaml-lsp | .ml, .mli | ocamllsp command available |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | oxlint dependency in project |
| php intelephense | .php | Auto-installs for PHP projects |
| prisma | .prisma | prisma command available |
| pyright | .py, .pyi | pyright dependency installed |
| razor | .razor, .cshtml | .NET SDK and VS Code C# extension installed |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | ruby and gem commands available |
| rust | .rs | rust-analyzer command available |
| sourcekit-lsp | .swift, .objc, .objcpp | swift installed (xcode on macOS) |
| svelte | .svelte | Auto-installs for Svelte projects |
| terraform | .tf, .tfvars | Auto-installs from GitHub releases |
| tinymist | .typ, .typc | Auto-installs from GitHub releases |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | typescript dependency in project |
| vue | .vue | Auto-installs for Vue projects |
| yaml-ls | .yaml, .yml | Auto-installs Red Hat yaml-language-server |
| zls | .zig, .zon | zig 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:
- Verifica a extensão do arquivo em relação a todos os servidores LSP ativados.
- 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.
| Property | Type | Description |
|---|---|---|
disabled | boolean | Defina como true para desativar o servidor LSP |
command | string[] | O comando para iniciar o servidor LSP |
extensions | string[] | Extensões de arquivo que este servidor LSP deve manipular |
env | object | Variáveis de ambiente a definir ao iniciar servidor |
initialization | object | Opçõ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.