ruby-electric-mode

閉じ括弧や end を自動で補ってくれる Ruby スクリプト編集用のマイナーモード、ruby-electric-mode がかなり便利なことを発見。ruby-mode に添付されていたのに、マイナーモードでなおかつ require しないと使えないようになっていたので、今日まで存在自体に気付いてなかった(;^ω^)

(require 'ruby-electric) で使えるようになる。

} (閉じ brace)の補完の際、自動的に改行もして欲しい場合は変数 ruby-electric-newline-before-closing-bracket を t に設定すれば OK 。

ruby-mode の設定と合わせ、.emacs には次のように書いておく。

(autoload 'ruby-mode "ruby-mode"
  "Mode for editing ruby source files" t)
(setq auto-mode-alist
      (append '(("\\.rb$" . ruby-mode)) auto-mode-alist))
(setq interpreter-mode-alist
      (append '(("ruby" . ruby-mode)) interpreter-mode-alist))
(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)
            (require 'ruby-electric)
            (ruby-electric-mode t)
;; 	    (setq ruby-electric-newline-before-closing-bracket t)
            ))
追記

いざ使ってみると、Ruby では式展開やハッシュの初期化、小さなブロックなど、改行なしで { } を閉じる局面が多いため、{ の入力の後で勝手に改行されてしまうと逆に不便。変数 ruby-electric-newline-before-closing-bracket はいじらない方が無難。