ToolsAPI-Unterstützung für den Quelltext-Editor

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Erweitern der IDE mit der Tools-API


Ab RAD Studio 11.3 steht Benutzern ein vollständiger, umfassender und sehr detaillierter Satz der Tools-API zur Verfügung, mit denen der Quelltext-Editor angepasst werden kann, z. B. Zeichnen, Abfragen von Informationen, Abrufen von Ereignissen für den Quelltext-Editor und mehr.

Das können Sie tun

Einige der interessantesten und nützlichsten Plugins arbeiten im Editor. Aus diesem Grund stellen wir eine umfassende und nützliche API bereit, die eine breite Palette von Daten und Darstellungen im Quelltext-Editor abdeckt und das Schreiben von innovativen Plugins erleichtert.

Diese APIs ermöglichen es Benutzern, alle Phasen des Zeichnens im Editor, entweder nach Editorzeile, Editorleiste oder Editortext abzufangen. Zudem enthalten sie Ereignisse, die sowohl vor als auch nach jeder Phase aufgerufen werden, um der IDE entweder eine bestimmte Funktionalität hinzuzufügen oder diese zu ersetzen (die IDE daran zu hindern, ihr normales Zeichnen für diese Phase auszuführen).

Sie können eine vollständige Liste der Editoren abrufen, Ansichten bearbeiten und zwischen ihnen zuordnen. Benutzer können den Status eines Editors auf eine Fülle von verfügbaren Informationen sowie einen detaillierteren Status für jede Zeile abfragen. Ereignisse für das Zeichnen umfassen den vollständigen Kontext. Damit können Sie sämtliches denkbares Zeichnen im Editor ausführen oder alle Informationen über Editoren und deren Inhalt abrufen, auch ohne ihn zu zeichnen.

Kernkonzepte

Im Editorpuffer (IOTAEditView.Buffer stellt einen IOTAEditBuffer bereit) wird Text/Code gespeichert. Eine Ansicht (IOTAEditView) ist die Darstellung dieses Puffers und sie wird von einem Editor-Steuerelement (das VCL-Steuerelement, das den Editor implementiert) verwendet. Es gibt einen Puffer für Dateiinhalte, aber mehrere Ansichten für die Bearbeitung dieses Puffers. Daher können mehrere Editorfenster derselben Datei vorhanden sein. Ein Editor-Steuerelement wird einer Ansicht zugeordnet bzw. verwendet eine Ansicht und umgekehrt.

Editor-Zeilennummern im Vergleich zu logischen Zeilennummern

Im Zeilenstatus und in anderen Bereichen dieser API wird zwischen Editor-Zeilennummern und logischen Zeilennummern unterschieden. Der Unterschied ist bei der Bearbeitung von Zeilen wichtig. Elided (Ausgelassen) ist der IDE-Begriff für gefalteten Code. Ein Editor kann viele sichtbare Zeilen auf dem Bildschirm haben, aber am Faltungspunkt weichen die Zeilennummern des Editors und die logischen Zeilennummern voneinander ab, wodurch der Faltungspunkt außerhalb des Bildschirms liegt.

Die logischen Zeilen sind die "echten" Zeilennummern.

Editorzeilen werden im Editor angezeigt oder würden dort angezeigt, wenn der Editor gescrollt wird.

Zum Beispiel: In einer Datei mit zehn Zeilen (logischen Zeilen) und den Zeilen 4–7, die gefaltet/ausgelassen (elided) sind, gehen die logischen Zeilen bis zehn, die Editorzeilen jedoch bis sieben (bei ausgelassenen Abschnitten ist immer eine Zeile vorhanden). Sichtbare Zeilen sind die Zeilen, die im Bildschirm des Editors angezeigt werden, und aufgrund der Faltung können diese eine Teilmenge der Zeilen im Puffer sein. Daher sind die sichtbaren Editorzeilen immer fortlaufend, aber die logischen Zeilennummern können Lücken aufweisen und an Faltungspunkten springen.

