Greasemonkeyのユーザスクリプトコマンドをvimperatorから実行する

.vimperatorrc*1に以下のコードを追加してvimperatorのコマンドとしてGreasemonkeyのコマンドを実行できるようにした。

javascript <<EOM
liberator.commands.addUserCommand(["gmcommand", "gmcmd"], "run Greasemonkey Command", //{{{
    function(args, special) {
        var commander = GM_BrowserUI.getCommander(getBrowser().selectedTab.linkedBrowser.contentWindow);
        for (var i = 0; i < commander.menuItems.length; i++) {
            var menuItem = commander.menuItems[i];
            if (menuItem.getAttribute("label") == args) {
                menuItem._commandFunc();
                return;
            }
        }
        liberator.echoerr(args+" is not defined userscript command.");
    },
    {
        completer: function(filter) {
            var commander = GM_BrowserUI.getCommander(getBrowser().selectedTab.linkedBrowser.contentWindow);
            var completions = [];
            var exp = new RegExp(".*" + filter + ".*");
            for (var i = 0; i < commander.menuItems.length; i++) {
                var label = commander.menuItems[i].getAttribute("label");
                if (!filter || exp.test(label)) {
                    completions.push([label, label]);
                }
            }
            return [0, completions];
        }
    }
); //}}}
EOM

gmperator.jsあたりに既にある機能かと思ってたけど無かったので。gmperatorに追加しようかと思ったけど今trunkはvimperator2.0版のプラグインになってるし後で2.0導入してからコミットしようと思っている。 追加してコミットしました。

test