Zum Inhalt

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