asp*_*yct 1 lisp emacs common-lisp
我开始使用CLisp,因此也开始使用Emacs,包括"SLIME"插件(或者不管它叫什么.它是如何调用的?)
所以我已经玩了很长一段时间的REPL,并用(defun)定义了很多函数.
不幸的是,这些函数都没有写在文本文件中,我也不想重新编写这些函数.有没有办法可以将REPL中完成的工作转储或以其他方式保存到文件中?(如果文件是Lisp源代码,奖励积分:))
SLIME是一个与Lisp交互的elisp程序.
没有简单的选项来恢复您只在repl中输入到文件中的函数.function-lambda-expression有时可以返回代码,但通常不会.
如果repl仍然在缓冲区中,您可以将整个事物复制到文件中,然后使用字符串或regexp替换来隔离函数定义.
将来避免这个问题并不难.
大多数人的工作是将定义写入文件,然后使用组合键将它们发送到Lisp,绕过REPL.C-c C-c
当光标在函数上编译并加载表达式时,我使用组合.C-x C-e
也有效.然后我切换REPL实际使用该功能.
另请参阅该函数DRIBBLE
,该函数确保写入日志.
foo:~$ clisp
...
[1]> (dribble "foo.text")
#<OUTPUT BUFFERED FILE-STREAM CHARACTER #P"foo.text">
[2]> (+ 3 4)
7
[3]> (defun bar (baz) (* baz baz))
BAR
[4]> (bar 10)
100
[5]> (quit)
Bye.
Run Code Online (Sandbox Code Playgroud)
我们来看看文件:
foo:~$ more foo.text
;; Dribble of #<IO TERMINAL-STREAM> started on 2015-05-08 21:38:48.
#<OUTPUT BUFFERED FILE-STREAM CHARACTER #P"foo.text">
[2]> (+ 3 4)
7
[3]> (defun bar (baz) (* baz baz))
BAR
[4]> (bar 10)
100
[5]> (quit)
Bye.
Run Code Online (Sandbox Code Playgroud)