diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2019-03-12 11:16:51 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2019-03-12 11:16:51 +0000 |
commit | c456969731f70c3030cafcfcd4a67fc5aa1cd36c (patch) | |
tree | fc1ae91d94379b8a09eecfb31ee3be5e7c6f59df /usr.bin/tmux/cmd-queue.c | |
parent | bf3b2b3954f062c42cec536e1c766d1d41097483 (diff) |
Allow multiple modes to be open in a pane. A stack of open modes is kept
and the previous restored when the top is exited. If a mode that is
already on the stack is entered, the existing instance is moved to the
top as the active mode rather than being opened new.
Diffstat (limited to 'usr.bin/tmux/cmd-queue.c')
-rw-r--r-- | usr.bin/tmux/cmd-queue.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/usr.bin/tmux/cmd-queue.c b/usr.bin/tmux/cmd-queue.c index 633f0f1433b..84c25b311da 100644 --- a/usr.bin/tmux/cmd-queue.c +++ b/usr.bin/tmux/cmd-queue.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-queue.c,v 1.60 2019/03/08 10:34:20 nicm Exp $ */ +/* $OpenBSD: cmd-queue.c,v 1.61 2019/03/12 11:16:50 nicm Exp $ */ /* * Copyright (c) 2013 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -404,10 +404,11 @@ cmdq_guard(struct cmdq_item *item, const char *guard, int flags) void cmdq_print(struct cmdq_item *item, const char *fmt, ...) { - struct client *c = item->client; - struct window_pane *wp; - va_list ap; - char *tmp, *msg; + struct client *c = item->client; + struct window_pane *wp; + struct window_mode_entry *wme; + va_list ap; + char *tmp, *msg; va_start(ap, fmt); @@ -426,10 +427,9 @@ cmdq_print(struct cmdq_item *item, const char *fmt, ...) server_client_push_stdout(c); } else { wp = c->session->curw->window->active; - if (wp->mode == NULL || wp->mode->mode != &window_view_mode) { - window_pane_reset_mode(wp); + wme = TAILQ_FIRST(&wp->modes); + if (wme == NULL || wme->mode != &window_view_mode) window_pane_set_mode(wp, &window_view_mode, NULL, NULL); - } window_copy_vadd(wp, fmt, ap); } |