=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-copy.c,v retrieving revision 1.148 retrieving revision 1.149 diff -c -r1.148 -r1.149 *** src/usr.bin/tmux/window-copy.c 2016/04/27 09:39:09 1.148 --- src/usr.bin/tmux/window-copy.c 2016/05/01 13:39:05 1.149 *************** *** 1,4 **** ! /* $OpenBSD: window-copy.c,v 1.148 2016/04/27 09:39:09 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-copy.c,v 1.149 2016/05/01 13:39:05 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 26,32 **** struct screen *window_copy_init(struct window_pane *); void window_copy_free(struct window_pane *); ! void window_copy_pagedown(struct window_pane *); void window_copy_next_paragraph(struct window_pane *); void window_copy_previous_paragraph(struct window_pane *); void window_copy_resize(struct window_pane *, u_int, u_int); --- 26,32 ---- struct screen *window_copy_init(struct window_pane *); void window_copy_free(struct window_pane *); ! void window_copy_pagedown(struct window_pane *, int); void window_copy_next_paragraph(struct window_pane *); void window_copy_previous_paragraph(struct window_pane *); void window_copy_resize(struct window_pane *, u_int, u_int); *************** *** 323,329 **** } void ! window_copy_pageup(struct window_pane *wp) { struct window_copy_mode_data *data = wp->modedata; struct screen *s = &data->screen; --- 323,329 ---- } void ! window_copy_pageup(struct window_pane *wp, int half_page) { struct window_copy_mode_data *data = wp->modedata; struct screen *s = &data->screen; *************** *** 342,349 **** data->cx = data->lastcx; n = 1; ! if (screen_size_y(s) > 2) ! n = screen_size_y(s) - 2; if (data->oy + n > screen_hsize(data->backing)) data->oy = screen_hsize(data->backing); --- 342,353 ---- data->cx = data->lastcx; n = 1; ! if (screen_size_y(s) > 2) { ! if (half_page) ! n = screen_size_y(s) / 2; ! else ! n = screen_size_y(s) - 2; ! } if (data->oy + n > screen_hsize(data->backing)) data->oy = screen_hsize(data->backing); *************** *** 362,368 **** } void ! window_copy_pagedown(struct window_pane *wp) { struct window_copy_mode_data *data = wp->modedata; struct screen *s = &data->screen; --- 366,372 ---- } void ! window_copy_pagedown(struct window_pane *wp, int half_page) { struct window_copy_mode_data *data = wp->modedata; struct screen *s = &data->screen; *************** *** 381,388 **** data->cx = data->lastcx; n = 1; ! if (screen_size_y(s) > 2) ! n = screen_size_y(s) - 2; if (data->oy < n) data->oy = 0; --- 385,396 ---- data->cx = data->lastcx; n = 1; ! if (screen_size_y(s) > 2) { ! if (half_page) ! n = screen_size_y(s) / 2; ! else ! n = screen_size_y(s) - 2; ! } if (data->oy < n) data->oy = 0; *************** *** 477,483 **** const char *word_separators; struct window_copy_mode_data *data = wp->modedata; struct screen *s = &data->screen; ! u_int n, np; int keys; enum mode_key_cmd cmd; const char *arg, *ss; --- 485,491 ---- const char *word_separators; struct window_copy_mode_data *data = wp->modedata; struct screen *s = &data->screen; ! u_int np; int keys; enum mode_key_cmd cmd; const char *arg, *ss; *************** *** 582,592 **** break; case MODEKEYCOPY_PREVIOUSPAGE: for (; np != 0; np--) ! window_copy_pageup(wp); break; case MODEKEYCOPY_NEXTPAGE: for (; np != 0; np--) ! window_copy_pagedown(wp); break; case MODEKEYCOPY_PREVIOUSPARAGRAPH: for (; np != 0; np--) --- 590,600 ---- break; case MODEKEYCOPY_PREVIOUSPAGE: for (; np != 0; np--) ! window_copy_pageup(wp, 0); break; case MODEKEYCOPY_NEXTPAGE: for (; np != 0; np--) ! window_copy_pagedown(wp, 0); break; case MODEKEYCOPY_PREVIOUSPARAGRAPH: for (; np != 0; np--) *************** *** 597,626 **** window_copy_next_paragraph(wp); break; case MODEKEYCOPY_HALFPAGEUP: ! n = screen_size_y(s) / 2; ! for (; np != 0; np--) { ! if (data->oy + n > screen_hsize(data->backing)) ! data->oy = screen_hsize(data->backing); ! else ! data->oy += n; ! } ! window_copy_update_selection(wp, 1); ! window_copy_redraw_screen(wp); break; case MODEKEYCOPY_HALFPAGEDOWN: ! n = screen_size_y(s) / 2; ! for (; np != 0; np--) { ! if (data->oy < n) ! data->oy = 0; ! else ! data->oy -= n; ! } ! if (data->scroll_exit && data->oy == 0) { ! window_pane_reset_mode(wp); ! return; ! } ! window_copy_update_selection(wp, 1); ! window_copy_redraw_screen(wp); break; case MODEKEYCOPY_TOPLINE: data->cx = 0; --- 605,616 ---- window_copy_next_paragraph(wp); break; case MODEKEYCOPY_HALFPAGEUP: ! for (; np != 0; np--) ! window_copy_pageup(wp, 1); break; case MODEKEYCOPY_HALFPAGEDOWN: ! for (; np != 0; np--) ! window_copy_pagedown(wp, 1); break; case MODEKEYCOPY_TOPLINE: data->cx = 0;