Verwenden von DelphiLSP Code Insight mit anderen Editoren=DelphiLSP – Sprachserver für Delphi=

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.

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).
Hinweis: Überprüfen Sie die .delphilsp.json-Dateien nicht in die Versionskontrolle, da sie die für die lokale Computerkonfiguration geltenden Einstellungen enthalten.
  • Ö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.
Hinweis: Öffnen Sie das gesamte Projekt, nicht nur einzelne Dateien.

Loaded project.png

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.

Hinweis: Die DelphiLSP-Erweiterung wird erst aktiviert, wenn Sie ein Delphi-Projekt (.pas- oder .dpr-Datei) öffnen.
  • 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).

Delphi code.png

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.

Install from VSIX.png

  • Ö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.

SETTINGS.png

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.

Workspace settings.png

Die Einstellungsdatei (Settings File) muss auf die .delphilsp.json-Konfiguration Ihres Projekts zeigen.

Hinweis: Konfigurieren Sie Ihr Projekt auf der Registerkarte "Workspace Settings". Weitere Informationen zu User- und Workspace-Einstellungen finden Sie in der Visual Studio Code Documentation (Englisch).

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.
Hinweis: Die .trace- und .log-Dateien werden nur erstellt, wenn die Protokollierung aktiviert ist.

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.

Log Message.png

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.
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.