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導入してからコミットしようと思っている。 追加してコミットしました。