Add some enums for prompt return values to make them a bit less confusing.

This commit is contained in:
nicm
2026-06-24 10:55:39 +00:00
parent 0a71af41be
commit 37633ff957
8 changed files with 143 additions and 109 deletions

View File

@@ -34,8 +34,8 @@ static enum args_parse_type cmd_command_prompt_args_parse(struct args *,
static enum cmd_retval cmd_command_prompt_exec(struct cmd *, static enum cmd_retval cmd_command_prompt_exec(struct cmd *,
struct cmdq_item *); struct cmdq_item *);
static int cmd_command_prompt_callback(struct client *, void *, static enum prompt_result cmd_command_prompt_callback(struct client *, void *,
const char *, int); const char *, enum prompt_key_result);
static void cmd_command_prompt_free(void *); static void cmd_command_prompt_free(void *);
const struct cmd_entry cmd_command_prompt_entry = { const struct cmd_entry cmd_command_prompt_entry = {
@@ -176,9 +176,9 @@ cmd_command_prompt_exec(struct cmd *self, struct cmdq_item *item)
return (CMD_RETURN_WAIT); return (CMD_RETURN_WAIT);
} }
static int static enum prompt_result
cmd_command_prompt_callback(struct client *c, void *data, const char *s, cmd_command_prompt_callback(struct client *c, void *data, const char *s,
int flags) enum prompt_key_result key)
{ {
struct cmd_command_prompt_cdata *cdata = data; struct cmd_command_prompt_cdata *cdata = data;
char *error; char *error;
@@ -188,23 +188,23 @@ cmd_command_prompt_callback(struct client *c, void *data, const char *s,
int argc = 0; int argc = 0;
char **argv = NULL; char **argv = NULL;
if (s == NULL || (flags & PROMPT_INPUT_MOVE)) if (s == NULL || key == PROMPT_KEY_MOVE)
goto out; goto out;
if (flags & PROMPT_INPUT_DONE) { if (key == PROMPT_KEY_CLOSE) {
if (cdata->flags & PROMPT_INCREMENTAL) if (cdata->flags & PROMPT_INCREMENTAL)
goto out; goto out;
cmd_append_argv(&cdata->argc, &cdata->argv, s); cmd_append_argv(&cdata->argc, &cdata->argv, s);
if (++cdata->current != cdata->count) { if (++cdata->current != cdata->count) {
prompt = &cdata->prompts[cdata->current]; prompt = &cdata->prompts[cdata->current];
status_prompt_update(c, prompt->prompt, prompt->input); status_prompt_update(c, prompt->prompt, prompt->input);
return (1); return (PROMPT_CONTINUE);
} }
} }
argc = cdata->argc; argc = cdata->argc;
argv = cmd_copy_argv(cdata->argc, cdata->argv); argv = cmd_copy_argv(cdata->argc, cdata->argv);
if (~flags & PROMPT_INPUT_DONE) if (key != PROMPT_KEY_CLOSE)
cmd_append_argv(&argc, &argv, s); cmd_append_argv(&argc, &argv, s);
else { else {
cmd_free_argv(cdata->argc, cdata->argv); cmd_free_argv(cdata->argc, cdata->argv);
@@ -226,12 +226,12 @@ cmd_command_prompt_callback(struct client *c, void *data, const char *s,
cmd_free_argv(argc, argv); cmd_free_argv(argc, argv);
if (c->prompt_inputcb != cmd_command_prompt_callback) if (c->prompt_inputcb != cmd_command_prompt_callback)
return (1); return (PROMPT_CONTINUE);
out: out:
if (item != NULL) if (item != NULL)
cmdq_continue(item); cmdq_continue(item);
return (0); return (PROMPT_CLOSE);
} }
static void static void

View File

@@ -33,8 +33,8 @@ static enum args_parse_type cmd_confirm_before_args_parse(struct args *,
static enum cmd_retval cmd_confirm_before_exec(struct cmd *, static enum cmd_retval cmd_confirm_before_exec(struct cmd *,
struct cmdq_item *); struct cmdq_item *);
static int cmd_confirm_before_callback(struct client *, void *, static enum prompt_result cmd_confirm_before_callback(struct client *, void *,
const char *, int); const char *, enum prompt_key_result);
static void cmd_confirm_before_free(void *); static void cmd_confirm_before_free(void *);
const struct cmd_entry cmd_confirm_before_entry = { const struct cmd_entry cmd_confirm_before_entry = {
@@ -118,9 +118,9 @@ cmd_confirm_before_exec(struct cmd *self, struct cmdq_item *item)
return (CMD_RETURN_WAIT); return (CMD_RETURN_WAIT);
} }
static int static enum prompt_result
cmd_confirm_before_callback(struct client *c, void *data, const char *s, cmd_confirm_before_callback(struct client *c, void *data, const char *s,
__unused int flags) __unused enum prompt_key_result key)
{ {
struct cmd_confirm_before_data *cdata = data; struct cmd_confirm_before_data *cdata = data;
struct cmdq_item *item = cdata->item, *new_item; struct cmdq_item *item = cdata->item, *new_item;
@@ -151,7 +151,7 @@ out:
cmdq_get_client(item)->retval = retcode; cmdq_get_client(item)->retval = retcode;
cmdq_continue(item); cmdq_continue(item);
} }
return (0); return (PROMPT_CLOSE);
} }
static void static void

View File

@@ -1066,25 +1066,27 @@ mode_tree_search_set(struct mode_tree_data *mtd)
mtd->wp->flags |= PANE_REDRAW; mtd->wp->flags |= PANE_REDRAW;
} }
static int static enum prompt_result
mode_tree_search_callback(__unused struct client *c, void *data, const char *s, mode_tree_search_callback(__unused struct client *c, void *data, const char *s,
__unused int flags) enum prompt_key_result key)
{ {
struct mode_tree_data *mtd = data; struct mode_tree_data *mtd = data;
if (mtd->dead) if (mtd->dead)
return (0); return (PROMPT_CLOSE);
free(mtd->search); free(mtd->search);
if (s == NULL || *s == '\0') { if (s == NULL || *s == '\0')
mtd->search = NULL; mtd->search = NULL;
return (0); else {
mtd->search = xstrdup(s);
mtd->search_icase = mode_tree_is_lowercase(s);
mode_tree_search_set(mtd);
} }
mtd->search = xstrdup(s);
mtd->search_icase = mode_tree_is_lowercase(s);
mode_tree_search_set(mtd);
return (0); if (key == PROMPT_KEY_HANDLED)
return (PROMPT_CONTINUE);
return (PROMPT_CLOSE);
} }
static void static void
@@ -1093,14 +1095,14 @@ mode_tree_search_free(void *data)
mode_tree_remove_ref(data); mode_tree_remove_ref(data);
} }
static int static enum prompt_result
mode_tree_filter_callback(__unused struct client *c, void *data, const char *s, mode_tree_filter_callback(__unused struct client *c, void *data, const char *s,
__unused int flags) enum prompt_key_result key)
{ {
struct mode_tree_data *mtd = data; struct mode_tree_data *mtd = data;
if (mtd->dead) if (mtd->dead)
return (0); return (PROMPT_CLOSE);
if (mtd->filter != NULL) if (mtd->filter != NULL)
free(mtd->filter); free(mtd->filter);
@@ -1113,7 +1115,9 @@ mode_tree_filter_callback(__unused struct client *c, void *data, const char *s,
mode_tree_draw(mtd); mode_tree_draw(mtd);
mtd->wp->flags |= PANE_REDRAW; mtd->wp->flags |= PANE_REDRAW;
return (0); if (key == PROMPT_KEY_HANDLED)
return (PROMPT_CONTINUE);
return (PROMPT_CLOSE);
} }
static void static void

View File

@@ -1504,8 +1504,14 @@ server_client_handle_key0(struct client *c, struct key_event *event,
} }
server_client_clear_overlay(c); server_client_clear_overlay(c);
if (c->prompt_string != NULL) { if (c->prompt_string != NULL) {
if (status_prompt_key(c, event->key) == 0) switch (status_prompt_key(c, event->key)) {
case PROMPT_KEY_HANDLED:
case PROMPT_KEY_CLOSE:
return (0); return (0);
case PROMPT_KEY_NOT_HANDLED:
case PROMPT_KEY_MOVE:
break;
}
} }
} }

