Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

tadsan
僕に警備する自宅をください。Emacs初心者。Rubyist。 全ての投稿された記事は別段の表記がない限りはCC 3.0 BY-SA https://creativecommons.org/licenses/by-sa/3.0/deed.ja で二次利用できます。 記事中に含まれる全てのコードスニペットの著作権は抛棄するので、煮るなり焼くなりお好きにどうぞ。
https://tadsan.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away