toggleGuiOptions.js を Vimperator 2.* で動かす

という訳で、 toggleGuiOptions.js が最新の Vimperator だと動かなかったので動くようにしてみました。
「どこかで同じようなものが出回ってるんだろうなー」と思ってぐぐってみたけど見つからず、勉強しがてらちまちま修正してみたり。


本当は、
「Vimperator入れてみたけどメニュー出してぇ! MoreToolsMenuに必要なメニューがあるんだよう!」と、泣き言を言いたくなったけど出し方が分からず、ヘルプページの初めに書かれてある :set guioptions で表示/非表示ができることを知ったけれど、コマンドを打つのが面倒で面倒で腹立たしいので、見つけた toggleGuiOptions.js を無理やり動かした
というヘタレな流れorz


最近の色々なプラグインを見てたら、プラグイン情報は PLUGIN_INFO に書くんですってね。勉強になりました!
でも書いてません><;


注意事項として、分からんことがあっても id:teppeis さんに質問を投げないようお願いします。


最後に、ヘタレでも使いやすいプラグインを書いてくださった id:teppeis さんに感謝。
GUI Options をトグルする Vimperator プラグイン toggleGuiOptions.js - teppeis blog

/**
 * ==VimperatorPlugin==
 * @name            toggleGuiOptions.js
 * @description     Toggle GUI Options.
 * @version         0.2
 * @date            2010-08-30
 * @author          teppeis@gmail.com http://d.hatena.ne.jp/teppeis/
 * @author          got4416@gmail.com http://d.hatena.ne.jp/got4416/
 * ==/VimperatorPlugin==
 *
 * Usage:
 * :toggleGuiOptions [charlist]
 *   -> Toggle GUI Options in charlist.
 *      ex) :toggleGuiOptions mT 
 *      -> Toggled menubar and toolbar.
 *
 * :toggleGuiOptions all 
 *   -> Toggle ALL available GUI Options.
 *
 * :toggleGuiOptions
 *   -> Same to 'all'.
 *
 * :toggleGuiOptions toolbox 
 *   -> Toggle collapsed of $(navigator-toolbox).
 *      Enable for any toolbar of other extentions.
 */

(function() {

function toggleGuiOptions(key)
{
    if (! liberator.modules.config.guioptions[key])
        return false;

    var guioptions = liberator.modules.options.get("guioptions");

    if (guioptions.value.indexOf(key) != -1) {
        guioptions.value = guioptions.value.replace(key, "");
    } else {
        guioptions.value += key;
    }

    return guioptions.value;
}

function toggleCollapsedById(id)
{
    var elem = document.getElementById(id);
    if (! elem)
        return null;

    if ( ! elem.collapsed || elem.collapsed == false ) {
        elem.collapsed = true;
    } else {
        elem.collapsed = false;
    }
    return elem.collapsed;
}

liberator.modules.commands.addUserCommand(['toggleGuiOptions'], "Toggle GUI Options",
    function(args) {
        var guioptions = liberator.modules.options.get("guioptions");

        if (args == "toolbox") {
            toggleCollapsedById("navigator-toolbox");
            return;
        }

        if (args == "all" || args == "") {
            args = "";
            for (var key in liberator.modules.config.guioptions) {
                args += key;
            }
        }

        for (var i = 0; i < args.length; i++) {
                for (var j = 0; j < args[i].length; j++) {
                    toggleGuiOptions(args[i].charAt(j));
                }
        }
    },
    {
        completer: function(filter) {
            var options = {
                all : "All GUI Options",
                toolbox : "Whole navigator-toolbox",
            };

            for (var key in liberator.modules.config.guioptions) {
                options[key] = liberator.modules.config.guioptions[key];
            }

            var completion_list = [];

            var re = new RegExp('^' + filter);
            for (var key in options) {
                if (re.test(key)) {
                    completion_list.push([key, options[key]]);
                }
            }

            return [0, completion_list];
        }
    }
);

})();

// vim:sw=4 ts=4 et: