erweitern

Einführung
Wie jeder gute Texteditor bietet auch verschiedene Möglichkeiten für Erweiterungen. Sie können Skripte in Javascript schreiben, um Funktionen zu erweitern. Wenn Sie dann erweitert haben, laden wir Sie ein, Ihre Verbesserungen mit der ganzen Welt zu teilen.

Arbeiten mit Syntax-Hervorhebungen

Überblick
Syntax-Hervorhebungen bewirken, dass der Editor den Text automatisch in verschiedenen Farben und Schriftstilen anzeigt, abhängig von der Funktion der Zeichenkette in Beziehung zum Zweck des Dokuments. Zum Beispiel können in Quelltext Kontrollbefehle fett dargestellt werden, während Daten und Kommentare andere Farben als der Rest des Textes bekommen. Dies verbessert die Lesbarkeit des Textes erheblich und verhilft damit dem Autor zu mehr Effizienz und Produktivität.
Eine Perl-Funktion, mit Hervorhebungen angezeigt.
Eine Perl-Funktion, mit Hervorhebungen angezeigt.
Dieselbe Perl-Funktion, ohne Hervorhebungen.
Dieselbe Perl-Funktion, ohne Hervorhebungen.
Welche der beiden ist einfacher zu lesen?
enthält ein flexibles, konfigurierbares und leistungsfähiges System für Syntax-Hervorhebungen, und die Standarddistribution enthält bereits Definitionen für eine Anzahl von Programmiersprachen, Markup- und Skriptsprachen sowie andere Textformaten. Außerdem können Sie eigene Definitionen in einfachen -Dateien erstellen.
erkennt auf Basis des -Typs, der Dateiendung oder des Inhalts des Dokuments bereits beim Öffnen des Dokuments automatisch die richtigen Regeln für die Syntax-Hervorhebungen. Wenn die automatische Auswahl nicht die richtigen Regeln ausgewählt hat, können Sie dies manuell korrigieren (Extras Hervorhebung).
Die Schriftstile und Farben, die von jeder Syntax-Hervorhebungsdefinition benutzt werden, können auf der Seite Hervorhebungs-Schriftarten des Einrichtungsdialogs festgelegt werden, die Einrichtung der -Typen und Dateierweiterung, auf die diese angewendet werden, ist auf der Seite Dateitypen möglich.
Syntax-Hervorhebungen sind dazu gedacht die Lesbarkeit von Text zu verbessern, aber nicht dazu geeignet die Richtigkeit des Quelltextes zu überprüfen. Die Erstellung der Regeln für die Hervorhebungen ist kompliziert, abhängig davon, welches Format Sie benutzen. In manchen Fällen sind die Autoren der Regeln stolz, wenn 98 % des Textes korrekt hervorgehoben werden, meistens jedoch sehen Sie die nicht korrekten 2 % nur bei seltenen Konstruktionen.
Sie können weitere oder aktualisierte Syntax-Hervorhebungsdefinitionen von der -Webseite durch Klicken auf Herunterladen im Dialog Hervorhebungen einrichten des Einrichtungsdialogs einrichten bzw. aktualisieren.

Das Syntax-Hervorhebungssystem
Dieser Abschnitt behandelt die Mechanismen des Syntax-Hervorhebungssystems genauer. Wenn Sie selbst Definitionen erstellen oder verändern möchten, sollten Sie diesen genau lesen.

Wie es funktioniert
Immer, wenn Sie ein Dokument öffnen, ist eines der ersten Dinge, die macht, festzustellen, welche Syntaxdefinition für dieses Dokument benutzt werden soll. Während Sie den Text lesen und neuen Text eingeben, analysiert das Syntax-Hervorhebungssystem den Text anhand der Regeln in der Syntaxdefinition und markiert ihn dementsprechend.
Wenn Sie Text eingeben, wird der neue Text sofort analysiert und markiert.
Die Syntaxdefinitionen, die in benutzt werden, sind -Dateien, die Folgendes enthalten
Regeln für das Erkennen von Text, organisiert in Kontextblöcken
Listen mit Schlüsselworten
Stildefinitionen
Beim Analysieren von Text werden die Erkennungsregeln in der Reihenfolge, in der sie definiert wurden, überprüft und wenn der Anfang des aktuellen Textes mit einer Definition übereinstimmt, wird der zugehörige Kontext benutzt. Der nächste Startpunkt wird nach dem Ende des erkannten Bereichs gesetzt und von dort aus wird eine neue Schleife für die Regeln mit dem Kontext der gerade gefundenen Regel gestartet.

Regeln
Die Erkennungsregeln sind das Herzstück des Syntax-Hervorhebungssystems. Eine Regel besteht aus einer Zeichenkette, einem Zeichen oder einem regulären Ausdruck. Mit diesen wird der zu analysierende Text verglichen. Sie enthalten Informationen, welche Darstellung für das erkannte Stück Text verwendet werden soll und ob entweder zu einem explizit angegebenem Kontext oder zum vorher vom Text benutzten Kontext gewechselt werden soll.
Die Regeln sind in Kontextgruppen organisiert. Eine Kontextgruppe wird für die grundlegenden Textkonzepte innerhalb des Formates benutzt, ⪚ für Textteile in Anführungszeichen oder Kommentarblöcke in Programmquelltext. Dadurch wird sichergestellt, dass sich das Syntax-Hervorhebungssystem nicht unnötig durch alle Regeln hindurch arbeiten muss und dass einige Zeichenketten im Text abhängig vom aktuellen Kontext unterschiedlich behandelt werden können.
Kontexte können dynamisch generiert werden, um das Benutzen von Daten in Regeln zu erlauben, die nur auf diese Instanz zutreffen.

Kontextstile und Schlüsselwörter
In einigen Programmiersprachen werden Ganze Zahlen durch den Compiler (das Programm, das den Quelltext in ein ausführbares Programm übersetzt) anders behandelt als Gleitkommazahlen, und es gibt Zeichen, die eine spezielle Bedeutung innerhalb einer in Anführungszeichen eingeschlossenen Zeichenkette haben. In solchen Fällen ist es sinnvoll, diese unterschiedlich darzustellen, sodass sie beim Lesen einfach vom umgebenden Text zu unterscheiden sind. Auch wenn diese keine speziellen Kontexte repräsentieren, können sie durch das Syntax-Hervorhebungssystem erkannt und anders dargestellt werden.
Eine Syntaxdefinition kann so viele verschiedene Stile beinhalten, wie für das Format notwendig sind.
In vielen Formaten gibt es Listen mit Wörtern, die einem speziellen Konzept zugehörig sind. In Programmiersprachen sind ⪚ die Kontrollanweisungen ein Konzept, die Datentypen ein anderes und die eingebauten Funktionen ein drittes. Das Syntax-Hervorhebungssystem von kann benutzt werden, um solche Wörter anhand der Listen zu finden und zur Hervorhebung der Konzepte im Text zu markieren.

Standardstile
Wenn Sie eine C++-Quelltextdatei, eine -Quelltextdatei und eine HTML-Datei in öffnen, sehen Sie dass auch in unterschiedlichen Formaten und damit unterschiedlichen Worten, die spezielle Behandlung bekommen, die benutzten Farben dieselben sind. Der Grund dafür ist, dass vordefinierte Standardstile benutzt, die von den individuellen Syntaxdefinitionen verwendet werden.
Dadurch wird die Erkennung von ähnlichen Konzepten in verschiedenen Textformaten einfach. Kommentare ⪚ gibt es in fast allen Programmiersprachen, Skripten und Markup-Sprachen; diese werden in allen Sprachen gleich dargestellt, sodass Sie sich auf die Arbeit konzentrieren können und nicht über den Zweck einzelner Einträge nachdenken müssen.
Alle Stile in einer Syntaxdefinition nutzen einen der Standardstile. Einige wenige Syntaxdefinitionen nutzen mehr Stile als Standardstile vorhanden sind. Wenn Sie ein Format sehr oft benutzen, kann es die Arbeit wert sein, den Einrichtungsdialog zu starten und nachzusehen, ob mehrere Konzepte dieselben Stile benutzen. In der Programmiersprache Perl ⪚ gibt es zwei Typen von Zeichenketten, sodass Sie die Hervorhebung durch eine etwas andere Darstellung des zweiten Typs verbessern können. Alle verfügbaren Standardstile, werden weiter unten erklärt.

Die Hervorhebungsdefinition für das Format

Überblick
verwendet die Syntax-Highlighting-Bibliothek von . Die in enthaltenen Standard-Hervorhebungsdateien werden in die Syntax-Highlighting-Bibliothek einkompiliert.
Dieser Abschnitt ist ein Überblick über die Hervorhebungsdefinition für das -Format.. Es beschreibt die Hauptbestandteile, deren Bedeutung und Verwendung. Im nächsten Kapitel werden die Erkennungsregeln detailliert beschrieben.
Die formale Definition XSD finden Sie im Syntax-Highlighting-Repository in der Datei language.xsd.
Eigene .xml-Dateien mit Definitionen zur Syntax-Hervorhebung sind im Ordner org.kde.syntax-highlighting/syntax/ in Ihrem persönlichen Ordner. Den Pfad zu diesem Ordner finden Sie mit qtpaths --paths GenericDataLocation. Normalerweise ist dies $HOME/.local/share.
Auf -Systemen finden Sie diese Dateien unter %USERPROFILE%/AppData/Local/org.kde.syntax-highlighting/syntax. Dabei ist %USERPROFILE% normalerweise C:\\Users\\user.

Hauptbestandteile der -Hervorhebungsdefinitionen
Eine Hervorhebungsdefinitionsdatei enthält einen Kopf mit der XML-Version: 	

<?xml version="1.0" encoding="UTF-8"?>

