Emacs日常:Common Lisp开发环境
个人认为,Common Lisp最好的开发环境就是Emacs :-)
首先安装基本依赖包,例如Common Lisp解释器/编译器,我用的是SBCL。
安装quicklisp,这个是Common Lisp的包和项目管理器,有点类似Python的pip。
下载和运行quicklisp安装脚本:
curl -O https://beta.quicklisp.org/quicklisp.lisp
curl -O https://beta.quicklisp.org/quicklisp.lisp.asc
gpg --verify quicklisp.lisp.asc quicklisp.lisp
sbcl --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提供自动补全功能,很多地方都用到,就不多说了。