diff --git a/cmd-parse.y b/cmd-parse.y index 6d2b970c..b0a42f7c 100644 --- a/cmd-parse.y +++ b/cmd-parse.y @@ -176,18 +176,18 @@ expanded : format struct cmd_parse_input *pi = ps->input; struct format_tree *ft; struct client *c = pi->c; - struct cmd_find_state *fs; + struct cmd_find_state *fsp; + struct cmd_find_state fs; int flags = FORMAT_NOJOBS; if (cmd_find_valid_state(&pi->fs)) - fs = &pi->fs; - else - fs = NULL; + fsp = &pi->fs; + else { + cmd_find_from_client(&fs, c, 0); + fsp = &fs; + } ft = format_create(NULL, pi->item, FORMAT_NONE, flags); - if (fs != NULL) - format_defaults(ft, c, fs->s, fs->wl, fs->wp); - else - format_defaults(ft, c, NULL, NULL, NULL); + format_defaults(ft, c, fsp->s, fsp->wl, fsp->wp); $$ = format_expand(ft, $1); format_free(ft); diff --git a/cmd-queue.c b/cmd-queue.c index ef68d5d5..fa6999e8 100644 --- a/cmd-queue.c +++ b/cmd-queue.c @@ -102,7 +102,6 @@ cmdq_insert_after(struct cmdq_item *after, struct cmdq_item *item) } while (item != NULL); } - /* Insert a hook. */ void cmdq_insert_hook(struct session *s, struct cmdq_item *item, diff --git a/format.c b/format.c index eb7a9e53..8395f43a 100644 --- a/format.c +++ b/format.c @@ -962,7 +962,6 @@ format_each(struct format_tree *ft, void (*cb)(const char *, const char *, } } - /* Add a key-value pair. */ void format_add(struct format_tree *ft, const char *key, const char *fmt, ...) diff --git a/key-bindings.c b/key-bindings.c index 0c9ba67b..df2dcf46 100644 --- a/key-bindings.c +++ b/key-bindings.c @@ -69,7 +69,6 @@ " '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m}" \ " '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}" - static int key_bindings_cmp(struct key_binding *, struct key_binding *); RB_GENERATE_STATIC(key_bindings, key_binding, entry, key_bindings_cmp); static int key_table_cmp(struct key_table *, struct key_table *); diff --git a/tmux.1 b/tmux.1 index 926433aa..04149c36 100644 --- a/tmux.1 +++ b/tmux.1 @@ -2748,7 +2748,7 @@ and .Pp The .Nm -server has a set of global options which do not apply to any particular +server has a set of global server options which do not apply to any particular window or session or pane. These are altered with the .Ic set-option diff --git a/window-copy.c b/window-copy.c index b90130c7..76736ab2 100644 --- a/window-copy.c +++ b/window-copy.c @@ -1108,7 +1108,6 @@ window_copy_cmd_previous_matching_bracket(struct window_copy_cmd_state *cs) return (WINDOW_COPY_CMD_NOTHING); } - static enum window_copy_cmd_action window_copy_cmd_next_matching_bracket(struct window_copy_cmd_state *cs) { diff --git a/window.c b/window.c index b07fc63e..cd974649 100644 --- a/window.c +++ b/window.c @@ -1573,6 +1573,10 @@ window_pane_input_callback(struct client *c, int closed, void *data) wp = window_pane_find_by_id(cdata->wp); if (wp == NULL || closed || c->flags & CLIENT_DEAD) { + if (wp == NULL) + c->flags |= CLIENT_EXIT; + evbuffer_drain(evb, len); + c->stdin_callback = NULL; server_client_unref(c);