Spec-Zone.ru › Elisp

Переопределение переменных вывода

В предыдущем разделе (см. Переменные, влияющие на вывод) перечислены многочисленные переменные, управляющие тем, как принтер Emacs Lisp форматирует данные для вывода. Как правило, пользователи могут изменять эти переменные, но иногда требуется вывести данные в формате по умолчанию или иным способом переопределить настройки пользователя. Например, если вы сохраняете данные Emacs Lisp в файл, не следует допускать, чтобы эти данные сокращались из-за настройки print-length.

Поэтому функции prin1 и prin1-to-string имеют необязательный аргумент overrides. Его значением может быть t (это означает, что все переменные печати следует сбросить до значений по умолчанию) или список настроек для некоторых переменных. Каждый элемент списка может быть либо t (это означает «сбросить до значений по умолчанию» и обычно является первым элементом списка), либо парой, в которой car — символ, обозначающий переменную вывода, а cdr — значение этой переменной.

Например, этот код выводит данные, используя только значения по умолчанию:

(prin1 object nil t)

Этот код выводит object, используя текущие настройки печати, но переопределяет значение print-length, устанавливая его равным 5:

(prin1 object nil '((length . 5)))

И наконец, этот код выводит object, используя только настройки по умолчанию, но привязывает print-length к значению 5:

(prin1 object nil '(t (length . 5)))

Ниже приведён список символов, которые можно использовать, и соответствующих им переменных:

length

Этот символ переопределяет print-length.

level

Этот символ переопределяет print-level.

circle

Этот символ переопределяет print-circle.

quoted

Этот символ переопределяет print-quoted.

escape-newlines

Этот символ переопределяет print-escape-newlines.

escape-control-characters

Этот символ переопределяет print-escape-control-characters.

escape-nonascii

Этот символ переопределяет print-escape-nonascii.

escape-multibyte

Этот символ переопределяет print-escape-multibyte.

charset-text-property

Этот символ переопределяет print-charset-text-property.

unreadable-function

Этот символ переопределяет print-unreadable-function.

gensym

Этот символ переопределяет print-gensym.

continuous-numbering

Этот символ переопределяет print-continuous-numbering.

number-table

Этот символ переопределяет print-number-table.

float-format

Этот символ переопределяет float-output-format.

integers-as-characters

Этот символ переопределяет print-integers-as-characters.

symbols-bare

Этот символ переопределяет print-symbols-bare.

В будущем могут появиться дополнительные переопределения, которые не будут напрямую соответствовать переменным, но будут доступны только через этот параметр.

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Output-Overrides.html

Spec-Zone.ru

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