From f91ac2137a295584fd02b519ff5abd7582b6c4bc Mon Sep 17 00:00:00 2001 From: anekos Date: Tue, 8 Nov 2011 22:41:54 +0900 Subject: Support fmap --- feedSomeKeys_3.js | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) (limited to 'feedSomeKeys_3.js') diff --git a/feedSomeKeys_3.js b/feedSomeKeys_3.js index 328ed34..82d15ba 100644 --- a/feedSomeKeys_3.js +++ b/feedSomeKeys_3.js @@ -34,7 +34,7 @@ THE POSSIBILITY OF SUCH DAMAGE. // INFO {{{ let INFO = <> - :lazy fmaps -u='http://code.google.com/p/vimperator-labs/issues/detail' u - '\'': KeyEvent.DOM_VK_QUOTE }; + const State = { + feeding: false + }; + function id (v) v; @@ -359,22 +363,35 @@ let INFO = <> } function feed (keys, eventNames, target) { + function finalize (){ + modes.passAllKeys = _passAllKeys; + State.feeding = false; + } + + State.feeding = true; + let _passAllKeys = modes.passAllKeys; - modes.passAllKeys = true; - modes.passNextKey = false; - - for (let [, keyEvent] in Iterator(events.fromString(keys))) { - eventNames.forEach(function (eventName) { - let ke = util.cloneObject(keyEvent); - let [, vkey, name] = eventName.match(/^(v)?(.+)$/); - if (vkey) - virtualize(ke); - let event = createEvent(name, ke); - target.dispatchEvent(event); - }); + + try { + modes.passAllKeys = true; + modes.passNextKey = false; + + for (let [, keyEvent] in Iterator(events.fromString(keys))) { + eventNames.forEach(function (eventName) { + let ke = util.cloneObject(keyEvent); + let [, vkey, name] = eventName.match(/^(v)?(.+)$/); + if (vkey) + virtualize(ke); + let event = createEvent(name, ke); + target.dispatchEvent(event); + }); + } + } catch (e) { + finalize(); + throw e; } - modes.passAllKeys = _passAllKeys; + finalize(); } function makeTryValidator (func) @@ -696,7 +713,7 @@ let INFO = <> ); __context__.API = - 'VKeys feed getFrames fromXPath virtualize unmap findMappings list'.split(/\s+/).reduce( + 'State VKeys feed getFrames fromXPath virtualize unmap findMappings list'.split(/\s+/).reduce( function (result, name) (result[name] = eval(name), result), {} -- cgit v1.2.3