Ga naar inhoud

Bijbehorende tag / blok markeren

Wanneer de cursor op — of binnen — een omsluitende tag of een omsluitend blok staat, omkadert de editor het begin en het einde van dat paar, zodat u in één oogopslag ziet waar een <div>…</div>, een if…fi of een #if…#endif begint en eindigt.

Dit staat los van de overeenkomst van een enkel haakje (het teken () [] {}): die werkt nog precies zoals voorheen, op zichzelf. Beide kunnen tegelijk getoond worden, dus u kunt binnen een blok { } en een omsluitende if…fi zitten en beide zien.

Gebruik

Zet de cursor op een tagnaam (of ergens binnen <…>), of op een bloktrefwoord — de opener, de sluiter en eventuele «tussenliggende» trefwoorden lichten samen op. De cursor binnen een blok plaatsen (niet op een trefwoord) markeert het dichtstbijzijnde omsluitende paar. Gewone inhoud tussen tags markeert niets.

Het werkt bij wanneer de cursor beweegt en heeft geen sneltoets nodig.

Aan- en uitzetten

Beeld ▸ Overeenkomende tag/blok markeren — standaard aan, en de keuze wordt tussen sessies onthouden.

De twee soorten paren

Tags (opmaak)

In HTML en XML omkadert de cursor op een begin- of eindtag de elementnaam in beide tags. Nesting van gelijknamige tags wordt op diepte opgelost, tags die zichzelf sluiten (<br/>) hebben geen partner, en een > binnen een aangehaalde attribuutwaarde beëindigt de tag nooit voortijdig. Een < die als tekst of als vergelijkingsoperator wordt gebruikt zet het nooit in gang — de overeenkomst gaat uit van de tag-stijl van de lexer, niet van kale punthaken.

Bloktrefwoorden (talen)

Paren van hele trefwoorden, geteld met correcte nesting en met overslaan van alles binnen commentaar en tekenreeksen. Standaard meegeleverd:

Taal Paren
Shell (bash) if … fi (met elif/else), do … done, case … esac
C / C++ preprocessor #if / #ifdef / #ifndef … #endif (met #elif/#else)
SQL begin … end, case … end (niet hoofdlettergevoelig)

C/C++ gebruikt dit alleen voor de preprocessor

Gewone { }-blokken in C/C++ worden door de overeenkomst van een enkel haakje afgehandeld, niet door deze functie — een .cpp zonder #if…#endif-voorwaarden toont hier dus niets, met opzet.

Paren voor een andere taal toevoegen

Paren zijn gegevens, geen code: ze staan in het colorizer-JSON van de taal, dus u kunt ze voor elke taal toevoegen zonder opnieuw te compileren. Voeg in het colorizer-bestand "tagMatch": true toe voor opmaak, of een lijst "blockPairs" voor paren van trefwoorden, bijvoorbeeld:

"blockPairs": [
    { "open": "if", "middle": ["elif", "else"], "close": "fi" },
    { "open": "do", "close": "done" }
],
"pairsCaseSensitive": false

Een colorizer-bestand van de gebruiker overschaduwt het meegeleverde bestand, zodat u de ingebouwde paren kunt overschrijven of uitbreiden. Zie Syntaxiskleuring voor de plek waar colorizer-bestanden staan.

Opmerkingen en grenzen

  • Het zoeken naar overeenkomsten doorloopt een venster rond de cursor, dus een paar waarvan de uiteinden heel ver uit elkaar liggen (ruwweg duizend regels of meer — bijvoorbeeld een include-waarborg voor een heel bestand) wordt mogelijk niet gevonden.
  • Het zoeken gebruikt strikte nesting: één enkele niet-gesloten tag of blok binnenin verhindert dat de tags of blokken eromheen overeenkomen totdat die gesloten is.

Verwant