Spec-Zone.ru › Elisp

Переменные, влияющие на вывод

Переменная: standard-output

Значение этой переменной — поток вывода по умолчанию, то есть поток, используемый функциями печати, когда аргумент stream равен nil. Значение по умолчанию — t, что означает вывод в область эха.

Переменная: print-quoted

Если значение этой переменной не равно nil, формы с цитированием выводятся с использованием сокращённого синтаксиса чтения: например, (quote foo) выводится как 'foo, а (function foo) — как #'foo. Значение по умолчанию — t.

Переменная: print-escape-newlines

Если значение этой переменной не равно nil, символы перевода строки в строках выводятся как ‘\n’, а символы перевода страницы — как ‘\f’. Обычно эти символы выводятся как настоящие переводы строк и переводы страниц.

Эта переменная влияет на функции печати prin1 и print, которые выводят данные с цитированием. Она не влияет на princ. Вот пример использования prin1:

(prin1 "a\nb")
     -| "a
     -| b"
     ⇒ "a
b"
(let ((print-escape-newlines t))
  (prin1 "a\nb"))
     -| "a\nb"
     ⇒ "a
b"

Во втором выражении локальная привязка print-escape-newlines действует во время вызова prin1, но не во время вывода результата.

Переменная: print-escape-control-characters

Если значение этой переменной не равно nil, управляющие символы в строках выводятся как последовательности с обратной косой чертой функциями печати prin1 и print, которые выводят данные с цитированием. Если значения этой переменной и print-escape-newlines не равны nil, последняя имеет приоритет для символов перевода строки и перевода страницы.

Переменная: print-escape-nonascii

Если значение этой переменной не равно nil, однобайтовые символы, не относящиеся к ASCII, в строках безусловно выводятся как последовательности с обратной косой чертой функциями печати prin1 и print, которые выводят данные с цитированием.

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

Переменная: print-escape-multibyte

Если значение этой переменной не равно nil, многобайтовые символы, не относящиеся к ASCII, в строках безусловно выводятся как последовательности с обратной косой чертой функциями печати prin1 и print, которые выводят данные с цитированием.

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

Переменная: print-charset-text-property

Эта переменная управляет выводом текстового свойства ‘charset’ при печати строки. Значение должно быть nil, t или default.

Если значение равно nil, текстовые свойства charset никогда не выводятся. Если значение равно t, они выводятся всегда.

Если значение равно default, текстовые свойства charset выводятся только при наличии «неожиданного» свойства charset. Для символов ASCII все наборы символов считаются «ожидаемыми». В противном случае ожидаемое свойство charset символа задаётся функцией char-charset.

Переменная: print-length

Значение этой переменной — максимальное количество элементов, выводимых в любом списке, векторе или булевом векторе. Если в выводимом объекте элементов больше этого числа, он сокращается с помощью многоточия.

Если значение равно nil (значение по умолчанию), ограничение отсутствует.

(setq print-length 2)
     ⇒ 2
(print '(1 2 3 4 5))
     -| (1 2 ...)
     ⇒ (1 2 ...)
Переменная: print-level

Значение этой переменной — максимальная глубина вложенности круглых и квадратных скобок при выводе. Любой список или вектор, глубина вложенности которого превышает это ограничение, сокращается с помощью многоточия. Значение nil (используемое по умолчанию) означает отсутствие ограничения.

Пользовательская опция: eval-expression-print-length
Пользовательская опция: eval-expression-print-level

Это значения для print-length и print-level, используемые функцией eval-expression и, следовательно, косвенно — многими интерактивными командами вычисления (см. Вычисление выражений Emacs Lisp в Руководстве GNU Emacs).

Эти переменные используются для обнаружения и отображения циклических и совместно используемых структур:

Переменная: print-circle

Если значение этой переменной не равно nil, она включает обнаружение циклических и совместно используемых структур при выводе. См. Синтаксис чтения циклических объектов.

Переменная: print-unreadable-function

По умолчанию Emacs выводит нечитаемые объекты как ‘#<...>"’. Например:

(prin1-to-string (make-marker))
     ⇒ "#<marker in no buffer>"

Если значение этой переменной не равно nil, оно должно быть функцией, вызываемой для обработки вывода таких объектов. Функция вызывается с двумя аргументами: объектом и флагом noescape, используемым функциями вывода (см. Функции вывода).

Функция должна возвращать либо nil (вывести объект обычным образом), либо строку (которая будет выведена), либо любой другой объект (не выводить объект). Например:

(let ((print-unreadable-function
       (lambda (object escape) "hello")))
  (prin1-to-string (make-marker)))
     ⇒ "hello"
Переменная: print-gensym

Если значение этой переменной не равно nil, она включает обнаружение неинтернированных символов (см. Создание и интернирование символов) при выводе. При включённой настройке неинтернированные символы выводятся с префиксом ‘#:’, который указывает считывателю Lisp создать неинтернированный символ.

Переменная: print-continuous-numbering

Если значение этой переменной не равно nil, нумерация продолжается между вызовами печати. Это влияет на номера, выводимые для меток ‘#n=’ и ссылок ‘#m#’. Не задавайте эту переменную с помощью setq; её следует только временно привязывать к t с помощью let. При этом также следует привязать print-number-table к nil.

Переменная: print-number-table

Эта переменная содержит вектор, используемый внутренними механизмами печати для реализации функции print-circle. Не используйте её, за исключением привязки к nil при привязке print-continuous-numbering.

Переменная: float-output-format

Эта переменная задаёт способ вывода чисел с плавающей точкой. Значение по умолчанию — nil, то есть используется кратчайшее представление числа, не приводящее к потере информации.

Чтобы точнее управлять форматом вывода, можно поместить в эту переменную строку. Строка должна содержать спецификацию ‘%’, которая будет использоваться в функции C sprintf. Дополнительные ограничения на допустимые значения см. в строке документации переменной.

Переменная: print-integers-as-characters

Если значение этой переменной не равно nil, целые числа, представляющие графические базовые символы, выводятся с использованием синтаксиса символов Lisp (см. Основной синтаксис символов). Остальные числа выводятся обычным образом. Например, список (4 65 -1 10) будет выведен как ‘(4 ?A -1 ?\n)’.

Точнее, в синтаксисе символов выводятся значения, представляющие символы категорий Unicode: буква, число, знак препинания, символ и частная область использования (см. Свойства символов), а также управляющие символы с собственной escape-последовательностью, например перевод строки.

Пользовательская опция: pp-default-function

Эта пользовательская переменная задаёт функцию, которую pp использует для форматирования вывода. По умолчанию используется pp-fill, которая стремится найти баланс между скоростью и созданием естественно выглядящего вывода, помещающегося в fill-column. Ранее по умолчанию использовалась pp-28; она обычно работает быстрее, но создаёт менее естественный и менее компактный вывод.

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-Variables.html

Spec-Zone.ru

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