Emacs (DOOM Emacs)でCommon Lisp環境構築
概要
作成, 公開.
Common Lisp については WEB 上には新旧様々な情報があり、また自分の PC の環境に合う情報が見当たらなかったので備忘録を兼ねて公開する。
環境
- Windows 11 Pro 24H2
- WSL2 Ubuntu
lsb_release -a
Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammy
(princ (version))
"GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0) of 2024-09-21"
(doom/version)
"GNU Emacs v31.0.50 nil Doom core v3.0.0-pre HEAD -> master ef9e8d892 2025-10-06 07:13:25 -0400 Doom modules v25.10.0-pre HEAD -> master ef9e8d892 2025-10-06 07:13:25 -0400 "
roswell のインストール
Common Lisp の処理系が選べるからといって、最初から SBCL
や CCL
をインストールしても構わないだろうが、現時点では roswell
という Common Lisp のあれこれを一挙に管理するツールがあるのでこれを使う。
https://roswell.github.io/Installation.html に記載の通りインストールするのだが、残念ながら Ubuntu のパッケージマネージャには roswell がない。記載通りソースからビルドすることになる。
Ubuntu という初心者向けのディストリビューションこそ幅広いパッケージを揃えたほうが、パッケージがないためビルドする羽目になるという状態を避けられるから、初心者に優しいと思うのだが……。
もちろん読者の環境で roswell がパッケージ化されているなら、それを利用するべきである。しばらく読み飛ばしてもらって構わない。
まずはビルドに必要なソフトをインストールする。
sudo apt install automake libcurl4 libcurl4-openssl-dev zlib1g # zlib1gは不要かも
続いて最新の roswell を git clone
する。 ghq
を使えば楽である。
git clone -b release https://github.com/roswell/roswell .../path/to/roswell # <- リポジトリのコピー先 # あるいは ghq get https://github.com/roswell/roswell cd .../path/to/roswell sh bootstrap ./configure make sudo make install which ros # インストールが成功すればどこかのpathが出力される
コマンドの幾つかは実行するといろいろと出力されるが、 ./configure
に failed のような文字がなければ最後のコマンドで表示があるはずだ。
ここからパッケージでインストールした場合と合流する。
ros setup
上記のコマンドで自動セットアップが完了するはず。
もし下記の Emacs でエラーが出た際はここに戻って、足りないシステム(いわゆる「パッケージ」)をインストールする。
ql:*quicklisp-home* ;; #P"~/.roswell/lisp/quicklisp/" のように出力があるはず。 ;; なければquicklispがREPL起動時に自動で読み込まれていない。各自調べてほしい。 ;; 出力があるなら以下を実行。 (ql:quickload :agnostic-lizard) ;; 自分はEmacsで ~agonistic-lizard~ についてエラーがでたのでインストールする。 (exit)
Emacs の設定
先述の通り、DOOM Emacs を使用しているので init.el
と config.el
を少し変更すれば動くはず。
(doom! ;; ... :lang ;; ... common-lisp ;; ここをアンコメント ;; )
;; ... (after! org ;; org-mode でcommon lispコードを評価できるようにする (org-babel-do-load-languages 'org-babel-load-languages '( ;; ... (lisp . t) ;; 追記。common-lispではなくlisp。 ;; ... )) ) ;; ... (after! sly (setq inferior-lisp-program "ros -Q run") (add-to-list '+lisp-quicklisp-paths "~/.roswell/lisp/quicklisp") )
DOOM での設定の詳細は https://github.com/doomemacs/doomemacs/tree/master/modules/lang/common-lisp に記載があるので最新情報はこちらを参照。
ターミナルで bin/doom sync
の後、 Emacs で M-x sly
とすれば REPL が起動するはず。代わりにエラーが出た場合、上記の roswell の設定を見直す。
再度 Emacs で M-x sly
をすると REPL が出たので解決。
(format t "hello common lisp!")
hello common lisp!
roswell のアップデート
この記事は実際にインストールした時に書いたので、まだアップデートは試していない。
- https://roswell.github.io/Upgrading-Roswell.html
- 古いバージョンをアンインストール
- 新しいソースにアップデート
- ビルド、インストール
- このページ自体も完成したわけではなさそう。