textmateに共通Languageを定義
最近はvimを主に使用していましたが、
javascriptはなんだか書きにくい印象だったので
textmateを再び使っていました。
使用中に、vimで重宝していた「行末の無駄なスペースを表示」を
textmateでやろうと思いpatternを追加しようとしたところ
ああ、これ他の言語でもやりたいよね〜と思い、
以前思いついた
(共通処理用のLanguageを新規で作って、includeさせるのが綺麗なやり方なのかな。)
textmateの全角空白をハイライト - うんたらかんたら日記
にチャレンジしてみました。
やり方ざっくり
1.専用のBundle - Languageを作る
2.各言語でincludeする
3.環境設定で専用のelementを定義する
詳細
1.専用のBundle - Languageを作る
Bundles - Bundle Editor - Edit Languages
New Bundle して New Language します。
今回は、My Bundle、My Common という名前にしてみました。
Languageの中身は、こちら。
{ scopeName = 'my.common'; patterns = ( { include = '#whitespace-zenkaku'; }, { include = '#whitespace-last-line'; }, ); repository = { whitespace-last-line = { patterns = ( { name = 'invalid.whitespace-last-line'; match = '\s$'; }, ); }; whitespace-zenkaku = { patterns = ( { name = 'invalid.whitespace-zenkaku'; match = ' '; }, ); }; }; }
書いた後、右下のtestボタンを押すとformatチェックが走ります。
(この時にインデントが修正されたり、ソートされたりするので
前回作った「zenkaku-whitespace」を「whitespace-zenkaku」に変更しています)
2.各言語でincludeする
これは簡単。各Languageのpatterns下にMy CommonのscopeNameをincludeします。
{ include = 'my.common'; },