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

В предыдущем разделе (см. Переменные, влияющие на вывод) перечислены многочисленные переменные, которые контролируют, как принтер 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.

unreadeable-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.

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