function move_by_filter(direction, filter) {
// Keep moving in direction until filter is satisfied
- do {
- input_index += direction;
- } while (!filter());
+ var new_index = input_index;
+ while (true) {
+ var next = new_index + direction;
+ if (next < 0) {
+ say("At beginning");
+ return;
+ }
+ if (next >= files.length) {
+ say("At end");
+ return;
+ }
+ new_index = next;
+ if (filter(new_index)) {
+ break;
+ }
+ }
+ input_index = new_index;
say(input_index + " " + (picinfo[files[input_index]].name || ""));
setpic();
}
move_by_filter(direction, function() { return true; });
}
function move_to_nondeleted(direction) {
- move_by_filter(direction, function() {
- return !("deleted" in picinfo[files[input_index]]); });
+ move_by_filter(direction, function(i) {
+ return !("deleted" in picinfo[files[i]]); });
}
function move_to_unnamed(direction) {
- move_by_filter(direction, function() {
- return !("deleted" in picinfo[files[input_index]]) &&
- !("name" in picinfo[files[input_index]]); });
+ move_by_filter(direction, function(i) {
+ return !("deleted" in picinfo[files[i]]) &&
+ !("name" in picinfo[files[i]]); });
}
function mark_deleted() {