19.2.11 Печать в Edebug

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

Один из способов справиться с циклическими структурами — установить print-length или print-level, чтобы обрезать печать. Edebug делает это за вас; он привязывает print-length и print-level к значениям переменных edebug-print-length и edebug-print-level (при условии, что они имеют не-nil значения). См. Переменные, влияющие на вывод.

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

Если не-nil, Edebug привязывает print-length к этому значению при печати результатов. Значение по умолчанию — 50.

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

Если не-nil, Edebug привязывает print-level к этому значению при печати результатов. Значение по умолчанию — 50.

Вы также можете более информативно печатать циклические структуры и структуры, разделяющие элементы, при привязке print-circle к не-nil значению.

Вот пример кода, который создает циклически связанную структуру:

(setq a (list 'x 'y))
(setcar a a)

Если print-circle не-nil, функции печати (например, prin1) будут печатать a как '‘#1=(#1# y)’. Нотация '‘#1=’' помечает следующую структуру меткой '‘1’', а нотация '‘#1#’' ссылается на ранее помеченную структуру. Эта нотация используется для любых общих элементов списков или векторов.

Пользовательская опция: edebug-print-circle

Если не-nil, Edebug привязывает print-circle к этому значению при печати результатов. Значение по умолчанию — t.

Для получения более подробной информации о том, как можно настроить печать, см. Функции вывода.