summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd-command-prompt.c2
-rw-r--r--cmd-confirm-before.c4
-rw-r--r--cmd-select-prompt.c2
-rw-r--r--mode-key.c2
-rw-r--r--status.c11
5 files changed, 11 insertions, 10 deletions
diff --git a/cmd-command-prompt.c b/cmd-command-prompt.c
index f729a66e..dac334b2 100644
--- a/cmd-command-prompt.c
+++ b/cmd-command-prompt.c
@@ -112,7 +112,7 @@ cmd_command_prompt_callback(void *data, const char *s)
char *cause, *ptr, *buf, ch;
size_t len, slen;
- if (s == NULL)
+ if (s == NULL || *s == '\0')
return (0);
slen = strlen(s);
diff --git a/cmd-confirm-before.c b/cmd-confirm-before.c
index db799a4b..fd366b9b 100644
--- a/cmd-confirm-before.c
+++ b/cmd-confirm-before.c
@@ -107,7 +107,9 @@ cmd_confirm_before_callback(void *data, const char *s)
struct cmd_ctx ctx;
char *cause;
- if (s == NULL || tolower((u_char) s[0]) != 'y' || s[1] != '\0')
+ if (s == NULL || *s == '\0')
+ return (0);
+ if (tolower((u_char) s[0]) != 'y' || s[1] != '\0')
return (0);
if (cmd_string_parse(cdata->cmd, &cmdlist, &cause) != 0) {
diff --git a/cmd-select-prompt.c b/cmd-select-prompt.c
index a7965e29..bead0619 100644
--- a/cmd-select-prompt.c
+++ b/cmd-select-prompt.c
@@ -66,7 +66,7 @@ cmd_select_prompt_callback(void *data, const char *s)
char msg[128];
u_int idx;
- if (s == NULL)
+ if (s == NULL || *s == '\0')
return (0);
idx = strtonum(s, 0, UINT_MAX, &errstr);
diff --git a/mode-key.c b/mode-key.c
index 6ceb01b6..d36504fd 100644
--- a/mode-key.c
+++ b/mode-key.c
@@ -181,6 +181,7 @@ struct mode_key_tree mode_key_tree_vi_copy;
const struct mode_key_entry mode_key_emacs_edit[] = {
{ '\001' /* C-a */, 0, MODEKEYEDIT_STARTOFLINE },
{ '\002' /* C-p */, 0, MODEKEYEDIT_CURSORLEFT },
+ { '\003' /* C-c */, 0, MODEKEYEDIT_CANCEL },
{ '\004' /* C-d */, 0, MODEKEYEDIT_DELETE },
{ '\005' /* C-e */, 0, MODEKEYEDIT_ENDOFLINE },
{ '\006' /* C-f */, 0, MODEKEYEDIT_CURSORRIGHT },
@@ -190,6 +191,7 @@ const struct mode_key_entry mode_key_emacs_edit[] = {
{ '\016' /* C-n */, 0, MODEKEYEDIT_HISTORYDOWN },
{ '\020' /* C-p */, 0, MODEKEYEDIT_HISTORYUP },
{ '\031' /* C-y */, 0, MODEKEYEDIT_PASTE },
+ { '\033' /* Escape */, 0, MODEKEYEDIT_CANCEL },
{ '\r', 0, MODEKEYEDIT_ENTER },
{ 'm' | KEYC_ESCAPE, 0, MODEKEYEDIT_STARTOFLINE },
{ KEYC_BSPACE, 0, MODEKEYEDIT_BACKSPACE },
diff --git a/status.c b/status.c
index 47a5d8e4..c42dc896 100644
--- a/status.c
+++ b/status.c
@@ -920,14 +920,11 @@ status_prompt_key(struct client *c, int key)
c->flags |= CLIENT_STATUS;
break;
case MODEKEYEDIT_ENTER:
- if (*c->prompt_buffer != '\0') {
+ if (*c->prompt_buffer != '\0')
status_prompt_add_history(c);
- if (c->prompt_callbackfn(
- c->prompt_data, c->prompt_buffer) == 0)
- status_prompt_clear(c);
- break;
- }
- /* FALLTHROUGH */
+ if (c->prompt_callbackfn(c->prompt_data, c->prompt_buffer) == 0)
+ status_prompt_clear(c);
+ break;
case MODEKEYEDIT_CANCEL:
if (c->prompt_callbackfn(c->prompt_data, NULL) == 0)
status_prompt_clear(c);