emacs の設定をメモメモ(ruby, rails)

何度も環境を構築するたびに設定しているので備忘録。
いろいろなサイトで記載されていることを集めているだけですが…。

ruby, rails の開発ができるように設定しています。
何かあれば更新・修正します。

必要なelファイル

下で紹介している init.el では elファイルの置き場を3つに分けていますが、1つにまとめても問題ありません。

init.el の中身

;; elファイルの置き場所を設定
(setq load-path (cons "~/.emacs.d/elisp" load-path))
(setq load-path (cons "~/.emacs.d/ruby-mode" load-path))
(setq load-path (cons "~/.emacs.d/rails-mode" load-path))

;; 起動時にスタートアップ画面を表示しない
(setq inhibit-startup-message t)

;; 1 行ずつスムーズにスクロールする
(setq scroll-step 1)

;; 行数を指定してジャンプする (goto-line)
(global-set-key "\C-l" 'goto-line)

;; 言語を日本語に設定
(set-language-environment 'Japanese)
;; 極力UTF-8とする
(prefer-coding-system 'utf-8)

;; エンコード方式をUTF-8
(set-default-coding-systems 'utf-8)

;; C-zでUndo
(global-set-key "\C-z" 'undo)

;; 行番号をデフォルトで表示
(global-linum-mode 1)

;; 対応する括弧を光らせる
(show-paren-mode 1)

;; 最近使ったファイルの一覧
(recentf-mode 1)

;; タイトルバーに開いているバッファのパスを表示
(setq frame-title-format (format "%%f - Emacs@%s" (system-name)))

;; ツールバーを消す
(tool-bar-mode -1)

;; 現在行を目立たせる
(global-hl-line-mode)

;; バックアップファイルを作らない
(setq backup-inhibited t)

;; モードラインに時間を表示する
(display-time)

;; 現在の関数名をモードラインに表示
(which-function-mode 1)

;; 選択部分のインデント
(global-set-key "\C-x\C-i" 'indent-region)

;; ruby-mode, rbファイルの関連付け
(autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files" t)
(setq auto-mode-alist (cons '("\\.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-electric
(require 'ruby-electric)
(add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode t)))

;; インデントの設定
(setq ruby-indent-level 2)
(setq ruby-indent-tabs-mode nil)

;; rails-mode
(require 'rails)
(define-key rails-minor-mode-map "\C-c\C-p" 'rails-lib:run-primary-switch)
(define-key rails-minor-mode-map "\C-c\C-n" 'rails-lib:run-secondary-switch)
(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))