aboutsummaryrefslogtreecommitdiff
path: root/window-copy.c
diff options
context:
space:
mode:
authornicm <nicm>2014-05-13 07:54:20 +0000
committernicm <nicm>2014-05-13 07:54:20 +0000
commitb1a06ef22e54e943d733db8dcc98fe60051c93de (patch)
tree51c54dcc73bec1a7496812eea8876f32c62426c2 /window-copy.c
parent3dbacbb62b033c04185fb87da5b0622f0aafee86 (diff)
downloadrtmux-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.c16
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';