2016-12-05 3 views
0

Попытка узнать lisp (и, я думаю, emacs вместе с ним). Мне было интересно, как вы собираетесь очищать выход и заменять его. Может быть в LISP repl или в буфер emacs.
Что-то похожее на следующее в python.Common Lisp: стандартный стандартный вывод

def go(r): 
    for i in range(r): 
     sys.stdout.write("\rDoing %i" % i) 
     sys.stdout.flush() 

ответ

5

Для общей шепелявости, вы ищете

Functions FINISH-OUTPUT, FORCE-OUTPUT, CLEAR-OUTPUT:

finish-output, force-output и clear-output осуществлять контроль над внутренней обработкой буферизованного выходного потока.

  • finish-output попытки гарантировать, что любой буферизованный вывод отправлен в выходной поток-достиг своего пункта назначения, а затем возвращается.

  • force-output инициирует опорожнение любых внутренних буферов, но не ждет завершения или подтверждения для возврата.

  • clear-output пытается прервать любую незавершенную работу вывода, чтобы обеспечить как можно меньше выходных данных для продолжения назначения.

и

Variables *DEBUG-IO*, *ERROR-OUTPUT*, *QUERY-IO*, *STANDARD-INPUT*, *STANDARD-OUTPUT*, *TRACE-OUTPUT*

  • Значение *debug-io*, называется отладкой ввод/вывод, представляет собой поток будет использоваться для интерактивных целей отладки.

  • Значение *error-output*, называемое выводом ошибок, представляет собой поток, которому должны быть отправлены предупреждения и неинтерактивные сообщения об ошибках.

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

  • Значение *standard-input*, называемое стандартным вводом, представляет собой поток, который используется многими операторами в качестве источника ввода по умолчанию, когда конкретный входной поток явно не предоставляется.

  • Значение *standard-output*, называемое стандартным выходом, представляет собой поток, который используется многими операторами в качестве назначения по умолчанию для вывода, если явно не указан конкретный выходной поток.

  • Значение *trace-output*, называемое выводом трассировки, представляет собой поток, на который отслеживаются функции (см. Трассировку), и макрос времени распечатывают свой вывод.

Emacs Lisp довольно сильно отличается, вы можете захотеть, чтобы начать здесь: https://www.gnu.org/software/emacs/manual/html_node/elisp/Output-Functions.html

Смежные вопросы