LSP серверы
Dropstone интегрируется с вашими LSP серверами.
Dropstone может интегрироваться с вашим Language Server Protocol (LSP) для помощи LLM в взаимодействии с вашей кодовой базой. Он использует диагностику для предоставления обратной связи LLM.
Встроенные
Dropstone поставляется с несколькими встроенными LSP серверами для популярных языков:
| 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 |
Когда LSP включен, серверы запускаются при обнаружении одного из указанных выше расширений файлов и выполнении требований.
Как это работает
Когда LSP включен и dropstone открывает файл, он:
- Проверяет расширение файла для всех включенных LSP серверов.
- Запускает соответствующий LSP сервер, если он еще не запущен.
Конфигурация
Вы можете включить и настроить LSP серверы через раздел lsp в конфигурации dropstone.
Чтобы включить все встроенные LSP серверы, установите lsp в true.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Используйте объект, чтобы сохранить встроенные серверы включенными при настройке переопределений или пользовательских серверов.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {}
}
Каждая настроенная запись LSP сервера поддерживает следующее:
Записи серверов требуют command, если они не только отключают сервер.
| Property | Type | Description |
|---|---|---|
disabled | boolean | Установите это значение в true для отключения LSP сервера |
command | string[] | Команда для запуска LSP сервера |
extensions | string[] | Расширения файлов, которые должен обрабатывать этот LSP сервер |
env | object | Переменные окружения для установки при запуске сервера |
initialization | object | Параметры инициализации для отправки на LSP сервер |
Давайте рассмотрим несколько примеров.
Переменные окружения
Используйте свойство env для установки переменных окружения при запуске LSP сервера:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"rust": {
"command": ["rust-analyzer"],
"env": {
"RUST_LOG": "debug"
}
}
}
}
Параметры инициализации
Используйте свойство initialization для передачи параметров инициализации на LSP сервер. Это параметры, специфичные для сервера, отправляемые во время LSP запроса initialize:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
Note:
Параметры инициализации различаются для каждого LSP сервера. Проверьте документацию вашего LSP сервера для доступных параметров.Отключение LSP серверов
Если lsp опущен, все LSP серверы отключены. Чтобы отключить все LSP серверы после того, как другая конфигурация их включила, установите lsp в false:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": false
}
Чтобы отключить конкретный LSP сервер, установите disabled в true:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Пользовательские LSP серверы
Вы можете добавить пользовательские LSP серверы, указав команду и расширения файлов:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
Дополнительная информация
PHP Intelephense
PHP Intelephense предлагает премиум-функции через лицензионный ключ. Вы можете предоставить лицензионный ключ, поместив (только) ключ в текстовый файл по адресу:
- На macOS/Linux:
$HOME/intelephense/license.txt - На Windows:
%USERPROFILE%/intelephense/license.txt
Файл должен содержать только лицензионный ключ без дополнительного содержимого.