aboutsummaryrefslogtreecommitdiff
path: root/window-copy.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2015-04-19 14:44:56 +0100
committerThomas Adam <thomas@xteddy.org>2015-04-19 14:44:56 +0100
commit370cf75458e7736920559870d8ccff1d4bcee755 (patch)
tree417b6bf25806d5e5d1d5d87a39f2431b30a04ca2 /window-copy.c
parent5e956f114819294e03166e6c66128feb6e0571a2 (diff)
parent4a7587931ce54aa1a94a104480113d658c295b6b (diff)
downloadrtmux-370cf75458e7736920559870d8ccff1d4bcee755.tar.gz
rtmux-370cf75458e7736920559870d8ccff1d4bcee755.tar.bz2
rtmux-370cf75458e7736920559870d8ccff1d4bcee755.zip
Merge branch 'obsd-master'
Diffstat (limited to 'window-copy.c')
-rw-r--r--window-copy.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/window-copy.c b/window-copy.c
index 223df88a..feb8c481 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -147,6 +147,7 @@ struct window_copy_mode_data {
enum window_copy_input_type inputtype;
const char *inputprompt;
char *inputstr;
+ int inputexit;
int numprefix;
@@ -424,8 +425,12 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
case MODEKEYCOPY_APPENDSELECTION:
if (sess != NULL) {
window_copy_append_selection(wp, NULL);
- window_pane_reset_mode(wp);
- return;
+ if (arg == NULL) {
+ window_pane_reset_mode(wp);
+ return;
+ }
+ window_copy_clear_selection(wp);
+ window_copy_redraw_screen(wp);
}
break;
case MODEKEYCOPY_CANCEL:
@@ -572,8 +577,12 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
case MODEKEYCOPY_COPYSELECTION:
if (sess != NULL) {
window_copy_copy_selection(wp, NULL);
- window_pane_reset_mode(wp);
- return;
+ if (arg == NULL) {
+ window_pane_reset_mode(wp);
+ return;
+ }
+ window_copy_clear_selection(wp);
+ window_copy_redraw_screen(wp);
}
break;
case MODEKEYCOPY_STARTOFLINE:
@@ -718,6 +727,7 @@ window_copy_key(struct window_pane *wp, struct session *sess, int key)
goto input_on;
case MODEKEYCOPY_STARTNAMEDBUFFER:
data->inputtype = WINDOW_COPY_NAMEDBUFFER;
+ data->inputexit = (arg == NULL);
data->inputprompt = "Buffer";
*data->inputstr = '\0';
goto input_on;
@@ -828,8 +838,13 @@ window_copy_key_input(struct window_pane *wp, int key)
case WINDOW_COPY_NAMEDBUFFER:
window_copy_copy_selection(wp, data->inputstr);
*data->inputstr = '\0';
- window_pane_reset_mode(wp);
- return (0);
+ if (data->inputexit) {
+ window_pane_reset_mode(wp);
+ return (0);
+ }
+ window_copy_clear_selection(wp);
+ window_copy_redraw_screen(wp);
+ break;
case WINDOW_COPY_GOTOLINE:
window_copy_goto_line(wp, data->inputstr);
*data->inputstr = '\0';
@@ -1216,7 +1231,7 @@ window_copy_write_line(struct window_pane *wp, struct screen_write_ctx *ctx,
limit = screen_size_x(s) + 1;
if (data->inputtype == WINDOW_COPY_NUMERICPREFIX) {
xoff = size = xsnprintf(hdr, limit,
- "Repeat: %u", data->numprefix);
+ "Repeat: %d", data->numprefix);
} else {
xoff = size = xsnprintf(hdr, limit,
"%s: %s", data->inputprompt, data->inputstr);