Dropstone Docs

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 LSPEkstensiPersyaratan
astro.astroAuto-installs untuk proyek Astro
bash.sh, .bash, .zsh, .kshAuto-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, .ednPerintah clojure-lsp tersedia
dart.dartPerintah dart tersedia
deno.ts, .tsx, .js, .jsx, .mjsPerintah deno tersedia (auto-detects deno.json/deno.jsonc)
elixir-ls.ex, .exsPerintah elixir tersedia
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueDependensi eslint dalam proyek
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK terinstal
gleam.gleamPerintah gleam tersedia
gopls.goPerintah go tersedia
hls.hs, .lhsPerintah haskell-language-server-wrapper tersedia
jdtls.javaJava SDK (versi 21+) terinstal
julials.jljulia dan LanguageServer.jl terinstal
kotlin-ls.kt, .ktsAuto-installs untuk proyek Kotlin
lua-ls.luaAuto-installs untuk proyek Lua
nixd.nixPerintah nixd tersedia
ocaml-lsp.ml, .mliPerintah ocamllsp tersedia
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteDependensi oxlint dalam proyek
php intelephense.phpAuto-installs untuk proyek PHP
prisma.prismaPerintah prisma tersedia
pyright.py, .pyiDependensi pyright terinstal
razor.razor, .cshtml.NET SDK dan ekstensi C# VS Code terinstal
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruPerintah ruby dan gem tersedia
rust.rsPerintah rust-analyzer tersedia
sourcekit-lsp.swift, .objc, .objcppswift terinstal (xcode di macOS)
svelte.svelteAuto-installs untuk proyek Svelte
terraform.tf, .tfvarsAuto-installs dari GitHub releases
tinymist.typ, .typcAuto-installs dari GitHub releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsDependensi typescript dalam proyek
vue.vueAuto-installs untuk proyek Vue
yaml-ls.yaml, .ymlAuto-installs Red Hat yaml-language-server
zls.zig, .zonPerintah 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:

  1. Memeriksa ekstensi file terhadap semua server LSP yang diaktifkan.
  2. 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.

PropertiTipeDeskripsi
disabledbooleanAtur ini ke true untuk menonaktifkan server LSP
commandstring[]Perintah untuk memulai server LSP
extensionsstring[]Ekstensi file yang harus ditangani server LSP ini
envobjectVariabel lingkungan yang diatur saat memulai server
initializationobjectOpsi 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.

Ctrl+I