statuslineにMIMEタイプと文字コードとを表示するスクリプト


またWebで日記を書くことにした。関係ない前置き。

(ここから前置き)

わけあって10月あたりから紙を使う機会が増えた。それにあわせて日記もWebでなく紙に書いていた。だけど、散逸したり、検索ができなかったりで不便した。12月21日にid:eclipse-aからid:krogueに移った。せっかく移ったのに何も書かないのもあんまりだと思った。そんな背景があって、またWebで日記を書くことにした。内容はともかく毎日書こうと思ってる。

(もうすこしだけ前置き続きます)

昨日からVimperator 2.0を使いはじめた。今まではVimperator 1.2を使っていたんだけど、「'guioptions'でスクロールバー消せるんだぜ」「もうAutopagerizeは要らない」「Vimperator2.0最高!」「Vimperator2.0結婚してくれ!」「時代は2.0」といった声を聞いてるうちに2.0にしたくなった。

plugin色々試しつつ書きつつな日記でも書いていこうかな。恥ずかしがらずとりあえず出していこうかなと思ってる。

(ここまで前置き)

今日は「statuslineにMIMEタイプと文字コードとを表示するスクリプト」を書いてみた。

MIMEタイプと文字コードとを確認するだけなら:pageinfoで確認できる。だけど(私は)Vimでは'fileformat'と'fileencodding'と'filetype'とを常時表示しているわけだし、Vimperatorでは文字コードMIMEタイプとを常時表示しても良いんじゃないかと思った。

スクリプト自体は、以前書いた「statusline の [+-] をわかりやすい位置にわかりやすく表示」を焼き直したようなもの。作成にあたってid:janus_welの記事を大いに参考にした。

(function() {
    liberator.plugins.krogueUpdateStatusBar = function() {
        var doc = window.document;
        var target = doc.getElementById("liberator-statusline");
        var id_prefix = "liberator-statusline-field-";
        var items = [
            {id: "contenttype", value: window.content.document.contentType},
            {id: "characterset", value: window.content.document.characterSet},
        ];
        items.forEach(function(item, i, arr) {
            var label = doc.getElementById(id_prefix + item.id);
            if (label) {
                label.setAttribute("value", item.value);
            } else {
                label = doc.createElement("label");
                label.setAttribute("class", "plain");
                label.setAttribute("id", id_prefix + item.id);
                label.setAttribute("flex", 0);
                label.setAttribute("value", item.value);
                target.appendChild(label);
            }
        });
    };
    liberator.modules.autocommands.add(
        "LocationChange",
        ".*",
        "javascript liberator.plugins.krogueUpdateStatusBar()"
    );
    liberator.modules.autocommands.add(
        "DOMLoad",
        ".*",
        "javascript liberator.plugins.krogueUpdateStatusBar()"
    );
})();

Vimperatorのautocommandはあんまり分かってない。とりあえず動いたのでよしとする。

それにしても:styleで消せるんだから、とりあえず追加しておいて不要ならdisplay:none !important;ってそういう考え方はないのかな。ないし、Vimぽくするなら'statusline'はあって良いと思う。

とりあえず、今日はここまで。

参考