29
29
30
30
int cmd_paste_buffer_exec (struct cmd * , struct cmd_ctx * );
31
31
32
- void cmd_paste_buffer_filter (
33
- struct window_pane * , const char * , size_t , const char * );
32
+ void cmd_paste_buffer_filter (struct window_pane * ,
33
+ const char * , size_t , const char * , int bracket );
34
34
35
35
const struct cmd_entry cmd_paste_buffer_entry = {
36
36
"paste-buffer" , "pasteb" ,
37
- "db:rs :t:" , 0 , 0 ,
38
- "[-dr ] [-s separator] [-b buffer-index] [-t target-pane]" ,
37
+ "db:prs :t:" , 0 , 0 ,
38
+ "[-dpr ] [-s separator] [-b buffer-index] [-t target-pane]" ,
39
39
0 ,
40
40
NULL ,
41
41
NULL ,
@@ -52,6 +52,7 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
52
52
const char * sepstr ;
53
53
char * cause ;
54
54
int buffer ;
55
+ int pflag ;
55
56
56
57
if (cmd_find_pane (ctx , args_get (args , 't' ), & s , & wp ) == NULL )
57
58
return (-1 );
@@ -85,7 +86,9 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
85
86
else
86
87
sepstr = "\r" ;
87
88
}
88
- cmd_paste_buffer_filter (wp , pb -> data , pb -> size , sepstr );
89
+ pflag = args_has (args , 'p' ) &&
90
+ (wp -> screen -> mode & MODE_BRACKETPASTE );
91
+ cmd_paste_buffer_filter (wp , pb -> data , pb -> size , sepstr , pflag );
89
92
}
90
93
91
94
/* Delete the buffer if -d. */
@@ -101,13 +104,16 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
101
104
102
105
/* Add bytes to a buffer and filter '\n' according to separator. */
103
106
void
104
- cmd_paste_buffer_filter (
105
- struct window_pane * wp , const char * data , size_t size , const char * sep )
107
+ cmd_paste_buffer_filter (struct window_pane * wp ,
108
+ const char * data , size_t size , const char * sep , int bracket )
106
109
{
107
110
const char * end = data + size ;
108
111
const char * lf ;
109
112
size_t seplen ;
110
113
114
+ if (bracket )
115
+ bufferevent_write (wp -> event , "\033[200~" , 6 );
116
+
111
117
seplen = strlen (sep );
112
118
while ((lf = memchr (data , '\n' , end - data )) != NULL ) {
113
119
if (lf != data )
@@ -118,4 +124,7 @@ cmd_paste_buffer_filter(
118
124
119
125
if (end != data )
120
126
bufferevent_write (wp -> event , data , end - data );
127
+
128
+ if (bracket )
129
+ bufferevent_write (wp -> event , "\033[201~" , 6 );
121
130
}
0 commit comments