version 1.16, 2011/01/04 00:42:47 |
version 1.17, 2012/03/03 09:43:22 |
|
|
|
|
int cmd_paste_buffer_exec(struct cmd *, struct cmd_ctx *); |
int cmd_paste_buffer_exec(struct cmd *, struct cmd_ctx *); |
|
|
void cmd_paste_buffer_filter( |
void cmd_paste_buffer_filter(struct window_pane *, |
struct window_pane *, const char *, size_t, const char *); |
const char *, size_t, const char *, int bracket); |
|
|
const struct cmd_entry cmd_paste_buffer_entry = { |
const struct cmd_entry cmd_paste_buffer_entry = { |
"paste-buffer", "pasteb", |
"paste-buffer", "pasteb", |
"db:rs:t:", 0, 0, |
"db:prs:t:", 0, 0, |
"[-dr] [-s separator] [-b buffer-index] [-t target-pane]", |
"[-dpr] [-s separator] [-b buffer-index] [-t target-pane]", |
0, |
0, |
NULL, |
NULL, |
NULL, |
NULL, |
|
|
const char *sepstr; |
const char *sepstr; |
char *cause; |
char *cause; |
int buffer; |
int buffer; |
|
int pflag; |
|
|
if (cmd_find_pane(ctx, args_get(args, 't'), &s, &wp) == NULL) |
if (cmd_find_pane(ctx, args_get(args, 't'), &s, &wp) == NULL) |
return (-1); |
return (-1); |
|
|
else |
else |
sepstr = "\r"; |
sepstr = "\r"; |
} |
} |
cmd_paste_buffer_filter(wp, pb->data, pb->size, sepstr); |
pflag = args_has(args, 'p') && |
|
(wp->screen->mode & MODE_BRACKETPASTE); |
|
cmd_paste_buffer_filter(wp, pb->data, pb->size, sepstr, pflag); |
} |
} |
|
|
/* Delete the buffer if -d. */ |
/* Delete the buffer if -d. */ |
|
|
|
|
/* Add bytes to a buffer and filter '\n' according to separator. */ |
/* Add bytes to a buffer and filter '\n' according to separator. */ |
void |
void |
cmd_paste_buffer_filter( |
cmd_paste_buffer_filter(struct window_pane *wp, |
struct window_pane *wp, const char *data, size_t size, const char *sep) |
const char *data, size_t size, const char *sep, int bracket) |
{ |
{ |
const char *end = data + size; |
const char *end = data + size; |
const char *lf; |
const char *lf; |
size_t seplen; |
size_t seplen; |
|
|
|
if (bracket) |
|
bufferevent_write(wp->event, "\033[200~", 6); |
|
|
seplen = strlen(sep); |
seplen = strlen(sep); |
while ((lf = memchr(data, '\n', end - data)) != NULL) { |
while ((lf = memchr(data, '\n', end - data)) != NULL) { |
if (lf != data) |
if (lf != data) |
|
|
|
|
if (end != data) |
if (end != data) |
bufferevent_write(wp->event, data, end - data); |
bufferevent_write(wp->event, data, end - data); |
|
|
|
if (bracket) |
|
bufferevent_write(wp->event, "\033[201~", 6); |
} |
} |