La cadena de documentación de modify-syntax-entrydice lo siguiente:
(modify-syntax-entry CHAR NEWENTRY &optional SYNTAX-TABLE)
...
The first character of NEWENTRY should be one of the following:
...
/ character-quote. @ inherit from parent table.
| generic string fence. ! generic comment fence.
¿Qué es una cerca y cuándo usaría una? No puedo encontrar nada en el manual de información.
syntax-highlighting
syntax-table
Wilfred Hughes
fuente
fuente

M-x report-emacs-bug."solo puede ser terminado por otro". Sin embargo, cuandosyntax-propertizese utiliza una función personalizada para reconocer una cadena, esto no es posible. En su lugar, puede marcar los puntos finales de cadenas y comentarios utilizando|y!, respectivamente. (La documentación dice que estas clases de sintaxis deben usarse principalmente cuando se usa lasyntax-tablepropiedad de texto, que es lo que establece unasyntax-propertizefunción personalizada .)Respuestas:
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:
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/om~REGEXP~om[REGEXP]o cualquier número de variaciones. Una cadena literal se puede escribir'STRING', sino tambiénq'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 ejemploq[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.
fuente
!para resaltar=begin...=endbloques.Tomado de la sintaxis.h:
Suponiendo que los códigos de sintaxis y las clases de sintaxis de expresiones regulares se refieren a la misma cosa, no tengo uso de manchado
|encc-awk.elque utiliza"\\s|"para resaltar delimitadores de cadenas desequilibradas.fuente
python-syntax-stringify,ruby-syntax-propertize-percent-literaly en otros . Sin embargo, no veo cómo difiere deSstringaquí.