Sie können im Zeilenstatus einer Zeile logische und Editor-Zeilennummern konvertieren, wobei beide Arten von Zeilennummern abgefragt werden können. Das heißt, Sie können den Zeilenstatus nach logischer Zeile oder Editorzeile abrufen und abfragen, welche logische Zeile oder Editorzeile er repräsentiert.

Dienste im Quelltext-Editor

Der Ausgangspunkt ist das Interface INTACodeEditorServices. Mit diesem Interface können Sie:

  • Eine Registrierung für Editor-Ereignisse vornehmen (Maus, Bildlauf, Größenänderung, Zeichnen usw.)
  • Die Ansicht für ein Editor-Steuerelement und das Editor-Steuerelement für eine Ansicht suchen. Es gibt einen einzigen Puffer, aber mehrere Ansichten dieses Puffers, und jedes Editor-Steuerelement verwendet eine Ansicht.
  • Alle Editor-Steuerelemente und alle Bearbeitungsansichten aufführen.
  • Das oberste Editor-Steuerelement (mit dem zuletzt interagiert wurde) abrufen.
  • Den Editorstatus eines Editor-Steuerelements abrufen. Sie können aus dem Editorstatus den Zeilenstatus für jede Zeile ermitteln.
  • Verschiedene Informationen über den Editor abrufen.
  • Einen Abschnitt der Editorleiste für die Verwendung durch Plugins reservieren.
  • Auf INTACodeEditorServices aus den BorlandIDEServices wie bei anderen Interfaces zugreifen.
  • Teile des Editors ungültig machen (d. h. ein Neuzeichnen bewirken): nach logischer Zeile, für einen rechteckigen Bereich oder den gesamten Editor.
Hinweis: Normalerweise speichert der Editor Zeilen im Zwischenspeicher und zeichnet nur Zeilen neu, die gerade in die Ansicht gescrollt wurden, oder wenn sich die aktive Zeile ändert. Wenn häufiger neu gezeichnet wird als nötig, kann dies zu Leistungsproblemen führen.

Performantes Lesen und Schreiben im Quelltext-Editor

Lesen aus dem Editorpuffer

Verwenden Sie das Interface IOTAEditReader, um aus dem Editorpuffer zu lesen. Diese API ist sehr niedrigschwellig und bietet eine hervorragende Leistung. Sie ermöglicht den direkten Zugriff auf den Inhalt des Editors, und wenn Sie Code analysieren müssen, können Sie dies mithilfe der zeigerbasierten String-Analyse ganz ohne String-Zuweisung und Kopieren tun.

Um den Inhalt des Editorpuffers für eine Reihe von Zeilen zu erhalten, rufen Sie GetLineData auf und übergeben die erste Zeilennummer, die letzte Zeilennummer, die Callback-Funktion und einen beliebigen Zeiger, der bestimmte Daten darstellen kann und unverändert an die Callback-Funktion übergeben wird. Mit diesem Zeiger wird auf eine Objektinstanz verwiesen, die dann in einen objektorientierten Methodenaufruf in der Callback-Funktion konvertiert wird.

Die Callback-Funktion erhält die Zeilennummer, den unveränderten, übergebenen Zeiger und einen Zeiger auf die Zeileninformationen. Diese Zeileninformationsstruktur enthält die Länge der Zeile, die Art des Zeilenendes (ein Enum, der CRLF, nur CR, nur LF usw. repräsentieren kann) und einen Zeiger auf den Zeilen-String.

Der Zeilen-String ist in UTF8 formatiert und ist nicht nullterminiert. Es sind keine Zeilenende-Bytes angehängt. Es handelt sich nur um einen Zeiger auf den Zeileninhalt, direkt im Speicher des Editorpuffers.

Achtung: Schreiben Sie nicht in diesen Zeiger und verändern Sie seinen Inhalt nicht, da sonst der Editorpuffer beschädigt wird. Verwenden Sie diesen Zeiger nur zum Lesen des Speichers, z. B. zum Analysieren oder Kopieren eines Strings. Zeiger sind außerhalb des Kontextes einer Callback-Funktion nicht gültig. Speichern Sie keine Zeiger zur späteren Verwendung.

