3

我在 Windows 7.0 中使用上述组合已有几个月了。不幸的是,一位同事建议我将 slime-helper.el 安装到 emacs 中,结果是:Emacs Slime 不再识别 QL。

我在 Windows 上使用 SBCL 1.2.11,从命令行这个 sbcl 知道 ql 安装。这是我的 .sbclrc

;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames
                       "Documents/LISP/.asdf-install-dir/systems/setup.lisp"
                       (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

然后我输入

(ql:quickload "quicklisp-slime-helper")

它编译了很多。最后它说

要使用,请将其添加到您的 ~/.emacs 中:

(load (expand-file-name "~/Documents/LISP/.asdf-install-dir/systems/slime-helper.el"))
;; Replace "sbcl" with the path to your implementation
(setq inferior-lisp-program "sbcl")

现在这是我的 .emacs 文件中的相应部分

(load "c:/Users/xyz/Documents/LISP/.asdf-install-dir/systems/slime-helper.el")
(setq inferior-lisp-program "c:\\Progra~1\\Steelb~1\\12BDCB~1.11\\sbcl.exe")

我启动了emacs,它就正常出现了。

M-x slime

还是不错的:

; SLIME 2015-06-01
CL-USER> 

但是之后:

(ql:quickload :my-project)

回来

Package QL does not exist.

但最糟糕的是,如果我从 .emacs 文件中删除 slime-helper,它会再次识别 quicklisp 包,但每次调用 ql 都会锁定 emacs。我可以等待几分钟而没有任何回应。

任何帮助表示赞赏。

4

2 回答 2

2

对于其他遇到此问题的人,我在尝试使用 Windows + Emacs + Slime + SBCL + QL 时遇到了类似的问题。最后,它归结为 Windows 认为我的主文件夹与 Emacs(以及因此,Slime)认为的之间的冲突。

Windows:c:/用户/用户名

Emacs:c:/users/username/appdata/roaming

当我安装 quicklisp 时,我从 cmd 提示符调用了 SBCL,因此该进程在 c:/users/username 中安装了 quicklisp 文件夹以及新的 .sbclrc。

Emacs Slime 在 c:/users/username/appdata/roaming 中查找这些。

我通过将 c:/users/username 中的 quicklisp 文件夹和 .sbclrc 移动到 c:/users/username/appdata/roaming 来解决此问题,因为我不打算与 SBCL 交互,除非通过 Slime。

于 2017-03-05T18:50:51.183 回答
1

问题是 Emacs Slime (REPL) 既不知道是否安装了 quicklisp 也不知道它的安装位置。解决问题所需要做的就是在 Emacs 的 slime repl 上重新安装 quicklisp。(“quicklisp.lisp”文件应该在 SLIME REPL 的当前工作文件夹中。)

M-x slime 
CL-USER> (load "quicklisp.lisp")
CL-USER> (quicklisp-quickstart:install)
CL-USER> (ql:add-to-init-file)

然后,quicklisp 将被重新安装在 Emacs 的 HOME 目录(“~/”)中。现在,您已经在 (a) Windows 10 的 HOME 和 (a) Emacs 的 HOME 中安装了相同的 quicklisp。如果你只在 Emacs 的 Slime REPL 中使用 quicklisp,那么 Windows 10 的 HOME 中的副本是没有用的,你可以删除它。

于 2021-01-04T09:42:01.530 回答