Skip to content
gigatune edited this page Sep 25, 2012 · 2 revisions

新しい ruby-mode.el では、ruby-insert-end が無くなっている対策

ruby-insert-end 関数(?)は、"end"文字列を、しかるべきインデント位置に補完してくれる関数。 ただ、ruby-1.9.3-p194.tar.bz2 に含まれている ruby-mode.el には、ruby-insert-end 関数(?)が含まれていません。 ちょっと不便。

.emacs に以下のように記述すればOK.

ruby-mode を読み込む

(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)))

ruby-insert-end を手動で作成

(defun ruby-insert-end ()
  (interactive)
  (insert "end")
  (ruby-indent-line t)
  (end-of-line))
  (define-key ruby-mode-map "\C-c\C-e" 'ruby-insert-end)

以上をすると、任意の場所で C-c C-e を叩くと(しかるべきインデントで) end が挿入されます。

参考にしたページ