diff options
author | nicm <nicm> | 2014-05-13 07:54:20 +0000 |
---|---|---|
committer | nicm <nicm> | 2014-05-13 07:54:20 +0000 |
commit | b1a06ef22e54e943d733db8dcc98fe60051c93de (patch) | |
tree | 51c54dcc73bec1a7496812eea8876f32c62426c2 /window-copy.c | |
parent | 3dbacbb62b033c04185fb87da5b0622f0aafee86 (diff) | |
download | rtmux-b1a06ef22e54e943d733db8dcc98fe60051c93de.tar.gz rtmux-b1a06ef22e54e943d733db8dcc98fe60051c93de.tar.bz2 rtmux-b1a06ef22e54e943d733db8dcc98fe60051c93de.zip |
Add a copy mode key binding to copy to a named buffer. From J Raynor.
Diffstat (limited to 'window-copy.c')
-rw-r--r-- | window-copy.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/window-copy.c b/window-copy.c index 4763c230..aa6b2d73 100644 --- a/window-copy.c +++ b/window-copy.c @@ -61,8 +61,8 @@ void window_copy_copy_pipe(struct window_pane *, struct session *, void window_copy_copy_selection(struct window_pane *, const char *); void window_copy_append_selection(struct window_pane *, const char *); void window_copy_clear_selection(struct window_pane *); -void window_copy_copy_line( - struct window_pane *, char **, size_t *, u_int, u_int, u_int); +void window_copy_copy_line(struct window_pane *, char **, size_t *, u_int, + u_int, u_int); int window_copy_in_set(struct window_pane *, u_int, u_int, const char *); u_int window_copy_find_length(struct window_pane *, u_int); void window_copy_cursor_start_of_line(struct window_pane *); @@ -95,6 +95,7 @@ const struct window_mode window_copy_mode = { enum window_copy_input_type { WINDOW_COPY_OFF, + WINDOW_COPY_NAMEDBUFFER, WINDOW_COPY_NUMERICPREFIX, WINDOW_COPY_SEARCHUP, WINDOW_COPY_SEARCHDOWN, @@ -677,6 +678,7 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key) case WINDOW_COPY_JUMPBACK: case WINDOW_COPY_JUMPTOFORWARD: case WINDOW_COPY_JUMPTOBACK: + case WINDOW_COPY_NAMEDBUFFER: case WINDOW_COPY_NUMERICPREFIX: break; case WINDOW_COPY_SEARCHUP: @@ -712,6 +714,11 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key) data->inputprompt = "Goto Line"; *data->inputstr = '\0'; goto input_on; + case MODEKEYCOPY_STARTNAMEDBUFFER: + data->inputtype = WINDOW_COPY_NAMEDBUFFER; + data->inputprompt = "Buffer"; + *data->inputstr = '\0'; + goto input_on; case MODEKEYCOPY_STARTNUMBERPREFIX: key &= KEYC_MASK_KEY; if (key >= '0' && key <= '9') { @@ -815,6 +822,11 @@ window_copy_key_input(struct window_pane *wp, int key) data->searchtype = data->inputtype; data->searchstr = xstrdup(data->inputstr); break; + case WINDOW_COPY_NAMEDBUFFER: + window_copy_copy_selection(wp, data->inputstr); + *data->inputstr = '\0'; + window_pane_reset_mode(wp); + return (0); case WINDOW_COPY_GOTOLINE: window_copy_goto_line(wp, data->inputstr); *data->inputstr = '\0'; |