From 4cd618e649309ed9198f942e856f14f94abe261e Mon Sep 17 00:00:00 2001 From: trapezoid Date: Mon, 8 Jun 2009 17:12:01 +0000 Subject: browser_object.js: quickmark. git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@33855 d0d07461-0603-4401-acd4-de1884942a52 --- browser_object.js | 52 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 19 deletions(-) (limited to 'browser_object.js') diff --git a/browser_object.js b/browser_object.js index 2ec8b12..0385831 100644 --- a/browser_object.js +++ b/browser_object.js @@ -3,7 +3,7 @@ let PLUGIN_INFO = {NAME} Map behave like text-object - 0.5 + 0.6 Trapezoid New BSD License http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/browser_object.js @@ -25,6 +25,8 @@ let PLUGIN_INFO = Delete r: Reload + m{register}: + Quick Mark y: Yank e: @@ -111,6 +113,13 @@ let PLUGIN_INFO = copyStrings.push(ary[i].linkedBrowser.contentDocument.location.href); liberator.modules.util.copyToClipboard(copyStrings.join(", ")); }, + mark: function(ary,arg){ + var markStrings = []; + for (var i = 0 ; i < ary.length; i++) + if(typeof ary[i] == "object") + markStrings.push(ary[i].linkedBrowser.contentDocument.location.href); + liberator.modules.quickmarks.add(arg,markStrings.join(", ")); + }, reload: function(ary){ for (var i = 0 ; i < ary.length; i++) if(typeof ary[i] == "object") @@ -187,10 +196,12 @@ let PLUGIN_INFO = __iterator__: function(){ return iterator(); }, - add: function(id,handler){ + add: function(id,handler,options){ + options = options || {}; collections[id] = { id: id, handler: handler, + options: options, }; }, get: function(id) collections[id], @@ -206,6 +217,7 @@ let PLUGIN_INFO = browserObject.motions.add('d','close'); browserObject.motions.add('y','yank'); browserObject.motions.add('r','reload'); + browserObject.motions.add('m','mark',{ flags: liberator.modules.Mappings.flags.ARGUMENT }); browserObject.motions.add('e','setPin'); browserObject.motions.add('E','unsetPin'); @@ -239,30 +251,32 @@ let PLUGIN_INFO = let motion = it; for (let it in browserObject.scopes){ let scope = it; - liberator.modules.mappings.addUserMap([liberator.modules.modes.NORMAL], [prefix + motion.id + scope.id], - "Browser Object Mapping", - function (arg){ - var target, targetCollection; + for (let it in browserObject.targets){ + let target = it; + liberator.modules.mappings.addUserMap([liberator.modules.modes.NORMAL], [prefix + motion.id + scope.id + target.id], + "Browser Object Mapping", + function (arg){ + var targetCollection; + arg = arg || null; - target = browserObject.targets.get(arg); - if(!target){ - liberator.echoerr("BrowserObject: target not found"); - return; - } + if(!target){ + liberator.echoerr("Browser: target not found"); + return; + } - targetCollection = scope.handler.call(target.handler,target.handler.collection()); - if(target.handler[motion.handler]) - target.handler[motion.handler].call(target.handler,targetCollection); - else - liberator.echoerr("BrowserObject: motion handler not found"); - }, - { flags: liberator.modules.Mappings.flags.ARGUMENT }); + targetCollection = scope.handler.call(target.handler,target.handler.collection()); + if(target.handler[motion.handler]) + target.handler[motion.handler].call(target.handler,targetCollection,arg); + else + liberator.echoerr("Browser: motion handler not found"); + }, motion.options); + } } let map = liberator.modules.mappings.get(null,motion.id); if(!prefix && map){ liberator.modules.mappings.addUserMap([liberator.modules.modes.NORMAL], [motion.id + motion.id], map.description, map.action, - {}); + { flags: map.flags}); } liberator.modules.mappings.addUserMap([liberator.modules.modes.NORMAL], [prefix + motion.id + "/"], "Browser Object Mappings", -- cgit v1.2.3