vlambda博客
学习文章列表

Emacs日常:Common Lisp开发环境

个人认为,Common Lisp最好的开发环境就是Emacs :-)


首先安装基本依赖包,例如Common Lisp解释器/编译器,我用的是SBCL。


安装quicklisp,这个是Common Lisp的包和项目管理器,有点类似Python的pip。


下载和运行quicklisp安装脚本:

curl -O https://beta.quicklisp.org/quicklisp.lispcurl -O https://beta.quicklisp.org/quicklisp.lisp.ascgpg --verify quicklisp.lisp.asc quicklisp.lispsbcl --load quicklisp.lisp

默认安装在~/quicklisp目录下。


然后在SBCL命令行里,执行这些命令:

(quicklisp-quickstart:install)(ql:add-to-init-file)(ql:quickload "quicklisp-slime-helper")

最后一个命令是安装quicklisp的SLIME包,它会在quicklisp安装目录下下载一个slime-helper.el文件,如果你用的不是SLIME,就用不着这一步。


然后在Emacs这边,如果你用的是SLIME(Common Lisp的Emacs集成开发环境之一),配置文件里包括:

(load (expand-file-name "~/quicklisp/slime-helper.el"))
;; Set your lisp system and, optionally, some contribs(if (string-equal system-type "gnu/linux") (setq inferior-lisp-program "/usr/bin/sbcl") (setq inferior-lisp-program "/usr/local/bin/sbcl"))
(setq slime-contribs '(slime-fancy))

注意这里设置了Lisp解释器的路经,如果你的Lisp解释器安装在不同的路经下,要相应修改设置。


我用的是SLY,这是另一个Common Lisp集成开发环境,就是进去有猫的那个 :-)

SLY的Emacs配置如下:

(remove-hook 'lisp-mode-hook 'slime-lisp-mode-hook)(require 'sly)(add-hook 'sly-mrepl-mode-hook #'company-mode)

基本上只要require包就可以。


还有几个有用的配置:

(add-hook 'lisp-mode-hook #'enable-paredit-mode)(add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode)(add-hook 'lisp-mode-hook 'company-mode)

paredit-mode帮助你平衡括号,在Lisp编程里很有用,初次使用可能会有些不习惯,但熟练了以后会很好用。company-mode提供自动补全功能,很多地方都用到,就不多说了。