Atomはファイルの拡張子をみて、grammarを選択してくれるのだが、カスタマイズしたいことがある。
atomのソースコードを読んでやり方を調べたので、メモっておく。
grammar選択の概要
atomの言語ハイライト機能はgrammar
と呼ばれている。(大抵はlanguage-hogehoge
というパッケージ名で提供されている)
grammar
は内部的にはscopeName
で管理されているようで、
grammar.fileTypes
という拡張子のArray
に則って、どのgrammar
が選ばれるか決まる。
この部分には、ユーザー定義を追加できるようになっている。(core.customFileTypes
)
適用したいgrammarのscopeNameを調べる
customFileTypesは、scopeNameから拡張子配列へのHashなので、scopeNameを調べる。
atomのプラグインはgithub上にソースコードが公開されていると思われるので、それをさがす。
grammarの属性の定義は grammars/*.cson にある。
当該csonの中身を見て scopeNameを調べる。
例えば、*.txtファイルに対して、markdownによるハイライトを適用したいとすると、
markdownというgrammarのscopeNameを知る必要がある。
atomに組み込みのmarkdown記法を実現しているパッケージは、language-gfm
だ。(Github Flavored Markdownの略らしい。)
ソースコードは以下
https://github.com/atom/language-gfm
scopeNameはここ。
https://github.com/atom/language-gfm/blob/master/grammars/gfm.cson#L2
"source.gfm"
が求める文字列になる。
Atomの設定ファイル(config.cson) に記述する
atomの設定を開き(Command
+,
など)、Open Config Folder
ボタンで、設定ディレクトリを開き、
config.cson
を開く。
jsonとYaMLの合いの子のようなcson形式で書かれている。
ここに
"*":
core:
...
...
customFileTypes:
先程調べたscopeName: [
適用したい拡張子
]
という記述を追加する。
*.txtファイルに対して、markdownによるハイライトを適用したい、という先程の例の場合なら
"*":
core:
...
...
customFileTypes:
"source.gfm": [
"txt"
]
となる。