Verwenden von DelphiLSP Code Insight mit anderen Editoren=DelphiLSP – Sprachserver für Delphi=
DelphiLSP.exe ist ein Delphi-Sprachserver, der das Language Server Protocol (LSP) implementiert. Es kapselt die Sprach-Features wie Programmierhilfe und Fehlermarkierung. Es wird in der IDE, verwendet, kann aber auch mit Visual Studio Code oder anderen Editoren, die das LSP unterstützen, verwendet werden.
Inhaltsverzeichnis
Verwenden von DelphiLSP in Visual Studio Code
Verwenden Sie die DelphiLSP-Erweiterung in Visual Studio Code, um RAD Studio-Projekte zu öffnen und Operationen durchzuführen. Führen Sie die folgenden Schritte aus, um Ihre Projekte zu öffnen: Installieren Sie die DelphiLSP-Erweiterung für VSCode:
- Installieren Sie RAD Studio 11.0 oder höher auf Ihrem lokalen Computer.
- Installieren Sie Visual Studio Code.
- Laden Sie die DelphiLSP-Erweiterung von Visual Studio Code Marketplace herunter, und installieren Sie sie.
- Laden Sie das Fenster Visual Studio Code erneut, oder verwenden Sie die Befehlspalette <F1>, und geben Sie "reload window" ein.
So öffnen Sie ein Projekt:
- Erstellen Sie in Delphi eine .delphilsp.json-Datei für das Delphi-Projekt, mit dem Sie in Visual Studio Code arbeiten möchten. Detaillierte Informationen dazu finden Sie unter Code Insight (Referenz).
- Öffnen Sie einen Ordner in Visual Studio Code, der mindestens ein Delphi-Projekt enthält.
- Öffnen Sie File > Open Folder, um Ihre Projekte zu laden.
Die DelphiLSP-Erweiterung verwendet die .delphilsp.json-Datei in dem Ordner, den Sie öffnen. Wenn keine oder mehrere vorhanden sind, wird eine Meldung angezeigt, in der Sie aufgefordert werden, die zu verwendende .delphilsp.json-Datei auszuwählen. Siehe Manuelles Festlegen der Projektkonfigurationsdateien unten.
- Nun können Sie mit der Verwendung der LSP-Features mit Ihrem Delphi-Code in Visual Studio Code beginnen. Die Features von Code Insight sind verfügbar und mit denen in RAD Studio identisch. Weitere Informationen finden Sie unter Code Insight (Referenz).
Fehlerbehebung
Manuelle Installation der DelphiLSP-Erweiterung in Visual Studio Code
Installieren Sie die DelphiLSP-Erweiterung manuell in Visual Studio Code anhand der folgenden Schritte:
- Wählen Sie Extensions, Install from VSIX und dann die DelphiLSP-Erweiterungsdatei (z. B. delphiLsp-x.x.x.vsix) aus.
- Öffnen Sie User Settings, und legen Sie Delphi-Lsp:Executable fest:
- Wählen Sie File > Preferences > Settings aus.
- Geben Sie in der Suchleiste "delphilsp" ein.
- Achten Sie darauf, dass die Registerkarte "User" geöffnet ist.
- Legen Sie Delphi Lsp:Executable mit "Path to DelphiLSP.exe" fest.
Manuelles Festlegen der Projektkonfigurationsdateien
Wenn keine oder mehrere Konfigurationsdateien in Visual Studio Code gefunden werden, wird eine kleine Eingabeaufforderung angezeigt. Klicken Sie darauf, um die Plugin-Einstellungen anzuzeigen.
Die Einstellungsdatei (Settings File) muss auf die .delphilsp.json-Konfiguration Ihres Projekts zeigen.
Ausfüllen von Bug-Reports
Die .log- und .trace-Dateien enthalten wichtige Informationen über Systemoperationen. Es ist hilfreich, sie zu überprüfen und zu analysieren, wenn Fehler oder unerwünschtes Verhalten auftreten.
So debuggen Sie Probleme und füllen Bug-Reports aus:
- Aktivieren Sie in den DelphiLSP-Einstellungen die Protokollierung. Legen Sie "Log Modes" auf 255 (eine Bitmaske für alle Informationen) fest.
- Befolgen Sie die gleichen Schritte wie für das Senden von DelphiLSP-Bug-Berichten.
- Vergessen Sie nicht, die verwendete .delphilsp.json-Datei anzuhängen.
Debuggen in Visual Studio Code
In DelphiLSP-Projekten werden die .log-Dateien nicht erstellt, aber mit der DelphiLSP-Erweiterung können Sie sie in Visual Studio Code prüfen.
So debuggen Sie Probleme in Visual Studio Code:
- Öffnen Sie über das Fenster "Visual Studio Code" die Output View oder verwenden Sie die Befehlspalette <F1>, und geben Sie "focus output view" ein.
- Wählen Sie im Dropdown-Menü DelphiLSP aus.
- Es wird in Echtzeit eine Meldung vom Server an den Client gesendet.
Verwenden von DelphiLSP mit anderen Editoren
Die folgende Dokumentation kann nützlich sein, wenn Sie DelphiLSP mit anderen Editoren testen möchten. DelphiLSP kommuniziert nur über Standard-I/O (Konsole). Der LSP-Server sucht nach einer .delphilsp.json-Datei, genauso wie wenn sie in VSCode verwendet wird.
Initialisierung
LSP ermöglicht benutzerdefinierte initializationOptions in der Initialisierungsanforderung.
Hier ist ein Beispiel einer gültigen Initialisierungsanforderung:
{
"jsonrpc":"2.0",
"id":1,
"method":"initialize",
"params":{
"processId":4711,
"rootUri":"file:///C%3A/Test",
"initializationOptions":{
"serverType":"controller",
"agentCount":2,
"returnDccFlags":true,
"returnHoverModel":true,
"storeProjectSettings":false
}
}
}
Folgende Felder werden verwendet:
serverType
- Definiert den Operationsmodus von DelphiLSP:
- ● "controller": Der Server erzeugt agentCount-DelphiLSP-Unterprozesse (Agents), die mit dem Controller zusammenarbeiten, um Anforderungen zu beantworten. Der Controller fungiert als Proxy zwischen der IDE und den Agents. Wenn ein Agent beendet wird oder nicht mehr auf Anforderungen antwortet, ersetzt der Controller ihn durch einen neuen, frischen Agent. Anforderungen können von mehreren Agents parallel verarbeitet werden. Hinweis: Wir unterstützen nur Konfigurationen mit bis zu zwei Agent-Prozessen und haben auch nur diese getestet. Einer wird für die Fehlermarkierung verwendet, der andere für alle anderen LSP-Anforderungen, wie z. B. die Programmierhilfe. Dies ist ein Agent und ein Linter.
- ● "agent": Der Server wird im Einzelprozessmodus ausgeführt. Der Server kann jeweils nur eine Anforderung bearbeiten. In diesem Modus ist es nicht möglich, Fehlermarkierung (Diagnosen) zu erhalten.
- ● "linter": Der Server wird im Einzelprozessmodus ausgeführt. Der Server kann keine Anforderungen für Sprach-Features wie die Programmierhilfe verarbeiten. Er ist für die Fehlersuche zuständig. Fehler, Warnungen und Hinweise werden über die
textDocument/publishDiagnostics
-Benachrichtigung bereitgestellt.
- ● "controller": Der Server erzeugt agentCount-DelphiLSP-Unterprozesse (Agents), die mit dem Controller zusammenarbeiten, um Anforderungen zu beantworten. Der Controller fungiert als Proxy zwischen der IDE und den Agents. Wenn ein Agent beendet wird oder nicht mehr auf Anforderungen antwortet, ersetzt der Controller ihn durch einen neuen, frischen Agent. Anforderungen können von mehreren Agents parallel verarbeitet werden.
- Der Vorgabewert lautet "agent". Verwenden Sie "controller" gemeinsam mit einem agentCount von 2, um dasselbe Verhalten wie in der Delphi-IDE und das Standardverhalten der VSCode-Erweiterung zu erhalten.
agentCount
- Definiert die Anzahl der Unterprozesse, die gestartet werden, wenn serverType = "controller".
- ●agentCount <= 0: agentCount wird auf 1 festgelegt
- ●agentCount = 1: Ein Unterprozess mit serverType = "agent" wird gestartet
- ●agentCount > 1: [agentCount - 1] Unterprozesse mit serverType = "agent" werden gestartet. Ein Unterprozess mit serverType = "linter" wird gestartet.
- Der Vorgabewert ist 2.
returnDccFlags
- Bei "true" übernehmen die Programmierhilfe-Elemente einige zusätzliche Informationen vom Compiler. Die IDE verwendet diese Daten, um Typen der Programmierhilfe anzuzeigen, die nicht in der LSP-Spezifikation definiert sind, wie Prozedur oder Typ.
- Der Vorgabewert ist "false".
returnHoverModel
- Bei "true" gibt
textDocument/hover
ein JSON-Objekt anstatt von Text/Markdown zurück. - Der Vorgabewert ist "false".
storeProjectSettings
- Bei "true" werden die über
workspace/didChangeConfiguration
gesendeten Einstellungen generiert und in%currentDelphiProject%.delphilsp.json
gespeichert. Wenn DelphiLSP mit einem Editor eines Drittanbieters verwendet wird, dann kann es diese Datei verwenden, um Projekteinstellungen abzurufen. Siehe die Eigenschaft configuration.settingsFile. - Dieses Flag wird nur ausgewertet, wenn es von RAD Studio verwendet wird, und bewirkt, dass Delphi die Datei .delphilsp.json erstellt.
- Der Vorgabewert ist "false".
enableFileWatcher
- Bei "true" überwacht DelphiLSP Verzeichnisse auf Änderungen, um Dateiänderungen zu erkennen. Wenn Änderungen erkannt werden, wird die Datei auf Grundlage des neuen Inhalts aktualisiert. Dies wirkt sich nur auf Dateien aus, die nicht im Editor geöffnet sind. Bei Dateien, die im Editor geöffnet sind, ist der Editor dafür verantwortlich, dass der LSP-Server über den aktuellen Dateiinhalt verfügt.
- Der Vorgabewert ist "true".
Konfigurationen
LSP lässt benutzerdefinierte Einstellungen in der workspace/didChangeConfiguration
-Benachrichtigung zu. Im Folgenden finden Sie ein Beispiel für eine gültige Benachrichtigung:
{
"jsonrpc": "2.0",
"method": "workspace/didChangeConfiguration",
"params": {
"settings": {
"settingsFile": "file:///C%3A/Test/SampleProject.delphilsp.json"
}
}
}
settingsFile
- Es handelt sich um den URI einer .delphilsp.json-Einstellungsdatei, die zuvor mit aktiviertem storeProjectSettings erstellt wurde. Dies geschieht, wenn die Delphi-IDE-Einstellung "LSP-Konfiguration generieren" in den Code Insight-Optionen aktiviert ist.
- Die Möglichkeit, Einstellungen aus einer Konfigurationsdatei zu laden, ist nur aktiv, wenn DelphiLSP von Drittanbieter-Editoren verwendet wird. Bei der Verwendung in Delphi kommuniziert die IDE direkt.