Están documentados en el manual, pero no utiliza la palabra "valla". Los caracteres !
y |
se enumeran como "delimitadores de comentarios genéricos" y "delimitadores de cadena genéricos" en la referencia de clase de sintaxis .
Estos personajes fueron introducidos en Emacs 20.1. Citando el archivo de NOTICIAS:
Hay dos nuevos códigos de sintaxis, !
y |
(valores numéricos 14 y 15). Un personaje con un código !
inicia un comentario que termina solo con otro personaje con el mismo código (a menos que se cite). Un carácter con un código |
comienza una cadena que termina solo con otro carácter con el mismo código (a menos que se indique).
Estos códigos están destinados principalmente para su uso como valores de la propiedad de texto 'syntax-table'.
No puedo encontrar ningún uso !
en los modos estándar de Emacs. Hay varios usos de |
. El caso de uso previsto son los idiomas que tienen literales que usan delimitadores distintos de los delimitadores de cadena habituales, generalmente establecidos a través de superposiciones agregadas por el bloqueo de fuente en función del contexto. Por ejemplo, en perl, se puede escribir una coincidencia de expresión regular /REGEXP/
, m/REGEXP/
o m~REGEXP~
o m[REGEXP]
o cualquier número de variaciones. Una cadena literal se puede escribir 'STRING'
, sino también q'STRING'
, q~STRING~
, q[STRING]
, etc. Cuando el bloqueo de fuente reconoce este tipo de construcciones, que establece los caracteres de comillas ( /
/ /
o '
/ '
o ~
/ ~
o [
/]
en los ejemplos que di) a la sintaxis genérica delimitador de cadena. Incluso si está presente un delimitador de cadena habitual (por ejemplo q[foo"bar]
), ese delimitador se considerará una parte ordinaria de la cadena, no terminará la cadena.
Admito que no veo un beneficio definitivo; por ejemplo, el modo CPerl hace algunas cosas muy elegantes y no utiliza esta función.
M-x report-emacs-bug
.