mirror of
https://github.com/tmux/tmux.git
synced 2024-12-04 19:58:48 +00:00
Merge branch 'obsd-master'
Sync from OpenBSD.
This commit is contained in:
commit
48750022c0
@ -24,6 +24,35 @@
|
||||
#define CONTROL_SHOULD_NOTIFY_CLIENT(c) \
|
||||
((c) != NULL && ((c)->flags & CLIENT_CONTROL))
|
||||
|
||||
void
|
||||
control_notify_input(struct client *c, struct window_pane *wp,
|
||||
struct evbuffer *input)
|
||||
{
|
||||
u_char *buf;
|
||||
size_t len;
|
||||
struct evbuffer *message;
|
||||
u_int i;
|
||||
|
||||
if (c->session == NULL)
|
||||
return;
|
||||
|
||||
buf = EVBUFFER_DATA(input);
|
||||
len = EVBUFFER_LENGTH(input);
|
||||
|
||||
/*
|
||||
* Only write input if the window pane is linked to a window belonging
|
||||
* to the client's session.
|
||||
*/
|
||||
if (winlink_find_by_window(&c->session->windows, wp->window) != NULL) {
|
||||
message = evbuffer_new();
|
||||
evbuffer_add_printf(message, "%%output %%%u ", wp->id);
|
||||
for (i = 0; i < len; i++)
|
||||
evbuffer_add_printf(message, "%02hhx", buf[i]);
|
||||
control_write_buffer(c, message);
|
||||
evbuffer_free(message);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
control_notify_window_layout_changed(struct window *w)
|
||||
{
|
||||
|
1
input.c
1
input.c
@ -752,6 +752,7 @@ input_parse(struct window_pane *wp)
|
||||
|
||||
buf = EVBUFFER_DATA(evb);
|
||||
len = EVBUFFER_LENGTH(evb);
|
||||
notify_input(wp, evb);
|
||||
off = 0;
|
||||
|
||||
/* Parse the input. */
|
||||
|
20
notify.c
20
notify.c
@ -131,6 +131,26 @@ notify_drain(void)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
notify_input(struct window_pane *wp, struct evbuffer *input)
|
||||
{
|
||||
struct client *c;
|
||||
u_int i;
|
||||
|
||||
/*
|
||||
* notify_input() is not queued and only does anything when
|
||||
* notifications are enabled.
|
||||
*/
|
||||
if (!notify_enabled)
|
||||
return;
|
||||
|
||||
for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
|
||||
c = ARRAY_ITEM(&clients, i);
|
||||
if (c != NULL && (c->flags & CLIENT_CONTROL))
|
||||
control_notify_input(c, wp, input);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
notify_window_layout_changed(struct window *w)
|
||||
{
|
||||
|
3
tmux.h
3
tmux.h
@ -1527,6 +1527,7 @@ enum mode_key_cmd mode_key_lookup(struct mode_key_data *, int);
|
||||
/* notify.c */
|
||||
void notify_enable(void);
|
||||
void notify_disable(void);
|
||||
void notify_input(struct window_pane *, struct evbuffer *);
|
||||
void notify_window_layout_changed(struct window *);
|
||||
void notify_window_unlinked(struct session *, struct window *);
|
||||
void notify_window_linked(struct session *, struct window *);
|
||||
@ -2220,6 +2221,8 @@ void printflike2 control_write(struct client *, const char *, ...);
|
||||
void control_write_buffer(struct client *, struct evbuffer *);
|
||||
|
||||
/* control-notify.c */
|
||||
void control_notify_input(struct client *, struct window_pane *,
|
||||
struct evbuffer *);
|
||||
void control_notify_window_layout_changed(struct window *);
|
||||
void control_notify_window_unlinked(struct session *, struct window *);
|
||||
void control_notify_window_linked(struct session *, struct window *);
|
||||
|
@ -1068,7 +1068,7 @@ window_copy_search_down(struct window_pane *wp, const char *searchstr)
|
||||
|
||||
retry:
|
||||
sgd = ss.grid;
|
||||
for (i = fy + 1; i < gd->hsize + gd->sy; i++) {
|
||||
for (i = fy + 1; i < gd->hsize + gd->sy + 1; i++) {
|
||||
first = 0;
|
||||
if (i == fy + 1)
|
||||
first = fx;
|
||||
|
Loading…
Reference in New Issue
Block a user