Mit dem Interface IOTAEditReader können Sie:

  • Die Anzahl der Zeilen im Puffer über die Eigenschaft LinesInBuffer abrufen.
  • Die Zeilendaten für eine einzelne Zeile oder einen Zeilenbereich mit der folgenden Prozedur abrufen:
 
procedure GetLineData(AFirstLine: Integer; ARange; Integer; 
ACallBack: TOTALineDataCallback; AUserData: Pointer);
  • Zum Abrufen der Zeilendaten ist eine Callback-Funktion wie die folgende erforderlich:
TOTALineDataCallback = procedure(ALine: Longint; ALineInfo:
POTALineInfo; AUserData: Pointer)

Sie können auch eine Zeilenzählung oder Ähnliches ohne den Overhead des Streamings und der Analyse des gesamten Puffers (was in der vorherigen API erforderlich war) durchführen. Auch die Berechnung der Gesamtgröße eines Puffers in Byte kann ohne Streaming erfolgen.

Schreiben in den Editorpuffer

Dies sind verschiedene Methoden zum Schreiben in den Editorpuffer:

  • IOTAEditWriter: Ein Interface, das eine Stream-ähnliche API bietet, die eine Position angibt und dann grundlegende Operationen wie Kopieren, Einfügen und Löschen durchführt. Diese Methode erfordert eine Straffung des Editortextes für die zu implementierenden Operationen.
  • Insert(): Überladung, die einen UTF8String übernimmt. Diese Methode ist mehr auf Zeilennummern ausgerichtet.

Performantere Methoden:

  • InsertBlankLine: an einer bestimmten Zeilennummer.
  • InsertLine: an einer bestimmten Zeilennummer. Diese Methode übernimmt einen Zeiger auf UTF8-Inhalt oder einen UTF8String und fügt diesen Inhalt in die neue Zeile ein.
  • DeleteLine: für eine bestimmte Zeilennummer.
  • ReplaceLine: für eine bestimmte Zeilennummer mit einem Zeiger auf UTF8-Inhalt oder einen UTF8String.
Hinweis: Es gibt weitere grundlegende Operationen zum Schreiben, die über IOTAEditPosition verfügbar sind und die der Art und Weise, wie Menschen mit Editoren interagieren, näher kommen. Diese sind auch ausreichend leistungsfähig, um eine Alternative zu IOTAEditWriter zu bieten.

Ereignisse des Quelltext-Editors

Registrieren Sie eine Instanz des Notifier-Interface INTACodeEditorEvents mit AddEditorEventsNotifier. Auf diese Weise können Sie über eine Vielzahl von Ereignissen benachrichtigt werden, wenn diese eintreten, z. B. Maus-, Fenster-, Editorstatusänderungen und Ereignisse beim Zeichnen.

Überlegungen zur Leistung

Viele Ereignisse treten auf, während der Benutzer mit dem Editor interagiert. Aus Leistungsgründen benachrichtigt Sie der Notifier nur dann über bestimmte Ereignistypen, wenn Sie ausdrücklich angeben, dass Sie darüber benachrichtigt werden möchten. Dazu implementieren Sie AllowedEvents, das einen Satz von Ereignissen (Maus, Fenster usw.) zurückgibt, über die Sie benachrichtigt werden möchten. Um zum Beispiel über Mausereignisse benachrichtigt zu werden, muss AllowedEvents eine Menge zurückgeben, einschließlich cevMouseEvents. Dadurch werden alle Mausereignisse zurückgegeben (Drücken, Loslassen einer Maustaste, Maus bewegen). Es gibt keine Granularität für das Abonnieren eines bestimmten Ereignisses, nur gruppierte Arten von Ereignissen.

