commit 9c861f02bb04a900fdaf4218009b6f380982e857
Author: Jacob Niehus <jacob.niehus@gmail.com>
Date:   Sun Apr 19 15:09:48 2015 -0700

    Make jump-to keys repeat correctly

diff --git a/window-copy.c b/window-copy.c
index feb8c48..300f602 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -76,8 +76,8 @@ void	window_copy_cursor_up(struct window_pane *, int);
 void	window_copy_cursor_down(struct window_pane *, int);
 void	window_copy_cursor_jump(struct window_pane *);
 void	window_copy_cursor_jump_back(struct window_pane *);
-void	window_copy_cursor_jump_to(struct window_pane *);
-void	window_copy_cursor_jump_to_back(struct window_pane *);
+void	window_copy_cursor_jump_to(struct window_pane *, int);
+void	window_copy_cursor_jump_to_back(struct window_pane *, int);
 void	window_copy_cursor_next_word(struct window_pane *, const char *);
 void	window_copy_cursor_next_word_end(struct window_pane *, const char *);
 void	window_copy_cursor_previous_word(struct window_pane *, const char *);
@@ -398,11 +398,11 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
 			}
 			if (data->inputtype == WINDOW_COPY_JUMPTOFORWARD) {
 				for (; np != 0; np--)
-					window_copy_cursor_jump_to(wp);
+					window_copy_cursor_jump_to(wp, 0);
 			}
 			if (data->inputtype == WINDOW_COPY_JUMPTOBACK) {
 				for (; np != 0; np--)
-					window_copy_cursor_jump_to_back(wp);
+					window_copy_cursor_jump_to_back(wp, 0);
 			}
 		}
 		data->jumptype = data->inputtype;
@@ -639,10 +639,10 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
 				window_copy_cursor_jump_back(wp);
 		} else if (data->jumptype == WINDOW_COPY_JUMPTOFORWARD) {
 			for (; np != 0; np--)
-				window_copy_cursor_jump_to(wp);
+				window_copy_cursor_jump_to(wp, 1);
 		} else if (data->jumptype == WINDOW_COPY_JUMPTOBACK) {
 			for (; np != 0; np--)
-				window_copy_cursor_jump_to_back(wp);
+				window_copy_cursor_jump_to_back(wp, 1);
 		}
 		break;
 	case MODEKEYCOPY_JUMPREVERSE:
@@ -654,10 +654,10 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
 				window_copy_cursor_jump(wp);
 		} else if (data->jumptype == WINDOW_COPY_JUMPTOFORWARD) {
 			for (; np != 0; np--)
-				window_copy_cursor_jump_to_back(wp);
+				window_copy_cursor_jump_to_back(wp, 1);
 		} else if (data->jumptype == WINDOW_COPY_JUMPTOBACK) {
 			for (; np != 0; np--)
-				window_copy_cursor_jump_to(wp);
+				window_copy_cursor_jump_to(wp, 1);
 		}
 		break;
 	case MODEKEYCOPY_JUMPBACK:
@@ -2009,7 +2009,7 @@ window_copy_cursor_jump_back(struct window_pane *wp)
 }
 
 void
-window_copy_cursor_jump_to(struct window_pane *wp)
+window_copy_cursor_jump_to(struct window_pane *wp, int jump_again)
 {
 	struct window_copy_mode_data	*data = wp->modedata;
 	struct screen			*back_s = data->backing;
@@ -2017,7 +2017,7 @@ window_copy_cursor_jump_to(struct window_pane *wp)
 	struct utf8_data		 ud;
 	u_int				 px, py, xx;
 
-	px = data->cx + 1;
+	px = data->cx + 1 + jump_again;
 	py = screen_hsize(back_s) + data->cy - data->oy;
 	xx = window_copy_find_length(wp, py);
 
@@ -2036,7 +2036,7 @@ window_copy_cursor_jump_to(struct window_pane *wp)
 }
 
 void
-window_copy_cursor_jump_to_back(struct window_pane *wp)
+window_copy_cursor_jump_to_back(struct window_pane *wp, int jump_again)
 {
 	struct window_copy_mode_data	*data = wp->modedata;
 	struct screen			*back_s = data->backing;
@@ -2050,6 +2050,9 @@ window_copy_cursor_jump_to_back(struct window_pane *wp)
 	if (px > 0)
 		px--;
 
+	if (jump_again && px > 0)
+		px--;
+
 	for (;;) {
 		gc = grid_peek_cell(back_s->grid, px, py);
 		grid_cell_get(gc, &ud);
