version 1.341, 2023/07/03 16:47:43 |
version 1.342, 2023/08/08 08:21:30 |
|
|
const char *, u_int *, u_int *); |
const char *, u_int *, u_int *); |
static void window_copy_cursor_previous_word(struct window_mode_entry *, |
static void window_copy_cursor_previous_word(struct window_mode_entry *, |
const char *, int); |
const char *, int); |
static void window_copy_cursor_prompt(struct window_mode_entry *, 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_up(struct window_mode_entry *, u_int); |
static void window_copy_scroll_down(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); |
static void window_copy_rectangle_set(struct window_mode_entry *, int); |
|
|
window_copy_cmd_next_prompt(struct window_copy_cmd_state *cs) |
window_copy_cmd_next_prompt(struct window_copy_cmd_state *cs) |
{ |
{ |
struct window_mode_entry *wme = cs->wme; |
struct window_mode_entry *wme = cs->wme; |
|
const char *arg1 = args_string(cs->args, 1); |
|
|
window_copy_cursor_prompt(wme, 1); |
window_copy_cursor_prompt(wme, 1, arg1); |
return (WINDOW_COPY_CMD_NOTHING); |
return (WINDOW_COPY_CMD_NOTHING); |
} |
} |
|
|
|
|
window_copy_cmd_previous_prompt(struct window_copy_cmd_state *cs) |
window_copy_cmd_previous_prompt(struct window_copy_cmd_state *cs) |
{ |
{ |
struct window_mode_entry *wme = cs->wme; |
struct window_mode_entry *wme = cs->wme; |
|
const char *arg1 = args_string(cs->args, 1); |
|
|
window_copy_cursor_prompt(wme, 0); |
window_copy_cursor_prompt(wme, 0, arg1); |
return (WINDOW_COPY_CMD_NOTHING); |
return (WINDOW_COPY_CMD_NOTHING); |
} |
} |
|
|
|
|
}, |
}, |
{ .command = "previous-prompt", |
{ .command = "previous-prompt", |
.minargs = 0, |
.minargs = 0, |
.maxargs = 0, |
.maxargs = 1, |
.clear = WINDOW_COPY_CMD_CLEAR_ALWAYS, |
.clear = WINDOW_COPY_CMD_CLEAR_ALWAYS, |
.f = window_copy_cmd_previous_prompt |
.f = window_copy_cmd_previous_prompt |
}, |
}, |
|
|
} |
} |
|
|
static void |
static void |
window_copy_cursor_prompt(struct window_mode_entry *wme, int direction) |
window_copy_cursor_prompt(struct window_mode_entry *wme, int direction, |
|
const char *args) |
{ |
{ |
struct window_copy_mode_data *data = wme->data; |
struct window_copy_mode_data *data = wme->data; |
struct screen *s = data->backing; |
struct screen *s = data->backing; |
struct grid *gd = s->grid; |
struct grid *gd = s->grid; |
u_int end_line; |
u_int end_line; |
u_int line = gd->hsize - data->oy + data->cy; |
u_int line = gd->hsize - data->oy + data->cy; |
int add; |
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 */ |
if (direction == 0) { /* up */ |
add = -1; |
add = -1; |
end_line = 0; |
end_line = 0; |
|
|
return; |
return; |
line += add; |
line += add; |
|
|
if (grid_get_line(gd, line)->flags & GRID_LINE_START_PROMPT) |
if (grid_get_line(gd, line)->flags & line_flag) |
break; |
break; |
} |
} |
|
|