让 Emacs/Slime/Quicklisp/SBCL 在 Windows 工作

Making Emacs/Slime/Quicklisp/SBCL work in Windows

我在 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。我可以等几分钟没有任何回应。

感谢任何帮助。

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

Windows: c:/users/username

Emacs: c:/users/username/应用数据/漫游

当我安装 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 交互,除非通过史莱姆。

问题是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 的主目录(“~/”)中。现在,您已经在 (a) Windows 10 的主页和 (a) Emacs 的主页中安装了相同的 quicklisp。如果你只在Emacs的Slime REPL使用quicklisp,Windows10'HOME里的那个副本是没有用的,可以删掉。