=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-copy.c,v retrieving revision 1.126 retrieving revision 1.127 diff -c -r1.126 -r1.127 *** src/usr.bin/tmux/window-copy.c 2015/04/19 21:34:21 1.126 --- src/usr.bin/tmux/window-copy.c 2015/04/20 09:39:21 1.127 *************** *** 1,4 **** ! /* $OpenBSD: window-copy.c,v 1.126 2015/04/19 21:34:21 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-copy.c,v 1.127 2015/04/20 09:39:21 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 75,82 **** 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_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 *); --- 75,82 ---- 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 *, 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 *); *************** *** 397,407 **** } if (data->inputtype == WINDOW_COPY_JUMPTOFORWARD) { for (; np != 0; np--) ! window_copy_cursor_jump_to(wp); } if (data->inputtype == WINDOW_COPY_JUMPTOBACK) { for (; np != 0; np--) ! window_copy_cursor_jump_to_back(wp); } } data->jumptype = data->inputtype; --- 397,407 ---- } if (data->inputtype == WINDOW_COPY_JUMPTOFORWARD) { for (; np != 0; np--) ! window_copy_cursor_jump_to(wp, 0); } if (data->inputtype == WINDOW_COPY_JUMPTOBACK) { for (; np != 0; np--) ! window_copy_cursor_jump_to_back(wp, 0); } } data->jumptype = data->inputtype; *************** *** 643,652 **** window_copy_cursor_jump_back(wp); } else if (data->jumptype == WINDOW_COPY_JUMPTOFORWARD) { for (; np != 0; np--) ! window_copy_cursor_jump_to(wp); } else if (data->jumptype == WINDOW_COPY_JUMPTOBACK) { for (; np != 0; np--) ! window_copy_cursor_jump_to_back(wp); } break; case MODEKEYCOPY_JUMPREVERSE: --- 643,652 ---- window_copy_cursor_jump_back(wp); } else if (data->jumptype == WINDOW_COPY_JUMPTOFORWARD) { for (; np != 0; np--) ! 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, 1); } break; case MODEKEYCOPY_JUMPREVERSE: *************** *** 658,667 **** window_copy_cursor_jump(wp); } else if (data->jumptype == WINDOW_COPY_JUMPTOFORWARD) { for (; np != 0; np--) ! window_copy_cursor_jump_to_back(wp); } else if (data->jumptype == WINDOW_COPY_JUMPTOBACK) { for (; np != 0; np--) ! window_copy_cursor_jump_to(wp); } break; case MODEKEYCOPY_JUMPBACK: --- 658,667 ---- window_copy_cursor_jump(wp); } else if (data->jumptype == WINDOW_COPY_JUMPTOFORWARD) { for (; np != 0; np--) ! 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, 1); } break; case MODEKEYCOPY_JUMPBACK: *************** *** 1944,1950 **** } void ! window_copy_cursor_jump_to(struct window_pane *wp) { struct window_copy_mode_data *data = wp->modedata; struct screen *back_s = data->backing; --- 1944,1950 ---- } void ! 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; *************** *** 1952,1958 **** struct utf8_data ud; u_int px, py, xx; ! px = data->cx + 1; py = screen_hsize(back_s) + data->cy - data->oy; xx = window_copy_find_length(wp, py); --- 1952,1958 ---- struct utf8_data ud; u_int px, py, xx; ! px = data->cx + 1 + jump_again; py = screen_hsize(back_s) + data->cy - data->oy; xx = window_copy_find_length(wp, py); *************** *** 1971,1977 **** } void ! window_copy_cursor_jump_to_back(struct window_pane *wp) { struct window_copy_mode_data *data = wp->modedata; struct screen *back_s = data->backing; --- 1971,1977 ---- } void ! 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; *************** *** 1983,1988 **** --- 1983,1991 ---- py = screen_hsize(back_s) + data->cy - data->oy; if (px > 0) + px--; + + if (jump_again && px > 0) px--; for (;;) {