Emacsは拡張子の関連付けのように、メジャーモード(major mode)と呼ばれる函数を起動すると、適した編集機能を利用できるように設計されてる。
auto-mode-alist
でファイル名のパターンとメジャーモードを紐付けてやると、ファイルを開いたときに自動で判別してモードが起動されるようになる。
拡張子を指定する
「ファイル名の最後に特定の拡張子がついてたら」マッチする正規表現を書く。
init.el
(add-to-list 'auto-mode-alist '("\\.rb\\'" . enh-ruby-mode))
(add-to-list 'auto-mode-alist '("\\.rake\\'" . enh-ruby-mode))
(add-to-list 'auto-mode-alist '("\\.m\\(ark\\)?do?wn\\'" . gfm-mode))
ありがちなミスとして、正規表現の最後は$
ではなく\\'
にする。
ファイル名を指定する
「/
の直後に期待する文字列で終る」ファイル名にマッチする正規表現を書く。
init.el
(add-to-list 'auto-mode-alist '("/\\.jshintrc\\'" . js-mode))
(add-to-list 'auto-mode-alist '("/\\.jshintrc\\'" . js-mode))
あなたがメジャーモードの作者なら
応用編。
maruo.el
;;;###autoload
(define-derived-mode maruo-macro-mode prog-mode "[秀]macro"
"Major mode for editing Maruo macro.")
;;;###autoload
(add-to-list 'auto-mode-alist '("\\.mac\\'" . maruo-macro-mode))
上の行に;;;###autoload
を書いてやることで、利用者のinit.el
にわざわざ設定を書かせなくても自動であなたの作ったメジャーモードでファイル編集できるようになる。超べんり!
ちなみに私はpixiv-novel-modeを作ったの記事を書いたときに知りました。