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