Die Wurzel der Definitionsdatei ist das Element language. Verfügbare Eigenschaften sind: 	 Notwendige Eigenschaften:
name setzt den Namen der Sprache. Dieser erscheint nachher in Menüs und in Dialogen.
Die Eigenschaft section definiert die Kategorie.
extensions definiert die Erweiterungen für Dateinamen wie ⪚ "*.cpp;*.h".
version gibt die aktuelle Revision der Definitionsdatei als ganze Zahl an. Bei jeder Änderung einer Hervorhebungs-Datei sollte diese Zahl vergrößert werden.
kateversion definiert die letzte unterstützte Version von .
Optionale Eigenschaften:
mimetype ordnet Dateien basierend auf deren -Type zu.
casesensitive definiert, ob bei den Schlüsselwörtern Groß-/Kleinschreibung unterschieden wird oder nicht.
priority ist notwendig, wenn eine andere Hervorhebungsdefinitionsdatei die gleichen Dateinamenerweiterung benutzt. Die Definitionsdatei mit der höheren Priorität wird dann benutzt.
author enthält den Namen des Autors und dessen E-Mail-Adresse.
license enthält die Lizenz der Datei, normalerweise wird hier die MIT-Lizenz für neue Dateien benutzt.
style enthält die Programmiersprache, die mit der Definition zur Verfügung gestellt wird und wird durch das Einrückungsskript für die Eigenschaft required-syntax-style benutzt.
hidden definiert, ob der Name in Menüs von erscheinen soll.
Die nächste Zeile könnte wie folgt aussehen:

<language name="C++" version="1" kateversion="2.4" section="Sources" extensions="*.cpp;*.h" />

Als nächstes kommt das Element highlighting, das das optionale Element list und die notwendigen Elemente contexts und itemDatas enthält. 	 list-Elemente enthalten eine Liste von Schlüsselwörtern. In diesem Fall sind die Schlüsselwörter class und const. Sie können so viele hinzufügen, wie Sie brauchen.
Das Element contexts enthält alle Kontexte. Der erste Kontext ist Standard bei Start der Hervorhebungen. Es gibt zwei Regeln im Kontext Normal Text, die auf die Liste mit Schlüsselwörtern mit dem Namen somename und eine Regel, die Anführungszeichen entdeckt und zum Kontext string umschaltet. Weitere Informationen zu Regeln finden Sie im nächsten Kapitel.
Der dritte Teil ist das Element itemDatas. Es enthält alle Farb- und Schriftartstile, die durch die Kontexte und Regeln benötigt werden. In diesem Beispiel werden itemData, Normal Text, String und Keyword benutzt.

<highlighting>
    <list name="somename">
      <item> class </item>
      <item> const </item>
    </list>
    <contexts>
      <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >
        <keyword attribute="Keyword" context="#stay" String="somename" />
        <DetectChar attribute="String" context="string" char="&quot;" />
      </context>
      <context attribute="String" lineEndContext="#stay" name="string" >
        <DetectChar attribute="String" context="#pop" char="&quot;" />
      </context>
    </contexts>
    <itemDatas>
      <itemData name="Normal Text" defStyleNum="dsNormal" />
      <itemData name="Keyword" defStyleNum="dsKeyword" />
      <itemData name="String" defStyleNum="dsString" />
    </itemDatas>
  </highlighting>

Der letzte Teil der Hervorhebungsdefinition ist der optionale Abschnitt general. Dieser kann Informationen über Schlüsselwörter, Quelltextausblendungen, Kommentare und Einrückungen enthalten. 	 Der Abschnitt comment definiert, mit welcher Zeichenkette eine einzelne Kommentarzeile beginnt. Sie können außerdem mehrzeilige Kommentare definieren, indem Sie multiLine mit der zusätzlichen Eigenschaft end benutzen. Diese werden benutzt, wenn Sie das Tastaturkürzel für Kommentar / Kommentar entfernen drücken.
Der Abschnitt keywords definiert, ob in den Schlüsselwortlisten nach Groß- und Kleinschreibung unterschieden wird oder nicht. Andere Eigenschaften werden später erläutert.

<general>
    <comments>
      <comment name="singleLine" start="#"/>
    </comments>
    <keywords casesensitive="1"/>
  </general>
</language>

Die Abschnitte im Einzelnen
Dieser Teil beschreibt alle verfügbaren Eigenschaften für Kontexte, itemDatas, Schlüsselwörter, Kommentare, Quelltextausblendungen und Einrückungen.
Das Element context gehört in die Gruppe contexts. Ein Kontext selbst definiert spezielle Regeln, wie zum Beispiel, was geschehen soll, wenn das Hervorhebungssystem ein Zeilenende erreicht. Die verfügbaren Eigenschaften sind: 	 Der Kontextname name. Regeln benutzen diesen Namen, um festzulegen, zu welchem Kontext umgeschaltet wird, wenn die Regel zutrifft.
Der Kontext lineEndContext definiert den Kontext, zu dem das Hervorhebungssystem umschaltet, wenn es ein Zeilenende erreicht. Das kann entweder der Name eines anderen Kontextes sein, #stay um den Kontext nicht umzuschalten, (⪚ tue nichts) oder #pop das bewirkt, dass der Kontext verlassen wird. Es ist möglich, zum Beispiel #pop#pop#pop zu verwenden, um drei Kontextebenen zu verlassen oder mit #pop#pop!OtherContext zwei Kontextebenen zu verlassen und in einen neuen Kontext zu springen.
lineEmptyContext definiert den Kontext, der in einer leeren Zeile verwendet wird. Standard hierfür ist: #stay.
fallthrough definiert,ob das Hervorhebungssystem zu dem in fallthroughContext definiertem Kontext umschaltet, wenn keine Regel zutrifft Standard ist hier : false.
fallthroughContext definiert den nächsten Kontext, wenn keine Regel zutrifft.
dynamic Wenn true, erinnert sich der Kontext an Zeichenketten und Platzhalter, die durch dynamische Regeln gespeichert wurden. Dies wird ⪚ für HERE-Dokumente benötigt. Standard: false.
Das Element itemData ist in der Gruppe itemDatas. Es definiert die Schriftarten und Schriftfarben. So ist es möglich, Ihre eigenen Schriftarten und -farben festzulegen. Wir empfehlen jedoch, bei den vordefinierten Einstellungen zu bleiben, sodass in unterschiedlichen Sprachen trotzdem die gleichen Farben angezeigt werden. Manchmal ist es doch nötig, die Farben und Schriftarten zu ändern. Der Name der Eigenschaft und defStyleNum müssen angeben werden, alle anderen können verwendet werden, sind aber nicht unbedingt nötig. Die verfügbaren Eigenschaften sind: 	 name setzt den Namen von itemData. Kontexte und Regel benutzen diesen Namen in ihrer Eigenschaft attribute, um den Bezug zum itemData herzustellen.
defStyleNum definiert, welcher Stil standardmäßig benutzt wird. Die verfügbaren Stile werden später näher erläutert.
color definiert eine Farbe. Erlaubte Formate hierfür sind: ‚#rrggbb‘ oder ‚#rgb‘.
selColor definiert die Farbe für die Hervorhebung.
italic Wenn true, dann wird der Text in Kursivschrift dargestellt.
bold Wenn true, dann wird der Text in Fettschrift dargestellt.
underline Wenn true, dann wird der Text unterstrichen dargestellt.
strikeout Wenn true, dann wird der Text durchgestrichen dargestellt.
spellChecking Wenn true, dann wird die Rechtschreibprüfung für den Text aktiviert.
Das Element keywords in der Gruppe general definiert Eigenschaften von Schlüsselwörtern. Verfügbare Eigenschaften sind: 	 casesensitive kann true oder false sein. Wenn es true ist, dann wird bei allen Schlüsselwörtern die Groß- und Kleinschreibung beachtet.
weakDeliminator ist eine Liste von Zeichen, die nicht als Wortbegrenzung wirken. Der Punkt '.' ist zum Beispiel eine Wortbegrenzung. Nehmen Sie an, ein Schlüsselwort in einer list enthält einen Punkt, diese Schlüsselwort kann nur dann erkannt werden, wenn Sie den Punkt als weakDeliminator festlegen.
additionalDeliminator definiert zusätzliche Wortbegrenzungen.
wordWrapDeliminator definiert Zeichen, nach denen ein Zeilenumbruch erfolgen kann.
Standard für Wortbegrenzer und Zeilenumbruchbegrenzer sind die Zeichen .():!+,-<=>%&*/;?[]^{|}~\, Leerzeichen (' ') und der Tabulator ('\t').
Das Element comment in der Gruppe comments definiert Eigenschaften für Kommentare, die für Extras Kommentar und Extras Kommentar entfernen benutzt werden. Verfügbare Eigenschaften hierfür sind: 	 name ist entweder singleLine oder multiLine. Wenn Sie multiLine auswählen, müssen auch die Eigenschaften end und region benutzt werden.
start definiert die Zeichenkette, die einen Kommentar beginnt. In C++ ist dies zum Beispiel "/*".
end definiert die Zeichenkette, die einen Kommentar beendet. In C++ ist dies zum Beispiel "*/".
region sollte der Name von ausblendbaren Mehrzeilenkommentaren sein. Nehmen Sie an, Sie haben beginRegion=Comment ... endRegion=Comment in Ihren Regeln, dann sollten Sie region=Comment benutzen. Auf diesem Wege funktioniert das automatische Entfernen von Kommentaren auch dann, wenn Sie nicht den gesamten Text des mehrzeiligen Kommentars auswählen. Es muss nur der Cursor innerhalb des mehrzeiligen Kommentars stehen.
Das Element folding in der Gruppe general definiert Eigenschaften für ausblendbaren Quelltext. Verfügbare Eigenschaften sind: 	 indentationsensitive Wenn true, werden die Markierungen für Quelltextausblendungen basiert auf Einrückungen gesetzt, wie zum Beispiel in der Skriptsprache Python. Normalerweise brauchen Sie dies nicht zu setzen, Standard ist false.
Das Element indentation in der Gruppe general definiert, welche Einrücker benutzt werden. Wir empfehlen jedoch, dieses Element nicht zu benutzen, da der Typ des Einrückers normalerweise durch den Dateityp oder durch Hinzufügen einer Modezeile zur Textdatei gesetzt wird. Wenn Sie trotzdem einen Einrücker bestimmen, dann zwingen Sie den Benutzer eine bestimmte Einrückung zu verwenden, die dieser eventuell nicht nutzen möchte. Verfügbare Eigenschaften sind: 	 mode ist der Name des Einrückers. Verfügbare Einrücker sind zurzeit: normal, cstyle, haskell, lilypond, lisp, python, ruby und xml.

