Emacs 粘液-如何补偿最近可能发生的变化

Emacs 粘液-如何补偿最近可能发生的变化,emacs,common-lisp,slime,sbcl,Emacs,Common Lisp,Slime,Sbcl,黏液的工作方式可能有一些小的/大的变化,但从那以后我很难修复它 我已经习惯了一种黏液,当开始的时候,会有一个像REPL一样的黏液 CL-USER> 一个*scratch*缓冲区,以及所有打开的缓冲区和REPL之间的紧密交互 在意识到Ubuntu软件包系统将不再适用于任何地方后,我使用给定的手册自行安装了emacs24.2和最新的slime(cvs checkout) 我的~/.emacs文件现在如下所示: ;;slime-setup (load (expand-file-name "~

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

我已经习惯了一种黏液,当开始的时候,会有一个像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设置(slime fancy slime asdf))
    启用slime REPL 要初始化的缓冲区
  • (加载(扩展文件名“~/quicklisp/slime helper.el”)
    已启用所有 我习惯了快捷方式,我通过
    (ql:quickload“quicklisp slime助手)
这些步骤显然修复了所有问题,但开放缓冲区和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()
这让我在两个方面感到困惑:

  • REPL中没有预期的输出
  • 假设(可疑)该行包含错误:这不是slime使用的错误/调试屏幕,它应该看起来像图片中的右上角窗口
  • 我得到的另一个症状是,应该扩展给定宏表达式的c-x c-m在slime repl sbcl缓冲区中工作,但在任何其他缓冲区中都会出现消息“c-c RET未定义”


    是否还有其他人遇到类似问题并找到了解决方法?

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

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

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

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