Они задокументированы в руководстве, но в нем не используется слово «забор». Символы !
и |
перечислены в качестве «общих разделителей комментариев» и «общих разделителей строк» в ссылке на синтаксический класс .
Эти символы были введены в Emacs 20.1. Цитирование файла NEWS:
Появились два новых синтаксических кода !
и |
(числовые значения 14 и 15). Символ с кодом !
начинает комментарий, который заканчивается только другим символом с тем же кодом (если не указано в кавычках). Символ с кодом |
начинает строку, которая заканчивается только другим символом с тем же кодом (если не указано в кавычках).
Эти коды в основном предназначены для использования в качестве значений текстового свойства `синтаксическая таблица '.
Я не могу найти применение !
в стандартных режимах Emacs. Есть несколько вариантов использования |
. Предполагаемый вариант использования - это языки, в которых есть литералы, в которых используются разделители, отличные от обычных разделителей строк, обычно устанавливаемые с помощью наложений, добавляемых блокировкой шрифтов на основе контекста. Например, в perl может быть записано совпадение с регулярным выражением /REGEXP/
, или m/REGEXP/
и / m~REGEXP~
или m[REGEXP]
или любое количество вариантов. Буквальная строка может быть написана , 'STRING'
но и q'STRING'
, q~STRING~
, q[STRING]
и т.д. Когда замок шрифт распознает такие конструкции, он устанавливает символы кавычек ( /
/ /
или '
/ '
или ~
/ ~
или [
/]
в приведенных мной примерах) к синтаксису общего строкового разделителя. Даже если присутствует обычный разделитель строк (например q[foo"bar]
), этот разделитель будет считаться обычной частью строки, он не завершит строку.
Я признаю, что не вижу определенной выгоды - например, режим CPerl делает некоторые очень причудливые вещи и не использует эту возможность.
M-x report-emacs-bug
.