View File

@@ -670,7 +670,7 @@ status_prompt_accept(__unused struct cmdq_item *item, void *data)
void *pd = c->prompt_data; void *pd = c->prompt_data;
if (c->prompt_string != NULL) { if (c->prompt_string != NULL) {
c->prompt_inputcb(c, pd, "y", PROMPT_INPUT_DONE); c->prompt_inputcb(c, pd, "y", PROMPT_KEY_CLOSE);
status_prompt_clear(c); status_prompt_clear(c);
} }
return (CMD_RETURN_NORMAL); return (CMD_RETURN_NORMAL);
@@ -735,7 +735,7 @@ status_prompt_set(struct client *c, struct cmd_find_state *fs,
if (flags & PROMPT_INCREMENTAL) { if (flags & PROMPT_INCREMENTAL) {
tmp = utf8_tocstr(c->prompt_buffer); tmp = utf8_tocstr(c->prompt_buffer);
xasprintf(&cp, "=%s", tmp); xasprintf(&cp, "=%s", tmp);
c->prompt_inputcb(c, c->prompt_data, cp, 0); c->prompt_inputcb(c, c->prompt_data, cp, PROMPT_KEY_HANDLED);
free(cp); free(cp);
free(tmp); free(tmp);
} }
@@ -1428,24 +1428,28 @@ status_prompt_backward_word(struct client *c, const char *separators)
} }
/* Fire input callback when done. */ /* Fire input callback when done. */
static void static enum prompt_key_result
status_prompt_done(struct client *c, const char *s) status_prompt_done(struct client *c, const char *s)
{ {
struct prompt_data *pd = c->prompt_data; struct prompt_data *pd = c->prompt_data;
if (c->prompt_inputcb(c, pd, s, PROMPT_INPUT_DONE) == 0) if (c->prompt_inputcb(c, pd, s, PROMPT_KEY_CLOSE) == PROMPT_CLOSE) {
status_prompt_clear(c); status_prompt_clear(c);
return (PROMPT_KEY_CLOSE);
}
c->flags |= CLIENT_REDRAWSTATUS;
return (PROMPT_KEY_HANDLED);
} }
/* Check for a movement key. */ /* Check for a movement key. */
static int static enum prompt_key_result
status_prompt_check_move(struct client *c, key_code key) status_prompt_check_move(struct client *c, key_code key)
{ {
struct prompt_data *pd = c->prompt_data; struct prompt_data *pd = c->prompt_data;
char *s; char *s;
if (~c->prompt_flags & PROMPT_INCREMENTAL) if (~c->prompt_flags & PROMPT_INCREMENTAL)
return (0); return (PROMPT_KEY_NOT_HANDLED);
switch (key) { switch (key) {
case KEYC_UP: case KEYC_UP:
case KEYC_DOWN: case KEYC_DOWN:
@@ -1455,17 +1459,20 @@ status_prompt_check_move(struct client *c, key_code key)
case KEYC_NPAGE: case KEYC_NPAGE:
break; break;
default: default:
return (0); return (PROMPT_KEY_NOT_HANDLED);
} }
s = utf8_tocstr(c->prompt_buffer); s = utf8_tocstr(c->prompt_buffer);
if (c->prompt_inputcb(c, pd, s, PROMPT_INPUT_MOVE) == 0) if (c->prompt_inputcb(c, pd, s, PROMPT_KEY_MOVE) == PROMPT_CLOSE) {
status_prompt_clear(c); status_prompt_clear(c);
free(s);
return (PROMPT_KEY_CLOSE);
}
free(s); free(s);
return (1); return (PROMPT_KEY_MOVE);
} }
/* Handle keys in prompt. */ /* Handle keys in prompt. */
int enum prompt_key_result
status_prompt_key(struct client *c, key_code key) status_prompt_key(struct client *c, key_code key)
{ {
struct prompt_data *pd = c->prompt_data; struct prompt_data *pd = c->prompt_data;
@@ -1474,13 +1481,14 @@ status_prompt_key(struct client *c, key_code key)
const char *histstr, *separators = NULL, *ks; const char *histstr, *separators = NULL, *ks;
size_t size, idx; size_t size, idx;
struct utf8_data tmp; struct utf8_data tmp;
enum prompt_key_result result = PROMPT_KEY_HANDLED;
int keys, word_is_separators; int keys, word_is_separators;
if (c->prompt_flags & PROMPT_KEY) { if (c->prompt_flags & PROMPT_KEY) {
ks = key_string_lookup_key(key, 0); ks = key_string_lookup_key(key, 0);
c->prompt_inputcb(c, pd, ks, PROMPT_INPUT_DONE); c->prompt_inputcb(c, pd, ks, PROMPT_KEY_CLOSE);
status_prompt_clear(c); status_prompt_clear(c);
return (0); return (PROMPT_KEY_CLOSE);
} }
size = utf8_strlen(c->prompt_buffer); size = utf8_strlen(c->prompt_buffer);
@@ -1491,10 +1499,10 @@ status_prompt_key(struct client *c, key_code key)
if (key >= '0' && key <= '9') if (key >= '0' && key <= '9')
goto append_key; goto append_key;
s = utf8_tocstr(c->prompt_buffer); s = utf8_tocstr(c->prompt_buffer);
c->prompt_inputcb(c, pd, s, PROMPT_INPUT_DONE); c->prompt_inputcb(c, pd, s, PROMPT_KEY_CLOSE);
status_prompt_clear(c); status_prompt_clear(c);
free(s); free(s);
return (1); return (PROMPT_KEY_NOT_HANDLED);
} }
if (c->prompt_flags & (PROMPT_SINGLE|PROMPT_QUOTENEXT)) { if (c->prompt_flags & (PROMPT_SINGLE|PROMPT_QUOTENEXT)) {
@@ -1502,7 +1510,7 @@ status_prompt_key(struct client *c, key_code key)
key = 0x7f; key = 0x7f;
else if ((key & KEYC_MASK_KEY) > 0x7f) { else if ((key & KEYC_MASK_KEY) > 0x7f) {
if (!KEYC_IS_UNICODE(key)) if (!KEYC_IS_UNICODE(key))
return (0); return (PROMPT_KEY_HANDLED);
key &= KEYC_MASK_KEY; key &= KEYC_MASK_KEY;
} else } else
key &= (key & KEYC_CTRL) ? 0x1f : KEYC_MASK_KEY; key &= (key & KEYC_CTRL) ? 0x1f : KEYC_MASK_KEY;
@@ -1518,13 +1526,14 @@ status_prompt_key(struct client *c, key_code key)
case 2: case 2:
goto append_key; goto append_key;
default: default:
return (0); return (PROMPT_KEY_HANDLED);
} }
} }
process_key: process_key:
if (status_prompt_check_move(c, key)) result = status_prompt_check_move(c, key);
return (1); if (result != PROMPT_KEY_NOT_HANDLED)
return (result);
switch (key) { switch (key) {
case KEYC_LEFT: case KEYC_LEFT:
case 'b'|KEYC_CTRL: case 'b'|KEYC_CTRL:
@@ -1560,10 +1569,8 @@ process_key:
break; break;
case KEYC_BSPACE: case KEYC_BSPACE:
case 'h'|KEYC_CTRL: case 'h'|KEYC_CTRL:
if (c->prompt_flags & PROMPT_BSPACE_EXIT && size == 0) { if (c->prompt_flags & PROMPT_BSPACE_EXIT && size == 0)
status_prompt_done(c, NULL); return (status_prompt_done(c, NULL));
break;
}
if (c->prompt_index != 0) { if (c->prompt_index != 0) {
if (c->prompt_index == size) if (c->prompt_index == size)
c->prompt_buffer[--c->prompt_index].size = 0; c->prompt_buffer[--c->prompt_index].size = 0;
@@ -1706,15 +1713,14 @@ process_key:
s = utf8_tocstr(c->prompt_buffer); s = utf8_tocstr(c->prompt_buffer);
if (*s != '\0') if (*s != '\0')
status_prompt_add_history(s, c->prompt_type); status_prompt_add_history(s, c->prompt_type);
status_prompt_done(c, s); result = status_prompt_done(c, s);
free(s); free(s);
break; return (result);
case '\033': /* Escape */ case '\033': /* Escape */
case '['|KEYC_CTRL: case '['|KEYC_CTRL:
case 'c'|KEYC_CTRL: case 'c'|KEYC_CTRL:
case 'g'|KEYC_CTRL: case 'g'|KEYC_CTRL:
status_prompt_done(c, NULL); return (status_prompt_done(c, NULL));
break;
case 'r'|KEYC_CTRL: case 'r'|KEYC_CTRL:
if (~c->prompt_flags & PROMPT_INCREMENTAL) if (~c->prompt_flags & PROMPT_INCREMENTAL)
break; break;
@@ -1745,7 +1751,7 @@ process_key:
} }
c->flags |= CLIENT_REDRAWSTATUS; c->flags |= CLIENT_REDRAWSTATUS;
return (0); return (PROMPT_KEY_HANDLED);
append_key: append_key:
if (key <= 0x7f) { if (key <= 0x7f) {
@@ -1755,7 +1761,7 @@ append_key:
} else if (KEYC_IS_UNICODE(key)) } else if (KEYC_IS_UNICODE(key))
utf8_to_data(key, &tmp); utf8_to_data(key, &tmp);
else else
return (0); return (PROMPT_KEY_HANDLED);
c->prompt_buffer = xreallocarray(c->prompt_buffer, size + 2, c->prompt_buffer = xreallocarray(c->prompt_buffer, size + 2,
sizeof *c->prompt_buffer); sizeof *c->prompt_buffer);
@@ -1774,11 +1780,12 @@ append_key:
} }
if (c->prompt_flags & PROMPT_SINGLE) { if (c->prompt_flags & PROMPT_SINGLE) {
if (utf8_strlen(c->prompt_buffer) != 1) if (utf8_strlen(c->prompt_buffer) != 1) {
status_prompt_clear(c); status_prompt_clear(c);
else { result = PROMPT_KEY_CLOSE;
} else {
s = utf8_tocstr(c->prompt_buffer); s = utf8_tocstr(c->prompt_buffer);
status_prompt_done(c, s); result = status_prompt_done(c, s);
free(s); free(s);
} }
} }
@@ -1788,11 +1795,11 @@ changed:
if (c->prompt_flags & PROMPT_INCREMENTAL) { if (c->prompt_flags & PROMPT_INCREMENTAL) {
s = utf8_tocstr(c->prompt_buffer); s = utf8_tocstr(c->prompt_buffer);
xasprintf(&cp, "%c%s", prefix, s); xasprintf(&cp, "%c%s", prefix, s);
c->prompt_inputcb(c, pd, cp, 0); c->prompt_inputcb(c, pd, cp, PROMPT_KEY_HANDLED);
free(cp); free(cp);
free(s); free(s);
} }
return (0); return (result);
} }
/* Get previous line from the history. */ /* Get previous line from the history. */

