$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

emacsのruby環境を整えています

最近VagrantとかChefとかCapistranoとか、それなりにrubyのプロダクトを触るようになったし、別の言語の良いプロダクトも見ないといけないという気分になったから、とりあえずemacsの環境を整えようと思い出した。まずは基本から。

ruby-mode

modeはruby-modeを使えばいいっぽい。多分標準で入ってると思う。rubyは.rbつかないような奴も多いので、それは適当にruby-modeに紐づくようにする。中身を見てrubyと判別するやつもあるような気がするけど、まだそれは使ってない。

(autoload 'ruby-mode "ruby-mode"
  "Mode for editing ruby source files" t)
(add-to-list 'auto-mode-alist '("\\.rb$" . ruby-mode))
(add-to-list 'auto-mode-alist '("Capfile$" . ruby-mode))
(add-to-list 'auto-mode-alist '("Gemfile$" . ruby-mode))

あとhookを幾つか入れてみた。これは昔使ったものだったらから、今は要らないかもしれない。

tab幅の設定とかreturnでindentもしてくれる設定とかかな。

(add-hook 'ruby-mode-hook
          '(lambda ()
             (setq tab-width 2)
             (setq ruby-indent-level tab-width)
             (setq ruby-deep-indent-paren-style nil)
             (define-key ruby-mode-map [return] 'ruby-reindent-then-newline-and-indent)))

ruby-block

endとかあるところにカーソル当てたらそれに対応してくれる行をハイライトしてくれたり、minibufferに行を表示してくれたりする奴。普通に便利だった。
http://www.emacswiki.org/cgi-bin/wiki/ruby-block.el とかel-getとか使って取ってくると良い。

その後設定しておく。

(require 'ruby-block)
(ruby-block-mode t)
(setq ruby-block-highlight-toggle t)

詳しくは http://d.hatena.ne.jp/khiker/20071130/emacs_ruby_block を参照。

ruby-electric

do endの組みとかカッコの組みとかを勝手に挿入してくれるやつ。とりあえず入れてみてる。あと""とかを補完されるのはうっとおしい感じだったから適当に設定してみた。うまく行っているかはまだわかってない。

(require 'ruby-electric)
(add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode t)))
(setq ruby-electric-expand-delimiters-list nil)

詳しくは

rcodetools

xmpfilterとかいろいろはいってるらしい。まだちゃんと使い方わかってない。とりあえずxmpfilterだけ使えるようにした。

(require 'rcodetools)
(define-key ruby-mode-map (kbd "C-c C-d") 'xmp)

詳しくは

まとめ

いろいろrubyの開発環境を良くするための物を入れてみている。けど、あんまりどういうのがあるかよくわかってないので、これは便利というのがあれば教えて下さい。