Abonnieren Sie nach Möglichkeit nur die minimal erforderlichen Ereignisarten – eine übermäßige Benachrichtigung kann zu Leistungsproblemen führen. Ebenso sollten Sie sicherstellen, dass die Methoden, die Ereignisse verarbeiten, schlank sind und so wenig wie möglich ausführen. Verschieben Sie langwierige Arbeiten, wo dies möglich ist (z. B. mit TThread.ForceQueue, um eine Methode später auszuführen). Langwierige Verarbeitungen während der Ereignisbehandlung sind für Benutzer direkt als Eingabeverzögerung, Verzögerung beim Zeichnen usw. sichtbar.

Nachfolgend finden Sie die Optimierungsmethoden, die Sie einsetzen können, um übermäßige Benachrichtigungen zu vermeiden.

  • AllowedEvents: gibt zurück, an welchen Ereignissen das Plugin interessiert ist.
  • AllowedGutterStages und AllowedLineStages: ähnliche Masken zum Festlegen von Ereignissen beim Zeichnen für Leisten, Zeilen und Text, für die Ihr Plugin beim Zeichnen aufgerufen werden soll.

Um Leistungseinbußen zu vermeiden, verwenden Sie das Ergebnis dieser Methoden, um sicherzustellen, dass Ihr Plugin nur für die erforderlichen Ereignisse aufgerufen wird.

Fensterereignisse

Mit den folgenden APIs können Sie prüfen, ob etwas auf dem Editor-Bildschirm angezeigt werden soll. Sie können die neue Editorgröße abfragen, indem Sie die TWinControl-Eigenschaften "Width" und "Height" des Editors verwenden, wie Sie es bei jeder normalen visuellen Komponente tun können.

Diese Ereignisse werden nur aufgerufen, wenn cevWindowEvents in AllowedEvents zurückgegeben wird.

Mausereignisse

Mit Mausereignissen können Sie interaktionsfähige Elemente im Quelltext-Editor implementieren. Zu Mausereignissen gehören:

Diese Ereignisse werden nur aufgerufen, wenn cevMouseEvents in AllowedEvents zurückgegeben wird.

Statusänderungsereignisse

Statusänderungsereignisse treten an der Stelle auf, wenn Zeilen ausgelassen oder deren Auslassung aufgehoben wird.

Ereignisse beim Zeichnen

Für das Zeichnen sind mehrere Methoden möglich. Es gibt Methoden zum Zeichnen einer Zeile, von Text in der Zeile und der Editorleiste. Das Zeichnen erfolgt entsprechend dem internen Editormodell zeilenbasiert, d. h. es kann nur etwas gezeichnet werden, das nicht mit einer Zeile verbunden ist. Durch Zeichnen eines Rechtecks innerhalb einer Zeile können Sie diese Zeilenbasierung aber umgehen.

Für jeden dieser drei Bereiche (Leiste, Zeile und Text):

  • Werden die Methoden mehrmals aufgerufen: einmal pro Phase des Zeichnens und vor und nach dieser Phase.
    • Zu den Phasen des Zeichnens gehören: Beginn und Ende (d. h., vor dem gesamten Zeichnen und nach dem gesamten Zeichnen), der Zeilenhintergrund, allgemeine Markierung/Markup, hervorgehobene Paare, rechter Rand und Indikatoren für gefaltete Zeilen.
  • Wird an die Methoden Kontext übergeben, der den Zugriff auf das Zeichenrechteck, die Zeichenfläche, die Zeilennummer, die logische Zeilennummer, den Dateinamen, das Steuerelement und die Bearbeitungsansicht und die Abfrage des Zeilenstatus und des Editorstatus ermöglicht.
  • Können die Methoden verhindern, dass die Standardbehandlung der IDE für eine bestimmte Phase das Zeichnen dieser Phase vollständig übernimmt. Wenn mehrere Plugins zeichnen, können Sie nicht verhindern, dass andere Plugins ebenfalls zeichnen.

Methoden zum Zeichnen

