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'; },

とするだけ。


3.環境設定で専用のelementを定義する

あとはお好きなカラーリングで。

こんな感じ