4

我正在为 emacs 配置粘液。到目前为止,我已经阅读了常见 lisp 的基本功能,例如C-c C-q调用slime-close-parens-at-point将适当数量的括号放置在鼠标所在位置的命令。另一个看起来很酷的命令被调用C-c C-c,它会将你在缓冲区中编辑的代码传递给 REPL,并“编译”它。

为什么这些命令对我不起作用?

无论如何,我已经slime通过下载M-x list-packages并且似乎没有此功能(C-h w然后这些命令中的任何一个都告诉我这些命令确实存在)。所以,我看到了一堆其他的粘液扩展,比如slime-repl', 'slime-fuzzy' and 'hippie-expand-slime'. So I again usedMx list-packages` 并下载了它们。

我仍然没有这些命令。这是我与 slime 相关的 emacs 文件的内容:

;;;Common Lisp and Slime                                                                                                                                
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-20130626.1151")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-repl-201000404")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/hippie-expand-slime-20130226.1656")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-fuzzy-20100404")

(require 'slime)
(setq slime-lisp-implementations
     `((sbcl ("/usr/bin/sbcl"))
       (ecl ("/usr/bin/ecl"))
       (clisp ("/usr/bin/clisp" "-q -I"))))

(require 'slime-repl)
(require 'slime-fuzzy)
(require 'hippie-expand-slime)

当我执行时,M-x slime我在缓冲区中收到以下消息inferior-lisp,我可以在其中执行常见的 lisp 代码(但是,这不应该是slime-repl因为我需要它吗?):

STYLE-WARNING: redefining EMACS-INSPECT (#<BUILT-IN-CLASS T>) in DEFMETHOD
STYLE-WARNING:
   Implicitly creating new generic function STREAM-READ-CHAR-WILL-HANG-P.
WARNING: These Swank interfaces are unimplemented:
 (DISASSEMBLE-FRAME SLDB-BREAK-AT-START SLDB-BREAK-ON-RETURN)
;; Swank started at port: 46533.

然后slime-error使用内容创建一个缓冲区:

Invalid protocol message:
Symbol "CREATE-REPL" not found in the SWANK package.

  Line: 1, Column: 28, File-Position: 28

  Stream: #<SB-IMPL::STRING-INPUT-STREAM {10056B9C33}>

(:emacs-rex (swank:create-repl nil) "COMMON-LISP-USER" t 5)
  1. 我应该如何修改我的 emacs 文件以提供这些命令的功能?在我的 emacs 文件中,我没有加载必要的文件吗?我需要安装额外的软件包吗?

或者,如果您有更好的想法,请告诉我! 如果您需要更多信息,请告诉我!非常感谢所有帮助!

4

1 回答 1

3

Swank 是普通 lisp 中的服务器(在您的情况下,它是 SBCL)作为 SLIME 的后端。SLIME 是 emacs lisp 的前端。

slime-repl 不能单独工作,它需要服务器端的相应插件。您应该确保 swank 的目录中有 swank-repl.lisp。它是包含“CREATE-REPL”功能的 swank-repl.lisp。

你的 slime-repl 不起作用。所以你在 emacs 中看不到 *slime-repl* 缓冲区。

我更喜欢使用其官方 GIT 存储库 ( https://github.com/slime/slime ) 中的 SLIME。

于 2013-06-30T20:59:45.310 回答