Das Interface INTACodeEditorEvents umfasst die folgenden Methoden zum Zeichnen:

  • BeginPaint und EndPaint: Diese Methoden werden vor und nach dem Zeichnen des Editors aufgerufen. BeginPaint erzwingt das Neuzeichnen des gesamten Editors.
    • Diese Methoden werden nur aufgerufen, wenn cevBeginEndPaintEvents in AllowedEvents zurückgegeben wird.
  • PaintGutter: Verwenden Sie diese Methode, um die Editorleiste zu zeichnen.
    • Diese Methode wird nur aufgerufen, wenn cevPaintGutterEvents in AllowedEvents zurückgegeben wird.
  • PaintLine: Das ist die allgemeine Methode zum Zeichnen einer Zeile. Diese Methode wird häufig verwendet, um den Hintergrund zu ändern oder um zusätzliche Markups hinzuzufügen, nachdem der Text gezeichnet wurde.
    • Diese Methode wird nur aufgerufen, wenn cevPaintLineEvents in AllowedEvents zurückgegeben wird.
  • PaintText: Diese Methode wird aufgerufen, wenn der Inhalt des Codes (d. h., Text) in einer Editorzeile gezeichnet wird. Rufen Sie diese Methode für jedes logische Textsegment (z. B. jedes Symbol oder jeden Kommentar) auf. Die Parameter liefern Informationen über die Spaltennummer, an der gezeichnet werden soll, über den Text selbst, über die Syntaxhervorhebung und darüber, ob der Text ausgewählt ist. Der Grund dafür ist, dass diese Methode, wie alle anderen Methoden auch, dazu verwendet werden kann, das Zeichnen durch die IDE zu umgehen und die Code-Formatierung der IDE zu ändern.
    • Diese Methode wird nur aufgerufen, wenn cevPaintTextEvents in AllowedEvents zurückgegeben wird.

Registrieren von Ereignissen und Phasen des Zeichnens

Da diese Methoden in einem granularen Ausmaß (viele Phasen des Zeichnens, sowohl vor als auch nach der Bearbeitung durch die IDE, für drei verschiedene Bereiche des Zeichnens) verwendet werden können, gibt es einen potenziellen Leistungsabfall beim Zeichnen. Dieser wird behoben, indem eine granulare Teilmenge möglicher Ereignisse abonniert wird, die den aufzurufenden Methoden entspricht. Implementieren Sie AllowedEvents, um zu ermitteln, welche Ereignisse aufgerufen werden.

Viele der Ereignisse, die aufgerufen werden, haben mehrere Phasen des Zeichenprozesses, für die sie aufgerufen werden können. Auch hier sollten Sie zur Optimierung angeben, welche Phasen aufgerufen werden sollen. Implementieren Sie AllowedGutterStages, um die Zeichenphasen zurückzugeben, über die Sie beim Zeichnen der Leiste im Editor benachrichtigt werden möchten, und AllowedLineStages, um die Zeichenphasen zurückzugeben, über die Sie beim Zeichnen einer Zeile benachrichtigt werden möchten. PaintText verfügt nicht über mehrere Phasen.

Editorstatus

Mit dem Interface INTACodeEditorState können Sie Informationen darüber abrufen, was für einen bestimmten Editor angezeigt wird. Dazu gehört:

  • Das Rechteck im Editor.
  • Die Größe der Leiste.
  • Der linke Rand, an dem der Code gezeichnet wird.
  • Die Quelltext-Editor-Komponente (als TWinControl) und die verwendete Bearbeitungsansicht.
  • Die oberste und unterste sichtbare Zeile.
  • Die linke und rechte sichtbare Spalte (beim horizontalen Scrollen).
  • Die Breite der längsten sichtbaren Zeile in Zeichen.
  • Konvertieren eines Pixelpunktes in eine Zeichenposition (Index und Zeile).
  • Konvertieren einer Zeichenposition (Index und Zeile) in das Zeichenbegrenzungsrechteck.
  • Abfragen, ob eine bestimmte Zeile sichtbar ist.
  • Abfragen von Informationen über ausgelassene Zeilen.
  • Abrufen des Status einer bestimmten Zeile.

