Saltar a contenido

Resaltado de etiqueta / bloque coincidente

Cuando el cursor está sobre —o dentro de— una etiqueta o un bloque que lo envuelve, el editor enmarca el principio y el final de esa pareja, de modo que veas de un vistazo dónde empieza y dónde acaba un <div>…</div>, un if…fi o un #if…#endif.

Esto es independiente de la coincidencia de un solo carácter para las llaves (el glifo () [] {}): esa sigue funcionando exactamente igual que antes, por su cuenta. Las dos pueden mostrarse a la vez, así que puedes estar dentro de un bloque { } y de un if…fi que lo envuelve y ver ambas.

Cómo usarlo

Coloca el cursor sobre el nombre de una etiqueta (o en cualquier punto dentro de <…>), o sobre una palabra clave de bloque: la apertura, el cierre y cualquier palabra clave «intermedia» se iluminan a la vez. Colocar el cursor dentro de un bloque (no sobre una palabra clave) resalta la pareja envolvente más cercana. El contenido normal entre etiquetas no resalta nada.

Se actualiza a medida que el cursor se mueve y no necesita ningún atajo.

Activarlo y desactivarlo

Ver ▸ Resaltar la etiqueta o el bloque coincidente — activado de forma predeterminada, y la elección se recuerda entre sesiones.

Los dos tipos de pareja

Etiquetas (marcado)

En HTML y XML, con el cursor en una etiqueta de apertura o de cierre se enmarca el nombre del elemento en ambas etiquetas. El anidamiento de etiquetas con el mismo nombre se resuelve por profundidad, las etiquetas autocerradas (<br/>) no tienen pareja y un > dentro del valor entrecomillado de un atributo nunca termina la etiqueta antes de tiempo. Un < usado como texto o como operador de comparación nunca lo dispara: la coincidencia se basa en el estilo de etiqueta del analizador léxico, no en los signos de menor/mayor en bruto.

Palabras clave de bloque (lenguajes)

Parejas de palabras clave completas, contadas con anidamiento correcto y saltándose todo lo que haya dentro de comentarios y cadenas. De serie vienen:

Lenguaje Parejas
Shell (bash) if … fi (con elif/else), do … done, case … esac
C / C++ preprocesador #if / #ifdef / #ifndef … #endif (con #elif/#else)
SQL begin … end, case … end (sin distinguir mayúsculas)

C/C++ lo usa solo para el preprocesador

Los bloques { } normales de C/C++ los gestiona la coincidencia de llaves de un solo carácter, no esta función, así que un .cpp sin condicionales #if…#endif no muestra nada aquí, por diseño.

Añadir parejas para otro lenguaje

Las parejas son datos, no código: viven en el JSON del colorizador del lenguaje, así que puedes añadirlas para cualquier lenguaje sin recompilar. En el archivo de colorizador añade "tagMatch": true para el marcado, o una lista "blockPairs" para las parejas de palabras clave, por ejemplo:

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

Un archivo de colorizador del usuario eclipsa al que viene de serie, así que puedes anular o ampliar los integrados. Consulta Coloreado de sintaxis para saber dónde viven los archivos de colorizador.

Notas y límites

  • La coincidencia analiza una ventana alrededor del cursor, así que una pareja cuyos extremos estén muy lejos entre sí (del orden de mil líneas o más; por ejemplo, una guarda de inclusión de todo un archivo) puede no encontrarse.
  • La coincidencia usa anidamiento estricto: una sola etiqueta o bloque interior sin cerrar impide que las etiquetas o bloques que lo rodean coincidan hasta que se cierre.

Relacionado