Hatena::ブログ(Diary)

hogehoge @teramako RSSフィード

 | 

2007-10-25

vimperator + SplitBrowser で :sp[lit] コマンド

vimperator 0.5.3用に書き直しました

以下のFirefox Addonのコラボレーション。

vimと言ったらspコマンドでしょ!?
タブも良いけど画面分割も行いたい!
ってことで一部作ってみた。

%HOME%/_vimperatorrcに以下を追加*1

:javascript <<EOF
vimperator.commands.add(new vimperator.Command(['sp[lit]'],
  function(urls){
    var b = SplitBrowser.activeBrowser;
    if (b.localName != 'tabbrowser') b = gBrowser;
    if (!urls) {
      vimperator.echo('Split and load current URL.');
      SplitBrowser.addSubBrowserFromTab(b.selectedTab, SplitBrowser.POSITION_TOP);
    } else {
      if ( typeof urls == 'string' ){ 
        urls = urls.toURLArray();
      }     
      var url = typeof urls[0] == 'string' ? urls[0] : urls[0][0];
      vimperator.echo('Split and load '+ url); 
      SplitBrowser.addSubBrowser(url, null, SplitBrowser.POSITION_TOP);
    }   
  },{
    usage: ['sp[lit]'],
    shortHelp: 'split browser',
    help: 'sp[lit] [URL]',
    completer:function(filter){ return vimperator.completion.get_url_completions(filter); }
  } 
));
EOF

:splitを作ったなら:vsplitも、と思ったが使用頻度が少ないと見て止めた。作るべきは以下のようなものだろう

  • Ctrl + w+[hjkl] | Ctrl + wによるフォーカス移動
  • :onlyで分割ブラウザを閉じる動作

しかし、分かっていない事が多い。

  • 2段階によるキーボード操作はmapで対応できるのか?
    • 出来ない場合、どのようにキー操作を登録するのか
  • ブラウザ分割した時、フォーカスする要素は何か

両者の拡張機能を解析していけば分かると思うけど、道のりはちょっと長そうだ。でも、分割したは良いものの、その後の操作にマウスが必要じゃぁvimperatorの意味が無いからね。がんばりたいところ。

なんつーか、中途半端なもので申し訳ないが、フィードバック等あればヨロシク!

*1:_vimperatorrcについては「環境設定ファイル vimperatorrc の詳しい手順 - k0yの日記」に詳しく載っている

piro_orpiro_or 2007/10/26 17:26 addSubBrowserFromTabの返り値が<subbrowser>というXUL要素(XBLで実装)なので、

var subbrowser = SplitBrowser.addSubBrowserFromTab(gBrowser.selectedTab, SplitBrowser.POSITION_BOTTOM);
subbrowser.addEventListener(’load’, function() {
subbrowser.removeEventListener(’load’, arguments.callee, true);
subbrowser.browser.contentWindow.focus();
}, true);

とすればOKです。(loadイベントを使っているのは、読み込み完了後にフォーカスしないといけないため)

teramakoteramako 2007/10/26 19:46 ふほっ。ご本人ご登場とは!
loadイベントを取らないといけないのは頭にありませんでした。
ありがとうございます!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

 |