14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-10-18

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

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?