Dropstone Docs

Server LSP

Dropstone si integra con i tuoi server LSP.

Dropstone può integrarsi con il tuo Language Server Protocol (LSP) per aiutare l'LLM a interagire con la tua codebase. Utilizza la diagnostica per fornire feedback all'LLM.


Built-in

Dropstone viene fornito con diversi server LSP built-in per i linguaggi più popolari:

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

Quando LSP è abilitato, i server si avviano quando viene rilevata una delle estensioni di file sopra indicate e i requisiti sono soddisfatti.


Come funziona

Quando LSP è abilitato e dropstone apre un file:

  1. Controlla l'estensione del file rispetto a tutti i server LSP abilitati.
  2. Avvia il server LSP appropriato se non è già in esecuzione.

Configura

Puoi abilitare e personalizzare i server LSP tramite la sezione lsp nella tua configurazione dropstone.

Per abilitare tutti i server LSP built-in, imposta lsp su true.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": true
}

Usa un oggetto per mantenere i built-in abilitati mentre configuri override o server personalizzati.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {}
}

Ogni voce di server LSP configurata supporta quanto segue:

Le voci del server necessitano di command a meno che non disabilitino solo un server.

PropertyTypeDescription
disabledbooleanImposta questo su true per disabilitare il server LSP
commandstring[]Il comando per avviare il server LSP
extensionsstring[]Estensioni di file che questo server LSP dovrebbe gestire
envobjectVariabili di ambiente da impostare all'avvio del server
initializationobjectOpzioni di inizializzazione da inviare al server LSP

Diamo un'occhiata ad alcuni esempi.


Variabili di ambiente

Usa la proprietà env per impostare le variabili di ambiente all'avvio del server LSP:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "rust": {
      "command": ["rust-analyzer"],
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}

Opzioni di inizializzazione

Usa la proprietà initialization per passare opzioni di inizializzazione al server LSP. Queste sono impostazioni specifiche del server inviate durante la richiesta LSP initialize:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"],
      "initialization": {
        "preferences": {
          "importModuleSpecifierPreference": "relative"
        }
      }
    }
  }
}

Note:

Le opzioni di inizializzazione variano a seconda del server LSP. Consulta la documentazione del tuo server LSP per le opzioni disponibili.


Disabilitazione dei server LSP

Se lsp viene omesso, tutti i server LSP sono disabilitati. Per disabilitare tutti i server LSP dopo che un'altra configurazione li ha abilitati, imposta lsp su false:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": false
}

Per disabilitare uno specifico server LSP, imposta disabled su true:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

Server LSP personalizzati

Puoi aggiungere server LSP personalizzati specificando il comando e le estensioni di file:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"]
    }
  }
}

Informazioni aggiuntive

PHP Intelephense

PHP Intelephense offre funzionalità premium tramite una chiave di licenza. Puoi fornire una chiave di licenza posizionando (solo) la chiave in un file di testo in:

  • Su macOS/Linux: $HOME/intelephense/license.txt
  • Su Windows: %USERPROFILE%/intelephense/license.txt

Il file deve contenere solo la chiave di licenza senza contenuto aggiuntivo.

Ctrl+I