Quick Lookプラグイン「QLColorCode」の対応言語を拡張する(2)

海上忍
2010-02-02 12:00:00
  • このエントリーをはてなブックマークに追加

 Quick Lookのエンジン部分(Quick Look Server)は、ファイルがメタデータとして持つ識別子「Uniform Type Identifier」(UTI)を参照し、どのQuick Lookプラグインでファイルのプレビューイメージを生成するか決定する。そしてUTIは、ファイルとアプリケーションの関連付けを動的に管理する「Launch Services」によりデータベース化され、システムコンポーネント(/System/Library/CoreServices/CoreTypes.bundle)やアプリケーション内部のファイルで定義される。

 ソースファイルの場合、実体はプレインテキストのため、CoreTypes.bundle内のInfo.plistでファイル拡張子と関連付けられているのが実情だ。そのため、拡張子「.go」ではクイックルックできないGoソースファイルも、拡張子を「.cc」や「.m」などに変えて偽装すれば、QLColorCodeでシンタックスハイライトできるようになる。しかし、拡張子を変えずにクイックルックできなければ意味がない……。

 対処策の1つは、CoreTypes.bundle内のInfo.plistに、拡張子「.go」のエントリを設けることだ。新規作成してもいいが、Goの文法はC/C++に近いため、ここではC++のエントリを間借りする方法を紹介する。なお、Snow Leopardと開発環境(Xcode Developer Tools)が必要なので念のため。

1. Terminalを起動し、下記のとおりカレントディレクトリを変更する。

$ cd /System/Library/CoreServices/CoreTypes.bundle/Contents/

2. 以下のコマンドを実行し、Info.plistのコピーとバックアップを作成する。

$ cp Info.plist ~
$ sudo mv Info.plist Info.plist.orig

3. 以下のコマンドを実行し、Property List Editorで「Info.plist」の編集を開始する。

$ open ~/Info.plist

4. 「Exported Type UTIs」のItem 104(public.c-plus-plus-source)を展開し、「public.filename-extension」以下の「Item 4」右端にある「+」ボタンをクリックする。

5. 「Item 5」が新規作成されるので、Value欄に「go」と入力したあと、上書き保存する。

6. 以下のコマンドを実行し、手順5のInfo.plistをCoreTypes.bundle内へ移動する。その後、システムを再起動する。

$ sudo mv ~/Info.plist .

 これでひとまずGoソースのクイックルックは可能になるが、QLColorCodeによるシンタックスハイライト処理は行われない。というわけで、もうしばらくお付き合い願いたい。

Property List Editor Property List Editorでの作業の様子。画像をクリックすると拡大します
  • 新着記事
  • 特集
  • ブログ