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