1

根据网上的指南,我们可以在 HyperSpec 中通过键入 Cc Cd h 在 Emacs 中搜索“格式”之类的符号,但是我就是无法让它工作,emacs 只是提示符号没有完成。有人能应付吗?提前致谢!

4

2 回答 2

4

你真的在使用 Slime REPL 模式吗?有时,在没有任何配置的情况下启动 Slime 时,您不会进入 REPL 模式,而是坐在*inferior-lisp*缓冲区中。

首先,检查缓冲区的标题是什么。如果是*inferior-lisp*,则不是正确的。它应该*slime-repl sbcl*是(其中 sbcl 指的是您正在使用的 CL 实现)。

如果是这种情况,那么您需要确保在您的 Emacs 初始化文件中启用 slime-fancy。这就是我所拥有的:

(defun init-slime-configuration ()
  (slime-setup '(slime-fancy slime-fuzzy))
  (setq slime-load-failed-fasl 'never)
  (define-key slime-repl-mode-map (kbd "C-<tab>") 'slime-fuzzy-complete-symbol)
  (define-key slime-mode-map (kbd "C-<tab>") 'slime-fuzzy-complete-symbol))

(add-hook 'slime-load-hook 'init-slime-configuration)

这也允许我使用 C-TAB 进行模糊扩展。

于 2013-04-04T10:32:04.457 回答
0

从使用 Quicklisp(2.9 版)安装的 SLIME 版本切换到从 MELPA(20141010.1357 版,作为 ac-slime 的依赖项)安装的 SLIME 版本后,我遇到了这个问题。

使用 Quicklisp 的 SLIME 与我的本地 HyperSpec 副本配合使用,使用以下设置:

(require 'slime-autoloads)
(add-to-list 'slime-contribs 'slime-fancy)
(setq slime-lisp-implementations
  '((ccl ("ccl"))
    (clisp ("clisp"))
    (cmucl ("cmucl"))
    (ecl ("ecl"))
    (sbcl ("sbcl"))))
(setq slime-default-lisp 'sbcl)
(setq common-lisp-hyperspec-root "file:/usr/share/doc/HyperSpec/")
(setq common-lisp-hyperspec-symbol-table "file:/usr/share/doc/HyperSpec/Data/Map_Sym.txt")

然后我完全删除并重新安装了 Quicklisp(无需重新安装 SLIME!),然后使用 Emacs 包管理器从 MELPA 安装 ac-slime。

我碰巧注意到,当我尝试在 HyperSpec 中查找文档时,Emacs 打开了一个隐藏缓冲区,其中包含一个名为“Map_Sym.txt”的空文件。

查看这个文件的完整路径名,C-h v buffer-file-name [RET]发现它被设置为“/home/miki/file:/usr/share/doc/HyperSpec/Data/Map_Sym.txt”。

作为一项实验,我尝试从设置的最后两行中删除“file:/”,以使它们读取:

(setq common-lisp-hyperspec-root "/usr/share/doc/HyperSpec/")
(setq common-lisp-hyperspec-symbol-table "/usr/share/doc/HyperSpec/Data/Map_Sym.txt")

它似乎已经解决了这个问题。为什么这样有效,我不知道(它与文档不同)。也许是错误或未记录的更改?

于 2014-10-12T23:37:22.867 回答