Таблица функций синтаксиса
В этом разделе мы описываем функции для создания, доступа и изменения таблиц синтаксиса.
- Функция: make-syntax-table &optional table
-
Эта функция создает новую таблицу синтаксиса. Если table не
nil, родительской таблицей для новой таблицы синтаксиса является table; в противном случае, родительской таблицей является стандартная таблица синтаксиса.Во всех новых символах в новой таблице синтаксиса изначально задан синтаксический класс «наследовать» (‘@’), т.е. их синтаксис наследуется от родительской таблицы (см. Таблица классов синтаксиса).
- Функция: copy-syntax-table &optional table
Эта функция создает копию table и возвращает её. Если table опущена или
nil, она возвращает копию стандартной таблицы синтаксиса. В противном случае, если table не является таблицей синтаксиса, генерируется ошибка.
- Команда: modify-syntax-entry char syntax-descriptor &optional table
-
Эта функция устанавливает запись синтаксиса для char в соответствии с syntax-descriptor. char должен быть символом или списком в виде
(min . max); в последнем случае функция устанавливает записи синтаксиса для всех символов в диапазоне между min и max, включительно.Синтаксис изменяется только для table, по умолчанию — для текущей таблицы синтаксиса буфера, и не для других таблиц синтаксиса.
Аргумент syntax-descriptor — это синтаксический дескриптор, т.е. строка, первый символ которой — обозначение класса синтаксиса, а второй и последующие символы — необязательно, указывающие совпадающий символ и флаги синтаксиса. См. Описание синтаксических дескрипторов. Если syntax-descriptor не является допустимым синтаксическим дескриптором, генерируется ошибка.
Эта функция всегда возвращает
nil. Старая информация о синтаксисе в таблице для этого символа отбрасывается.Examples:;; Put the space character in class whitespace. (modify-syntax-entry ?\s " ") ⇒ nil;; Make ‘$’ an open parenthesis character, ;; with ‘^’ as its matching close. (modify-syntax-entry ?$ "(^") ⇒ nil
;; Make ‘^’ a close parenthesis character, ;; with ‘$’ as its matching open. (modify-syntax-entry ?^ ")$") ⇒ nil
;; Make ‘/’ a punctuation character, ;; the first character of a start-comment sequence, ;; and the second character of an end-comment sequence. ;; This is used in C mode. (modify-syntax-entry ?/ ". 14") ⇒ nil
- Функция: char-syntax character
-
Эта функция возвращает класс синтаксиса character, представленный его символом-обозначением (см. Таблица классов синтаксиса). Возвращается *только* класс, а не соответствующий символ или флаги синтаксиса.
Следующие примеры относятся к режиму C. (Мы используем
stringдля лучшего понимания символа, возвращаемогоchar-syntax.);; Space characters have whitespace syntax class. (string (char-syntax ?\s)) ⇒ " ";; Forward slash characters have punctuation syntax. ;; Note that this
char-syntaxcall does not reveal ;; that it is also part of comment-start and -end sequences. (string (char-syntax ?/)) ⇒ ".";; Open parenthesis characters have open parenthesis syntax. ;; Note that this
char-syntaxcall does not reveal that ;; it has a matching character, ‘)’. (string (char-syntax ?\()) ⇒ "("
- Функция: set-syntax-table table
Эта функция делает table таблицей синтаксиса для текущего буфера. Возвращает table.
- Функция: syntax-table
Эта функция возвращает текущую таблицу синтаксиса, которая является таблицей для текущего буфера.
- Команда: describe-syntax &optional buffer
Эта команда отображает содержимое таблицы синтаксиса buffer (по умолчанию, текущий буфер) в буфере справки.
- Макрос: with-syntax-table table body…
-
Этот макрос выполняет body с использованием table в качестве текущей таблицы синтаксиса. Возвращает значение последнего выражения в body после восстановления старой текущей таблицы синтаксиса.
Поскольку каждый буфер имеет свою текущую таблицу синтаксиса, мы должны уточнить:
with-syntax-tableвременно изменяет текущую таблицу синтаксиса того буфера, который является текущим в момент начала выполнения макроса. Другие буферы не затрагиваются.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-Table-Functions.html