Emacs + Roswell で Common Lisp 開発を行う環境を構築したのでメモします.設定は use-package で行い,補完は company を利用しています.
検証環境
- Ubuntu: 19.10
- Emacs: 26.3
- Roswell: 19.12.13.103
Roswell のインストール
Roswell の Release Page から deb ファイルをダウンロードしてインストールします.
$ wget https://github.com/roswell/roswell/releases/download/v19.12.13.103/roswell_19.12.13.103-1_amd64.deb $ sudo dpkg -i roswell_19.12.13.103-1_amd64.deb
Roswell は最初に初期化する必要があります.これにより ~/.roswell
ディレクトリに環境がインストールされます.
$ ros setup
次に Emacs 連携機能をインストールします.エントリーポイントとして Emacs Lisp 形式の設定ファイル ~/.roswell/helper.el
がインストールされるのでこれを Emacs から load
する形になります.
$ ros install slime
Emacs の設定
use-package を利用した設定は下記の通りになります.
(use-package slime :if (file-exists-p "~/.roswell/helper.el") :ensure slime-company :init (load "~/.roswell/helper.el") :custom (inferior-lisp-program "ros -Q run") :config (slime-setup '(slime-fancy slime-company)))
company 連携を行う上で注意があります.slime-company を require してはならないという点です. slime-company の設定は slime-setup で行う必要があるため,陽に require すると補完が不安定になってしまいます.普通に use-package で slime-company を導入すると require されてしまうため,ここでは ensure キーワードの引数として slime-company を指定しています.
まとめ
slime-company の設定で嵌りましたがこれで快適な作業環境を構築することができました.普段 Lisp は書かないのでいざ必要となったときに記憶があやふやなことがあり大変でしたが開発環境の支援機能で少しは楽になってくれると思います.