Dropstone Docs

LSP-Server

Dropstone integriert sich mit Ihren LSP-Servern.

Dropstone kann sich mit Ihrem Language Server Protocol (LSP) integrieren, um dem LLM die Interaktion mit Ihrer Codebasis zu ermöglichen. Es verwendet Diagnostiken, um dem LLM Feedback zu geben.


Integriert

Dropstone wird mit mehreren integrierten LSP-Servern für beliebte Sprachen geliefert:

LSP-ServerErweiterungenAnforderungen
astro.astroAuto-Installation für Astro-Projekte
bash.sh, .bash, .zsh, .kshAuto-Installation von bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Auto-Installation für C/C++-Projekte
csharp.cs, .csx.NET SDK installiert
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp Befehl verfügbar
dart.dartdart Befehl verfügbar
deno.ts, .tsx, .js, .jsx, .mjsdeno Befehl verfügbar (erkennt deno.json/deno.jsonc automatisch)
elixir-ls.ex, .exselixir Befehl verfügbar
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint Abhängigkeit im Projekt
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installiert
gleam.gleamgleam Befehl verfügbar
gopls.gogo Befehl verfügbar
hls.hs, .lhshaskell-language-server-wrapper Befehl verfügbar
jdtls.javaJava SDK (Version 21+) installiert
julials.jljulia und LanguageServer.jl installiert
kotlin-ls.kt, .ktsAuto-Installation für Kotlin-Projekte
lua-ls.luaAuto-Installation für Lua-Projekte
nixd.nixnixd Befehl verfügbar
ocaml-lsp.ml, .mliocamllsp Befehl verfügbar
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint Abhängigkeit im Projekt
php intelephense.phpAuto-Installation für PHP-Projekte
prisma.prismaprisma Befehl verfügbar
pyright.py, .pyipyright Abhängigkeit installiert
razor.razor, .cshtml.NET SDK und VS Code C#-Erweiterung installiert
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby und gem Befehle verfügbar
rust.rsrust-analyzer Befehl verfügbar
sourcekit-lsp.swift, .objc, .objcppswift installiert (xcode auf macOS)
svelte.svelteAuto-Installation für Svelte-Projekte
terraform.tf, .tfvarsAuto-Installation von GitHub-Releases
tinymist.typ, .typcAuto-Installation von GitHub-Releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript Abhängigkeit im Projekt
vue.vueAuto-Installation für Vue-Projekte
yaml-ls.yaml, .ymlAuto-Installation von Red Hat yaml-language-server
zls.zig, .zonzig Befehl verfügbar

Wenn LSP aktiviert ist, starten Server, wenn eine der oben genannten Dateierweiterungen erkannt wird und die Anforderungen erfüllt sind.


Funktionsweise

Wenn LSP aktiviert ist und dropstone eine Datei öffnet, führt es folgende Schritte aus:

  1. Überprüft die Dateierweiterung gegen alle aktivierten LSP-Server.
  2. Startet den entsprechenden LSP-Server, falls nicht bereits ausgeführt.

Konfigurieren

Sie können LSP-Server über den Abschnitt lsp in Ihrer dropstone-Konfiguration aktivieren und anpassen.

Um alle integrierten LSP-Server zu aktivieren, setzen Sie lsp auf true.

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

Verwenden Sie ein Objekt, um integrierte Server aktiviert zu halten und gleichzeitig Überschreibungen oder benutzerdefinierte Server zu konfigurieren.

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

Jeder konfigurierte LSP-Server-Eintrag unterstützt Folgendes:

Server-Einträge benötigen command, es sei denn, sie deaktivieren nur einen Server.

EigenschaftTypBeschreibung
disabledbooleanSetzen Sie dies auf true, um den LSP-Server zu deaktivieren
commandstring[]Der Befehl zum Starten des LSP-Servers
extensionsstring[]Dateierweiterungen, die dieser LSP-Server verarbeiten soll
envobjectUmgebungsvariablen beim Starten des Servers setzen
initializationobjectInitialisierungsoptionen zum Senden an den LSP-Server

Schauen wir uns einige Beispiele an.


Umgebungsvariablen

Verwenden Sie die Eigenschaft env, um Umgebungsvariablen beim Starten des LSP-Servers zu setzen:

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

Initialisierungsoptionen

Verwenden Sie die Eigenschaft initialization, um Initialisierungsoptionen an den LSP-Server zu übergeben. Dies sind serverspezifische Einstellungen, die während der LSP-Anfrage initialize gesendet werden:

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

Note:

Initialisierungsoptionen variieren je nach LSP-Server. Überprüfen Sie die Dokumentation Ihres LSP-Servers auf verfügbare Optionen.


Deaktivieren von LSP-Servern

Wenn lsp weggelassen wird, sind alle LSP-Server deaktiviert. Um alle LSP-Server zu deaktivieren, nachdem eine andere Konfiguration sie aktiviert hat, setzen Sie lsp auf false:

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

Um einen bestimmten LSP-Server zu deaktivieren, setzen Sie disabled auf true:

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

Benutzerdefinierte LSP-Server

Sie können benutzerdefinierte LSP-Server hinzufügen, indem Sie den Befehl und die Dateierweiterungen angeben:

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

Zusätzliche Informationen

PHP Intelephense

PHP Intelephense bietet Premium-Funktionen über einen Lizenzschlüssel. Sie können einen Lizenzschlüssel bereitstellen, indem Sie (nur) den Schlüssel in einer Textdatei unter folgendem Pfad platzieren:

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

Die Datei sollte nur den Lizenzschlüssel ohne zusätzliche Inhalte enthalten.

Strg+I