とてつもなく便利なLeopardのQuickLook。
ただ、入れるのはなかなか苦労する事も。そんな訳でメモです。
基本的に、
/ライブラリ/QuickLook
に.qlgeneratorを入れれば動きます。
でもこれはあくまで基本。基本に忠実に動いてくれない事も多々。
.qlgeneratorはパッケージなので、.appと同様ctrl&クリックなり右クリックなりダブルタップなりして、
「パッケージの内容を表示」すると中に手を入れられます。
で、info.plistやらを弄らないといけない事も。
UTI
UTIはMacのファイルタイプ識別子で、URI風になってます。たとえばJavaのソースは「com.sun.java-source
」みたいに。
なかなかくせ者で、泣かされる事請け合いです。
「public.」で始まるのは「public.source-code」や「public.xml」などの一般的なもので、Appleが決める物です。で、継承階層のように階層状に定義されます。
基本的にそのファイルの関連づけられたアプリケーションのinfo.plistで定義するみたい。
-
CFBundleDocumentTypes
- LSItemContentTypes の中に名前があって、
- UTExportedTypeDeclarations
- UTImportedTypeDeclarations のどちらかに定義が無いといけないぽいです。
ExportedはそのApp用のファイル、Importedの方は別のアプリケーションのファイルやけど開けるよ、てときに使います。
これが書き替えて即反映、とは行かないようで、ログオフして再ログインしたり、再起動してみたりと色々しないとうまく反映されません。
qlmanage
QuickLookの管理用コマンドがqlmanage。これはめっちゃお世話になります。覚えておくと吉。
コマンドラインから起動
> qlmanage -p -c <UTI> -g <試したいジェネレータ> <プレビューを表示するファイル>
とコマンドを入力すると指定した.qlgeneratorを使って指定したファイルを開けます。
「-c <UTI>」「-g <試したいジェネレータ>」はそれぞれオプションで、指定しなければ拡張子やcreatorなどから判定されます。
これを使って、うまく動かないときはちょっとずつ確認しながら問題を特定していきます。
特にUTI指定でちゃんと開けるか確認->UTI指定無しでちゃんとひもづけたUTIで開きにいってるか確認、と言うのはめっちゃ繰り返します。
QuickLook再起動
「qlmanage -r」でQuickLookの設定をクリアできます。
ほか、こまごまとしたオプションなどは「qlmanage -h」で。
QLColorCode
なかなか使いでのあるコードカラーリング用.qlgeneratorです。
基本的な設定は「defaults」コマンドで行います。たとえば、
> defaults write org.n8gray.QLColorCode extraHLFlags '-l -W'
とすると、行番号がついて(-l)自動改行して(-W)くれます。
また、info.plistの中の「QLPreviewWidth」をディスプレイの幅いっぱいにしておくといい感じです。実際には最大幅指定になるようで、これをしておくと最大化したときに全画面表示になります。
この設定を変更したあとは、
> qlmanage -r
してキャッシュをクリアする必要があります。
日本語対応
Leopardを使いこなすというページに書いてありました。
QLColorCode.qlgeneratorの"パッケージの内容を表示"して〜Contents/Resources/colorize.sh を開き〜30行目に以下のように utf-8 のオプションを追加します。
--encoding utf-8 --font-size $fontSizePoints ${=extraHLFlags}) # line30
34行目の reader を以下のようにします。(nkfのpathは自分の環境に合わせて変更してください)
reader=(/opt/local/bin/nkf -w $target) # line34
こうすると、とにかく日本語を正しく表示するようになり、かつ色付き強調表示できるものは強調表示、 できないものはそんな拡張子は知らんというメッセージの後、強調表示をせずに白黒で通常表示を行います。
なるほどなるほど。 という訳で、porticusを使ってMacPortsからデフォルトでnkfをインストールして、上記の通りやってみると…うまく行きました!
QLColorCodeのgroovy対応
まず、CFBundleDocumentTypesの中のLSItemContentTypesのarrayにgroovy用のUTIを追加します。
sourcecode.groovyなどでいいでしょう。
<key>LSItemContentTypes</key> <array>
...
<string>sourcecode.groovy</string><!-- この1行を追加する --> </array>
さらに、UTImportedTypeDeclarationsにも追加します。このとき、LSItemContentTypesに追加したUTIと一致させるよう注意してください。
<key>UTImportedTypeDeclarations</key> <array>
...
<!-- 同じような記述が並んだ中に、以下の記述を追加する。 --> <dict> <key>UTTypeConformsTo</key> <array> <string>public.source-code</string> </array> <key>UTTypeDescription</key> <string>Groovy Source Files</string> <key>UTTypeIdentifier</key> <string>sourcecode.groovy</string> <key>UTTypeTagSpecification</key> <dict> <key>public.filename-extension</key> <array> <string>gv</string> <string>gvy</string> <string>groovy</string> </array> </dict> </dict>
...
</array> </dict> </plist>
dictがいっぱい並んでるので、追加先を間違えないように注意が必要です。最後よりも、その1つ手前の方が間違えにくそうです。
最後に、groovy用の言語定義「groovy.lang」をQLColorCode.qlgeneratorの中の
Contents/Resources/override/langDefs
に作成します。
Contents/Resources/highlight/share/highlight/langDefs/java.langをコピーして手直ししました。
- $KW_LIST(kwa)に「def」を追加
- $STRINGDELIMITERSに「"""」 「'''」を追加 他にもいろいろと出来そうですが、まずはそんなところで充分でした。