Add -F for command-prompt and use it to fix "Rename" on the window menu, GitHub

issue 2699.
This commit is contained in:
Nicholas Marriott 2021-05-10 07:52:30 +01:00
parent bde3829131
commit 4ca6b42c24
3 changed files with 13 additions and 6 deletions

View File

@ -40,8 +40,8 @@ const struct cmd_entry cmd_command_prompt_entry = {
.name = "command-prompt", .name = "command-prompt",
.alias = NULL, .alias = NULL,
.args = { "1kiI:Np:t:T:", 0, 1 }, .args = { "1FkiI:Np:t:T:", 0, 1 },
.usage = "[-1kiN] [-I inputs] [-p prompts] " CMD_TARGET_CLIENT_USAGE .usage = "[-1FkiN] [-I inputs] [-p prompts] " CMD_TARGET_CLIENT_USAGE
" [-T type] [template]", " [-T type] [template]",
.flags = CMD_CLIENT_TFLAG, .flags = CMD_CLIENT_TFLAG,
@ -59,7 +59,7 @@ struct cmd_command_prompt_cdata {
char *next_prompt; char *next_prompt;
char *template; char *template;
int idx; int idx;
}; };
static enum cmd_retval static enum cmd_retval
@ -87,7 +87,9 @@ cmd_command_prompt_exec(struct cmd *self, struct cmdq_item *item)
cdata->template = NULL; cdata->template = NULL;
cdata->idx = 1; cdata->idx = 1;
if (args->argc != 0) if (args->argc != 0 && args_has(args, 'F'))
cdata->template = format_single_from_target(item, args->argv[0]);
else if (args->argc != 0)
cdata->template = xstrdup(args->argv[0]); cdata->template = xstrdup(args->argv[0]);
else else
cdata->template = xstrdup("%1"); cdata->template = xstrdup("%1");

View File

@ -41,7 +41,7 @@
" 'Kill' 'X' {kill-window}" \ " 'Kill' 'X' {kill-window}" \
" 'Respawn' 'R' {respawn-window -k}" \ " 'Respawn' 'R' {respawn-window -k}" \
" '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m}" \ " '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m}" \
" 'Rename' 'n' {command-prompt -I \"#W\" \"rename-window -- '%%'\"}" \ " 'Rename' 'n' {command-prompt -FI \"#W\" \"rename-window -t#{window_id} -- '%%'\"}" \
" ''" \ " ''" \
" 'New After' 'w' {new-window -a}" \ " 'New After' 'w' {new-window -a}" \
" 'New At End' 'W' {new-window}" " 'New At End' 'W' {new-window}"

7
tmux.1
View File

@ -5392,7 +5392,7 @@ See
for possible values for for possible values for
.Ar prompt-type . .Ar prompt-type .
.It Xo Ic command-prompt .It Xo Ic command-prompt
.Op Fl 1ikN .Op Fl 1FikN
.Op Fl I Ar inputs .Op Fl I Ar inputs
.Op Fl p Ar prompts .Op Fl p Ar prompts
.Op Fl t Ar target-client .Op Fl t Ar target-client
@ -5407,6 +5407,11 @@ to execute commands interactively.
If If
.Ar template .Ar template
is specified, it is used as the command. is specified, it is used as the command.
With
.Fl F ,
.Ar template
is expanded as a format.
.Pp
If present, If present,
.Fl I .Fl I
is a comma-separated list of the initial text for each prompt. is a comma-separated list of the initial text for each prompt.