emacs24 による Clojure 開発環境構築メモ
手元の clojurebox 環境がごちゃごちゃしてきた & emacs24 を入れてみたくなってきたので、lispbox捨てて emacs 入れなおして環境構築〜のメモ。
導入、基本設定
下記に沿って実施。
emacs の導入
1. 下記より emacs-24.1-bin-i386.zip をダウンロードし、「C:\emacs-24.1」に展開
【2013/07/21追記】
日本語環境の快適化のため、上記ではなく、gnupack(IMEパッチ等を当てたNTEmacs(GNU 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-mode と ac-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)