【问题标题】:slime - how to compensate probable recent changes粘液 - 如何补偿最近可能发生的变化
【发布时间】:2012-10-10 21:22:01
【问题描述】:

粘液的工作方式可能有一些小/大的变化,但从那以后我很难修复它。

我习惯了一个粘液,当启动时,有一个类似的 REPL

CL-USER>

*scratch* 缓冲区以及所有打开的缓冲区和 REPL 之间的紧密交互。

在意识到 Ubuntu 软件包系统无法再将我带到任何地方后,我使用给定的手册自行安装了 emacs24.2 和最新的 slime(cvs checkout)。

我的 ~/.emacs 文件现在看起来像这样:

;;slime-setup 
(load (expand-file-name "~/quicklisp/slime-helper.el"))
(setq inferior-lisp-program "sbcl") 
(add-to-list 'load-path "/home/simkoc/emacs/slime/") 
(require 'slime-autoloads) 
(slime-setup '(slime-fancy slime-asdf))
  • (slime-setup '(slime-fancy slime-asdf)) 启用了粘液 REPL 要初始化的缓冲区。
  • (load (expand-file-name "~/quicklisp/slime-helper.el")) 全部启用 我习惯的快捷方式,我通过下载包 (ql:quickload "quicklisp-slime-helper)

这些步骤显然修复了所有问题,但开放缓冲区和 REPL 之间的紧密交互仍然存在问题。

例如

我习惯了打字互动

(FORMAT t "foobar~%")

进入缓冲区*scratch*,然后在其上使用 C-M-x,将导致 repl 打印“foobar”。相反,我收到了一个错误:

Debugger entered--Lisp error: (void-function FORMAT)
  (FORMAT t "foobar~%")
  eval-region(291 312 t (lambda (ignore) (goto-char 312) (quote (FORMAT t "foobar~%"))))  ; Reading at buffer position 310
  apply(eval-region (291 312 t (lambda (ignore) (goto-char 312) (quote (FORMAT t "foobar~%")))))
  eval-defun-2()
  eval-defun(nil)
  call-interactively(eval-defun nil nil)
  recursive-edit()

这在两个方面让我感到困惑:

  1. REPL 中没有预期的输出
  2. 考虑到该行包含错误的(令人怀疑的)假设:这不是我被 slime 使用的错误/调试屏幕,它应该看起来像 this 图片中的右上角窗口。

我得到的另一个症状是,应该扩展给定宏表达式的 cx cm 在 slime-repl sbcl 缓冲区中工作,但在任何其他缓冲区中,消息“Cc RET is not已定义”出现。

有没有其他人遇到过类似的问题并想出了如何解决它?

【问题讨论】:

  • 不,这仍然以问题中提到的漂亮错误结束,并且 repl 确实有名称 slime-repl sbcl,如果它实际上是 Emacs Lisp 会很混乱,不是吗?
  • 是的,M-x slime-scratch 打开了一个工作正常的缓冲区,但我以前从未使用过这个命令,它曾经工作过。但显然这是让我感到困惑的变化,因为(在 scracth 不起作用之后)我没有尝试其他缓冲区(以 .lisp 结尾)。请张贴您总结的 cmets 作为我接受的答案。

标签: emacs common-lisp slime sbcl


【解决方案1】:

您似乎习惯于在 SLIME 模式下启动 M-xslime-scratch。要恢复该功能,您可以在 .emacs 文件中执行此操作:

(add-hook 'slime-mode-hook 'slime-scratch)
(add-hook 'slime-repl-mode-hook 'slime-scratch)

我不确定slime-repl-mode-hook,看看你是否真的需要它。可能你只需要第一个就可以在 SLIME 启动时自动创建*slime-scratch* 缓冲区。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-14
    • 2023-03-03
    • 2014-08-26
    • 2015-02-12
    • 2012-12-18
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多