aboutsummaryrefslogtreecommitdiffstats
path: root/walk-input.js
diff options
context:
space:
mode:
authorpekepeke2008-11-10 14:54:34 +0000
committerpekepeke2008-11-10 14:54:34 +0000
commit357a941e87c6a6525edf04a607537f3eebec146e (patch)
tree24e68c5c81ad729dec626e966a0cc962aaa4f5f7 /walk-input.js
parent09f7ffc64d12a50a61dadd1e1ef57ea24a0f162a (diff)
downloadvimperator-plugins-357a941e87c6a6525edf04a607537f3eebec146e.tar.bz2
revert
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@23156 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'walk-input.js')
-rw-r--r--walk-input.js25
1 files changed, 15 insertions, 10 deletions
diff --git a/walk-input.js b/walk-input.js
index 885a96c..eb0b8ea 100644
--- a/walk-input.js
+++ b/walk-input.js
@@ -19,33 +19,38 @@
// </html>
(function() {
-var walkinput = function() {
+var walkinput = function(forward) {
var win = document.commandDispatcher.focusedWindow;
var d = win.document;
var xpath = '//input[@type="text" or @type="password" or @type="search" or not(@type)] | //textarea';
var list = d.evaluate(xpath, d, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- if (list.snapshotLength == 0) return;
+ if (list.snapshotLength == 0)
+ return;
var focused = document.commandDispatcher.focusedElement;
var current = null;
var next = null;
+ var prev = null;
for (let i = 0; i < list.snapshotLength; ++i) {
let e = list.snapshotItem(i);
if (e == focused) {
current = e;
- } else if (current && next == null) {
+ } else if (current && !next) {
next = e;
+ } else if (!current) {
+ prev = e;
}
}
- if (next) {
- next.focus();
+
+ if (forward) {
+ (next || list.snapshotItem(0)).focus();
} else {
- list.snapshotItem(0).focus();
+ (prev || list.snapshotItem(list.snapshotLength - 1)).focus();
}
};
-liberator.modules.mappings.add([liberator.modules.modes.NORMAL], ['<M-i>'], 'Walk Input Fields', walkinput);
-liberator.modules.mappings.add([liberator.modules.modes.INSERT], ['<M-i>'], 'Walk Input Fields', walkinput);
-liberator.modules.mappings.add([liberator.modules.modes.NORMAL], ['<A-i>'], 'Walk Input Fields', walkinput);
-liberator.modules.mappings.add([liberator.modules.modes.INSERT], ['<A-i>'], 'Walk Input Fields', walkinput);
+mappings.add([modes.NORMAL, modes.INSERT], ['<M-i>', '<A-i>'],
+ 'Walk Input Fields (Forward)', function () walkinput(true));
+mappings.add([modes.NORMAL, modes.INSERT], ['<M-I>', '<A-I>'],
+ 'Walk Input Fields (Backward)', function () walkinput(false));
})();