如何保存我在LispBox / Slime中输入的所有函数?

时间:2009-01-02 18:36:20

标签: emacs lisp read-eval-print-loop slime

情况:我在Emacs中使用REPL时输入了几个函数。 问题:当我只是保存缓冲区时,有“像评估中止”这样的垃圾。 我想要的:清楚地描述我在最新版本中输入的所有功能。

我能这样做吗?感谢。

4 个答案:

答案 0 :(得分:5)

我不明白。您是否在REPL中输入定义并希望以后恢复它们?只需保存源文件,就像使用任何其他语言一样。使用C-x 2将您的Emacs窗口分成两部分。在其中一个C-x C-f foo.lisp中打开一个源文件。使用C-c C-k,C-c C-r和朋友(参见SLIME菜单)在REPL中编译/评估源代码的区域。

答案 1 :(得分:5)

我过去一直在找这样的东西而且找不到它。您最好在单独的缓冲区中编写所有定义并使用SLIME的广泛评估/编译功能(Cc Ck加载整个文件,Cx Ce评估最后一个表达式,Cc Cr评估区域等),只能直接进入您不想保存的REPL内容。

答案 2 :(得分:4)

嗯,C-x oC-x b进入SLIME REPL缓冲区,然后C-x wC-x C-s将其保存到文件中。所有SLIME / CL的东西都是读者评论;您可以编写一个读者黑客来重新加载文件,将提示视为注释,或者您可以自己浏览文件以捕获要保存的文件。

答案 3 :(得分:3)

我同意最好的工作流程方法是将您的代码编写在一个单独的缓冲区中并进行评估,而不是在repl中输入函数。

假设你已经采用了repl方式,我想,C。Martin的解决方案是保存repl日志并手动完成它是你唯一的选择。

如果您将功能和变量输入到单独的包中,您可以浏览包中的符号以帮助您确定要保留的内容。

E.g。查看cl-user包中创建的所有符号:

(let ((p (find-package :cl-user)))
  (loop
     for s being the symbols in p
     when (eq p (symbol-package s))
     do (format t "~a~%" s)))