sbcl+slimeの環境を整える

処理系

とりあえずsbclを入れる

brew install sbcl

パッケージ管理ツール

common lispのパッケージ管理はasdfとかいうのが有名だったらしいんだけど、
ASDF-install is OBSOLETEとかでっかく書いてあってquicklispとかclbuildというのを勧められていたからそっちを入れる。

quicklisp

quicklisp.lispというのをここからダウンロードしてくる。

$ sbcl --load quicklisp.lisp
* (quicklisp-quickstart:install)

ちなみにinstallのまえに(quicklisp-quickstart:help)とやるとインストールパスをかえられるみたい。
デフォルトは${HOME}/quicklisp。

* (ql:add-to-init-file)

とやると${HOME}/.sbclrcにquicklispのパスを通すのを書いてくれて、sbcl起動時に自動的にロードされるようになる。
quicklisp.lispをロードした処理系ごとのそれぞれ適切なinitファイルに書き込んでくれるみたい。

slime

ここを参考にslimeとかその周りのものもインストール。
Modern Common Lisp: 第3回 SLIMEの使い方 基礎編

slime

emacs内で

M-x list-packages

やってslimeをインストールする。
init.el内に

(setf inferior-lisp-program "/usr/local/bin/sbcl") ; your Lisp system
(require 'slime-autoloads)
(slime-setup '(slime-repl))
popwin

同じようにlist-packagesしてpopwinをインストールする。
init.elに

(require 'popwin)
(popwin-mode 1)
;; Apropos
(push '("*slime-apropos*") popwin:special-display-config)
;; Macroexpand
(push '("*slime-macroexpansion*") popwin:special-display-config)
;; Help
(push '("*slime-description*") popwin:special-display-config)
;; Compilation
(push '("*slime-compilation*" :noselect t) popwin:special-display-config)
;; Cross-reference
(push '("*slime-xref*") popwin:special-display-config)
;; Debugger
(push '(sldb-mode :stick t) popwin:special-display-config)
;; REPL
(push '(slime-repl-mode) popwin:special-display-config)
;; Connections
(push '(slime-connection-list-mode) popwin:special-display-config)

ヘルプバッファや補完バッファをポップアップで表示してくれるpopwin.elをリリースしました - Functional Emacser
いろんな設定ができるみたいだけどとりあえずインストールしたときに言われたことだけやった。

ac-slime

オートコンプリート機能
同じくlist-packages
init.elに

(require 'ac-slime)
(add-hook 'slime-mode-hook 'set-up-slime-ac)
(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
(eval-after-load "auto-complete"
  '(add-to-list 'ac-modes 'slime-repl-mode))

こんなもんか。
C-c C-cでトップレベルフォームをコンパイル
C-c C-kでバッファ全体をコンパイル
M-x slime-restart-inferior-lispでリセット