Greasemonkey: Javadocをインクリメンタル検索 0.4
Javadocをインクリメンタル検索するGreamsemonkeyスクリプトの新しいバージョンをリリースしました。
- 初期化速度の改善。10倍くらい速くなりました。
- Enterキーでクラス/アンカーを開けるように。
- 「@キー+数字」でメニューを選んだ時に、メインのフレームで開けなくなっていたのを修正。
- スクリプト冒頭のAUTO_OPENをtrueに設定すると、候補が1つに絞られた時に、勝手にクラスを開くようになります。デフォルトはfalse。
- キーアップで毎回検索するのをやめました。インターバルで検索を開始するように修正。
初期化処理が速くなりました。java5のAPIドキュメント(3300クラスくらい)でもそこそこ動いています。以前は、「スクリプトの実行を中止するかこの馬鹿が」ってダイアログが出たりしてました。
高速化のため、検索候補1つ1つのDOMを操作するのをやめて、innerHTMLから正規表現で候補を取得するようにしました。
検索結果を表示する時は、先にHTMLソースを組み立てておいて、documentとつながりの無いノードのinnerHTMLに設定、表示中のノードをreplaceするようになっています。
別フレームで開く機能はGreaseMonkeyのバージョンアップで使えなくなっていたのですが、unsafeWindowを経由して動くようにしました。
AUTO_OPENは実験的に実装してみました。自分で試用中です。
今回の修正では、malaさんのCPAN Saisoku Searchを参考にさせていただきました。ありがとうございます。CPAN Saisoku Searchは死ぬほど速いです。
たぶん表示件数を絞るのが肝なのかなあと、ソースもろくに読まずにmalaさんの記事からの推測で思うんですけれども、ただ、グリースモンキーでスクロールにまで手を入れてしまうのはちょっとやり過ぎの気もしていて、先頭n件以降はスクロールバーでスクロールした時に初めて描画するか、件数が多い場合はsetInterval()でちょっとずつ表示するか、そんな感じのことを考えています。
あとしばらく前に、普段自分が日記を読んでいて超すごいなあと思っている方から、このスクリプトの件で投げ銭のポイントをいただいて、とても嬉しかったです。今ごろになってしまいましたけど、本当にありがとうございました。あのポイントを心の支えにこのバージョンのコーディングをしました。
えー、そんなわけで、使ってみてもしよかったらコメント等いただけると、大変にうれしいです。ポイントもすごく嬉しいですが、コメントもそれなりに嬉しいのでぜひ!