Они задокументированы в руководстве, но в нем не используется слово «забор». Символы !и |перечислены в качестве «общих разделителей комментариев» и «общих разделителей строк» в ссылке на синтаксический класс .
Эти символы были введены в 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.