Carbon Emacsでemacs-railsを使う

Emacsをちゃんと使うこともかねて、emacs-railsを使うことにした。
まずは.elを設置する場所を決めないと。MacOS Xの作法がいまだによくわからないけど、perlを参考にして~/Library/Emacsに決めた。

> mkdir -p ~/Library/Emacs

必要な配布物を取得して、このディレクトリの下に展開する。必要なのは次の4つ。

> find Library/Emacs 
Library/Emacs
Library/Emacs/emacs-rails
Library/Emacs/emacs-rails/ChangeLog
Library/Emacs/emacs-rails/rails-core.el
Library/Emacs/emacs-rails/rails-for-controller.el
Library/Emacs/emacs-rails/rails-for-layout.el
Library/Emacs/emacs-rails/rails-for-rhtml.el
Library/Emacs/emacs-rails/rails-lib.el
Library/Emacs/emacs-rails/rails-navigation.el
Library/Emacs/emacs-rails/rails-ruby.el
Library/Emacs/emacs-rails/rails-scripts.el
Library/Emacs/emacs-rails/rails-ui.el
Library/Emacs/emacs-rails/rails-webrick.el
Library/Emacs/emacs-rails/rails.el
Library/Emacs/emacs-rails/README
Library/Emacs/find-recursive.el
Library/Emacs/inf-ruby.el
Library/Emacs/README
Library/Emacs/ruby-electric.el
Library/Emacs/ruby-mode.el
Library/Emacs/rubydb2x.el
Library/Emacs/rubydb3x.el
Library/Emacs/snippet.el

あとは.emacsで設定するだけ。今後、サブディレクトリが増えるたびにload-pathに設定するのが面倒なので、以下の内容でsubdirs.elを作成する。

(normal-top-level-add-subdirs-to-load-path)

.emacsはこんな感じ。

;;;; load-path 追加
(let ((dir (expand-file-name "~/Library/Emacs")))
  (if (member dir load-path) nil
    (setq load-path (cons dir load-path))
    (let ((default-directory dir))
      (load (expand-file-name "subdirs.el") t t t))))

;;;; ruby-mode.el
(autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files")
(add-to-list 'auto-mode-alist '("\\.rb$" . ruby-mode))
(add-to-list 'interpreter-mode-alist '("ruby" . ruby-mode))
(autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process")
(autoload 'inf-ruby-keys "inf-ruby" "Set local key defs for inf-ruby in ruby-mode")
(add-hook 'ruby-mode-hook '(lambda () (inf-ruby-keys)))

;;;; emacs-rails
(defun try-complete-abbrev (old)
  (if (expand-abbrev) t nil))

(setq hippie-expand-try-functions-list
      '(try-complete-abbrev
        try-complete-file-name
        try-expand-dabbrev))

(require 'rails)

適当なcontrollerのファイルを開いてみると、RubyかつRoRなmodeになっていることが確認できる。
http://static.flickr.com/121/294486746_3afc306bc4.jpg
あとはrails-create-projectを実行した際に、リポジトリを作ったりdatabase.yamlを編集したりする自作スクリプトが実行されるように変更すれば完璧。