=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server-fn.c,v retrieving revision 1.96 retrieving revision 1.97 diff -c -r1.96 -r1.97 *** src/usr.bin/tmux/server-fn.c 2015/12/12 18:32:24 1.96 --- src/usr.bin/tmux/server-fn.c 2015/12/16 21:50:37 1.97 *************** *** 1,4 **** ! /* $OpenBSD: server-fn.c,v 1.96 2015/12/12 18:32:24 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: server-fn.c,v 1.97 2015/12/16 21:50:37 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 293,304 **** } void ! server_destroy_pane(struct window_pane *wp) { struct window *w = wp->window; int old_fd; struct screen_write_ctx ctx; struct grid_cell gc; old_fd = wp->fd; if (wp->fd != -1) { --- 293,305 ---- } void ! server_destroy_pane(struct window_pane *wp, int hooks) { struct window *w = wp->window; int old_fd; struct screen_write_ctx ctx; struct grid_cell gc; + struct cmd_find_state fs; old_fd = wp->fd; if (wp->fd != -1) { *************** *** 319,330 **** --- 320,337 ---- screen_write_puts(&ctx, &gc, "Pane is dead"); screen_write_stop(&ctx); wp->flags |= PANE_REDRAW; + + if (hooks && cmd_find_from_pane(&fs, wp) == 0) + hooks_run(hooks_get(fs.s), NULL, &fs, "pane-died"); return; } server_unzoom_window(w); layout_close_pane(wp); window_remove_pane(w, wp); + + if (hooks && cmd_find_from_window(&fs, w) == 0) + hooks_run(hooks_get(fs.s), NULL, &fs, "pane-exited"); if (TAILQ_EMPTY(&w->panes)) server_kill_window(w);