=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-copy.c,v retrieving revision 1.341 retrieving revision 1.342 diff -c -r1.341 -r1.342 *** src/usr.bin/tmux/window-copy.c 2023/07/03 16:47:43 1.341 --- src/usr.bin/tmux/window-copy.c 2023/08/08 08:21:30 1.342 *************** *** 1,4 **** ! /* $OpenBSD: window-copy.c,v 1.341 2023/07/03 16:47:43 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-copy.c,v 1.342 2023/08/08 08:21:30 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 131,137 **** const char *, u_int *, u_int *); static void window_copy_cursor_previous_word(struct window_mode_entry *, const char *, int); ! static void window_copy_cursor_prompt(struct window_mode_entry *, int); static void window_copy_scroll_up(struct window_mode_entry *, u_int); static void window_copy_scroll_down(struct window_mode_entry *, u_int); static void window_copy_rectangle_set(struct window_mode_entry *, int); --- 131,138 ---- const char *, u_int *, u_int *); static void window_copy_cursor_previous_word(struct window_mode_entry *, const char *, int); ! static void window_copy_cursor_prompt(struct window_mode_entry *, int, ! const char *); static void window_copy_scroll_up(struct window_mode_entry *, u_int); static void window_copy_scroll_down(struct window_mode_entry *, u_int); static void window_copy_rectangle_set(struct window_mode_entry *, int); *************** *** 2245,2252 **** window_copy_cmd_next_prompt(struct window_copy_cmd_state *cs) { struct window_mode_entry *wme = cs->wme; ! window_copy_cursor_prompt(wme, 1); return (WINDOW_COPY_CMD_NOTHING); } --- 2246,2254 ---- window_copy_cmd_next_prompt(struct window_copy_cmd_state *cs) { struct window_mode_entry *wme = cs->wme; + const char *arg1 = args_string(cs->args, 1); ! window_copy_cursor_prompt(wme, 1, arg1); return (WINDOW_COPY_CMD_NOTHING); } *************** *** 2254,2261 **** window_copy_cmd_previous_prompt(struct window_copy_cmd_state *cs) { struct window_mode_entry *wme = cs->wme; ! window_copy_cursor_prompt(wme, 0); return (WINDOW_COPY_CMD_NOTHING); } --- 2256,2264 ---- window_copy_cmd_previous_prompt(struct window_copy_cmd_state *cs) { struct window_mode_entry *wme = cs->wme; + const char *arg1 = args_string(cs->args, 1); ! window_copy_cursor_prompt(wme, 0, arg1); return (WINDOW_COPY_CMD_NOTHING); } *************** *** 2721,2727 **** }, { .command = "previous-prompt", .minargs = 0, ! .maxargs = 0, .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS, .f = window_copy_cmd_previous_prompt }, --- 2724,2730 ---- }, { .command = "previous-prompt", .minargs = 0, ! .maxargs = 1, .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS, .f = window_copy_cmd_previous_prompt }, *************** *** 5389,5403 **** } static void ! window_copy_cursor_prompt(struct window_mode_entry *wme, int direction) { struct window_copy_mode_data *data = wme->data; struct screen *s = data->backing; struct grid *gd = s->grid; u_int end_line; u_int line = gd->hsize - data->oy + data->cy; ! int add; if (direction == 0) { /* up */ add = -1; end_line = 0; --- 5392,5412 ---- } static void ! window_copy_cursor_prompt(struct window_mode_entry *wme, int direction, ! const char *args) { struct window_copy_mode_data *data = wme->data; struct screen *s = data->backing; struct grid *gd = s->grid; u_int end_line; u_int line = gd->hsize - data->oy + data->cy; ! int add, line_flag; + if (args != NULL && strcmp(args, "-o") == 0) + line_flag = GRID_LINE_START_OUTPUT; + else + line_flag = GRID_LINE_START_PROMPT; + if (direction == 0) { /* up */ add = -1; end_line = 0; *************** *** 5413,5419 **** return; line += add; ! if (grid_get_line(gd, line)->flags & GRID_LINE_START_PROMPT) break; } --- 5422,5428 ---- return; line += add; ! if (grid_get_line(gd, line)->flags & line_flag) break; }