Show
Ignore:
Timestamp:
11/29/08 00:05:39 (6 weeks ago)
Author:
teramako
Message:

gmcommand vimp最新版に追従、completerを簡潔化

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/vimperator-plugins/trunk/gmperator.js

    r25258 r25283  
    213213// --------------------------- 
    214214commands.addUserCommand(['gmli[st]','lsgm'], 'list Greasemonkey scripts', //{{{ 
    215     function(arg){ 
    216         var str = ''; 
     215    function(args){ 
     216        var xml = <></>; 
    217217        var scripts = GM_getConfig().scripts; 
    218218        var reg; 
    219         if (arg.bang || arg == 'full'){ 
     219        if (args.bang || args.string == 'full'){ 
    220220            reg = new RegExp('.*'); 
    221         } else if( arg ){ 
    222             reg = new RegExp(arg,'i'); 
     221        } else if(args.string){ 
     222            reg = new RegExp(args.string,'i'); 
    223223        } 
    224224        if (reg){ 
    225225            for each(var s in scripts){ 
    226                 if ( reg.test(s.name) || reg.test(s._filename) ) { 
    227                     str += scriptToString(s) + '\n'; 
     226                if (reg.test(s.name) || reg.test(s._filename)) { 
     227                    xml += scriptToString(s); 
    228228                } 
    229229            } 
     
    241241                table.* += tr; 
    242242            } 
    243             str += table.toSource().replace(/\n/g,''); 
    244         } 
    245         echo(str,true); 
     243            xml += table; 
     244        } 
     245        liberator.echo(xml,true); 
    246246        function scriptToString(script){ 
    247247            var table = <table> 
     
    266266                table.* += tr; 
    267267            }); 
    268             return table.toSource().replace(/\n/g,''); 
    269         } 
     268            return table; 
     269        } 
     270    },{ 
     271        bang:true 
    270272    } 
    271273); //}}} 
    272274commands.addUserCommand(['gmlo[ad]'], 'load Greasemonkey scripts', //{{{ 
    273     function(arg){ 
    274         if (!arg) { 
    275             echoerr('Usage: :gmlo[ad][!] {name|filename}'); 
     275    function(args){ 
     276        if (!args.string) { 
     277            liberator.echoerr('Usage: :gmlo[ad][!] {name|filename}'); 
    276278            return; 
    277279        } 
     
    279281        var script; 
    280282        for (var i=0; i<scripts.length; i++){ 
    281             if (scripts[i]._filename == arg || scripts[i].name == arg){ 
     283            if (scripts[i]._filename == args.string || scripts[i].name == args.string){ 
    282284                script = scripts[i]; 
    283285                break; 
     
    285287        } 
    286288        if (!script) { 
    287             echoerr('no such a user script'); 
     289            liberator.echoerr('no such a user script'); 
    288290            return; 
    289         } else if (liberator.plugins.gmperator.currentContainer.hasScript(script._filename) && !arg.bang){ 
    290             echoerr(script._filename + ' is already loaded!'); 
     291        } else if (liberator.plugins.gmperator.currentContainer.hasScript(script._filename) && !args.bang){ 
     292            liberator.echoerr(script._filename + ' is already loaded!'); 
    291293            return; 
    292294        } else { 
    293             echo('loading: ' +script._filename); 
     295            liberator.echo('loading: ' +script._filename); 
    294296        } 
    295297        try { 
     
    298300            GM_BrowserUI.gmSvc.wrappedJSObject.injectScripts([script],href,unsafewin,window); 
    299301        } catch(e){ 
    300             log(e); 
    301             echoerr(e); 
     302            liberator.log(e); 
     303            liberator.echoerr(e); 
    302304        } 
    303305        /* 
     
    310312        */ 
    311313    },{ 
    312         completer: function(filter) scriptsCompleter(filter,true) 
     314        completer: function(context) scriptsCompleter(context.filter,true) 
    313315    } 
    314316); //}}} 
    315317commands.addUserCommand(['gmset'], 'change settings for Greasemonkey scripts', //{{{ 
    316318    function(args){ 
    317         var options = [ [['-name','-n'],    commands.OPTION_STRING], 
    318                         [['-include','-i'], commands.OPTION_LIST], 
    319                         [['-exclude','-e'], commands.OPTION_LIST] ]; 
    320319        if (args.length == 0) { 
    321320            if (args.bang) GM_setEnabled(!GM_getEnabled()); // toggle enable/disable Greasemonkey 
     
    340339        config._save(); 
    341340    },{ 
    342         completer: function(filter) 
    343             scriptsCompleter(filter, false) 
     341        completer: function(context) scriptsCompleter(context.filter, false), 
     342        options: [ 
     343            [['-name','-n'],    commands.OPTION_STRING], 
     344            [['-include','-i'], commands.OPTION_LIST], 
     345            [['-exclude','-e'], commands.OPTION_LIST] 
     346        ], 
     347        bang:true 
    344348    } 
    345349); //}}} 
    346350commands.addUserCommand(["gmcommand", "gmcmd"], "run Greasemonkey Command", //{{{ 
    347351    function(args, special) { 
    348         var commander = GM_BrowserUI.getCommander(getBrowser().selectedTab.linkedBrowser.contentWindow); 
     352        var commander = GM_BrowserUI.getCommander(content); 
    349353        for (var i = 0; i < commander.menuItems.length; i++) { 
    350354            var menuItem = commander.menuItems[i]; 
    351             if (menuItem.getAttribute("label") == args) { 
     355            if (menuItem.getAttribute("label") == args.string) { 
    352356                menuItem._commandFunc(); 
    353357                return; 
    354358            } 
    355359        } 
    356         echoerr(args+" is not defined userscript command."); 
     360        liberator.echoerr(args.string + " is not defined userscript command."); 
    357361    }, 
    358362    { 
    359         completer: function(filter) { 
    360             var commander = GM_BrowserUI.getCommander(getBrowser().selectedTab.linkedBrowser.contentWindow); 
     363        completer: function(context) { 
     364            var items = GM_BrowserUI.getCommander(content).menuItems; 
    361365            var completions = []; 
    362             var exp = new RegExp(".*" + filter + ".*"); 
    363             for (var i = 0; i < commander.menuItems.length; i++) { 
    364                 var label = commander.menuItems[i].getAttribute("label"); 
    365                 if (!filter || exp.test(label)) { 
    366                     completions.push([label, label]); 
    367                 } 
    368             } 
    369             return [0, completions]; 
     366            var exp = new RegExp(".*" + context.filter + ".*","i"); 
     367            context.title = ["UserScript's Commands"]; 
     368            context.completions = [[items[i].getAttribute('label'),'-'] for (i in items)].filter(function(item){ 
     369                return this.test(item[0]); 
     370            }, new RegExp(".*"+context.filter+".*","i")); 
    370371        } 
    371372    }