Vimperatorの:tabopenコマンド(liberator.open)で現在のタブのすぐ右隣にタブを開くようにする

2011/01/13追記: 外部アプリからURL開く時も同様の動作にしたい場合はこちらへ Vimperatorで現在のタブの右隣にタブを開くようにする(外部アプリからURLを開く時なども) - wltの日記

TabMixPlusとかのアドオンに頼らずに、Vimperatorの:tabopenコマンド(が内部で呼んでるliberator.open関数)で現在のタブのすぐ右隣にタブを開くようにする。
これはabout:configのbrowser.tabs.insertRelatedAfterCurrentがtrueで無ければならない。
.vimperatorrcファイルに次を追加

" タブの開く位置を現在タブのすぐ右にする。(liberator.openの改造)
js <<EOM
liberator.open = liberator.eval(
                   '(' +
                   liberator.open.toSource().replace(/loadOneTab\(([^,]+),\s*([^,]+),\s*([^,]+),\s*([^,]+),\s*([^)]+)\);/, 'loadOneTab($1, {referrerURI: $2, charset: $3, postData: $4, inBackground: $5, relatedToCurrent: true})') +
                   ')',
                   liberator.open);

EOM

調べたこと(メモ書き)

liberator.open関数はgBrowser.loadOneTabを呼ぶ。
gBrowser.loadOneTabの引数を2個だけにすると、第2引数を次のようにして呼び出せる。

gBrowser.loadOneTab(aURI,
    {
        referrerURI: aReferrerURI,
        charset: aCharset,
        postData: aPostData,
        inBackground: aLoadInBackground,
        allowThirdPartyFixup: aAllowThirdPartyFixup,
        relatedToCurrent: aRelatedToCurrent,
    });

このrelatedToCurrentプロパティだな。
gBrowser.loadOneTabはgBrowser.addTabに、自身のだいたいの引数を渡して呼ぶ(relatedToCurrentの値も)。
relatedToCurrentをtrueにしておけばgBrowser.addTabが右隣にタブ開いてくれそうだな。