Mac OS 下 Spacemacs 配置 common-lisp 环境出错

因为想使用 Spacemacs 作为学习 common-lisp 的环境, 参考了这里的教程, 具体运行的代码如下

安装 SBCL

To install SBCL on OS X, just do:

$ brew install sbcl

安装l Quicklisp

Next, we set up Quicklisp, the package manager. This is similarly easy:

$ curl -o /tmp/ql.lisp http://beta.quicklisp.org/quicklisp.lisp
$ sbcl --no-sysinit --no-userinit --load /tmp/ql.lisp \
       --eval '(quicklisp-quickstart:install :path ".quicklisp")' \
       --quit

Spacemacs 的 slime

最后参考了 Spacemacs 的官方 layer:

To use this configuration layer, add it to your ~/.spacemacs. You will need to add common-lisp to the existing dotspacemacs-configuration-layers list in this file.

~/.spacemacs.d/init.el中的 dotspacemacs-configuration-layers 列表中添加了 common-lisp

安装完毕后, 运行M-x slime, 正常应该启动一个 REPL窗口的, 但是本来正常显示的窗口弹出一下, 然后提示报错:

error in process filter: slime/disable-smartparens: Symbol's function definition is void: smartparens-strict-mode

而新弹出的REPLinferior-lisp窗口, 出现下面的 Warning.

; loading #P"/Users/myname/.emacs.d/elpa/slime-20161109.640/swank-loader.lisp"
WARNING:
   redefining EMACS-INSPECT (#<SB-PCL:SYSTEM-CLASS COMMON-LISP:T>) in DEFMETHOD
;; Swank started at port: 56977.
56977
* WARNING: redefining SWANK::SYMBOL-INDENTATION in DEFUN
WARNING: redefining SWANK::MACRO-INDENTATION in DEFUN
WARNING:
   redefining THREAD-FOR-EVALUATION (#<STRUCTURE-CLASS SWANK::MULTITHREADED-CONNECTION>
                                     #<SB-MOP:EQL-SPECIALIZER :FIND-EXISTING>) in DEFMETHOD

尝试 Google 过, 把/Users/myname/.emacs.d/elpa/slime/文件整个替换成 Github的 slime 项目下的原始文件, 还是同样报错.

尝试把/Users/myname/.emacs.d/elpa下的slime包替换掉, 结果又重新装回了原来的镜像的slime包.

所以请问大家, 是我哪里出问题了吗, 不应该装Quicklisp吗?

读上面的提示,应该把出错的原因讲得很清楚了,然后在你的 init file 中找 slime/disable-smartparens 的定义,试着修改它,并且考虑 Spacemacs 给提个 issue。

1 个赞

你好, 多谢你的提示, 我已经改正了我的 init file 中的 slime/disable-smartparens 函数:

 (defun slime/disable-smartparens ()
        (smartparens-strict-mode -1)

为:

 (defun slime/disable-smartparens ()
        (spacemacs/smartparens-strict-mode -1)

我也是 Github 新手, 想请问这种报 bug 足够提 pull request 吗?

再次感谢, 我还是先提 issue吧, 详细写写过程

1 个赞

后来发现自己是配置文件的冲突, 也就是 init.el 文件里的问题, smartparens 加入了 dotspacemacs-excluded-packages的 list 里面, 我把 smartparensdotspacemacs=excluded-packages 中移除, 解决了问题.

1 个赞