如何在Emacs+SBCL的Common Lisp REPL中中途退出程序?
在Emacs+SBCL环境中中途退出交互式函数回到REPL的方法
用Emacs快捷键发送中断:在SBCL的REPL缓冲区(SLIME/SLY窗口)里,直接按下
C-c C-c(连续按两次Ctrl+C),这会给SBCL进程发中断信号,立刻终止当前运行的交互式函数,直接回到package>提示符。触发错误强制终止:如果快捷键没起作用,输入时故意敲入能触发错误的内容,比如
(error "exit"),当read-line读取后会触发错误,此时在SLIME的错误提示里选择终止函数执行,就能回到REPL。给代码加退出逻辑(调试专用):如果经常需要中途退出,可以修改
prompt-read函数,添加退出触发条件:
(defun prompt-read (question) (format *query-io* "~a: " question) (force-output *query-io*) (let ((input (read-line *query-io*))) (if (string-equal input "quit") (error "主动退出") input)))
之后输入quit就会触发错误,选择终止函数即可回到REPL。
内容的提问来源于stack exchange,提问作者Vinn
相关产品推荐
相关产品推荐

