【问题标题】:How to save all functions I entered in LispBox/Slime?如何保存我在 LispBox/Slime 中输入的所有函数?
【发布时间】:2010-09-29 06:57:44
【问题描述】:

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

我可以这样做吗?谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我知道我应该意识到这一点。我想当谈到 Emacs 时,我还是有点眼花缭乱。谢谢!
        【解决方案4】:

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

        假设您已经采用了 repl 方式,我猜,C. Martin 保存 repl 日志并手动检查它的解决方案是您唯一的选择。

        如果您将函数和变量输入到单独的包中,则可以通过包中的符号来帮助您决定要保留的内容。

        例如查看在 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)))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-31
          • 2015-07-19
          • 2021-11-11
          • 2021-02-25
          • 2021-02-26
          • 2018-09-21
          • 2022-06-28
          • 1970-01-01
          相关资源
          最近更新 更多