multi_requester.jsでの検索結果で画面が埋まってしまうのをなんとかしたい(multi_requester.jsだけじゃないけど...)のでちょっと調べてみた。
多分、以下のような感じでいけてそう。
:js document.getElementById("liberator-multiline-output").parentNode.maxHeight="300px"
画面の半分までという風に制限したければ、以下のような感じで書けばよい
:js document.getElementById("liberator-multiline-output").parentNode.maxHeight=content.innerHeight/2 + "px"
補完候補のリストも同様にサイズ指定できるっぽい
:js document.getElementById("liberator-completions").parentNode.maxHeight="300px"
ui.jsを読んだら、他にもおもしろそうなのが見つかるかも...
うーん... 補完リストはスクロール領域も合わせてサイズ調整しないと、画面からはみだして使い物にならなくなるなぁ...微妙。
英語のサイトを読むときのお供として、最近、multi_requester.jsの'alc'サブコマンドが気に入っている。
ただ、何度も検索かけたいときに、単語を選択→検索, 単語を選択→検索... という操作がダルくなってきたので、いっそ、キャレットブラウズ時に自動的に単語を選択してくれるようなモードがあればいいのでは?と思いプラグインを作ってみた。
http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/auto_word_select_mode.js
このプラグインをpluginフォルダに突っ込むと、AUTO_WORD_SELECTという新しいモードが追加されます。
IキーでAUTO_WORD_SELECTモードに移行します。このモードを抜ける場合はもう一度Iキーを押してください。
AUTO_WORD_SELECTモードでは常に単語が選択されている状態になります。
hjklでのキャレットの移動も単語ごとの移動になります。
このモード用のキーマップを定義する場合は、以下のようなコードを.vimperatorrcなどに記述します。
下記は、選択されている単語をmulti_requester.jsを使用して、英辞郎 on the Web で検索するためのキーマップです。
js <<EOM liberator.registerObserver("enter", function() { // for auto_word_select.js mappings.addUserMap( [modes.AUTO_WORD_SELECT], ["s"], "Translate selected word by multi_requester.js.", function() { // FIXME: // A present mode is preserved in the stack beforehand by the push() method // because it doesn't return to AUTO_WORD_SELECT mode before that when // returning from the OUTPUT_MULTILINE mode. modes.push(modes.AUTO_WORD_SELECT, null, true); var selText = content.getSelection().toString(); var pattern = /[a-zA-Z]+/; selText = pattern.test(selText) ? pattern.exec(selText) : selText; events.feedkeys(":mr alc " + selText + "<CR>", true, true); } ); }); EOM
プラグインを読み込んだ後に実行する必要があるため、registerObserver()で"enter"のタイミングで処理を行うようにしています。
どうでもいいけど、モードの遷移まわりのコードとか、events.jsのonKeyPressあたりのコードがけっこうゴチャゴチャしてて、ひじょーに読みにくかった><。
今回は、そのあたりの解読に時間を多く割かれてしまったかも。
このプラグインを作るにあたっては、vimpのソースを久しぶりにガッツリ読んだので、それに関する内容忘れないようにWikiに反映させておいたので、皆さんのご参考に...
Vimperator - livedoor Wiki(ウィキ)
あと、気が向いた方は記述内容の修正/追加もよろしくお願いしますー。
たまに、引っかかって上下に移動できなくなってしまう。なんとなく理由はわかるんだけど、うまいかいひ