Verfügbare Standardstile
Standardstile wurden als kurze Zusammenfassung bereits erklärt. Standardstile sind vordefinierte Schriftarten und -farben.
Allgemeine Standardstile: 	 dsNormal, wenn keine spezielle Hervorhebung benötigt wird
dsKeyword, benutzt für eingebaute Sprach-Schlüsselwörter.
dsFunction, benutzt für Funktionsaufrufe und -definitionen.
dsVariable, falls zutreffend Variablennamen z. B. $someVar in PHP/Perl.
dsControlFlow, Kontrollfluss-Schlüsselwörter wie if, else, switch, break, return, yield, ...
dsOperator, Operatoren wie + - * / :: < >
dsBuiltIn, eingebaute Funktionen, Klassen und Objekte.
dsExtension, allgemeine Erweiterungen wie zum Beispiel Qt-Klassen und Funktionen/Makros in C++ und Python.
dsPreprocessor, Präprozessor-Anweisungen oder Makro-Definitionen.
dsAttribute, Anmerkungen wie @override und __declspec(...).
Standardstile für Zeichenketten: 	 dsChar, benutzt für einzelne Buchstaben wie „X“.
dsSpecialChar, Zeichen mit besonderer Bedeutung in Zeichenketten wie Escape-Sequenzen, Ersetzungen oder Operatoren für reguläre Ausdrücke.
dsString, benutzt für Zeichenketten wie „Hallo Welt“.
dsVerbatimString, wörtliche oder unveränderte Zeichenketten wie „raw \backlash“ in Perl, CoffeeScript und Shells wie auch r'\raw' in Python.
dsSpecialString, SQL, Reguläre Ausdrücke, HERE-Dokumente, LaTeX-Mathematikmodus, ...
dsImport, import, include, erforderliche Module.
Standardstile für Zahlen: 	 dsDataType, benutzt für eingebaute Datentypen wie int, void, u64.
dsDecVal, benutzt für Dezimalwerte.
dsBaseN, benutzt für Werte mit einer anderen Zahlenbasis als 10.
dsFloat, benutzt für Gleitkommawerte.
dsConstant, eingebaute und benutzerdefinierte Konsonanten wie Pi.PI.
Standardstile für Kommentare und Dokumentation: 	 dsComment, benutzt für Kommentare.
dsDocumentation, /** Dokumentation-Kommentare */ oder """docstrings""".
dsAnnotation, Dokumentations--Befehle wie @param, @brief.
dsCommentVar, die in den vorher genannten Befehlen verwendeten Variablennamen wie „foobar“ in @param foobar.
dsRegionMarker, benutzt für Markierungen von Bereichen wie //BEGIN, //END in Kommentaren.
Andere Standardstile: 	 dsInformation, Notizen und Hinweise wie @note in doxygen.
dsWarning, Warnungen wie @warning in doxygen.
dsAlert, besondere Wörter wie TODO, FIXME, XXXX.
dsError, benutzt für Hervorhebungen von Fehlern und für fehlerhafter Syntax.
dsOthers, wenn nichts anderes passt.

Hervorhebungs-Erkennungsregeln
Dieser Abschnitt beschreibt die Hervorhebungs-Erkennungsregeln
Jede Regel kann auf Null oder mehrere Zeichen am Anfang der untersuchten Zeichenkette zutreffen. Wenn eine Übereinstimmung gefunden wird, wird den erkannten Zeichen der Stil oder die Eigenschaft, die durch die Regel festgelegt wurde, zugeordnet, Außerdem kann die Regel ein Umschalten des aktuellen Kontexts anfordern.
Eine Regel sieht wie folgt aus:

<RuleName attribute="(identifier)" context="(identifier)" [rule specific attributes] />

