From 72948d9f1d16dedf18dcb9b7ee96cc7ca803ef40 Mon Sep 17 00:00:00 2001 From: nicm Date: Sun, 13 Dec 2015 18:31:47 +0000 Subject: [PATCH] -c needs to be able for fail for display-message. --- cmd-display-message.c | 2 +- cmd.c | 15 ++++++++++----- tmux.h | 1 + 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cmd-display-message.c b/cmd-display-message.c index 201f8b75..ddc55846 100644 --- a/cmd-display-message.c +++ b/cmd-display-message.c @@ -39,7 +39,7 @@ const struct cmd_entry cmd_display_message_entry = { "c:pt:F:", 0, 1, "[-p] [-c target-client] [-F format] " CMD_TARGET_PANE_USAGE " [message]", - CMD_CLIENT_C|CMD_PANE_T, + CMD_CLIENT_C|CMD_PANE_T|CMD_CLIENT_CANFAIL, cmd_display_message_exec }; diff --git a/cmd.c b/cmd.c index 789bcefb..93bab204 100644 --- a/cmd.c +++ b/cmd.c @@ -585,7 +585,7 @@ cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq) struct cmd_state *state = &cmdq->state; struct args *args = cmd->args; char *tmp; - int error; + int error, quiet; tmp = cmd_print(cmd); log_debug("preparing state for: %s (client %p)", tmp, cmdq->client); @@ -594,6 +594,11 @@ cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq) /* Start with an empty state. */ cmd_clear_state(state); + /* No error messages if can fail. */ + quiet = 0; + if (cmd->entry->flags & CMD_CLIENT_CANFAIL) + quiet = 1; + /* * If the command wants a client and provides -c or -t, use it. If not, * try the base command instead via cmd_get_state_client. No client is @@ -604,13 +609,13 @@ cmd_prepare_state(struct cmd *cmd, struct cmd_q *cmdq) state->c = cmd_find_client(cmdq, NULL, 1); break; case CMD_CLIENT_C: - state->c = cmd_find_client(cmdq, args_get(args, 'c'), 0); - if (state->c == NULL) + state->c = cmd_find_client(cmdq, args_get(args, 'c'), quiet); + if (!quiet && state->c == NULL) return (-1); break; case CMD_CLIENT_T: - state->c = cmd_find_client(cmdq, args_get(args, 't'), 0); - if (state->c == NULL) + state->c = cmd_find_client(cmdq, args_get(args, 't'), quiet); + if (!quiet && state->c == NULL) return (-1); break; default: diff --git a/tmux.h b/tmux.h index 5724b536..8b26431d 100644 --- a/tmux.h +++ b/tmux.h @@ -1417,6 +1417,7 @@ struct cmd_entry { #define CMD_PANE_MARKED_T 0x10000 #define CMD_WINDOW_MARKED_T 0x20000 #define CMD_WINDOW_MARKED_S 0x40000 +#define CMD_CLIENT_CANFAIL 0x80000 int flags; enum cmd_retval (*exec)(struct cmd *, struct cmd_q *);