vimperatorのステーラスラインにタイトルを表示する

スポンサード リンク

いつからかvimperatorのstatuslineにはURLだけで,タイトルが表示されなくなっていた。あるいは記憶違いで,昔からなかっただろうか? とにかくvimperator-3.8.3ではURLだけだ。下の画像のようにタイトルも表示されるようにする方法を記しておく。

statlulineにタイトルを表示する

できれば .vimperatorrc だけでなんとかしたかったが,無理なのでソースコードも少しだけいじることになる。コンパイル済みのxpi (vimperator-3.8.3) もあるので面倒な方はそちらを使うと良い。

まず,gitでソースを持ってくる。

$ git clone git@github.com:vimperator/vimperator-labs.git

vimperator-labs/common/content/statusline.js の中にあるupdateUrl関数を次のように書き換える。要は url = buffer.title + "  " + url; を適切な場所に1行挿入しただけだ。

function updateUrl (node, url) {
    if (typeof(buffer) == "undefined") // quick hack to make the muttator compose work, needs more thought
        return;

    if (url == null){
        // TODO: this probably needs a more general solution.
        url = services.get("textToSubURI").unEscapeURIForUI(buffer.charset, buffer.URL);
        url = buffer.title + "  " + url;
    }

    // make it even more Vim-like
    if (url == "about:blank") {
        if (!buffer.title)
            url = "[No Name]";
    }
    else {
        url = url.replace(RegExp("^liberator://help/(\\S+)#(.*)"), function (m, n1, n2) n1 + " " + decodeURIComponent(n2) + " [Help]")
                 .replace(RegExp("^liberator://help/(\\S+)"), "$1 [Help]");
    }

    node.value = url;
});

で,makeしてxpiをfirefoxにインストールする。

ソースをいじるのが面倒な場合を考慮して, コンパイルしたxpi も配布しておこう。ただし,バージョンナンバーとか全くいじっていないので注意すること。

次に,これだけではページ読み込み時にURLしか表示されない(おそらくページ読み込みまえにupodateUrl関数が呼び出されるないため?)。そこで,autocmdを .vimperatorrc に書いておく。

autocmd DOMLoad .* -js args.url == buffer.URL && statusline.update()

これでだいたいOKだと思う。

Comments !

social