粘液 - 如何补偿可能的近期变化

时间:2012-10-20 11:56:49

标签: emacs common-lisp slime sbcl

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

我习惯了一个粘液,当它开始时,有一个像

这样的REPL
CL-USER>

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

在意识到Ubuntu软件包系统不再让我到任何地方后,我自己使用给定的手册安装了emacs24.2和最新的粘液(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之间的紧密交互仍然存在。

E.g。

我习惯于打字

的互动
(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图片中的右上方窗口。
  3. 我得到的另一个症状是,应该扩展给定宏表达式的cx cm在 slime-repl sbcl 缓冲区中工作,但在任何其他缓冲区中,消息“Cc RET不是定义“出现。

    是否有其他人遇到类似的问题,并想出如何解决它?

1 个答案:

答案 0 :(得分:3)

看起来你曾经习惯于将 M-x slime-scratch作为SLIME模式的一部分。要恢复该功能,可以在.emacs文件中执行此操作:

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

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