mig*_*k35 0 lisp stdout common-lisp
试图学习lisp(我猜emacs一起).我想知道如何清除输出并更换它.可以在LISP repl或emacs缓冲区中.
类似于python中的以下内容.
def go(r):
for i in range(r):
sys.stdout.write("\rDoing %i" % i)
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
对于常见的lisp,您正在寻找
Functions FINISH-OUTPUT, FORCE-OUTPUT, CLEAR-OUTPUT:
finish-output,force-output并clear-output控制缓冲流输出的内部处理.
finish-output 尝试确保发送到输出流的任何缓冲输出已到达其目标,然后返回.
force-output 启动清空任何内部缓冲区但不等待完成或确认返回.
clear-output 尝试中止正在进行的任何未完成的输出操作,以便尽可能少的输出继续到目的地.
和
*debug-io*称为调试I/O 的值是用于交互式调试目的的流.
*error-output*称为错误输出的值是应向其发送警告和非交互式错误消息的流.
*query-io*称为查询I/O 的值是在询问用户问题时使用的双向流.问题应输出到此流,并从中读取答案.
*standard-input*称为标准输入的值是一个流,当没有显式提供特定输入流时,许多运算符将其用作默认输入源.
*standard-output*称为标准输出的值是一个流,当没有显式提供特定输出流时,许多运算符将该流用作输出的默认目标.
*trace-output*称为跟踪输出的值是跟踪函数(请参阅跟踪)和时间宏打印其输出的流.
Emacs Lisp完全不同,你可能想从这里开始:https://www.gnu.org/software/emacs/manual/html_node/elisp/Output-Functions.html