Server LSP
Dropstone terintegrasi dengan server LSP Anda.
Dropstone dapat terintegrasi dengan Language Server Protocol (LSP) Anda untuk membantu LLM berinteraksi dengan basis kode Anda. Ini menggunakan diagnostik untuk memberikan umpan balik kepada LLM.
Built-in
Dropstone dilengkapi dengan beberapa server LSP bawaan untuk bahasa populer:
| Server LSP | Ekstensi | Persyaratan |
|---|---|---|
| astro | .astro | Auto-installs untuk proyek Astro |
| bash | .sh, .bash, .zsh, .ksh | Auto-installs bash-language-server |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Auto-installs untuk proyek C/C++ |
| csharp | .cs, .csx | .NET SDK terinstal |
| clojure-lsp | .clj, .cljs, .cljc, .edn | Perintah clojure-lsp tersedia |
| dart | .dart | Perintah dart tersedia |
| deno | .ts, .tsx, .js, .jsx, .mjs | Perintah deno tersedia (auto-detects deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | Perintah elixir tersedia |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Dependensi eslint dalam proyek |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK terinstal |
| gleam | .gleam | Perintah gleam tersedia |
| gopls | .go | Perintah go tersedia |
| hls | .hs, .lhs | Perintah haskell-language-server-wrapper tersedia |
| jdtls | .java | Java SDK (versi 21+) terinstal |
| julials | .jl | julia dan LanguageServer.jl terinstal |
| kotlin-ls | .kt, .kts | Auto-installs untuk proyek Kotlin |
| lua-ls | .lua | Auto-installs untuk proyek Lua |
| nixd | .nix | Perintah nixd tersedia |
| ocaml-lsp | .ml, .mli | Perintah ocamllsp tersedia |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Dependensi oxlint dalam proyek |
| php intelephense | .php | Auto-installs untuk proyek PHP |
| prisma | .prisma | Perintah prisma tersedia |
| pyright | .py, .pyi | Dependensi pyright terinstal |
| razor | .razor, .cshtml | .NET SDK dan ekstensi C# VS Code terinstal |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Perintah ruby dan gem tersedia |
| rust | .rs | Perintah rust-analyzer tersedia |
| sourcekit-lsp | .swift, .objc, .objcpp | swift terinstal (xcode di macOS) |
| svelte | .svelte | Auto-installs untuk proyek Svelte |
| terraform | .tf, .tfvars | Auto-installs dari GitHub releases |
| tinymist | .typ, .typc | Auto-installs dari GitHub releases |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Dependensi typescript dalam proyek |
| vue | .vue | Auto-installs untuk proyek Vue |
| yaml-ls | .yaml, .yml | Auto-installs Red Hat yaml-language-server |
| zls | .zig, .zon | Perintah zig tersedia |
Ketika LSP diaktifkan, server dimulai ketika salah satu ekstensi file di atas terdeteksi dan persyaratan terpenuhi.
Cara Kerjanya
Ketika LSP diaktifkan dan dropstone membuka file, ini:
- Memeriksa ekstensi file terhadap semua server LSP yang diaktifkan.
- Memulai server LSP yang sesuai jika belum berjalan.
Konfigurasi
Anda dapat mengaktifkan dan menyesuaikan server LSP melalui bagian lsp dalam konfigurasi dropstone Anda.
Untuk mengaktifkan semua server LSP bawaan, atur lsp ke true.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": true
}
Gunakan objek untuk membuat built-in tetap diaktifkan sambil mengonfigurasi override atau server kustom.
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {}
}
Setiap entri server LSP yang dikonfigurasi mendukung hal berikut:
Entri server memerlukan command kecuali mereka hanya menonaktifkan server.
| Properti | Tipe | Deskripsi |
|---|---|---|
disabled | boolean | Atur ini ke true untuk menonaktifkan server LSP |
command | string[] | Perintah untuk memulai server LSP |
extensions | string[] | Ekstensi file yang harus ditangani server LSP ini |
env | object | Variabel lingkungan yang diatur saat memulai server |
initialization | object | Opsi inisialisasi untuk dikirim ke server LSP |
Mari kita lihat beberapa contoh.
Variabel lingkungan
Gunakan properti env untuk mengatur variabel lingkungan saat memulai server LSP:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"rust": {
"command": ["rust-analyzer"],
"env": {
"RUST_LOG": "debug"
}
}
}
}
Opsi inisialisasi
Gunakan properti initialization untuk meneruskan opsi inisialisasi ke server LSP. Ini adalah pengaturan khusus server yang dikirim selama permintaan LSP initialize:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"],
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
Note:
Opsi inisialisasi bervariasi menurut server LSP. Periksa dokumentasi server LSP Anda untuk opsi yang tersedia.
Menonaktifkan server LSP
Jika lsp dihilangkan, semua server LSP dinonaktifkan. Untuk menonaktifkan semua server LSP setelah konfigurasi lain mengaktifkannya, atur lsp ke false:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": false
}
Untuk menonaktifkan server LSP tertentu, atur disabled ke true:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
Server LSP kustom
Anda dapat menambahkan server LSP kustom dengan menentukan perintah dan ekstensi file:
{
"$schema": "https://dropstone.io/schema/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
Informasi Tambahan
PHP Intelephense
PHP Intelephense menawarkan fitur premium melalui kunci lisensi. Anda dapat memberikan kunci lisensi dengan menempatkan (hanya) kunci dalam file teks di:
- Di macOS/Linux:
$HOME/intelephense/license.txt - Di Windows:
%USERPROFILE%/intelephense/license.txt
File harus berisi hanya kunci lisensi tanpa konten tambahan.