version 1.32, 2020/04/13 15:55:51 |
version 1.33, 2020/04/13 18:59:41 |
|
|
cmd_display_panes_key(struct client *c, struct key_event *event) |
cmd_display_panes_key(struct client *c, struct key_event *event) |
{ |
{ |
struct cmd_display_panes_data *cdata = c->overlay_data; |
struct cmd_display_panes_data *cdata = c->overlay_data; |
struct cmdq_item *new_item; |
char *cmd, *expanded, *error; |
char *cmd, *expanded; |
|
struct window *w = c->session->curw->window; |
struct window *w = c->session->curw->window; |
struct window_pane *wp; |
struct window_pane *wp; |
struct cmd_parse_result *pr; |
enum cmd_parse_status status; |
|
|
if (event->key < '0' || event->key > '9') |
if (event->key < '0' || event->key > '9') |
return (-1); |
return (-1); |
|
|
xasprintf(&expanded, "%%%u", wp->id); |
xasprintf(&expanded, "%%%u", wp->id); |
cmd = cmd_template_replace(cdata->command, expanded, 1); |
cmd = cmd_template_replace(cdata->command, expanded, 1); |
|
|
pr = cmd_parse_from_string(cmd, NULL); |
status = cmd_parse_and_append(cmd, NULL, c, NULL, &error); |
switch (pr->status) { |
if (status == CMD_PARSE_ERROR) { |
case CMD_PARSE_EMPTY: |
cmdq_append(c, cmdq_get_error(error)); |
new_item = NULL; |
free(error); |
break; |
|
case CMD_PARSE_ERROR: |
|
new_item = cmdq_get_error(pr->error); |
|
free(pr->error); |
|
cmdq_append(c, new_item); |
|
break; |
|
case CMD_PARSE_SUCCESS: |
|
new_item = cmdq_get_command(pr->cmdlist, NULL); |
|
cmd_list_free(pr->cmdlist); |
|
cmdq_append(c, new_item); |
|
break; |
|
} |
} |
|
|
free(cmd); |
free(cmd); |