diff --git a/cmd-attach-session.c b/cmd-attach-session.c index f61b5930..f39c0e31 100644 --- a/cmd-attach-session.c +++ b/cmd-attach-session.c @@ -98,7 +98,6 @@ cmd_attach_session(struct cmdq_item *item, int dflag, int rflag, environ_update(s->options, c->environ, s->environ); c->session = s; - server_client_set_key_table(c, NULL); status_timer_start(c); notify_client("client-session-changed", c); session_update_activity(s, NULL); diff --git a/cmd-break-pane.c b/cmd-break-pane.c index a5d4e148..c949fe8a 100644 --- a/cmd-break-pane.c +++ b/cmd-break-pane.c @@ -34,8 +34,8 @@ const struct cmd_entry cmd_break_pane_entry = { .name = "break-pane", .alias = "breakp", - .args = { "dPF:s:t:", 0, 0 }, - .usage = "[-dP] [-F format] [-s src-pane] [-t dst-window]", + .args = { "dPF:n:s:t:", 0, 0 }, + .usage = "[-dP] [-F format] [-n window-name] [-s src-pane] [-t dst-window]", .sflag = CMD_PANE, .tflag = CMD_WINDOW_INDEX, @@ -53,8 +53,7 @@ cmd_break_pane_exec(struct cmd *self, struct cmdq_item *item) struct session *dst_s = item->state.tflag.s; struct window_pane *wp = item->state.sflag.wp; struct window *w = wl->window; - char *name; - char *cause; + char *name, *cause; int idx = item->state.tflag.idx; struct format_tree *ft; const char *template; @@ -78,9 +77,16 @@ cmd_break_pane_exec(struct cmd *self, struct cmdq_item *item) w = wp->window = window_create(dst_s->sx, dst_s->sy); TAILQ_INSERT_HEAD(&w->panes, wp, entry); w->active = wp; - name = default_window_name(w); - window_set_name(w, name); - free(name); + + if (!args_has(args, 'n')) { + name = default_window_name(w); + window_set_name(w, name); + free(name); + } else { + window_set_name(w, args_get(args, 'n')); + options_set_number(w->options, "automatic-rename", 0); + } + layout_init(w, wp); wp->flags |= PANE_CHANGED; diff --git a/cmd-new-session.c b/cmd-new-session.c index 10304bc0..a39522ac 100644 --- a/cmd-new-session.c +++ b/cmd-new-session.c @@ -277,7 +277,6 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item) } else if (c->session != NULL) c->last_session = c->session; c->session = s; - server_client_set_key_table(c, NULL); status_timer_start(c); notify_client("client-session-changed", c); session_update_activity(s, NULL); diff --git a/cmd-show-options.c b/cmd-show-options.c index e6347d68..f1adcc93 100644 --- a/cmd-show-options.c +++ b/cmd-show-options.c @@ -109,7 +109,7 @@ cmd_show_options_print(struct cmd *self, struct cmdq_item *item, name = options_name(o); } - value = options_tostring(o, idx); + value = options_tostring(o, idx, 0); if (args_has(self->args, 'v')) cmdq_print(item, "%s", value); else if (options_isstring(o)) { diff --git a/cmd-source-file.c b/cmd-source-file.c index 4ca47193..dce72c40 100644 --- a/cmd-source-file.c +++ b/cmd-source-file.c @@ -53,7 +53,7 @@ cmd_source_file_exec(struct cmd *self, struct cmdq_item *item) struct cmdq_item *new_item; enum cmd_retval retval; glob_t g; - int i; + u_int i; quiet = args_has(args, 'q'); if (glob(args->argv[0], 0, NULL, &g) != 0) { @@ -64,7 +64,7 @@ cmd_source_file_exec(struct cmd *self, struct cmdq_item *item) } retval = CMD_RETURN_NORMAL; - for (i = 0; i < g.gl_pathc; i++) { + for (i = 0; i < (u_int)g.gl_pathc; i++) { if (load_cfg(g.gl_pathv[i], c, item, quiet) != 0) retval = CMD_RETURN_ERROR; } diff --git a/cmd-switch-client.c b/cmd-switch-client.c index cd46db39..5cf4756f 100644 --- a/cmd-switch-client.c +++ b/cmd-switch-client.c @@ -108,7 +108,6 @@ cmd_switch_client_exec(struct cmd *self, struct cmdq_item *item) if (c->session != NULL && c->session != s) c->last_session = c->session; c->session = s; - server_client_set_key_table(c, NULL); status_timer_start(c); session_update_activity(s, NULL); gettimeofday(&s->last_attached_time, NULL); diff --git a/format.c b/format.c index 6fee3c6e..d1658b77 100644 --- a/format.c +++ b/format.c @@ -658,7 +658,7 @@ format_find(struct format_tree *ft, const char *key, int modifiers) if (o == NULL) o = options_parse_get(global_s_options, key, &idx, 0); if (o != NULL) { - found = options_tostring(o, idx); + found = options_tostring(o, idx, 1); goto found; } } diff --git a/options.c b/options.c index 37263b53..4de25937 100644 --- a/options.c +++ b/options.c @@ -325,7 +325,7 @@ options_isstring(struct options_entry *o) } const char * -options_tostring(struct options_entry *o, int idx) +options_tostring(struct options_entry *o, int idx, int numeric) { static char s[1024]; const char *tmp; @@ -355,7 +355,10 @@ options_tostring(struct options_entry *o, int idx) tmp = attributes_tostring(o->number); break; case OPTIONS_TABLE_FLAG: - tmp = (o->number ? "on" : "off"); + if (numeric) + xsnprintf(s, sizeof s, "%lld", o->number); + else + tmp = (o->number ? "on" : "off"); break; case OPTIONS_TABLE_CHOICE: tmp = o->tableentry->choices[o->number]; diff --git a/tmux.1 b/tmux.1 index 114d9cee..c3bd4edf 100644 --- a/tmux.1 +++ b/tmux.1 @@ -1262,6 +1262,7 @@ Commands related to windows and panes are as follows: .It Xo Ic break-pane .Op Fl dP .Op Fl F Ar format +.Op Fl n Ar window-name .Op Fl s Ar src-pane .Op Fl t Ar dst-window .Xc diff --git a/tmux.h b/tmux.h index cb74add9..de1b823a 100644 --- a/tmux.h +++ b/tmux.h @@ -1564,7 +1564,7 @@ int options_array_set(struct options_entry *, u_int, const char *, int options_array_size(struct options_entry *, u_int *); void options_array_assign(struct options_entry *, const char *); int options_isstring(struct options_entry *); -const char *options_tostring(struct options_entry *, int); +const char *options_tostring(struct options_entry *, int, int); char *options_parse(const char *, int *); struct options_entry *options_parse_get(struct options *, const char *, int *, int);