Spec-Zone.ru › Elisp

Таблица функций синтаксиса

В этом разделе мы описываем функции для создания, доступа и изменения таблиц синтаксиса.

Функция: 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-syntax call 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-syntax call 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API