emacs24 による Clojure 開発環境構築メモ

手元の clojurebox 環境がごちゃごちゃしてきた & emacs24 を入れてみたくなってきたので、lispbox捨てて emacs 入れなおして環境構築〜のメモ。

導入、基本設定

下記に沿って実施。

emacs の導入

1. 下記より emacs-24.1-bin-i386.zip をダウンロードし、「C:\emacs-24.1」に展開

【2013/07/21追記】
日本語環境の快適化のため、上記ではなく、gnupackIMEパッチ等を当てたNTEmacsGNU Emacs for Win)とCygwinのセット)を用いる。更新も頻繁と見受けられた。(現時点の最新は「emacs-24.3-20130503.exe」)


2. %HOME%/.emacs.d/init.el に以下を記述

(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)


(defvar my-packages '(starter-kit
                      starter-kit-lisp
                      starter-kit-bindings
                      starter-kit-eshell
                      clojure-mode
                      clojure-test-mode
                      nrepl))

(dolist (p my-packages)
  (when (not (package-installed-p p))
    (package-install p)))

M-x package-refresh-contents リポジトリ内のパッケージをリストアップしたローカルファイルの更新
M-x package-list-packages   上記ローカルファイルを表示してみる

オートコンプリート設定

下記サイトを参考に設定。

auto-complete-modeac-slime の導入&設定。
ac-slime は SLIME を前提とするので、こちらも導入が必要。

なお、候補の選択は、M-p と M-q にて行う。
auto-complete-mode の詳細は下記サイトが詳しい。

括弧記述補助の設定(Paredit)【2013/07/27追記】

導入

my-packages への「paredit」の追記と、下記のとおりclojure-modeにフック。

(add-hook 'clojure-mode-hook 'enable-paredit-mode)
機能

機能豊富だが、最低限下記は覚えておく。

  • 閉じ括弧の自動挿入と、対応を崩す変更の禁止
  • 「C-k」で括弧単位のキル
  • 「C-u任意のキー」で、一時的に任意の操作可能

まとめ

以上のすべての設定を追記した %HOME%/.emacs.d/init.el は以下のとおり。

(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

(defvar my-packages '(starter-kit
                      starter-kit-lisp
                      starter-kit-bindings
                      starter-kit-eshell
                      clojure-mode
                      clojure-test-mode
                      nrepl
                      slime
                      auto-complete
                      ac-slime
                      paredit))

(dolist (p my-packages)
  (when (not (package-installed-p p))
    (package-install p)))

;; auto-complete
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(ac-config-default)
(setq ac-delay 0.5) ;; eclipse uses 500ms

;; ac-slime
(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))

;; paredit
(add-hook 'clojure-mode-hook 'enable-paredit-mode)


あと、直接的には関係ないが、以下も追記した。

;C-hをバックスペースに、C-?をヘルプに変更
(keyboard-translate ?\C-h ?\C-?)
(define-key global-map (kbd "C-?") 'help-command)

;フルスクリーンで起動
(add-hook 'term-setup-hook
	#'(lambda () (w32-send-sys-command ?\xF030)))

;行番号表示
(global-linum-mode)