Emacs 粘液管理、用户输入和多重评估和打印
Emacs slime management, user input and multi eval and print
我在 ubuntu 19。
使用 emacs、slime 和 sbcl 练习一些 lisp。
目前我有一个缓冲区在粘液模式 window 和另一个 window.
的粘液描述
当我想执行一行时,我把它写在缓冲区上,然后按 C-c C-p。
但是当我尝试对
行做同样的事情时
(defvar *name* (read))
使用用户输入设置 name 变量,没有任何反应。
为什么?
另外我想执行整个脚本而不是一次执行一行,我该怎么做?
'Nothing is happening' 因为 read
正在等待您在 REPL 中输入内容。如果您查看 REPL,您会感到困惑,因为您正在评估的表单没有显示,所以您所看到的只是……什么都没有,但您需要在上面输入一些内容。此外,从您的描述中并不清楚您显示了哪些缓冲区,但我怀疑 REPL 不是其中之一,这会使事情变得更糟。
我不知道其他人如何使用 SLIME,但我所做的是至少拥有 REPL(在一个 window 中键入 M-x-slime
后得到的东西,以及一个文件我正在另一个项目中工作。然后您可以通过键入与 REPL 进行交互,并使用 C-M-x
或任何其他命令(特别是东西)将代码从文件发送到 运行 lisp像 C-c C-k
编译和加载文件。
但是您几乎从不想要您正在编译或加载的文件包含任何导致 read
在编译或加载时被调用的内容:结果是委婉地说,神秘一点:系统会在没有提示的情况下停止等待您输入内容。在 REPL 中这样做更有意义:
CL-USER> (defvar *name* (read))
(here is the data I am typing in)
*NAME*
事实上,即使您竭尽全力在正在加载的文件中对 read
进行非神秘调用,您也必须竭尽全力确保它们安全。考虑这个文件,toxin.lisp
:
(defvar *my-thing*
(progn
(format *query-io* "~&thing? ")
(finish-output *query-io*)
(read *query-io*)))
现在:
$ lisp
[...]
(load "toxin" :verbose t)
;Loading #P"toxin"...
thing? #.(quit)
当然,我可以对 Lisp 说更糟糕的话。
我在 ubuntu 19。 使用 emacs、slime 和 sbcl 练习一些 lisp。
目前我有一个缓冲区在粘液模式 window 和另一个 window.
的粘液描述当我想执行一行时,我把它写在缓冲区上,然后按 C-c C-p。
但是当我尝试对
行做同样的事情时(defvar *name* (read))
使用用户输入设置 name 变量,没有任何反应。
为什么?
另外我想执行整个脚本而不是一次执行一行,我该怎么做?
'Nothing is happening' 因为 read
正在等待您在 REPL 中输入内容。如果您查看 REPL,您会感到困惑,因为您正在评估的表单没有显示,所以您所看到的只是……什么都没有,但您需要在上面输入一些内容。此外,从您的描述中并不清楚您显示了哪些缓冲区,但我怀疑 REPL 不是其中之一,这会使事情变得更糟。
我不知道其他人如何使用 SLIME,但我所做的是至少拥有 REPL(在一个 window 中键入 M-x-slime
后得到的东西,以及一个文件我正在另一个项目中工作。然后您可以通过键入与 REPL 进行交互,并使用 C-M-x
或任何其他命令(特别是东西)将代码从文件发送到 运行 lisp像 C-c C-k
编译和加载文件。
但是您几乎从不想要您正在编译或加载的文件包含任何导致 read
在编译或加载时被调用的内容:结果是委婉地说,神秘一点:系统会在没有提示的情况下停止等待您输入内容。在 REPL 中这样做更有意义:
CL-USER> (defvar *name* (read))
(here is the data I am typing in)
*NAME*
事实上,即使您竭尽全力在正在加载的文件中对 read
进行非神秘调用,您也必须竭尽全力确保它们安全。考虑这个文件,toxin.lisp
:
(defvar *my-thing*
(progn
(format *query-io* "~&thing? ")
(finish-output *query-io*)
(read *query-io*)))
现在:
$ lisp
[...]
(load "toxin" :verbose t)
;Loading #P"toxin"...
thing? #.(quit)
当然,我可以对 Lisp 说更糟糕的话。