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