aboutsummaryrefslogtreecommitdiffstats
path: root/feedSomeKeys_3.js
diff options
context:
space:
mode:
authoranekos2011-11-08 22:41:54 +0900
committeranekos2011-11-08 22:41:54 +0900
commitf91ac2137a295584fd02b519ff5abd7582b6c4bc (patch)
tree970de0a66e0d2396dc7449424249f8e6e3b2ea72 /feedSomeKeys_3.js
parent04c92c64b19124b2914c8748c39702a279ba4644 (diff)
downloadvimperator-plugins-f91ac2137a295584fd02b519ff5abd7582b6c4bc.tar.bz2
Support fmap
Diffstat (limited to 'feedSomeKeys_3.js')
-rw-r--r--feedSomeKeys_3.js49
1 files changed, 33 insertions, 16 deletions
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 = <>
- <plugin name="feedSomeKeys" version="1.9.2"
+ <plugin name="feedSomeKeys" version="1.9.3"
href="http://github.com/vimpr/vimperator-plugins/blob/master/feedSomeKeys_3.js"
summary="Feed some defined key events into the Web content"
lang="en-US"
@@ -140,7 +140,7 @@ let INFO = <>
:lazy fmaps -u='http://code.google.com/p/vimperator-labs/issues/detail' u
</ex></code>
</plugin>
- <plugin name="feedSomeKeys" version="1.9.2"
+ <plugin name="feedSomeKeys" version="1.9.3"
href="http://github.com/vimpr/vimperator-plugins/blob/master/feedSomeKeys_3.js"
summary="Web コンテンツに直接キーイベントを送ります。"
lang="ja"
@@ -309,6 +309,10 @@ let INFO = <>
'\'': 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),
{}