こんにちは。Objective-C は Emacs で書く派の宮本です。Emacs ユーザーならドキュメントも、もちろん Emacs で読みますね。今までドキュメントの参照には xcode-document-viewer にお世話になっていました。この Emacs Lisp を使うと、キーワードで検索して、結果を anything で絞り込むことができます。Xcode でドキュメントを検索するものと同じ検索結果が得られるので、とても便利です。ただ、筆者はドキュメントのタイトルのみから検索することが多いので、そちらに特化した anything の情報源を勉強がてら書いてみました。
Docset を解析する
Apple のドキュメントは iOS も Mac OS X も docset という形でまとめられています。その中を見ていくと、library.json というファイルがあります。この JSON には 全てのドキュメントについてタイトルやファイルパス、リソースのタイプなどのメタデータがまとめられています。ウェブの iOS Reference Library もほとんど docset と同じ構造をしており、library.json をもとにドキュメントの一覧を表示しています。この JSON を解析すれば、docset からドキュメントのタイトルとファイルパスの一覧が簡単に取得できるので、それをもとに anything の情報源を作ります。
anything でドキュメントのタイトルから絞り込みをする
パスの通った所に anything-apple-docset.el をおいて、次のコードを実行していただければすぐに使えます。
(require 'anything-apple-docset) ;; 違うバッファで開きたければ (setq anything-apple-docset-open-w3m-other-buffer t) ;; docsetのフルパス (setq anything-apple-docset-path "/Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiOS4_2.iOSLibrary.docset") ;; 初期化処理 (anything-apple-docset-init) ;; キーバインドはお好みで変更してください (global-set-key (kbd "C-c d") 'anything-apple-docset)
Emacs でコマンド (anything-apple-docset) を実行すると、anything が起動して、ドキュメントのタイトル一覧が表示されます。候補から選択すると w3m でドキュメントを開いてくれます。デフォルトのブラウザで開くアクションも追加してあるので、普段お使いのブラウザで開くこともできます。
anything-apple-docset.el はドキュメントのタイトルからしか検索ができません。メソッド名や関数名で検索する場合は、最初に紹介した xcode-document-viewer をお使いください。私も両方使っています。あと、Emacs Lisp をほとんど書いたことが無いので、変なコードもあるかもしれません。ご自由に書き換えてお使いください。