Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam
2025-10-29 12:01:07 +00:00
3 changed files with 38 additions and 24 deletions

View File

@@ -42,8 +42,8 @@ const struct cmd_entry cmd_command_prompt_entry = {
.name = "command-prompt", .name = "command-prompt",
.alias = NULL, .alias = NULL,
.args = { "1bFkiI:Np:t:T:", 0, 1, cmd_command_prompt_args_parse }, .args = { "1bFkliI:Np:t:T:", 0, 1, cmd_command_prompt_args_parse },
.usage = "[-1bFkiN] [-I inputs] [-p prompts] " CMD_TARGET_CLIENT_USAGE .usage = "[-1bFkliN] [-I inputs] [-p prompts] " CMD_TARGET_CLIENT_USAGE
" [-T prompt-type] [template]", " [-T prompt-type] [template]",
.flags = CMD_CLIENT_TFLAG, .flags = CMD_CLIENT_TFLAG,
@@ -117,27 +117,33 @@ cmd_command_prompt_exec(struct cmd *self, struct cmdq_item *item)
next_input = inputs = xstrdup(s); next_input = inputs = xstrdup(s);
else else
next_input = NULL; next_input = NULL;
while ((prompt = strsep(&next_prompt, ",")) != NULL) { if (args_has(args, 'l')) {
cdata->prompts = xreallocarray(cdata->prompts, cdata->count + 1, cdata->prompts = xcalloc(1, sizeof *cdata->prompts);
sizeof *cdata->prompts); cdata->prompts[0].prompt = prompts;
if (!space) cdata->prompts[0].input = inputs;
tmp = xstrdup(prompt); cdata->count = 1;
else } else {
xasprintf(&tmp, "%s ", prompt); while ((prompt = strsep(&next_prompt, ",")) != NULL) {
cdata->prompts[cdata->count].prompt = tmp; cdata->prompts = xreallocarray(cdata->prompts,
cdata->count + 1, sizeof *cdata->prompts);
if (!space)
tmp = xstrdup(prompt);
else
xasprintf(&tmp, "%s ", prompt);
cdata->prompts[cdata->count].prompt = tmp;
if (next_input != NULL) { if (next_input != NULL) {
input = strsep(&next_input, ","); input = strsep(&next_input, ",");
if (input == NULL) if (input == NULL)
input = "";
} else
input = ""; input = "";
} else cdata->prompts[cdata->count].input = xstrdup(input);
input = ""; cdata->count++;
cdata->prompts[cdata->count].input = xstrdup(input); }
free(inputs);
cdata->count++; free(prompts);
} }
free(inputs);
free(prompts);
if ((type = args_get(args, 'T')) != NULL) { if ((type = args_get(args, 'T')) != NULL) {
cdata->prompt_type = status_prompt_type(type); cdata->prompt_type = status_prompt_type(type);

View File

@@ -441,10 +441,10 @@ key_bindings_init(void)
"bind -n MouseDown1Pane { select-pane -t=; send -M }", "bind -n MouseDown1Pane { select-pane -t=; send -M }",
/* Mouse button 1 drag on pane. */ /* Mouse button 1 drag on pane. */
"bind -n MouseDrag1Pane { if -F '#{||:#{pane_in_mode},#{mouse_any_flag}}' { send -M } { copy-mode -M } }", "bind -n MouseDrag1Pane { if -F '#{||:#{alternate_on},#{pane_in_mode},#{mouse_any_flag}}' { send -M } { copy-mode -M } }",
/* Mouse wheel up on pane. */ /* Mouse wheel up on pane. */
"bind -n WheelUpPane { if -F '#{||:#{pane_in_mode},#{mouse_any_flag}}' { send -M } { copy-mode -e } }", "bind -n WheelUpPane { if -F '#{||:#{alternate_on},#{pane_in_mode},#{mouse_any_flag}}' { send -M } { copy-mode -e } }",
/* Mouse button 2 down on pane. */ /* Mouse button 2 down on pane. */
"bind -n MouseDown2Pane { select-pane -t=; if -F '#{||:#{pane_in_mode},#{mouse_any_flag}}' { send -M } { paste -p } }", "bind -n MouseDown2Pane { select-pane -t=; if -F '#{||:#{pane_in_mode},#{mouse_any_flag}}' { send -M } { paste -p } }",

12
tmux.1
View File

@@ -6672,7 +6672,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 1bFikN .Op Fl 1bFiklN
.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
@@ -6692,8 +6692,10 @@ With
.Ar template .Ar template
is expanded as a format. is expanded as a format.
.Pp .Pp
If present, If
.Fl I .Fl I
is present,
.Ar inputs
is a comma-separated list of the initial text for each prompt. is a comma-separated list of the initial text for each prompt.
If If
.Fl p .Fl p
@@ -6705,6 +6707,12 @@ a single prompt is displayed, constructed from
if it is present, or if it is present, or
.Ql \&: .Ql \&:
if not. if not.
.Fl l
disables splitting of
.Ar inputs
and
.Ar prompts
at commas and treats them literally.
.Pp .Pp
Before the command is executed, the first occurrence of the string Before the command is executed, the first occurrence of the string
.Ql %% .Ql %%