mirror of
https://github.com/tmux/tmux.git
synced 2024-12-04 19:58:48 +00:00
Expand command formats in %if and move the config file loading later (to
when the first client has identified) so all the client formats are available, fixes problems reported by Thomas Sattler.
This commit is contained in:
parent
250fdd08be
commit
ae541287d3
7
cfg.c
7
cfg.c
@ -91,14 +91,14 @@ start_cfg(void)
|
||||
}
|
||||
|
||||
if (cfg_file == NULL)
|
||||
load_cfg(TMUX_CONF, NULL, NULL, CMD_PARSE_QUIET, NULL);
|
||||
load_cfg(TMUX_CONF, c, NULL, CMD_PARSE_QUIET, NULL);
|
||||
|
||||
if (cfg_file == NULL && (home = find_home()) != NULL) {
|
||||
xasprintf(&cfg_file, "%s/.tmux.conf", home);
|
||||
flags = CMD_PARSE_QUIET;
|
||||
}
|
||||
if (cfg_file != NULL)
|
||||
load_cfg(cfg_file, NULL, NULL, flags, NULL);
|
||||
load_cfg(cfg_file, c, NULL, flags, NULL);
|
||||
|
||||
cmdq_append(NULL, cmdq_get_callback(cfg_done, NULL));
|
||||
}
|
||||
@ -128,6 +128,7 @@ load_cfg(const char *path, struct client *c, struct cmdq_item *item, int flags,
|
||||
pi.file = path;
|
||||
pi.line = 1;
|
||||
pi.item = item;
|
||||
pi.c = c;
|
||||
|
||||
pr = cmd_parse_from_file(f, &pi);
|
||||
fclose(f);
|
||||
@ -147,7 +148,7 @@ load_cfg(const char *path, struct client *c, struct cmdq_item *item, int flags,
|
||||
if (item != NULL)
|
||||
cmdq_insert_after(item, new_item0);
|
||||
else
|
||||
cmdq_append(c, new_item0);
|
||||
cmdq_append(NULL, new_item0);
|
||||
cmd_list_free(pr->cmdlist);
|
||||
|
||||
if (new_item != NULL)
|
||||
|
4
format.c
4
format.c
@ -2006,10 +2006,10 @@ void
|
||||
format_defaults(struct format_tree *ft, struct client *c, struct session *s,
|
||||
struct winlink *wl, struct window_pane *wp)
|
||||
{
|
||||
if (c != NULL)
|
||||
if (c != NULL && c->name != NULL)
|
||||
log_debug("%s: c=%s", __func__, c->name);
|
||||
else
|
||||
log_debug("%s: s=none", __func__);
|
||||
log_debug("%s: c=none", __func__);
|
||||
if (s != NULL)
|
||||
log_debug("%s: s=$%u", __func__, s->id);
|
||||
else
|
||||
|
@ -1934,26 +1934,29 @@ server_client_dispatch_identify(struct client *c, struct imsg *imsg)
|
||||
|
||||
close(c->fd);
|
||||
c->fd = -1;
|
||||
|
||||
return;
|
||||
} else if (c->fd != -1) {
|
||||
if (tty_init(&c->tty, c, c->fd, c->term) != 0) {
|
||||
close(c->fd);
|
||||
c->fd = -1;
|
||||
} else {
|
||||
if (c->flags & CLIENT_UTF8)
|
||||
c->tty.flags |= TTY_UTF8;
|
||||
if (c->flags & CLIENT_256COLOURS)
|
||||
c->tty.term_flags |= TERM_256COLOURS;
|
||||
tty_resize(&c->tty);
|
||||
c->flags |= CLIENT_TERMINAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (c->fd == -1)
|
||||
return;
|
||||
if (tty_init(&c->tty, c, c->fd, c->term) != 0) {
|
||||
close(c->fd);
|
||||
c->fd = -1;
|
||||
return;
|
||||
}
|
||||
if (c->flags & CLIENT_UTF8)
|
||||
c->tty.flags |= TTY_UTF8;
|
||||
if (c->flags & CLIENT_256COLOURS)
|
||||
c->tty.term_flags |= TERM_256COLOURS;
|
||||
|
||||
tty_resize(&c->tty);
|
||||
|
||||
if (!(c->flags & CLIENT_CONTROL))
|
||||
c->flags |= CLIENT_TERMINAL;
|
||||
/*
|
||||
* If this is the first client that has finished identifying, load
|
||||
* configuration files.
|
||||
*/
|
||||
if ((~c->flags & CLIENT_EXIT) &&
|
||||
!cfg_finished &&
|
||||
c == TAILQ_FIRST(&clients) &&
|
||||
TAILQ_NEXT(c, entry) == NULL)
|
||||
start_cfg();
|
||||
}
|
||||
|
||||
/* Handle shell message. */
|
||||
|
Loading…
Reference in New Issue
Block a user