【问题标题】:Making Emacs/Slime/Quicklisp/SBCL work in Windows使 Emacs/Slime/Quicklisp/SBCL 在 Windows 中工作
【发布时间】:2016-02-15 11:53:44
【问题描述】:

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

任何帮助表示赞赏。

【问题讨论】:

    标签: emacs common-lisp sbcl slime quicklisp


    【解决方案1】:

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

    Windows:c:/users/用户名

    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。

    【讨论】:

      【解决方案2】:

      问题是 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 中的副本是没有用的,你可以删除它。

      【讨论】:

        猜你喜欢
        • 2015-07-02
        • 2016-01-05
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 2015-01-23
        • 1970-01-01
        • 2023-03-31
        • 2013-10-18
        相关资源
        最近更新 更多