Hervorhebung passender Tags / Blöcke¶
Steht der Cursor auf — oder innerhalb von — einem umschließenden Tag oder
Block, rahmt der Editor Anfang und Ende dieses Paars ein. So sehen Sie
auf einen Blick, wo ein <div>…</div>, ein if…fi oder ein #if…#endif
beginnt und endet.
Dies ist getrennt von der Einzelzeichen-Klammerhervorhebung (dem
() [] {}-Glyphenpaar): Diese funktioniert unverändert für sich weiter.
Beide können gleichzeitig erscheinen — Sie können also in einem { }-Block
und einem umschließenden if…fi stehen und beides sehen.
Verwendung¶
Setzen Sie den Cursor auf einen Tag-Namen (oder irgendwo innerhalb von
<…>) oder auf ein Block-Schlüsselwort — das öffnende, das schließende
und alle „mittleren“ Schlüsselwörter leuchten gemeinsam auf. Steht der Cursor
innerhalb eines Blocks (nicht auf einem Schlüsselwort), wird das nächste
umschließende Paar hervorgehoben. Reiner Inhalt zwischen Tags hebt nichts
hervor.
Die Hervorhebung folgt dem Cursor und braucht kein Tastenkürzel.
Ein- und Ausschalten¶
Ansicht ▸ Übereinstimmendes Tag/Block hervorheben — standardmäßig an; die Wahl wird zwischen Sitzungen gemerkt.
Die zwei Arten von Paaren¶
Tags (Markup)¶
In HTML und XML rahmt der Cursor auf einem Start- oder End-Tag den
Elementnamen in beiden Tags ein. Die Verschachtelung gleichnamiger Tags
wird über die Tiefe aufgelöst, selbstschließende Tags (<br/>) haben keinen
Partner, und ein > innerhalb eines Attributwerts in Anführungszeichen
beendet das Tag nie vorzeitig. Ein < als Text oder Vergleichsoperator löst
die Hervorhebung nie aus — der Abgleich orientiert sich an der
Tag-Auszeichnung des Lexers, nicht an rohen spitzen Klammern.
Block-Schlüsselwörter (Sprachen)¶
Ganzwort-Schlüsselwortpaare, mit korrekter Verschachtelung gezählt; alles in Kommentaren und Zeichenketten wird übersprungen. Von Haus aus enthalten:
| Sprache | Paare |
|---|---|
| Shell (bash) | if … fi (mit elif/else), do … done, case … esac |
| C / C++ | Präprozessor #if / #ifdef / #ifndef … #endif (mit #elif/#else) |
| SQL | begin … end, case … end (unabhängig von Groß-/Kleinschreibung) |
C/C++ nutzt dies nur für den Präprozessor
Gewöhnliche { }-Blöcke in C/C++ übernimmt die
Einzelzeichen-Klammerhervorhebung, nicht diese Funktion — eine .cpp ohne
#if…#endif-Bedingungen zeigt hier also absichtlich nichts an.
Paare für eine weitere Sprache hinzufügen¶
Paare sind Daten, kein Code: Sie stehen in der Colorizer-JSON-Datei der
Sprache, lassen sich also für jede Sprache ohne Neubau ergänzen. Fügen Sie in
der Colorizer-Datei "tagMatch": true für Markup hinzu, oder eine
"blockPairs"-Liste für Schlüsselwortpaare, z. B.:
"blockPairs": [
{ "open": "if", "middle": ["elif", "else"], "close": "fi" },
{ "open": "do", "close": "done" }
],
"pairsCaseSensitive": false
Eine Colorizer-Datei des Benutzers überlagert die mitgelieferte — Sie können die eingebauten Definitionen also übersteuern oder erweitern. Wo Colorizer-Dateien liegen, beschreibt Syntaxhervorhebung.
Hinweise und Grenzen¶
- Der Abgleich durchsucht ein Fenster um den Cursor; ein Paar, dessen Enden sehr weit auseinander liegen (grob tausend Zeilen oder mehr — z. B. ein Include-Guard über die ganze Datei), wird eventuell nicht gefunden.
- Der Abgleich verlangt strikte Verschachtelung: Ein einziges ungeschlossenes inneres Tag bzw. ein solcher Block verhindert, dass die Tags/Blöcke darum herum passen, bis es geschlossen ist.
Verwandte Themen¶
- Auto-Paarung & Einrückung — automatisches Schließen von Klammern und Anführungszeichen beim Tippen (eine andere Funktion).
- Syntaxhervorhebung — die Colorizer-Dateien, die auch diese Paare deklarieren.