拡張子の関連付け:ファイル名ごとにモードを設定する

  • 11
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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を作ったの記事を書いたときに知りました。