diff options
author | anekos | 2012-08-01 04:20:42 +0900 |
---|---|---|
committer | anekos | 2012-08-01 04:20:42 +0900 |
commit | 890ac48f7a9ae04fc8bcb0354af926bdd5149860 (patch) | |
tree | 811ad66bd2fdd2404f002be1d998b1e0ab71bfaf /applauncher.js | |
parent | f1d88768e90cc532446dcc21575abc3eb1c69f07 (diff) | |
download | vimperator-plugins-890ac48f7a9ae04fc8bcb0354af926bdd5149860.tar.bz2 |
Add applaunchother command.
Diffstat (limited to 'applauncher.js')
-rw-r--r-- | applauncher.js | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/applauncher.js b/applauncher.js index 3d9dc16..f3107b9 100644 --- a/applauncher.js +++ b/applauncher.js @@ -52,23 +52,30 @@ liberator.plugins.AppLauncher = (function(){ }, registerCommand: function(){ var self = this; - commands.addUserCommand(['applaunch', 'runapp'], 'Run Defined Application', - function(arg){ - arg = (typeof arg.string == 'undefined' ? arg : arg.literalArg); - self.launch(arg); - }, { - literal: 0, - completer: function(context, arg){ - var filter = context.filter; - context.title = [ 'Name', 'Description']; - if (!filter){ - context.completions = completer; - return; + ['', 'other'].forEach(function (suffix) { + commands.addUserCommand(['applaunch' + suffix, 'runapp' + suffix], 'Run Defined Application', + function(arg){ + liberator.log(arg) + let app = (typeof arg.string == 'undefined' ? arg : arg.literalArg); + self.launch(app, suffix && arg[0]); + }, { + literal: suffix ? 1 : 0, + completer: function(context, arg){ + if (suffix && arg.length <= 1) { + return completion.url(context, 'hsl'); + } + + var filter = context.filter; + context.title = [ 'Name', 'Description']; + if (!filter){ + context.completions = completer; + return; + } + filter = filter.toLowerCase(); + context.completions = completer.filter( function(el) el[0].toLowerCase().indexOf(filter) == 0); } - filter = filter.toLowerCase(); - context.completions = completer.filter( function(el) el[0].toLowerCase().indexOf(filter) == 0); - } - }, true); + }, true); + }); }, buildMenu: function(){ var self = this; @@ -99,12 +106,18 @@ liberator.plugins.AppLauncher = (function(){ }, TITLE: function() buffer.title }, - launch: function(appName){ + launch: function(appName, url){ var self = this; + let vars = self.variables; + if (url) { + vars = Object.create(vars); + vars.URL = function() url; + } + appName = appName.replace(/\\+/g, ''); // fix commandline input ' ' -> '\ ' settings.some( function([name, app, args]){ args = args instanceof Array ? args : args ? [args] : []; - args = args.map( function( val ) val.replace(/%([A-Z]+)%/g, function( _, name ) self.variables[name]()) ); + args = args.map( function( val ) val.replace(/%([A-Z]+)%/g, function( _, name ) vars[name]()) ); if (defaultCharset){ UConv.charset = defaultCharset; args = args.map( function( val ) UConv.ConvertFromUnicode(val) ); |