Die attribute (Eigenschaft) legt den Namen des Stils fest, der für die erkannten Zeichen benutzt werden soll und der context (Kontext) legt den Kontext fest, der ab hier benutzt werden soll.
Der context (Kontext) kann durch Folgendes identifiziert werden:
Einen identifier, der der Name eines anderen Kontextes ist.
Eine Anweisung, die vorgibt, im aktuellen Kontext zu bleiben (#stay), oder zu einem vorher in der Zeichenkette benutzten Kontext zurückzuspringen (#pop).
Zum Zurückgehen über mehrere Schritte kann das Schlüsselwort #pop wiederholt werden: #pop#pop#pop
Eine Anweisung order, die von einem Ausrufezeichen (!) und einem identifier gefolgt wird, veranlasst erst die Anweisung order auszuführen und dann in den Kontext identifier umzuschalten, ⪚ #pop#pop!OtherContext.
Regeln können child rules(Unterregeln) haben, deren Einhaltung nur dann untersucht wird, wenn die Einhaltung der Hauptregel erkannt wurde. Der gesamten erkannten Zeichenkette wird die durch die Hauptregel festgelegte attribute (Eigenschaft) zugeordnet. Eine Regel mit Unterregel sieht ⪚ so aus:

<RuleName (attributes)>
  <ChildRuleName (attributes) />
  ...
</RuleName>

Regelspezifische Eigenschaften sind unterschiedlich und werden im Folgenden beschrieben.

Gemeinsame Eigenschaften
Alle Regeln haben die folgenden Eigenschaften gemeinsam und sind immer verfügbar, wenn (common attributes) erscheint. attribute und context sind notwendige Eigenschaften, alle anderen sind optional, müssen also nicht benutzt werden.
attribute: Eine Eigenschaft zeigt auf ein bestimmtes itemData-Element.
context: Legt den Kontext fest, zu dem das Hervorhebungssystem umschaltet, wenn die Regel als zutreffend erkannt wird.
beginRegion: Beginnt einen Quelltextausblendungsblock. Standard ist: unset.
endRegion: Beendet eine Quelltextausblendungsblock. Standard ist: unset.
lookAhead: Wenn true, dann wird das Hervorhebungssystem die Länge der Übereinstimmung nicht verarbeiten. Standard ist: false.
firstNonSpace: Trifft nur dann zu, wenn die Zeichenkette als erstes nach Zwischenräumen in der Zeile erkannt wird. Standard ist: false.
column: Trifft nur dann zu, wenn die Spalte zutrifft. Standard ist: unset.

Dynamische Regeln
Einige Regeln erlauben die Benutzung der optionalen Eigenschaft dynamic, Standard ist hier false.Wenn diese Eigenschaft auf true gesetzt wird, kann eine Regel in ihren Eigenschaften string oder char Platzhalter verwenden, die den zutreffenden Text aus einer als regulärem Ausdruck formulierten Regel enthält. Diese Regel muss direkt in den gegenwärtigen Kontext umgeschaltet haben. In einem string wird der Platzhalter %N (wobei N eine Zahl sein muss) ersetzt durch das Ergebnis für N aus dem aufrufenden regulären Ausdruck. In einem char muss der Platzhalter auch eine Zahl N sein und wird durch das erste Zeichen aus dem Ergebnis für N aus dem aufrufenden regulären Ausdruck ersetzt. Immer wenn eine Regel diese Eigenschaft erlaubt, dann enthält diese ein (dynamic).
dynamic: kann (true oder false) sein.

Die Regeln im Einzelnen:
DetectChar 	 Findet ein einzelnes bestimmtes Zeichen. Häufig zum Finden des Endes von Zeichenketten in Anführungszeichen benutzt.

<DetectChar char="(character)" (common attributes) (dynamic) />

Die Eigenschaft char definiert das zu erkennende Zeichen.
Detect2Chars 	 Findet zwei bestimmte Zeichen in einer bestimmten Reihenfolge.

<Detect2Chars char="(character)" char1="(character)" (common attributes) (dynamic) />

Die Eigenschaft char definiert das erste zu erkennende Zeichen, char1 das zweite.
AnyChar 	 Findet ein Zeichen aus einem bestimmten Satz von Zeichen.

<AnyChar String="(string)" (common attributes) />

Die Eigenschaft String definiert den Satz der Zeichen.
StringDetect 	 Findet eine bestimmte Zeichenkette.

<StringDetect String="(string)" [insensitive="true|false"] (common attributes) (dynamic) />

Die Eigenschaft String definiert die zu erkennende Zeichenkette. Die Eigenschaft insensitive ist standardmäßig auf false gesetzt und wird an die Zeichenketten-Vergleichsfunktion übergeben. Wenn der Wert auf true gesetzt wird, wird Groß- und Kleinschreibung ignoriert.
WordDetect 	 Findet eine Zeichenkette, aber zusätzlich werden die Wortgrenzen wie ein Punkt '.' oder ein Leerzeichen am Anfang und Ende des Wortes beachtet. Dies funktioniert wie der reguläre Ausdruck \b<string>\b, ist aber schneller als die Regel RegExpr.

<WordDetect String="(string)" [insensitive="true|false"] (common attributes) (dynamic) />

Die Eigenschaft String definiert die zu erkennende Zeichenkette. Die Eigenschaft insensitive ist standardmäßig auf false gesetzt und wird an die Zeichenketten-Vergleichsfunktion übergeben. Wenn der Wert auf true gesetzt wird, wird Groß- und Kleinschreibung ignoriert.
Seit: Kate 3.5 (KDE 4.5)
RegExpr 	 Prüft die Übereinstimmung mit einem regulären Ausdruck.

<RegExpr String="(string)" [insensitive="true|false"] [minimal="true|false"] (common attributes) (dynamic) />

Die Eigenschaft String definiert den regulären Ausdruck.
Die Eigenschaft insensitive ist standardmäßig auf false gesetzt und wird an die Funktion zur Auswertung des regulären Ausdrucks übergeben.
Die Eigenschaft minimal ist standardmäßig auf false gesetzt und wird an die Funktion zur Auswertung des regulären Ausdrucks übergeben.
Weil die Regeleinhaltung immer am Anfang der aktuellen Zeichenkette geprüft wird, kann mit dem Hochzeichen (^) angegeben werden, dass die Regeleinhaltung nur am Anfang der Zeile untersucht werden soll.
Sehen Sie unter Reguläre Ausdrücke für weitere Informationen zu diesen nach.
keyword 	 Erkennt ein Schlüsselwort aus einer angegebenen Liste.

<keyword String="(list name)" (common attributes) />

Die Eigenschaft String definiert die Schlüsselwortliste durch deren Name. Eine Liste mit diesem Namen muss vorhanden sein.
Das Hervorhebungssystem verarbeitet die Regeln mit sehr stark optimierten Methoden. Deswegen ist es absolut notwendig, dass alle Schlüsselworte, die gefunden werden sollen, durch definierte Begrenzer eingeschlossen werden. Das können entweder die Standardbegrenzer sein oder Begrenzer, die mit der Eigenschaft additionalDeliminator des Tagskeywords festgelegt wurden.
Wenn ein Schlüsselwort ein Begrenzerzeichen enthalten soll, dann muss dieses Zeichen zur Eigenschaft weakDeliminator des Tags keywords hinzugefügt werden. Dieses Zeichen verliert damit seine Funktion als Begrenzer in allen keyword-Regeln.
Int 	 Erkennt eine ganze Zahl(integer).

<Int (common attributes) (dynamic) />

Diese Regel hat keine speziellen Eigenschaften. Unterregeln werden häufig dazu benutzt, um Kombinationen von L und U nach der Zahl zu erkennen, die den Typ der Integerzahl im Programm beschreiben. Eigentlich sind alle Regel als Unterregeln erlaubt, aber die DTD erlaubt nur die Unterregel StringDetect.
Das folgende Beispiel trifft auf Integerzahlen, gefolgt vom Zeichen ‚L‘ zu.

<Int attribute="Decimal" context="#stay" >
  <StringDetect attribute="Decimal" context="#stay" String="L" insensitive="true"/>
</Int>

Float 	 Findet eine Gleitkommazahl.

<Float (common attributes) />

Diese Regel hat keine speziellen Eigenschaften. AnyChar ist als Unterregel erlaubt und wird normalerweise dazu benutzt, um Kombinationen zu finden. Sehen Sie in der Beschreibung der Regel Int für nähere Informationen hierzu nach.
HlCOct 	 Findet eine oktale Zahl.

<HlCOct (common attributes) />

Diese Regel hat keine speziellen Eigenschaften.
HlCHex 	 Findet eine Hexadezimalzahl.

<HlCHex (common attributes) />

Diese Regel hat keine speziellen Eigenschaften.
HlCStringChar 	 Findet ein Steuerzeichen.

<HlCStringChar (common attributes) />

Diese Regel hat keine speziellen Eigenschaften.
Solche Zeichen sind durch druckbare Zeichen dargestellte nichtdruckbare Zeichen, die in Programmquelltexten häufig benutzt werden. ⪚: \n (Zeilenvorschub) oder \t (TAB)
Die folgenden Zeichen werden erkannt, wenn sie einem Linksschrägstrich \ folgen: abefnrtv"'?. Zusätzlich werden auch hexadezimale (\xff) oder oktale (\033) Zahlen nach einem \ erkannt.
HlCChar 	 Findet ein C Zeichen.

<HlCChar (common attributes) />

Diese Regel hat keine speziellen Eigenschaften.
Trifft zu, wenn C Zeichen in einfachen Anführungszeichen (Beispiel: 'c') vorkommen. In den Anführungszeichen kann ein einfaches Zeichen oder Sonderzeichen (Beispiel: ' ') stehen. Für Zeichenfolgen von Sonderzeichen sehen Sie unter HlCStringChar nach.
RangeDetect 	 Findet eine Zeichenkette mit definierten Anfangs- und Endzeichen.

<RangeDetect char="(character)"  char1="(character)" (common attributes) />

char definiert das Zeichen am Anfang des Bereichs, char1 das Zeichen am Ende des Bereichs.
Diese Regel ist für das Finden von kleinen Zeichenketten in Anführungszeichen nützlich, kann aber wegen der verwendeten Funktion keine über mehrere Zeilen gehenden Zeichenketten finden.
LineContinue 	 Trifft auf ein angegebenes Zeichen an einem Zeilenende zu.

<LineContinue (common attributes) [char="\"] />

Die Eigenschaft char definiert das optionale zu erkennende Zeichen, Standard ist der Rückstrich '\'. Neu seit 4.13.
Diese Regel wird zum Umschalten des Kontextes am Ende einer Zeile benutzt. Dies wird in C/C++ zum Fortsetzen von Makros oder Zeichenketten gebraucht.
IncludeRules 	 Schließt Regeln aus einem anderen Kontext, einer anderen Sprache oder einer anderen Datei ein.

<IncludeRules context="contextlink" [includeAttrib="true|false"] />

Die Eigenschaft context definiert, welcher Kontext eingeschlossen werden soll.
Wenn dies eine einfache Zeichenkette ist, dann werden alle definierten Regeln in den gegenwärtigen Kontext eingeschlossen. Beispiel:

<IncludeRules context="anotherContext" />

Wenn die Zeichenkette eine ##-Nutzereingabe enthät, dann wird das Hervorhebungssystem einen Kontext aus einer anderen Sprachdefinition mit dem angegebenen Namen suchen, zum Beispiel:

<IncludeRules context="String##C++" />

schliesst den Kontext String aus der Sprachdefinition für C++ ein.
Wenn die Eigenschaft includeAttrib true ist, dann wird die Zieleigenschaft zu der aus der Quelle geändert. Dies wird zum Beispiel für Kommentare gebraucht, wenn der Text, der durch den eingeschlossenen Kontext anders hervorgehoben wird, als im gegenwärtigen Kontext.
DetectSpaces 	 Finde Zwischenräume.

<DetectSpaces (common attributes) />

Diese Regel hat keine speziellen Eigenschaften.
Benutzen Sie diese Regel, wenn Sie wissen, dass jetzt mehrere Zwischenräume folgen, zum Beispiel am Anfang von eingerückten Zeilen. Diese Regel überspringt mehrere Zwischenräume mit einem Mal, ohne diese einzeln auf die Einhaltung von anderen Regeln zu testen und dann nach Nichtzutreffen einzeln zu überspringen.
DetectIdentifier 	 Finde Zeichenketten als Bezeichner (als regulärer Ausdruck: [a-zA-Z_][a-zA-Z0-9_]*).

<DetectIdentifier (common attributes) />

Diese Regel hat keine speziellen Eigenschaften.
Benutzen Sie diese Regel zum Überspringen von Wörtern mit einem Mal, ohne die Zeichen im Wort einzeln auf die Einhaltung von anderen Regeln zu testen und dann nach Nichtzutreffen zu überspringen.

Tipps & Tricks
Wenn Sie einmal verstanden haben, wie das Umschalten zwischen Kontexten funktioniert, dann ist es einfach Hervorhebungsdefinitionen zu schreiben. Sie sollten jedoch sorgfältig entscheiden, welche Regel in welcher Situation Sie verwenden. Reguläre Ausdrücke sind sehr leistungsfähig, aber verglichen mit einfachen Regeln langsam. Sie sollten daher die folgenden Tipps beachten.
Wenn Sie nur zwei Zeichen vergleichen, dann benutzen Sie Detect2Chars an Stelle von StringDetect. Das Gleiche gilt für DetectChar.
Reguläre Ausdrücke sind einfach zu benutzen, aber oft gibt es einen anderen viel schnelleren Weg, um das gleiche Ergebnis zu erreichen. Nehmen Sie an, Sie wollen feststellen, ob das Zeichen '#' das erste Zeichen einer Zeile ist. Ein regulärer Ausdruck dafür wäre:

<RegExpr attribute="Macro" context="macro" String="^\s*#" />

Sie können aber auch die wesentlich schnellere Lösung:

<DetectChar attribute="Macro" context="macro" char="#" firstNonSpace="true" />

benutzen. An Stelle des regulären Ausdrucks '^#' können Sie DetectChar mit der Eigenschaft column="0" benutzen. Die Eigenschaft column zählt Zeichenbasiert, sodass auch ein Tabulator nur ein Zeichen ist.
Sie können zwischen Kontexten umschalten, ohne Zeichen zu verarbeiten. Nehmen Sie an, Sie wollen den Kontext umschalten, wenn Sie die Zeichenkette */ finden, aber Sie müssen diese Zeichenkette im nächsten Kontext verarbeiten. Die folgende Regel trifft zu und die Eigenschaft lookAhead sorgt dafür, dass die zutreffende Zeichenkette für den folgenden Kontext bereitgehalten wird.

<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />

Benutzen Sie DetectSpaces, wenn Sie wissen, dass mehrere Zwischenräume vorkommen.
Benutzen Sie DetectIdentifier an Stelle des regulären Ausdrucks '[a-zA-Z_]\w*'.
Benutzen Sie Standardstile wann immer das möglich ist. Die Benutzer finden dadurch eine vertraute Umgebung vor.
Sehen Sie in anderen XML-Dateien nach, wie andere Benutzer komplizierte Regeln geschrieben haben.
Sie können die Gültigkeit jeder XML-Datei mit dem Befehl validatehl.sh language.xsd mySyntax.xml überprüfen. Die Dateien validatehl.sh und language.xsd finden Sie im Syntax-Highlighting-Repository.
Wenn Sie komplexe reguläre Ausdrücke oft wiederholen, können Sie ENTITIES benutzen. Beispiel:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
[
        <!ENTITY myref    "[A-Za-z_:][\w.:_-]*">
]>

Nun können Sie &myref; an Stelle des regulären Ausdrucks benutzen.

Scripting mit JavaScript
Die Editorkomponente von kann durch Skripte erweitert werden. Als Skriptsprache wird ECMAScript verwendet, das auch unter dem Namen JavaScript bekannt ist. In können zwei Arten von Skripten benutzt werden: Einrückungs- und Befehlszeilenskripte.

Einrückungsskripte
Mit Einrückungsskripten wird der Quelltext automatisch bei der Eingabe eingerückt. Nach Drücken der Eingabetaste wird die Einrückungstiefe zum Beispiel oft vergrößert.
Die folgenden Abschnitte beschreiben Schritt für Schritt, wie das Gerüst für ein einfaches Einrückungsskript entsteht. Zuerst wird eine neue *.js-Datei ⪚ mit dem Namen $XDG_DATA_HOME/katepart5/script/indentation erzeugt. Darin wird die Umgebungsvariable XDG_DATA_HOME normalerweise entweder zu ~/.local oder ~/.local/share erweitert.
Auf -Systemen finden Sie diese Dateien unter %USER%\AppData\Local\katepart5\indentation. Dabei ist %USER% normalerweise C:\\Users\\user.

Der Vorspann des Einrückungsskripts
Der Vorspann der Datei javascript.js ist als JSON am Anfang des Dokumentes eingebettet und hat folgende Form:

var katescript = {
    "name": "JavaScript",
    "author": "Example Name <example.name@some.address.org>",
    "license": "BSD License",
    "revision": 1,
    "kate-version": "5.1",
    "required-syntax-style": "javascript",
    "indent-languages": ["javascript"],
    "priority": 0,
}; // kate-script-header, muss am Anfang der Datei stehen und darf keine Kommentare enthalten

Jede Zeile wird jetzt im Detail erklärt:
name [erforderlich]: Dies ist der Name des Skripts, der im Menü Extras Einrückung und im Einrichtungsdialog angezeigt wird.
author [optional]: Der Name des Autors und weitere Kontaktinformationen.
license [optional]: Kurzform der Lizenz, wie zum Beispiel BSD-Lizenz oder LGPLv3.
revision [erforderlich]: Die Version des Skripts, sie sollte bei jeder Änderung des Skripts erhöht werden.
kate-version [required]: Minimal erforderliche -Version.
required-syntax-style [optional]: Der erforderliche Sytaxstil, der zum angebenen style in Syntaxhervorhebungs-Stildateien passt. Dies ist wichtig für Einrückungsskripte, die besondere Informationen über die Hervorhebung im Dokument benötigen. Wenn ein erforderlicher Syntaxstil angegeben ist, ist das Einrückungsskript nur verfügbar, wenn auch die zugehörige Hervorhebung aktiviert ist. Dies verhindert ein nicht definiertes Verhalten beim Verwenden einer Einrückung ohne das erwartete Hervorhebungschema. Ein Beispiel dafür ist das Einrückungsskript für Ruby, das diese Option in den Dateien ruby.js und ruby.xml benutzt.
indent-languages [optional]: JSON-Feld von Syntaxstilen, die das Skript richtig einrücken kann, ⪚: ["c++", "java"].
priority [optional]: Wenn es mehrere Einrückungsskripte für eine bestimmte hervorgehobene Datei gibt, bestimmt die Priorität, welches Skript als Standard verwendet wird.

Der Quelltext des Einrückungsskripts
Nachdem der Vorspann beschrieben wurde, erklärt dieser Abschnitt wie das Einrückungsskript selbst funktioniert. Die Basisvorlage für den Quelltext sieht so aus:

// benötigt die Bibliothek „katepart js“ ⪚ range.js wenn Range benutzt wird
require ("range.js");
  
triggerCharacters = "{}/:;";
function indent(line, indentWidth, ch)
{
    // wird für jedem Zeilenumbruch (ch == '\n') und alle in der 
    // globalen Variable triggerCharacters festgelegten Zeichen aufgerufen. Wenn ExtrasAusrichten
    // gewählt wird, ist die Variable ch leer, d. h. ch == ''.
    //
    // siehe auch: Skript-API
    return -2;
}

Die Funktion indent() hat drei Argumente:
line: die Zeile die eingerückt werden soll
indentWidth: die Einrückungstiefe mit der Anzahl der Leerzeichen
ch: entweder das Zeichen für Zeilenumbruch (ch == '\n'), ein in triggerCharacters festgelegtes Zeichen oder ein leeres Zeichen, wenn der Benutzer die Aktion Extras Ausrichten aufgerufen hat.
Der Rückgabewert der Funktion indent() bestimmt, wie die Zeile eingerückt wird. Ist dieser Wert eine Ganze Zahl, wird sie wie folgt interpretiert:
Rückgabewert -2: keine Aktion
Rückgabewert -1: Einrückung beibehalten (sucht nach vorherigen nicht leeren Zeilen)
Rückgabewert 0: eine Zahl >= 0 gibt die Anzahl der Leerzeichen zum Einrücken an
Alternativ kann ein Feld mit zwei Elementen zurückgegeben werden:
Rückgabewert [ indent, align ];
In diesem Fall ist das erste Element die Einrückungstiefe wie oben mit derselben Bedeutung spezieller Werte. Das zweite Element ist ein absoluter Wert für die Spalte der Ausrichtung. Ist dieser Wert größer als der Einrückungswert, legt die Differenz der Werte die Anzahl von Leerzeichen fest, die zum ersten Wert für die gesamte Einrückung hinzuaddiert werden. Anderenfalls wird der zweite Rückgabewert ignoriert. Die Benutzung von Tabulator- und Leerzeichen wird oft als Mischmodus bezeichnet.
Betrachten Sie das folgende Beispiel: Angenommen das Tabulatorzeichen wird zur Einrückung verwendet und die Tabulatorweite beträgt 4. Hier steht <tab> für den Tabulator und '.' für ein Leerzeichen:

1: <tab><tab>foobar("hello",
2: <tab><tab>......."world");

Beim Einrücken der Zeile 2 gibt die Funktion indent() [8, 15] zurück. Daher werden zwei Tabulatoren für das Einrücken bis Spalte 8 und noch zusätzlich 7 Leerzeichen hinzugefügt. Dadurch steht der zweite Parameter unter dem ersten und bleibt auch so ausgerichtet, wenn die Datei mit einer anderen Tabulatorweite angezeigt wird.
In der Standardinstallation von wird mit einigen Einrückungsskripten installiert. Die entsprechenden JavaScript-Quelltexte finden Sie unter $XDG_DATA_DIRS/katepart5/script/indentation.
Auf -Systemen finden Sie diese Dateien unter %USER%\AppData\Local\katepart5\indentation. Dabei ist %USER% normalerweise C:\\Users\\user.
Bei der Entwicklung eines Einrückungsskripts muss das Skript wieder neu geladen werden, um testen zu können, ob es richtig funktioniert. Anstatt das ganze Programm neu zu starten, wechseln Sie zur Befehlszeile und geben reload-scripts ein.
Wenn Sie nützliche Skripte entwickelt haben, sollten Sie darüber nachdenken, sie zum -Projekt hinzufügen. Schreiben Sie dazu an die Mailingliste.

Befehlszeilenskripte
Da nicht alle gewünschten Funktionen in eingebaut werden können, ist es möglich, kleine Hilfsskripte für die schnelle Änderung von Textes mit der eingebauten Befehlszeile auszuführen. Der Befehl sort ist zum Beispiel als Skript geschrieben. Dieser Abschnitt erklärt, wie *.js-Dateien erstellt werden, um die Fähigkeiten von mit beliebigen Hilfsskripten zu erweitern.
Befehlszeilenskripte werden im gleichen Ordner wie Einrückungsskripte gespeichert. Zuerst erstellen Sie eine neue *.js-Datei namens myutils.js im lokalen persönlichen Ordner $XDG_DATA_HOME/katepart5/script/commands. Darin wird die Umgebungsvariable XDG_DATA_HOME normalerweise entweder zu ~/.local oder ~/.local/share erweitert.
On these files are located in %USER%\AppData\Local\katepart5\commands. %USER% usually expands to C:\\Users\\user.

Der Vorspann des Befehlszeilenskripts
Der Vorspann jedes Befehlszeilen-Skripts ist in der JSON-Datei am Anfang des Skripts so eingebettet:

var katescript = {
    "author": "Example Name <example.name@some.address.org>",
    "license": "LGPLv2+",
    "revision": 1,
    "kate-version": "5.1",
    "functions": ["sort", "moveLinesDown"],
    "actions": [
        {   "function": "sort",
            "name": "Sort Selected Text",
            "category": "Editing",
            "interactive": "false"
        },
        {   "function": "moveLinesDown",
            "name": "Move Lines Down",
            "category": "Editing",
            "shortcut": "Ctrl+Shift+Down",
            "interactive": "false"
        }
    ]
}; // kate-script-header, muss am Anfang der Datei stehen und darf keine Kommentare enthalten

Jede Zeile wird jetzt im Detail erklärt:
author [optional]: Der Name des Autors und weitere Kontaktinformationen.
license [optional]: Kurzform der Lizenz, wie zum Beispiel BSD-Lizenz oder LGPLv2.
revision [erforderlich]: Die Version des Skripts, sie sollte bei jeder Änderung des Skripts erhöht werden.
kate-version [required]: Minimal erforderliche -Version.
functions [erforderlich]: JSON-Feld der Befehle im Skript.
actions [optional]: JSON-Feld mit JSON-Objekten, das die Aktionen festlegt, die im Anwendungsmenü erscheinen sollen. Weitergehende Informationen finden Sie im Abschnitt Kurzbefehle festlegen.
Da der Inhalt von functions ein JSON-Feld ist, kann ein einzelnes Skript eine beliebige Anzahl von Befehlen für die Befehlszeile enthalten. Jede Funktion ist durch die eingebaute Befehlszeile in verfügbar.

Der Quelltext des Skripts
Alle im Vorspann aufgeführten Funktionen müssen im Skript implementiert werden. Im oben gezeigten Skript müssen zum Beispiel die beiden Funktionen sort und moveLinesDown implementiert werden. Alle Funktionen haben folgende Syntax:

// benötigt die Bibliothek „katepart js“ ⪚ range.js wenn Range benutzt wird
require ("range.js");
function <name>(arg1, arg2, ...)
{
    // ... Implementierung, siehe auch: Skript-API
}

Argumente in der Befehlszeile werden der Funktion als arg1, arg2 übergeben. Um für jeden Befehl eine Dokumentation zu Verfügung zu stellen, verwenden Sie die Funktion „help“ wie im folgenden Beispiel:

function help(cmd)
{
    if (cmd == "sort") {
        return i18n("Sortiert den ausgewählten Text.");
    } else if (cmd == "...") {
        // ...
    }
}

Durch den Aufruf von help sort auf der Befehlszeile wird dann diese Hilfefunktion mit dem Argument cmd für den verwendeten Befehl benutzt, mit cmd == "sort". zeigt den zurückgegebenen Text als Hilfe für den Benutzer an. Denken Sie daran, die Texte zu übersetzen .
Bei der Entwicklung eines Befehlszeilenskripts muss das Skript wieder neu geladen werden, um testen zu können, ob es richtig funktioniert. Anstatt das ganze Programm neu zu starten, wechseln Sie zur Befehlszeile und geben reload-scripts ein.

Kurzbefehle festlegen
Das Skript braucht einen passenden Skript-Header, der die Skripte über das Anwendungsmenü verfügbar macht. Im Beispiel erscheinen die Funktionen sort und moveLinesDown im Menü. Das wird durch den folgenden Skript-Header erreicht:

var katescript = {
    ...
    "actions": [
        {   "function": "sort",
            "name": "Sort Selected Text",
            "icon": "",
            "category": "Editing",
            "interactive": "false"
        },
        {   "function": "moveLinesDown",
            "name": "Move Lines Down",
            "icon": "",
            "category": "Editing",
            "shortcut": "Ctrl+Shift+Down",
            "interactive": "false"
        }
    ]
};

Die Felder für eine Aktion lauten wie folgt:
function [erforderlich]: Die Funktion, die im Menü Extras Skripte erscheint.
name [erforderlich]: Der Text, der im Menü Skript angezeigt wird.
icon [optional]: Dieses Symbol erscheint neben dem Text im Menü. Alle -Symbolnamen können hier benutzt werden.
category [optional]: Wenn eine Kategorie angegeben ist, dann erscheint das Skript in einem Untermenü.
shortcut [optional]: Der hier angegebene Kurzbefehl ist der Standard. Beispiel: Ctrl+Alt+T. Sehen Sie in der Qt-Dokumentation für weitere Einzelheiten nach.
interactive [optional]: Wenn das Skript Benutzereingaben auf der Befehlszeile braucht, dann setzen Sie diesen Parameter auf true.
Wenn Sie nützliche Skripte entwickelt haben, sollten Sie darüber nachdenken, sie zum -Projekt hinzufügen. Schreiben Sie dazu an die Mailingliste.

Skript-API
Die hier vorgestellte Programmierschnittstelle (API) ist in allen Skripten verfügbar, in Einrückungs- und Befehlszeilenskripten. Die Klassen Cursor und Range werden durch die Bibliotheksdateien in $XDG_DATA_DIRS/katepart5/libraries bereit gestellt. Wenn Sie sie in Ihren Skripten verwenden möchten, was für einige der Funktionen Document oder View erforderlich ist, fügen Sie bitte die benötigte Bibliothek wie folgt ein:

// benötigt die Bibliothek „katepart js“ ⪚ range.js wenn Range benutzt wird
require ("range.js");

Um die Standard-Skript-API mit eigenen Funktionen und Prototypen zu erweitern, erzeugen Sie eine neue Datei im lokalen Einrichtungsordner für $XDG_DATA_HOME/katepart5/libraries und schließen Sie sie in Ihr Skript mit folgendem Befehl ein:

require ("myscriptnamehere.js");

Auf -Systemen finden Sie diese Dateien unter %USER%\AppData\Local\katepart5\libraries. Dabei ist %USER% normalerweise C:\\Users\\user.
Um vorhandene Prototypen wie Cursor oder Range zu erweitern, wird empfohlen, nicht die globalen *.js-Dateien zu ändern. Ändern Sie stattdessen den Cursor-Prototyp in JavaScript, nachdem cursor.js in Ihrem Skript mit require eingefügt ist.

Cursor und Bereiche
Da ein Texteditor ist, basiert die Skript-API soweit möglich auf Cursor und Bereichen. Ein Cursor ist ein einfaches Tupel (Zeile, Spalte) für eine Textposition im Dokument. Ein Bereich umfasst Text vom Start bis zum Ende der Cursor-Position. Die Programmschnittstelle wird in den nächsten Abschnitten im Einzelnen erläutert.

Der Cursor-Prototyp

Cursor();

	Konstruktor. Gibt einen Cursor an der Position (0, 0) zurück.
Beispiel: var cursor = new Cursor();

Cursor(int zeile, int spalte);

	Konstruktor. Gibt einen Cursor an der Position (zeile, spalte) zurück.
Beispiel: var cursor = new Cursor(3, 42);

Cursor(Cursor other);

	Kopierkonstruktor. Gibt die Kopie des Cursors other zurück.
Beispiel: var copy = new Cursor(cursor);

Cursor Cursor.clone();

	Gibt einen Klon des Cursors zurück.
Beispiel: var clone = cursor.clone();

Cursor.setPosition(int zeile, int spalte);

	Setzt die Cursor-Position auf zeile und spalte.
Since: 4.11

bool Cursor.isValid();

	Überprüft, ob der Cursor gültig ist. Ein Cursor ist ungültig, wenn die Zeile und oder die Spalte den Wert -1 haben.
Beispiel: var valid = cursor.isValid();

Cursor Cursor.invalid();

	Gibt einen neuen ungültigen Cursor an der Position (-1, -1) zurück.
Beispiel: var invalidCursor = cursor.invalid();

int Cursor.compareTo(Cursor other);

	Vergleicht diesen Cursor mit dem Cursor other. Gibt folgende Werte zurück:
-1, wenn dieser Cursor sich vor dem Cursor other befindet,
0, wenn beide Cursor an der gleichen Stelle stehen und
+1, wenn dieser Cursor sich hinter dem Cursor other befindet.

bool Cursor.equals(Cursor other);

	Gibt true zurück, wenn dieser Cursor und der Cursor other gleich sind, sonst false.

String Cursor.toString();

	Gibt den Cursor als Zeichenkette in der Form Cursor(zeile, spalte) zurück.

Der Bereich-Prototyp

Range();

	Konstruktor. Der Aufruf new Range() gibt einen Bereich von (0, 0) - (0, 0) zurück.

Range(Cursor start, Cursor ende);

	Konstruktor. Der Aufruf new Range(start, end) gibt einen Bereich von (start, ende) zurück.

Range(int startZeile, int startspalte, int endZeile, int endSpalte);

	Konstruktor. Der Aufruf von new Range(startZeile, startSpalte, endZeile, endSpalte). Gibt den Bereich von (startZeile, startSpalte) bis (endZeile, endSpalte) zurück.

Range(Range other);

	Kopierkonstruktor. Gibt eine Kopie von Range other zurück.

Range Range.clone();

	Gibt einen Klon des Bereichs zurück.
Beispiel: var clone = range.clone();

bool Range.isEmpty();

	Gibt true zurück, wenn der Start- und der End-Cursor gleich sind.
Beispiel: var empty = range.isEmpty();
Since: 4.11

bool Range.isValid();

	Gibt true zurück, wenn sowohl Start- als auch End-Cursor gültig sind, sonst false.
Beispiel: var valid = range.isValid();

Range Range.invalid();

	Gibt den Bereich von (-1, -1) bis (-1, -1) zurück.

bool Range.contains(Cursor cursor);

	Gibt true zurück, wenn dieser Bereich die Cursor-Position enthält, sonst false.

bool Range.contains(Range other);

	Gibt true zurück, wenn dieser Bereich den Bereich other enthält, sonst false.

bool Range.containsColumn(int spalte);

	Gibt true zurück, wenn spalte in dem halboffenen Intervall [start.spalte, end.spalte) liegt, sonst false.

bool Range.containsLine(int zeile);

	Gibt true zurück, wenn zeile in dem halboffenen Intervall [start.zeile, end.zeile) liegt, sonst false.

bool Range.overlaps(Range other);

	Gibt true zurück, wenn dieser Bereich und der Bereich other sich überlappen, sonst false.

bool Range.overlapsLine(int zeile);

	Gibt true zurück, wenn zeile in dem Intervall [start.zeile, end.zeile] liegt, sonst false.

bool Range.overlapsColumn(int spalte);

	Gibt true zurück, wenn spalte in dem Intervall [start.spalte, end.spalte] liegt, sonst false.

bool Range.onSingleLine();

	Gibt true zurück, wenn der Bereich in der gleichen Zeile beginnt und endet, wenn Range.start.line == Range.end.line ist.
Seit: 4.9

bool Range.equals(Range other);

	Gibt true zurück, wenn dieser Bereich und der Bereich other gleich sind, sonst false.

String Range.toString();

	Gibt den Bereich als Zeichenkette in der Form Range(Cursor(zeile, spalte), Cursor(zeile, spalte)) zurück.

Globale Funktionen
Dieser Abschnitt listet alle globalen Funktionen auf.

Lesen & Einfügen von Dateien

String read(String datei);

	Sucht nach der angegebenen datei relativ zum Ordner katepart/script/files und gibt den Inhalt der Datei als String zurück.

void require(String datei);

	Sucht die angegebene datei relativ zum Ordner katepart/script/libraries und wertet sie aus. require verhindert intern, dass die gleiche datei mehrfach eingeschlossen wird.
Seit: 4.10

Fehlersuche

void debug(String text);

	Gibt den text auf der Standardausgabe stdout in der Konsole aus, von der das Programm gestartet wurde.

Übersetzung
Die Lokalisierung wird durch einige Funktionen zum Übersetzen von Zeichenketten in Skripten unterstützt, so durch i18n, i18nc, i18np und i18ncp. Diese Funktionen arbeiten genau wie auf der Seite 's Übersetzungsfunktionen beschrieben.
Die Übersetzungsfunktionen übersetzen die eingepackten Zeichenketten durch 's Übersetzungssystem in die Sprache, die in der Anwendung benutzt wird. Zeichenketten in Skripten, die in den offiziellen -Quellen entwickelt werden, werden automatisch extrahiert und sind übersetzbar. Anders gesagt, müssen Sie sich als Entwickler von nicht um das Extrahieren und Übersetzen kümmern. Achtung, diese Funktionalität gibt es nur innerhalb der -Infrastruktur. Neue Texte in Skripten, die von Anderen ausserhalb von entwickelt wurden, werden nicht automatisch übersetzt. Bitte denken Sie darüber nach, solche Skripte an zu geben, so dass die korrekte Übersetzung möglich wird.

void i18n(String text, arg1, ...);

	Übersetzt text in die von der Anwendung benutzte Sprache. Die Argumente arg1, ..., sind optional und werden benutzt, um die Platzhalter %1, %2 usw. zu ersetzen.

void i18nc(String context, String text, arg1, ...);

	Übersetzt text in die von der Anwendung benutzte Sprache. Zusätzlich ist die Zeichenkette context sichtbar, so dass Übersetzer bessere Übersetzungen anfertigen können. Die Argumente arg1, ..., sind optional und werden benutzt, um die Platzhalter %1, %2 usw. zu ersetzen.

void i18np(String singular, String plural, int number, arg1, ...);

	Übersetzt entweder singular oder plural in die von der Anwendung benutzte Sprache. Dies ist abhängig von der angegebenen number. Die Argumente arg1, ..., sind optional und werden benutzt, um die Platzhalter %1, %2 usw. zu ersetzen.

void i18ncp(String context, String singular, String plural, int number, arg1, ...);

	Übersetzt entweder singular oder plural in die von der Anwendung benutzte Sprache. Dies ist abhängig von der angegebenen number. Zusätzlich ist die Zeichenkette context sichtbar, so dass Übersetzer bessere Übersetzungen anfertigen können. Die Argumente arg1, ..., sind optional und werden benutzt, um die Platzhalter %1, %2 usw. zu ersetzen.

Die Programmschnittstelle zur Ansicht
Für jedes ausgeführte Skript gibt es eine globale Variable view, für die aktuelle Editoransicht. Im Folgenden finden Sie eine Liste aller verfügbaren Funktionen für eine Ansicht.

Cursor view.cursorPosition()

	Gibt die aktuelle Position des Cursors in der Ansicht zurück.

void view.setCursorPosition(int zeile, int spalte);
void view.setCursorPosition(Cursor cursor);

	Setzt die aktuelle Position des Cursors entweder auf (zeile, spalte) oder auf den angegebenen Cursor.

Cursor view.virtualCursorPosition();

	Gibt die virtuelle Cursor-Position zurück, dabei wird jeder Tabulator mit der Anzahl der Leerzeichen entsprechend der aktuellen Tabulatorweite berechnet.

void view.setVirtualCursorPosition(int zeile, int spalte);
void view.setVirtualCursorPosition(Cursor cursor);

	Setzt die aktuelle Position des virtuellen Cursors entweder auf (zeile, spalte) oder auf den angegebenen Cursor.

String view.selectedText();

	Gibt den ausgewählten Text zurück. Ist kein Text ausgewählt, wird eine leere Zeichenkette zurückgegeben.

bool view.hasSelection();

	Gibt true zurück, wenn die Ansicht ausgewählten Text enthält, sonst false.

Range view.selection();

	Gibt den ausgewählten Textbereich zurück. Der zurückgegebene Bereich ist ungültig, wenn kein Text ausgewählt ist.

void view.setSelection(Range range);

	Setzt den ausgewählten Text zum angegebenen Bereich.

void view.removeSelectedText();

	Entfernt den ausgewählten Text. Wenn in der Ansicht kein Text ausgewählt ist, passiert nichts.

void view.selectAll();

	Wählt den gesamten Text im Dokument aus.

void view.clearSelection();

	Löscht die Textauswahl, aber nicht den Text selbst.

Die Programmschnittstelle zum Dokument
Für jedes ausgeführte Skript gibt es eine globale Variable document, die das aktuelle Dokument verweist. Im Folgenden finden Sie eine Liste aller verfügbaren Funktionen für ein Dokument.

String document.fileName();

	Gibt den Dateinamen des Dokuments zurück oder eine leere Zeichenkette für nicht gespeicherte Textpuffer.

String document.url();

	Gibt die vollständige URL des Dokuments zurück oder eine leere Zeichenkette für nicht gespeicherte Textpuffer.

String document.mimeType();

	Gibt den Mimetyp des Dokuments zurück oder application/octet-stream, wenn kein passender Mimetyp gefunden wurde.

String document.encoding();

	Gibt die aktuell verwendete Kodierung zum Speichern der Datei zurück.

String document.highlightingMode();

	Gibt den globalen Hervorhebungsmodus für das gesamte Dokument zurück.

String document.highlightingModeAt(Cursor pos);

	Gibt den Hervorhebungsmodus an der angegebenen Cursor-Position im Dokument zurück.

Array document.embeddedHighlightingModes();

	Gibt ein Feld von Hervorhebungsmodi zurück, die in diesem Dokument eingebettet sind..

bool document.isModified();

	Gibt true zurück, wenn das Dokument ungespeicherte Änderungen enthält, sonst false.

String document.text();

	Gibt den gesamten Inhalt des Dokuments in einer einzigen Zeichenkette zurück. Zeilenumbrüche werden mit dem zugehörigen Zeichen \n markiert.

String document.text(int vonZeile, int vonSpalte, int bisZeile, int bisSpalte);
String document.text(Cursor von, Cursor bis);
String document.text(Range range);

	Gibt den Text im angegebenen Bereich zurück. Es wird empfohlen, die Cursor- und Bereichsbasierte Version zu benutzen, dadurch ist der Quelltext besser lesbar.

String document.line(int zeile);

	Gibt die angegebene Textzeile als Zeichenkette zurück. Die Zeichenkette ist leer, wenn die angeforderte Zeile außerhalb des Bereichs liegt.

String document.wordAt(int zeile, int spalte);
String document.wordAt(Cursor cursor);

	Gibt das Wort an der angegebenen Cursor-Position zurück.

Range document.wordRangeAt(int zeile, int spalte);
Range document.wordRangeAt(Cursor cursor);

	Gibt den Bereich des Wortes an der angegebenen Cursor-Position zurück. Der zurückgegebene Bereich ist ungültig (siehe Range.isValid()), wenn die Textposition nach dem Zeilenende liegt. Befindet sich an der angegebenen Cursor-Position kein Wort, wird ein leere Bereich zurückgegeben.
Seit: 4.9

String document.charAt(int zeile, int spalte);
String document.charAt(Cursor cursor);

	Gibt das Zeichen an der aktuellen Cursor-Position zurück.

String document.firstChar(int zeile);

	Gibt in der angegebenen zeile das erste Zeichen zurück, das kein Leerraumzeichen ist. Wenn die Zeile leer ist oder nur Leerraumzeichen enthält, wird eine leere Zeichenkette zurückgegeben.

String document.lastChar(int zeile);

	Gibt in der angegebenen zeile das letzten Zeichen zurück, das kein Leerraumzeichen ist. Wenn die Zeile leer ist oder nur Leerraumzeichen enthält, wird eine leere Zeichenkette zurückgegeben.

bool document.isSpace(int zeile, int spalte);
bool document.isSpace(Cursor cursor);

	Gibt true zurück, wenn das Zeichen an der angegebenen Cursor-Position ein Leerraumzeichen ist, sonst false.

bool document.matchesAt(int line, int column, String text);
bool document.matchesAt(Cursor cursor, String text);

	Gibt true zurück, wenn der angegebene text mit der zugehörigen Cursor-Position übereinstimmt, sonst false.

bool document.startsWith(int zeile, String text, bool skipWhiteSpaces);

	Gibt true zurück, wenn die Zeile mit text beginnt, sonst false. Das Argument skipWhiteSpaces bestimmt, ob führende Leerraumzeichen ignoriert werden.

bool document.endsWith(int zeile, String text, bool skipWhiteSpaces);

	Gibt true zurück, wenn die Zeile mit text endet, sonst false. Das Argument skipWhiteSpaces bestimmt, ob angehängte Leerraumzeichen ignoriert werden.

bool document.setText(String text);

	Setzt den Text für das gesamte Dokument.

bool document.clear();

	Löscht den gesamten Text im Dokument.

bool document.truncate(int zeile, int spalte);
bool document.truncate(Cursor cursor);

	Schneidet die angegebene Zeile an der Spalte oder an der Cursor-Position ab. War das erfolgreich, wird true zurückgegeben, oder false, wenn die angegeben Zeile nicht im Bereich des Dokuments liegt.

bool document.insertText(int zeile, int spalte, String text);
bool document.insertText(Cursor cursor, String text);

	Fügt den text an der angegebenen Cursor-Position ein. War das erfolgreich, wird true zurückgegeben, oder false, wenn das Dokument im Nur-Lesen-Modus geöffnet wurde.

bool document.removeText(int vonZeile, int vonSpalte, int bisZeile, int bisSpalte);
bool document.removeText(Cursor von, Cursor bis);
bool document.removeText(Range bereich);

	Löscht den Text im angegebenen Bereich. War das erfolgreich, wird true zurückgegeben, oder false, wenn das Dokument im Nur-Lesen-Modus geöffnet wurde.

bool document.insertLine(int zeile, String text);

	Fügt Text in einer angegebenen Zeile ein. War das erfolgreich, wird true zurückgegeben, oder false, wenn das Dokument im Nur-Lesen-Modus geöffnet wurde oder die Zeile nicht mehr im Bereich des Dokuments liegt.

bool document.removeLine(int zeile);

	Löscht die angegebene Textzeile. War das erfolgreich, wird true zurückgegeben, oder false, wenn das Dokument im Nur-Lesen-Modus geöffnet wurde oder die Zeile nicht mehr im Bereich des Dokuments liegt.

bool document.wrapLine(int zeile, int spalte);
bool document.wrapLine(Cursor cursor);

	Bricht die Zeile an der angegebenen Cursor-Position um. War das erfolgreich, wird true zurückgegeben, ansonsten false, ⪚ wenn die angegeben Zeilennummer < 0 ist.
Seit: 4.9

void document.joinLines(int startZeile, int endZeile);

	Verbindet die Zeilen von startZeile bis endZeile. Zwei aufeinanderfolgende Textzeilen werden immer mit einem einzelnen Leerzeichen getrennt.

int document.lines();

	Gibt die Zeilenanzahl des Dokuments zurück.

bool document.isLineModified(int zeile);

	Gibt true zurück, wenn die zeile noch nicht gespeicherte Daten enthält.
Seit: 5.0

bool document.isLineSaved(int zeile);

	Gibt true zurück, wenn zeile geändert und das Dokument gespeichert wurde. Folglich enthält die aktuelle Zeile keine ungesicherten Daten.
Seit: 5.0

bool document.isLineTouched(int zeile);

	Gibt true zurück, wenn zeile ungesicherte Daten enthält oder geändert wurde.
Seit: 5.0

void document.findTouchedLine(int startZeile, bool nach unten);

	Suche nach der nächsten Zeile, die ungesicherte Daten enthält oder geändert wurde. Die Suche wird in der startZeile begonnen und in der Richtung durchgeführt, die in nach unten angegeben ist.
Seit: 5.0

int document.length();

	Gibt die Anzahl der Zeichen des Dokuments zurück.

int document.lineLength(int zeile);

	Gibt die Länge der zeile zurück.

void document.editBegin();

	Beginnt eine Bearbeitungsgruppe für die Gruppierung von Rückgängig/Wiederherstellen. Achten Sie darauf, editEnd() immer genauso oft wie editBegin() zu benutzen. Der Aufruf von editBegin() verwendet intern einen Referenzzähler, diese Aufrufe können geschachtelt werden.

void document.editEnd();

	Beendet eine Bearbeitungsgruppe. Der letzte Aufruf von editEnd() ( der Aufruf zum ersten Aufruf von editBegin()) beendet den Bearbeitungsschritt.

int document.firstColumn(int zeile);

	Gibt die erste Spalte in der angegebenen zeile zurück, die kein Leerraumzeichen enthält. Besteht die Zeile nur aus Leerraumzeichen, wird -1 zurückgegeben.

int document.lastColumn(int zeile);

	Gibt die letzte Spalte in der angegebenen zeile zurück, die kein Leerraumzeichen enthält. Besteht die Zeile nur aus Leerraumzeichen, wird -1 zurückgegeben.

int document.prevNonSpaceColumn(int zeile, int spalte);
int document.prevNonSpaceColumn(Cursor cursor);

	Gibt die Spalte zurück, die keine Leerraumzeichen enthält. Die Suche beginnt an der angegebenen Cursor-Position und erfolgt dabei rückwärts.

int document.nextNonSpaceColumn(int zeile, int spalte);
int document.nextNonSpaceColumn(Cursor cursor);

	Gibt die Spalte zurück, die keine Leerraumzeichen enthält. Die Suche beginnt an der angegebenen Cursor-Position und erfolgt dabei vorwärts.

int document.prevNonEmptyLine(int zeile);

	Gibt die nächste nicht leere Zeile zurück, die keine Leerraumzeichen enthält. Die Suche erfolgt dabei rückwärts.

int document.nextNonEmptyLine(int zeile);

	Gibt die nächste nicht leere Zeile zurück, die keine Leerraumzeichen enthält. Die Suche erfolgt dabei vorwärts.

bool document.isInWord(String zeichen, int attribut);

	Gibt true zurück, wenn das angegebene zeichen mit den angegebenen attribut Teil eines Wortes sein kann, sonst false.

bool document.canBreakAt(String zeichen, int attribut);

	Gibt true zurück, wenn die Zeile an dem angegebenen zeichen mit den angegebenen attribut umgebrochen werden kann, sonst false.

bool document.canComment(int startAttribut, int endAttribut);

	Gibt true zurück, wenn ein mit dem angegebenen Attribut beginnender und endender Bereich auskommentiert werden kann, sonst false.

String document.commentMarker(int attribut);

	Gibt das Kommentarzeichen für einzeilige Kommentare für ein angegebenes attribut zurück.

String document.commentStart(int attribut);

	Gibt das Kommentarzeichen für den Beginn von mehrzeiligen Kommentaren für ein angegebenes attribut zurück.

String document.commentEnd(int attribut);

	Gibt das Kommentarzeichen für das Ende von mehrzeiligen Kommentaren für ein angegebenes attribut zurück.

Range document.documentRange();

	Gibt einen Bereich zurück, der dass gesamte Dokument umfasst.

Cursor documentEnd();

	Gibt einen Cursor zurück, der an der letzten Spalte in der letzten Zeile des Dokuments positioniert ist.

bool isValidTextPosition(int zeile, int spalte);
bool isValidTextPosition(Cursor cursor);

	Gibt true zurück, wenn der Cursor an eine gültigen Position innerhalb eines Textes positioniert ist. Eine Textposition ist nur dann gültig, wenn der Cursor am Anfang, in der Mitte oder am Ende einer gültigen Zeile positioniert ist. Weiterhin ist eine Textposition ungültig, wenn diese in einem Unicode-Surrogat liegt.
Seit: 5.0

int document.attribute(int zeile, int spalte);
int document.attribute(Cursor cursor);

	Gibt das Attribut an der aktuellen Cursor-Position zurück.

bool document.isAttribute(int zeile, int spalte, int attribut);
bool document.isAttribute(Cursor cursor, int attribut);

	Gibt true zurück, wenn das Attribut an der angegebenen Cursor-Position gleich attribut ist, sonst false.

String document.attributeName(int zeile, int spalte);
String document.attributeName(Cursor cursor);

	Gibt den Attributnamen als lesbaren Text zurück. Dies entspricht dem Namen itemData in den Syntaxhervorhebungs-Dateien.

bool document.isAttributeName(int zeile, int spalte, String name);
bool document.isAttributeName(Cursor cursor, String name);

	Gibt true zurück, wenn der Attributname an der angegebenen Cursor-Position gleich name ist, sonst false.

String document.variable(String key);

	Gibt den Wert der angefragten Dokumentvariablen key zurück. Existiert diese Variable nicht, wird eine leere Zeichenkette zurückgegeben.

void document.setVariable(String key, String value);

	Setzt den Wert der angefragten Dokumentvariablen key.
Siehe auch: Kate-Dokumentvariable
Seit: 4.8

int document.firstVirtualColumn(int zeile);

	Gibt in der angegebenen Zeile die virtuelle Spalte des ersten Zeichens zurück, das kein Leerraumzeichen ist, oder -1, wenn die Zeile leer ist oder nur Leerraumzeichen enthält.

int document.lastVirtualColumn(int zeile);

	Gibt in der angegebenen Zeile die virtuelle Spalte des letzten Zeichens zurück, das kein Leerraumzeichen ist, oder -1, wenn die Zeile leer ist oder nur Leerraumzeichen enthält.

int document.toVirtualColumn(int zeile, int spalte);
int document.toVirtualColumn(Cursor cursor);
Cursor document.toVirtualCursor(Cursor cursor);

	Wandelt die angegebene reale Cursor-Position in eine virtuelle Cursor-Position um und gibt entweder einen „int“-Wert oder ein Cursor-Objekt zurück.

int document.fromVirtualColumn(int zeile, int virtuelleSpalte);
int document.fromVirtualColumn(Cursor virtuellerCursor);
Cursor document.fromVirtualCursor(Cursor virtuellerCursor);

	Wandelt die angegebene virtuelle Cursor-Position in eine reale Cursor-Position um und gibt entweder einen „int“-Wert oder ein Cursor-Objekt zurück.

Cursor document.anchor(int zeile, int spalte, Char zeichen);
Cursor document.anchor(Cursor cursor, Char zeichen);

	Sucht rückwärts nach dem angegebenen Zeichen und beginnt dabei an dem angegebenen Cursor. Wenn zum Beispiel „(“ als Zeichen ist, gibt diese Funktion die Position der öffnenden Klammer „(“. Dabei wird das Vorkommen mitgezählt, andere Klammern „(...)“ werden ignoriert.

Cursor document.rfind(int zeile, int spalte, String text, int attribut = -1);
Cursor document.rfind(Cursor cursor, String text, int attribut = -1);

	Sucht rückwärts nach dem angegeben Text mit dem passenden attribut. Ein Attribut mit dem Wert -1wird dabei ignoriert. Es wird ein ungültiger Cursor zurückgegeben, wenn der Text nicht gefunden wurde.

int document.defStyleNum(int zeile, int spalte);
int document.defStyleNum(Cursor cursor);

	Gibt den Standardstil zurück, der an der angegebenen Cursor-Position benutzt wird.

bool document.isCode(int zeile, int spalte);
bool document.isCode(Cursor cursor);

	Gibt true zurück, wenn das Attribut an der angegeben Cursor-Position nicht den folgenden Stilen entspricht: dsComment, dsString, dsRegionMarker, dsChar, dsOthers.

bool document.isComment(int zeile, int spalte);
bool document.isComment(Cursor cursor);

	Gibt true zurück, wenn das Attribut des Zeichens an der Cursor-Position dsComment ist, sonst false.

bool document.isString(int zeile, int spalte);
bool document.isString(Cursor cursor);

	Gibt true zurück, wenn das Attribut des Zeichens an der Cursor-Position dsString ist, sonst false.

bool document.isRegionMarker(int zeile, int spalte);
bool document.isRegionMarker(Cursor cursor);

	Gibt true zurück, wenn das Attribut des Zeichens an der Cursor-Position dsRegionMarker ist, sonst false.

bool document.isChar(int zeile, int spalte);
bool document.isChar(Cursor cursor);

	Gibt true zurück, wenn das Attribut des Zeichens an der Cursor-Position dsChar ist, sonst false.

bool document.isOthers(int zeile, int spalte);
bool document.isOthers(Cursor cursor);

	Gibt true zurück, wenn das Attribut des Zeichens an der Cursor-Position dsOthers ist, sonst false.