--- title: Clojure+Emacsな開発環境を作る(late 2011) tags: [] categories: ["Programming", "Lisp", "Clojure"] date: 2011-11-26T06:25:52Z updated: 2011-11-26T06:25:52Z --- Clojureは浦島太郎状態なので、リハビリする。 まずはClojure環境構築記事が大分古くなったので最新化 ### Emacsの準備 (package.el+Marmaladeでパッケージ管理) MarmaladeはEmacs24から標準搭載らしいElispのパッケージ管理システム。使ってるEmacsは23なのでとりあえずマニュアルインストール(wgetしてload-pathに追加)。 (「It's fully compatible with package.el and ELPA」って書いてあるけど包含関係がいまいち分かっていない) $ cd ~/.emacs.d/elisp $ wget http://repo.or.cz/w/emacs.git/blob_plain/1a0a666f941c99882093d7bd08ced15033bc3f0c:/lisp/emacs-lisp/package.el ちなみに僕は↓のような読み込み設定を書いています(5年くらい前に書いたままだ。。) ;; loading local elisp (let ((my-elisp-dir "~/.emacs.d/elisp")) (when (file-exists-p my-elisp-dir) (unless (member my-elisp-dir load-path) (setq load-path (cons my-elisp-dir load-path))) (dolist (f (directory-files my-elisp-dir)) (when (file-regular-p (format "%s/%s" my-elisp-dir f)) (print (format "loding %s" f)) (require (intern (car (split-string f "\\.")))))))) package.elの設定は以下。レポジトリに[Marmalade][1]を設定。 (require 'package) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (package-initialize) を設定(`M-x eval-current-buffer`で即反映)。 `M-x package-list`でインストールできるパッケージの一覧取得。 代表的コマンドは以下 - M-x package-list (インストールしたいパッケージでiを押して、xでインストール) - M-x package-install (Enter押したあと、パッケージ名入力) - M-x package-refresh-contents ### clojure-modeインストール `M-x package-install clojure-mode`で。 2011-11-26時点で最新版のclojure-mode-1.11.4がインストールされました。更新が早い!clojurescript-modeとかあるw あとは.emacs.elに (require 'clojure-mode) を書く。 ### Pareditの設定 よくわからんけど、clojure-modeのページで説明されてるし、ClojureBoxにも入っているみたいだから、設定しておく。.emacs.elに↓を設定。 (defun turn-on-paredit () (paredit-mode 1)) (add-hook 'clojure-mode-hook 'turn-on-paredit) あとで調べる ### slimeのインストール 同様に`M-x pacakge-install slime`と`M-x package-install slime-repl`を実行(エラーが出ても無視)。 ### leiningenのインストール 言わずとしれたClojureのビルドツール[leiningen][2]。wgetするもよし、パッケージ管理システム経由で取得するのもよし。僕はbrewで(バージョンは1.6.1) $ brew info leiningen leiningen 1.6.1 http://github.com/technomancy/leiningen /usr/local/Cellar/leiningen/1.6.1 (3 files, 36K) Standalone jar and dependencies installed to: $HOME/.m2/repository http://github.com/mxcl/homebrew/commits/master/Library/Formula/leiningen.rb $ brew install leiningen ### swank-clojureのインストール slimeとclojureプログラムをつなげるサーバーの[swank-clojure][3]をインストール $ lein plugin install swank-clojure 1.3.3 バージョンは2011-11-26時点の最新。 ### 新規プロジェクト作成 $ lein new hello $ cd hello $ emacs -nw src/hello/core.clj ファイルを開いて`M-x clojure-jack-in`でswank-serverが立ち上がる(昔に比べてめちゃくちゃ楽だ。。) あとはコードを書いてはreplで試して開発を勧めればおk。 代表的なコマンドは[SLIME Commands][4]参照。 個人的によく使うのは↓かな - C-x C-l 現在のバッファを読み込んでREPLに反映 - C-x C-m マクロ展開 - C-c TAB 補完 - M-. ソースコードにジャンプ [1]: http://marmalade-repo.org/ [2]: https://github.com/technomancy/leiningen [3]: https://github.com/technomancy/swank-clojure [4]: https://github.com/technomancy/swank-clojure/blob/master/README.md