粘液的工作方式可能有一些小/大的变化,但从那以后我很难修复它。
我习惯了一种粘液,当开始时,有一个 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*
,然后在其上使用 CMx,将导致 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()
这让我在两个方面感到困惑:
- REPL 中没有预期的输出
- 考虑到该行包含错误的(可疑)假设:这不是我被 slime 使用的错误/调试屏幕,它应该看起来像这张图片中的右上角窗口。
我得到的另一个症状是,应该扩展给定宏表达式的 cx cm 在slime-repl sbcl缓冲区中工作,但在任何其他缓冲区中都会出现消息“Cc RET 未定义”。
有没有其他人遇到过类似的问题并想出了如何解决它?