去年の前半はScalaでわいわいやっていて、Emacsもensime前提で設定していたのですが去年の暮れから今年にかけてRubyを書かなくてはいけなくなったのでRuby用のelispをそろえていきます。

Ruby用elisp

しかしアレです。Emacs+Java/Scalaだと情報が少ないのですが、Emacs+Rubyだとすぐに情報が集まります。よさげなエントリを見かけたので、それをそのまま拝借します。
block-given.hatenablog.com
qiita.com

設定ファイルの分離とパッケージインストール前提の構成

とりあえず、以下のようにしてみました

~/.emacs

~/.emacs.d/ruby.el のように設定ファイルを準備して、本体の設定と分けます。

;; ruby-mode
(load "~/.emacs.d/ruby")
~/.emacs.d/ruby.el

package-install はEmacs-24で標準になっているので、パッケージ無ければ更新の構成にします。
El-get/Cask?知りません。使えたらいいのです。

"~/.rbenv"の設定場所が重要だと思います。環境によっては変えなくては。

(unless (package-installed-p rbenv)
  (package-refresh-contents) (package-install rbenv))
(unless (package-installed-p ruby-block)
  (package-refresh-contents) (package-install ruby-block))
(unless (package-installed-p ruby-end)
  (package-refresh-contents) (package-install ruby-end))
(unless (package-installed-p inf-ruby)
  (package-refresh-contents) (package-install inf-ruby))

;; rbenv
(require rbenv)
(global-rbenv-mode)
(setq rbenv-installation-dir "~/.rbenv")
;; coding style
(electric-pair-mode t)
(add-to-list electric-pair-pairs (?| . ?|))
;; highlight block
(require ruby-block)
(setq ruby-block-highlight-toggle t)
;; highlight end
(require ruby-end)
;; inf-ruby
(require inf-ruby)
(setq inf-ruby-default-implementation "pry")
(setq inf-ruby-eval-binding "Pry.toplevel_binding")
(add-hook inf-ruby-mode-hook ansi-color-for-comint-mode-on)
;; ruby-mode
(setq ruby-indent-level 3)
(add-hook ruby-mode-hook
          (lambda ()
             ;; ruby-modeの自前スタイル設定
             (setq ruby-indent-level 3)
	     ))

inf-ruby rbenvとの連携はbashrcに書くしかなさそう。
github.com

その他必要だったために入れたものなど

delete-trailing-whitespace … 末尾の空白削除
markdown-mode … markdown形式を読みやすく
coffee-mode … coffee scriptを書くとき
slim-mode … slimを書くとき
yaml-mode  … yamlを書くとき(必須!)

;; 行末の空白削除
(add-hook before-save-hook delete-trailing-whitespace)

;; markdown
(unless (package-installed-p markdown-mode)
  (package-refresh-contents) (package-install markdown-mode))
(autoload markdown-mode "markdown-mode.el" "Major mode for editing Markdown files" t)
(setq auto-mode-alist (cons (".md$" . markdown-mode) auto-mode-alist))

;; coffee
(unless (package-installed-p coffee-mode)
  (package-refresh-contents) (package-install coffee-mode))
(add-to-list auto-mode-alist (".coffee?" . coffee-mode))

;; slim
(unless (package-installed-p slim-mode)
  (package-refresh-contents) (package-install slim-mode))
(add-to-list auto-mode-alist (".slim?" . slim-mode))

;; yaml
(unless (package-installed-p yaml-mode)
  (package-refresh-contents) (package-install yaml-mode))
(require yaml-mode)
(add-to-list auto-mode-alist (".ya?ml$" . yaml-mode))
(define-key yaml-mode-map "C-m" newline-and-indent)