Dropstone Docs

LSP серверы

Dropstone интегрируется с вашими LSP серверами.

Dropstone может интегрироваться с вашим Language Server Protocol (LSP) для помощи LLM в взаимодействии с вашей кодовой базой. Он использует диагностику для предоставления обратной связи LLM.


Встроенные

Dropstone поставляется с несколькими встроенными LSP серверами для популярных языков:

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

Когда LSP включен, серверы запускаются при обнаружении одного из указанных выше расширений файлов и выполнении требований.


Как это работает

Когда LSP включен и dropstone открывает файл, он:

  1. Проверяет расширение файла для всех включенных LSP серверов.
  2. Запускает соответствующий 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, если они не только отключают сервер.

PropertyTypeDescription
disabledbooleanУстановите это значение в true для отключения LSP сервера
commandstring[]Команда для запуска LSP сервера
extensionsstring[]Расширения файлов, которые должен обрабатывать этот LSP сервер
envobjectПеременные окружения для установки при запуске сервера
initializationobjectПараметры инициализации для отправки на 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

Файл должен содержать только лицензионный ключ без дополнительного содержимого.

Ctrl+I