Greasemonkey: Javadocをインクリメンタル検索 0.4

Javadocをインクリメンタル検索するGreamsemonkeyスクリプトの新しいバージョンをリリースしました。

  • 初期化速度の改善。10倍くらい速くなりました。
  • Enterキーでクラス/アンカーを開けるように。
  • 「@キー+数字」でメニューを選んだ時に、メインのフレームで開けなくなっていたのを修正。
  • スクリプト冒頭のAUTO_OPENをtrueに設定すると、候補が1つに絞られた時に、勝手にクラスを開くようになります。デフォルトはfalse。
  • キーアップで毎回検索するのをやめました。インターバルで検索を開始するように修正。

初期化処理が速くなりました。java5APIドキュメント(3300クラスくらい)でもそこそこ動いています。以前は、「スクリプトの実行を中止するかこの馬鹿が」ってダイアログが出たりしてました。

高速化のため、検索候補1つ1つのDOMを操作するのをやめて、innerHTMLから正規表現で候補を取得するようにしました。

検索結果を表示する時は、先にHTMLソースを組み立てておいて、documentとつながりの無いノードのinnerHTMLに設定、表示中のノードをreplaceするようになっています。

別フレームで開く機能はGreaseMonkeyのバージョンアップで使えなくなっていたのですが、unsafeWindowを経由して動くようにしました。

AUTO_OPENは実験的に実装してみました。自分で試用中です。

今回の修正では、malaさんのCPAN Saisoku Searchを参考にさせていただきました。ありがとうございます。CPAN Saisoku Searchは死ぬほど速いです。

たぶん表示件数を絞るのが肝なのかなあと、ソースもろくに読まずにmalaさんの記事からの推測で思うんですけれども、ただ、グリースモンキーでスクロールにまで手を入れてしまうのはちょっとやり過ぎの気もしていて、先頭n件以降はスクロールバーでスクロールした時に初めて描画するか、件数が多い場合はsetInterval()でちょっとずつ表示するか、そんな感じのことを考えています。


あとしばらく前に、普段自分が日記を読んでいて超すごいなあと思っている方から、このスクリプトの件で投げ銭のポイントをいただいて、とても嬉しかったです。今ごろになってしまいましたけど、本当にありがとうございました。あのポイントを心の支えにこのバージョンのコーディングをしました。


えー、そんなわけで、使ってみてもしよかったらコメント等いただけると、大変にうれしいです。ポイントもすごく嬉しいですが、コメントもそれなりに嬉しいのでぜひ!