diff --git a/cmd-command-prompt.c b/cmd-command-prompt.c index e5c2b12c..c5f958cd 100644 --- a/cmd-command-prompt.c +++ b/cmd-command-prompt.c @@ -42,8 +42,8 @@ const struct cmd_entry cmd_command_prompt_entry = { .name = "command-prompt", .alias = NULL, - .args = { "1beFiklI:Np:t:T:", 0, 1, cmd_command_prompt_args_parse }, - .usage = "[-1beFiklN] [-I inputs] [-p prompts] " CMD_TARGET_CLIENT_USAGE + .args = { "1CbeFiklI:Np:t:T:", 0, 1, cmd_command_prompt_args_parse }, + .usage = "[-1CbeFiklN] [-I inputs] [-p prompts] " CMD_TARGET_CLIENT_USAGE " [-T prompt-type] [template]", .flags = CMD_CLIENT_TFLAG, @@ -165,6 +165,8 @@ cmd_command_prompt_exec(struct cmd *self, struct cmdq_item *item) cdata->flags |= PROMPT_KEY; else if (args_has(args, 'e')) cdata->flags |= PROMPT_BSPACE_EXIT; + if (args_has(args, 'C')) + cdata->flags |= PROMPT_NOFREEZE; status_prompt_set(tc, target, cdata->prompts[0].prompt, cdata->prompts[0].input, cmd_command_prompt_callback, cmd_command_prompt_free, cdata, cdata->flags, cdata->prompt_type); diff --git a/control-notify.c b/control-notify.c index ba6a8355..0ced0c87 100644 --- a/control-notify.c +++ b/control-notify.c @@ -24,7 +24,8 @@ #include "tmux.h" #define CONTROL_SHOULD_NOTIFY_CLIENT(c) \ - ((c) != NULL && ((c)->flags & CLIENT_CONTROL)) + ((c) != NULL && ((c)->flags & CLIENT_CONTROL) && \ + (c)->control_state != NULL) void control_notify_pane_mode_changed(int pane) diff --git a/status.c b/status.c index c39d0d8f..5ecf7bf9 100644 --- a/status.c +++ b/status.c @@ -728,7 +728,7 @@ status_prompt_set(struct client *c, struct cmd_find_state *fs, c->prompt_type = prompt_type; c->prompt_mode = PROMPT_ENTRY; - if (~flags & PROMPT_INCREMENTAL) + if ((~flags & PROMPT_INCREMENTAL) && (~flags & PROMPT_NOFREEZE)) c->tty.flags |= TTY_FREEZE; c->flags |= CLIENT_REDRAWSTATUS; diff --git a/tmux.1 b/tmux.1 index 1dfcf5b6..a678b1a5 100644 --- a/tmux.1 +++ b/tmux.1 @@ -6913,7 +6913,7 @@ See for possible values for .Ar prompt\-type . .It Xo Ic command\-prompt -.Op Fl 1beFiklN +.Op Fl 1bCeFiklN .Op Fl I Ar inputs .Op Fl p Ar prompts .Op Fl t Ar target\-client @@ -6983,6 +6983,9 @@ is like but the key press is translated to a key name. .Fl N makes the prompt only accept numeric key presses. +If +.Fl C +given, panes will continue to be updated while the prompt is displayed. .Fl i executes the command every time the prompt input changes instead of when the user exits the command prompt. diff --git a/tmux.h b/tmux.h index 5ccbadc8..6d420e09 100644 --- a/tmux.h +++ b/tmux.h @@ -2147,6 +2147,7 @@ struct client { #define PROMPT_ACCEPT 0x20 #define PROMPT_QUOTENEXT 0x40 #define PROMPT_BSPACE_EXIT 0x80 +#define PROMPT_NOFREEZE 0x100 int prompt_flags; enum prompt_type prompt_type; int prompt_cursor;