Rufen Sie den Editorstatus entweder durch Abfragen von INTACodeEditorServices oder über den Parameter Context in den Paint-Methoden ab. Sie erhalten hier den Editor- und den Zeilenstatus sowie weiteren Zeichenkontext. Der Editorstatus wird bei der Abfrage erstellt.

Zeilenstatus

Mit dem Interface INTACodeEditorLineState können Sie Informationen über eine bestimmte Zeile abfragen. Rufen Sie den Zeilenstatus über das Interface INTACodeEditorState ab. Für jede Zeile können Sie Folgendes abfragen:

  • Die Zeilennummer im Editor und die logische Zeilennummer.
  • Ob es sich um eine ausgelassene Zeile handelt: Die sichtbare Zeile, die einen ausgelassenen Zeilenabschnitt sowie den Anfangs- und Endbereich dieses ausgelassenen Abschnitts repräsentiert.
  • Verschiedene Rechtecke: das gesamte Zeilenrechteck über die gesamte Breite des Editors, das Leisten-Rechteck, das Leisten-Markup-Rechteck (z. B. dort, wo Zeilennummern und Faltungszeichen [+/-] gezeichnet werden), das Code-Bereichsrechteck, ein Rechteck, das den Text begrenzt.
  • Der Text für eine Zeile und die Teilmenge des Texts, der für die Zeile sichtbar ist.

INTACodeEditorLineState verfügt jetzt über die Eigenschaft State, die Sie über Folgendes informiert:

  • eleLineHighlight: Die Zeile ist hervorgehoben.
  • eleErrorLine: Die Zeile enthält einen Fehler.
  • eleExecution: Die Zeile wird aktuell ausgeführt.
  • eleBreakpoint: Die Zeile enthält einen Haltepunkt.
  • eleInvalidBreakpoint: Die Zeile enthält einen ungültigen Haltepunkt.
  • eleDisabledBreakpoint: Die Zeile enthält einen deaktivierten Haltepunkt.
  • eleCompiled: Die Zeile wurde compiliert und es kann ein Haltepunkt hinzugefügt werden.

Rufen Sie den Zeilenstatus entweder durch Abfragen von INTACodeEditorState für einen bestimmten Editor oder über den Parameter Context in den Paint-Methoden ab. Sie erhalten hier den Editor- und den Zeilenstatus sowie weiteren Zeichenkontext. Der Zeilenstatus wird bei der Abfrage erstellt.

INTACodeEditorLineState verfügt jetzt über die Eigenschaft CellState, die nach Spalte indiziert ist. Dies informiert Sie darüber, ob die fragliche Zelle sich in einem der folgenden Status befindet:

  • eceSelected: Die Zelle ist aktuell ausgewählt.
  • eceHotLink: Die Zelle enthält einen aktiven Hotlink.
  • eceHotLinkable: Die Zelle unterstützt Hotlinks.
  • eceSyncEditBackground: Die Zelle befindet sich im Hintergrund einer synchronisierten Bearbeitungsgruppe.
  • eceSyncEditSearch: Die Zelle ist Teil einer synchronisierten Bearbeitungsgruppe, die gesucht wird.
  • eceSyncEditMatch: Die Zelle ist Teil einer synchronisierten Bearbeitungsgruppe, die ein übereinstimmendes Element enthält.
  • eceSearchMatch: Die Zelle stimmt mit einer Suchabfrage überein.
  • eceExtraMatch: Die Zelle stimmt mit einer sekundären Suchabfrage überein.
  • eceBraceMatch: Die Zelle hat passende geschweifte oder eckige Klammern.
  • eceHint: Die Zelle enthält einen Hinweis.
  • eceWarning: Die Zelle enthält eine Warnmeldung.
  • eceError: Die Zelle enthält eine Fehlermeldung.
  • eceDisabledCode: Die Zelle enthält deaktivierten Code.
  • eceFoldBox: Die Zelle ist eine Faltbox.

Kontextmenü des Editors

