diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-08-13 23:44:18 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-08-13 23:44:18 +0000 |
commit | 09cbd0c695cdd953834a46d161f6d3b0bf385c1c (patch) | |
tree | 547649ceb2c777efe0cb20b2f2cae7ae0d7e1108 | |
parent | 7a359c00aca2e35dc26c2239f4261f0fa53f0caf (diff) | |
download | rtmux-09cbd0c695cdd953834a46d161f6d3b0bf385c1c.tar.gz rtmux-09cbd0c695cdd953834a46d161f6d3b0bf385c1c.tar.bz2 rtmux-09cbd0c695cdd953834a46d161f6d3b0bf385c1c.zip |
Switch the prompt code to return an empty string when the user enters no
response and reserve NULL for an explicit cancel. Change all callbacks to treat
them the same so no functional change.
Also add cancel key bindings to emacs mode which were missing.
-rw-r--r-- | cmd-command-prompt.c | 2 | ||||
-rw-r--r-- | cmd-confirm-before.c | 4 | ||||
-rw-r--r-- | cmd-select-prompt.c | 2 | ||||
-rw-r--r-- | mode-key.c | 2 | ||||
-rw-r--r-- | status.c | 11 |
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); @@ -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 }, @@ -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); |