vimperator のコマンドから「はてなブックマーク」

vimperator 0.5.3用に書き直しました
そろそろvimperatorタグを作ろうかな...
:hatenaBookmark URLはてブの追加画面へ飛ぶスクリプトを書いた。URLは任意で無ければ、現在開いているURLとなる。
URL引数を受けるようにしたのはCtrl + Shift + zと併用する事でURLをちょっと編集して登録が出来るようにするため。Open Tech PressとかdeveloperWorks Japanとかのフィードを購読しているとURLのクエリに変なのが付いて何か嫌なので、それを取り除くのが目的。

そして、今回はHOME/.vimperatorrcではなく、HOME/.vimperator/plugin/hatenaBookmark.jsとして記述してみた。HOME/.vimperator/plugin/以下に*.jsファイルを作ると自動的にJavaScriptとして読み込まれるのだ*1

vimperator.commands.add(new vimperator.Command(['hatenaBookmark','hateb'],
  function(args){
    if (!vimperator.buffer.title || !vimperator.buffer.URL || vimperator.buffer.URL=='about:blank'){
       return false;
    }
    var str = "javascript:window.open('http://b.hatena.ne.jp/add?mode=confirm&is_bm=1&title=";
    var title = escape(vimperator.buffer.title);
    var url = escape(vimperator.buffer.URL);
    if (args){
      title = '';
      url = escape(args);
    }
    url = url.replace(/%23/g, '%2523');
    vimperator.open(str + title + "&url=" + url + "','_blank');undefined;");
  },{
    usage: ['hatenaBookmark [url] ','hateb [url]'],
    shortHelp: 'Bookmark to HatenaBookmark Service',
    completer: function (filter) {
      return vimperator.completion.get_url_completions(fileter);
    }
  }
));

vimperator.mappings.add(new vimperator.Map(vimperator.modes.NORMAL,
  ['<C-Z>'],
  function() {
    vimperator.commandline.open(
      ':',
      'hatenaBookmark ' + vimperator.buffer.URL,
      vimperator.modes.EX
    );
  },{
    shortHelp: 'Bookmark to HatenaBookmark Service'
  }
));

*1:それ以外は.vimperatorrcと同じような動きとなる