27
tmux.h
View File

@@ -1990,11 +1990,26 @@ RB_HEAD(client_windows, client_window);
/* Maximum time to be pasting. */ /* Maximum time to be pasting. */
#define CLIENT_PASTE_TIME_LIMIT 5 #define CLIENT_PASTE_TIME_LIMIT 5
/* Client connection. */ /* Prompt result. */
#define PROMPT_INPUT_DONE 0x1 enum prompt_result {
#define PROMPT_INPUT_MOVE 0x2 PROMPT_CONTINUE,
typedef int (*prompt_input_cb)(struct client *, void *, const char *, int); PROMPT_CLOSE
};
/* Prompt key result. */
enum prompt_key_result {
PROMPT_KEY_NOT_HANDLED,
PROMPT_KEY_HANDLED,
PROMPT_KEY_CLOSE,
PROMPT_KEY_MOVE
};
/* Prompt callbacks. */
typedef enum prompt_result (*prompt_input_cb)(struct client *, void *,
const char *, enum prompt_key_result);
typedef void (*prompt_free_cb)(void *); typedef void (*prompt_free_cb)(void *);
/* Overlay callbacks. */
typedef struct visible_ranges *(*overlay_check_cb)(struct client *, void *, typedef struct visible_ranges *(*overlay_check_cb)(struct client *, void *,
u_int, u_int, u_int); u_int, u_int, u_int);
typedef struct screen *(*overlay_mode_cb)(struct client *, void *, u_int *, typedef struct screen *(*overlay_mode_cb)(struct client *, void *, u_int *,
@@ -2003,6 +2018,8 @@ typedef void (*overlay_draw_cb)(struct client *, void *);
typedef int (*overlay_key_cb)(struct client *, void *, struct key_event *); typedef int (*overlay_key_cb)(struct client *, void *, struct key_event *);
typedef void (*overlay_free_cb)(struct client *, void *); typedef void (*overlay_free_cb)(struct client *, void *);
typedef void (*overlay_resize_cb)(struct client *, void *); typedef void (*overlay_resize_cb)(struct client *, void *);
/* Client connection. */
struct client { struct client {
const char *name; const char *name;
struct tmuxpeer *peer; struct tmuxpeer *peer;
@@ -3107,7 +3124,7 @@ void status_prompt_set(struct client *, struct cmd_find_state *,
void *, int, enum prompt_type); void *, int, enum prompt_type);
void status_prompt_clear(struct client *); void status_prompt_clear(struct client *);
int status_prompt_redraw(struct client *); int status_prompt_redraw(struct client *);
int status_prompt_key(struct client *, key_code); enum prompt_key_result status_prompt_key(struct client *, key_code);
void status_prompt_update(struct client *, const char *, const char *); void status_prompt_update(struct client *, const char *, const char *);
void status_prompt_load_history(void); void status_prompt_load_history(void);
void status_prompt_save_history(void); void status_prompt_save_history(void);

View File

@@ -979,9 +979,9 @@ window_customize_free_item_callback(void *itemdata)
window_customize_destroy(data); window_customize_destroy(data);
} }
static int static enum prompt_result
window_customize_set_option_callback(struct client *c, void *itemdata, window_customize_set_option_callback(struct client *c, void *itemdata,
const char *s, __unused int flags) const char *s, __unused enum prompt_key_result key)
{ {
struct window_customize_itemdata *item = itemdata; struct window_customize_itemdata *item = itemdata;
struct window_customize_modedata *data = item->data; struct window_customize_modedata *data = item->data;
@@ -993,12 +993,12 @@ window_customize_set_option_callback(struct client *c, void *itemdata,
int idx = item->idx; int idx = item->idx;
if (s == NULL || *s == '\0' || data->dead) if (s == NULL || *s == '\0' || data->dead)
return (0); return (PROMPT_CLOSE);
if (item == NULL || !window_customize_check_item(data, item, NULL)) if (item == NULL || !window_customize_check_item(data, item, NULL))
return (0); return (PROMPT_CLOSE);
o = options_get(oo, name); o = options_get(oo, name);
if (o == NULL) if (o == NULL)
return (0); return (PROMPT_CLOSE);
oe = options_table_entry(o); oe = options_table_entry(o);
if (oe != NULL && (oe->flags & OPTIONS_TABLE_IS_ARRAY)) { if (oe != NULL && (oe->flags & OPTIONS_TABLE_IS_ARRAY)) {
@@ -1020,13 +1020,13 @@ window_customize_set_option_callback(struct client *c, void *itemdata,
mode_tree_draw(data->data); mode_tree_draw(data->data);
data->wp->flags |= PANE_REDRAW; data->wp->flags |= PANE_REDRAW;
return (0); return (PROMPT_CLOSE);
fail: fail:
*cause = toupper((u_char)*cause); *cause = toupper((u_char)*cause);
status_message_set(c, -1, 1, 0, 0, "%s", cause); status_message_set(c, -1, 1, 0, 0, "%s", cause);
free(cause); free(cause);
return (0); return (PROMPT_CLOSE);
} }
static void static void
@@ -1193,9 +1193,9 @@ window_customize_reset_option(struct window_customize_modedata *data,
} }
} }
static int static enum prompt_result
window_customize_set_command_callback(struct client *c, void *itemdata, window_customize_set_command_callback(struct client *c, void *itemdata,
const char *s, __unused int flags) const char *s, __unused enum prompt_key_result key)
{ {
struct window_customize_itemdata *item = itemdata; struct window_customize_itemdata *item = itemdata;
struct window_customize_modedata *data = item->data; struct window_customize_modedata *data = item->data;
@@ -1204,9 +1204,9 @@ window_customize_set_command_callback(struct client *c, void *itemdata,
char *error; char *error;
if (s == NULL || *s == '\0' || data->dead) if (s == NULL || *s == '\0' || data->dead)
return (0); return (PROMPT_CLOSE);
if (item == NULL || !window_customize_get_key(item, NULL, &bd)) if (item == NULL || !window_customize_get_key(item, NULL, &bd))
return (0); return (PROMPT_CLOSE);
pr = cmd_parse_from_string(s, NULL); pr = cmd_parse_from_string(s, NULL);
switch (pr->status) { switch (pr->status) {
@@ -1223,27 +1223,27 @@ window_customize_set_command_callback(struct client *c, void *itemdata,
mode_tree_draw(data->data); mode_tree_draw(data->data);
data->wp->flags |= PANE_REDRAW; data->wp->flags |= PANE_REDRAW;
return (0); return (PROMPT_CLOSE);
fail: fail:
*error = toupper((u_char)*error); *error = toupper((u_char)*error);
status_message_set(c, -1, 1, 0, 0, "%s", error); status_message_set(c, -1, 1, 0, 0, "%s", error);
free(error); free(error);
return (0); return (PROMPT_CLOSE);
} }
static int static enum prompt_result
window_customize_set_note_callback(__unused struct client *c, void *itemdata, window_customize_set_note_callback(__unused struct client *c, void *itemdata,
const char *s, __unused int flags) const char *s, __unused enum prompt_key_result key)
{ {
struct window_customize_itemdata *item = itemdata; struct window_customize_itemdata *item = itemdata;
struct window_customize_modedata *data = item->data; struct window_customize_modedata *data = item->data;
struct key_binding *bd; struct key_binding *bd;
if (s == NULL || *s == '\0' || data->dead) if (s == NULL || *s == '\0' || data->dead)
return (0); return (PROMPT_CLOSE);
if (item == NULL || !window_customize_get_key(item, NULL, &bd)) if (item == NULL || !window_customize_get_key(item, NULL, &bd))
return (0); return (PROMPT_CLOSE);
free((void *)bd->note); free((void *)bd->note);
bd->note = xstrdup(s); bd->note = xstrdup(s);
@@ -1252,7 +1252,7 @@ window_customize_set_note_callback(__unused struct client *c, void *itemdata,
mode_tree_draw(data->data); mode_tree_draw(data->data);
data->wp->flags |= PANE_REDRAW; data->wp->flags |= PANE_REDRAW;
return (0); return (PROMPT_CLOSE);
} }
static void static void
@@ -1370,17 +1370,17 @@ window_customize_change_each(void *modedata, void *itemdata,
options_push_changes(item->name); options_push_changes(item->name);
} }
static int static enum prompt_result
window_customize_change_current_callback(__unused struct client *c, window_customize_change_current_callback(__unused struct client *c,
void *modedata, const char *s, __unused int flags) void *modedata, const char *s, __unused enum prompt_key_result key)
{ {
struct window_customize_modedata *data = modedata; struct window_customize_modedata *data = modedata;
struct window_customize_itemdata *item; struct window_customize_itemdata *item;
if (s == NULL || *s == '\0' || data->dead) if (s == NULL || *s == '\0' || data->dead)
return (0); return (PROMPT_CLOSE);
if (tolower((u_char) s[0]) != 'y' || s[1] != '\0') if (tolower((u_char) s[0]) != 'y' || s[1] != '\0')
return (0); return (PROMPT_CLOSE);
item = mode_tree_get_current(data->data); item = mode_tree_get_current(data->data);
switch (data->change) { switch (data->change) {
@@ -1403,19 +1403,19 @@ window_customize_change_current_callback(__unused struct client *c,
mode_tree_draw(data->data); mode_tree_draw(data->data);
data->wp->flags |= PANE_REDRAW; data->wp->flags |= PANE_REDRAW;
return (0); return (PROMPT_CLOSE);
} }
static int static enum prompt_result
window_customize_change_tagged_callback(struct client *c, void *modedata, window_customize_change_tagged_callback(struct client *c, void *modedata,
const char *s, __unused int flags) const char *s, __unused enum prompt_key_result key)
{ {
struct window_customize_modedata *data = modedata; struct window_customize_modedata *data = modedata;
if (s == NULL || *s == '\0' || data->dead) if (s == NULL || *s == '\0' || data->dead)
return (0); return (PROMPT_CLOSE);
if (tolower((u_char) s[0]) != 'y' || s[1] != '\0') if (tolower((u_char) s[0]) != 'y' || s[1] != '\0')
return (0); return (PROMPT_CLOSE);
mode_tree_each_tagged(data->data, window_customize_change_each, c, mode_tree_each_tagged(data->data, window_customize_change_each, c,
KEYC_NONE, 0); KEYC_NONE, 0);
@@ -1423,7 +1423,7 @@ window_customize_change_tagged_callback(struct client *c, void *modedata,
mode_tree_draw(data->data); mode_tree_draw(data->data);
data->wp->flags |= PANE_REDRAW; data->wp->flags |= PANE_REDRAW;
return (0); return (PROMPT_CLOSE);
} }
static void static void

View File

@@ -1080,14 +1080,14 @@ window_tree_command_done(__unused struct cmdq_item *item, void *modedata)
return (CMD_RETURN_NORMAL); return (CMD_RETURN_NORMAL);
} }
static int static enum prompt_result
window_tree_command_callback(struct client *c, void *modedata, const char *s, window_tree_command_callback(struct client *c, void *modedata, const char *s,
__unused int flags) __unused enum prompt_key_result key)
{ {
struct window_tree_modedata *data = modedata; struct window_tree_modedata *data = modedata;
if (s == NULL || *s == '\0' || data->dead) if (s == NULL || *s == '\0' || data->dead)
return (0); return (PROMPT_CLOSE);
data->entered = s; data->entered = s;
mode_tree_each_tagged(data->data, window_tree_command_each, c, mode_tree_each_tagged(data->data, window_tree_command_each, c,
@@ -1097,7 +1097,7 @@ window_tree_command_callback(struct client *c, void *modedata, const char *s,
data->references++; data->references++;
cmdq_append(c, cmdq_get_callback(window_tree_command_done, data)); cmdq_append(c, cmdq_get_callback(window_tree_command_done, data));
return (0); return (PROMPT_CLOSE);
} }
static void static void
@@ -1139,17 +1139,17 @@ window_tree_kill_each(__unused void *modedata, void *itemdata,
} }
} }
static int static enum prompt_result
window_tree_kill_current_callback(struct client *c, void *modedata, window_tree_kill_current_callback(struct client *c, void *modedata,
const char *s, __unused int flags) const char *s, __unused enum prompt_key_result key)
{ {
struct window_tree_modedata *data = modedata; struct window_tree_modedata *data = modedata;
struct mode_tree_data *mtd = data->data; struct mode_tree_data *mtd = data->data;
if (s == NULL || *s == '\0' || data->dead) if (s == NULL || *s == '\0' || data->dead)
return (0); return (PROMPT_CLOSE);
if (tolower((u_char) s[0]) != 'y' || s[1] != '\0') if (tolower((u_char) s[0]) != 'y' || s[1] != '\0')
return (0); return (PROMPT_CLOSE);
window_tree_kill_each(data, mode_tree_get_current(mtd), c, KEYC_NONE); window_tree_kill_each(data, mode_tree_get_current(mtd), c, KEYC_NONE);
server_renumber_all(); server_renumber_all();
@@ -1157,20 +1157,20 @@ window_tree_kill_current_callback(struct client *c, void *modedata,
data->references++; data->references++;
cmdq_append(c, cmdq_get_callback(window_tree_command_done, data)); cmdq_append(c, cmdq_get_callback(window_tree_command_done, data));
return (0); return (PROMPT_CLOSE);
} }
static int static enum prompt_result
window_tree_kill_tagged_callback(struct client *c, void *modedata, window_tree_kill_tagged_callback(struct client *c, void *modedata,
const char *s, __unused int flags) const char *s, __unused enum prompt_key_result key)
{ {
struct window_tree_modedata *data = modedata; struct window_tree_modedata *data = modedata;
struct mode_tree_data *mtd = data->data; struct mode_tree_data *mtd = data->data;
if (s == NULL || *s == '\0' || data->dead) if (s == NULL || *s == '\0' || data->dead)
return (0); return (PROMPT_CLOSE);
if (tolower((u_char) s[0]) != 'y' || s[1] != '\0') if (tolower((u_char) s[0]) != 'y' || s[1] != '\0')
return (0); return (PROMPT_CLOSE);
mode_tree_each_tagged(mtd, window_tree_kill_each, c, KEYC_NONE, 1); mode_tree_each_tagged(mtd, window_tree_kill_each, c, KEYC_NONE, 1);
server_renumber_all(); server_renumber_all();
@@ -1178,7 +1178,7 @@ window_tree_kill_tagged_callback(struct client *c, void *modedata,
data->references++; data->references++;
cmdq_append(c, cmdq_get_callback(window_tree_command_done, data)); cmdq_append(c, cmdq_get_callback(window_tree_command_done, data));
return (0); return (PROMPT_CLOSE);
} }
static key_code static key_code