Die unten aufgeführten cEdMenuCat-Konstanten definieren die verschiedenen Aktionslistenkategorien, die zum Erstellen des Kontextmenüs des Editors verwendet werden. Mit INTAEditorLocalMenu können Sie dem Kontextmenü des Editors etwas hinzufügen und mit diesen Konstanten können Sie steuern, wo eine neue Aktionsliste hinzugefügt wird.

Nachstehend finden Sie eine Liste der Aktionen in jeder Menükategorie:

  • cEdMenuCatIdentifier: "Deklaration suchen"
  • cEdMenuCatBreakPoint: "Aktiviert", "Eigenschaft des Haltepunkts"
  • cEdMenuCatDebugDebug: "Bis Cursorposition ausführen"
  • cEdMenuCatBase: "Quelltext-/Headerdatei öffnen", "Datei beim Cursor öffnen", "Symbol beim Cursor anzeigen", "Suche über Schlüsselwort", "Nächste Pufferanzeige", "Vorherige Pufferanzeige", "Nächste Änderung", "Vorherige Änderung", "Nächste nicht gespeicherte Änderung", "Vorherige nicht gespeicherte Änderung"
  • cEdMenuCatModule: "Quelltext-/Headerdatei öffnen", "Meldungen anzeigen" und "Im Explorer anzeigen"
  • cEdMenuCatClipboard: "Ausschneiden", "Kopieren" und "Einfügen"
  • cEdMenuCatBookMarks: Alle Einträge für "Zu Positionsmarke" und "Positionsmarke umschalten"
  • cEdMenuCatDebug: "Debuggen" und "Bis Cursorposition ausführen"
  • cEdMenuCatDebug: "Ansicht", "Meldung", "Schreibgeschützt", "Ansicht als Formular"
  • cEdMenuCatView: "Ansicht als Formular"
  • cEdMenuCatElide: "Ausblenden", "Dok-Kommentare", "Methoden", "Nächste", "Verschachtelt", "Regionen", "Namespace", "Typen", "Einblenden", "Alle"
  • cEdMenuCatVersionControl: Menüeinträge aller Plugin-Versionen
  • cEdMenuCatRefactor: "Suchen", "Referenzen suchen", "Lokale Referenzen suchen", "Deklarationssymbol suchen", "Refactor"
  • cEdMenuCatFormat: "Umgeben", "Synchronisierung von Prototypen"
  • cEdMenuCatRepository: "Der Objektablage hinzufügen"
  • cEdMenuCatLast: "Meldungen anzeigen", "Schreibgeschützt", "Editor-Optionen"

Optionen des Quelltext-Editors

Mit dem Interface INTACodeEditorOptions können Sie Informationen über Farben, die sichtbare Leiste, Schriftarten, Größen und mehr abfragen.

Bereich der Editorleiste

Die Editorleiste ist derzeit der beste Ort, um Informationen pro Zeile zu zeichnen. RAD Studio verwendet sie für Zeilennummern, Zeilenfaltungsmarkierungen, Zeilenänderungsindikatoren, Haltepunkte, Positionsmarken und mehr. Reservieren Sie einen Teil der Editorleiste, wodurch die Leiste für Ihr Plugin breiter wird. Dies erfolgt mit RequestGutterColumn, wobei eine Größe in Pixel angegeben wird. Dieser Bereich kann vor oder nach (links oder rechts neben) den Haltepunkten oder Zeilennummern platziert werden.

Mit der Methode GetGutterColumnRect können Sie das Rechteck für einen bestimmten registrierten Leistenbereich abrufen. Oder verwenden Sie die Methode GetGutterColumnRect, um das Rechteck für den registrierten Bereich in der Editorleiste abzurufen.

Sonstige ToolsAPI-Änderungen

  • Ab 11.3 sind die folgenden ToolsAPIs für das Zeichnen des Editors veraltet:
    • INTAEditViewModifier.BeginPaint
    • INTAEditViewModifier.EndPaint
    • INTAEditViewModifier.PaintLine

Wir empfehlen die Verwendung der neuen APIs.

Siehe auch