Add pane focus hooks.

pull/1395/head
nicm 2018-07-04 12:25:26 +00:00
parent 2fae6a5761
commit d254293a6d
2 changed files with 18 additions and 8 deletions

View File

@ -1148,10 +1148,6 @@ server_client_check_focus(struct window_pane *wp)
push = wp->flags & PANE_FOCUSPUSH;
wp->flags &= ~PANE_FOCUSPUSH;
/* If we don't care about focus, forget it. */
if (!(wp->base.mode & MODE_FOCUSON))
return;
/* If we're not the active pane in our window, we're not focused. */
if (wp->window->active != wp)
goto not_focused;
@ -1175,14 +1171,20 @@ server_client_check_focus(struct window_pane *wp)
}
not_focused:
if (push || (wp->flags & PANE_FOCUSED))
bufferevent_write(wp->event, "\033[O", 3);
if (push || (wp->flags & PANE_FOCUSED)) {
if (wp->base.mode & MODE_FOCUSON)
bufferevent_write(wp->event, "\033[O", 3);
notify_pane("pane-focus-out", wp);
}
wp->flags &= ~PANE_FOCUSED;
return;
focused:
if (push || !(wp->flags & PANE_FOCUSED))
bufferevent_write(wp->event, "\033[I", 3);
if (push || !(wp->flags & PANE_FOCUSED)) {
if (wp->base.mode & MODE_FOCUSON)
bufferevent_write(wp->event, "\033[I", 3);
notify_pane("pane-focus-in", wp);
}
wp->flags |= PANE_FOCUSED;
}

8
tmux.1
View File

@ -3423,6 +3423,14 @@ Run when the program running in a pane exits, but
is on so the pane has not closed.
.It pane-exited
Run when the program running in a pane exits.
.It pane-focus-in
Run when the focus enters a pane, if the
.Ic focus-events
option is on.
.It pane-focus-out
Run when the focus exits a pane, if the
.Ic focus-events
option is on.
.It pane-set-clipboard
Run when the terminal clipboard is set using the
.Xr xterm 1