aboutsummaryrefslogtreecommitdiff
path: root/cmd-select-pane.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd-select-pane.c')
-rw-r--r--cmd-select-pane.c47
1 files changed, 21 insertions, 26 deletions
diff --git a/cmd-select-pane.c b/cmd-select-pane.c
index 67c8c282..8fa71072 100644
--- a/cmd-select-pane.c
+++ b/cmd-select-pane.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-select-pane.c,v 1.13 2010-03-15 22:03:38 nicm Exp $ */
+/* $Id: cmd-select-pane.c,v 1.14 2011-01-07 14:45:34 tcunha Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -24,62 +24,57 @@
* Select pane.
*/
-void cmd_select_pane_init(struct cmd *, int);
+void cmd_select_pane_key_binding(struct cmd *, int);
int cmd_select_pane_exec(struct cmd *, struct cmd_ctx *);
const struct cmd_entry cmd_select_pane_entry = {
"select-pane", "selectp",
+ "DLRt:U", 0, 0,
"[-DLRU] " CMD_TARGET_PANE_USAGE,
- 0, "DLRU",
- cmd_select_pane_init,
- cmd_target_parse,
- cmd_select_pane_exec,
- cmd_target_free,
- cmd_target_print
+ 0,
+ cmd_select_pane_key_binding,
+ NULL,
+ cmd_select_pane_exec
};
void
-cmd_select_pane_init(struct cmd *self, int key)
+cmd_select_pane_key_binding(struct cmd *self, int key)
{
- struct cmd_target_data *data;
-
- cmd_target_init(self, key);
- data = self->data;
-
+ self->args = args_create(0);
if (key == KEYC_UP)
- cmd_set_flag(&data->chflags, 'U');
+ args_set(self->args, 'U', NULL);
if (key == KEYC_DOWN)
- cmd_set_flag(&data->chflags, 'D');
+ args_set(self->args, 'D', NULL);
if (key == KEYC_LEFT)
- cmd_set_flag(&data->chflags, 'L');
+ args_set(self->args, 'L', NULL);
if (key == KEYC_RIGHT)
- cmd_set_flag(&data->chflags, 'R');
+ args_set(self->args, 'R', NULL);
if (key == 'o')
- data->target = xstrdup(":.+");
+ args_set(self->args, 't', ":.+");
}
int
cmd_select_pane_exec(struct cmd *self, struct cmd_ctx *ctx)
{
- struct cmd_target_data *data = self->data;
+ struct args *args = self->args;
struct winlink *wl;
struct window_pane *wp;
- if ((wl = cmd_find_pane(ctx, data->target, NULL, &wp)) == NULL)
+ if ((wl = cmd_find_pane(ctx, args_get(args, 't'), NULL, &wp)) == NULL)
return (-1);
if (!window_pane_visible(wp)) {
- ctx->error(ctx, "pane not visible: %s", data->target);
+ ctx->error(ctx, "pane not visible");
return (-1);
}
- if (cmd_check_flag(data->chflags, 'L'))
+ if (args_has(self->args, 'L'))
wp = window_pane_find_left(wp);
- else if (cmd_check_flag(data->chflags, 'R'))
+ else if (args_has(self->args, 'R'))
wp = window_pane_find_right(wp);
- else if (cmd_check_flag(data->chflags, 'U'))
+ else if (args_has(self->args, 'U'))
wp = window_pane_find_up(wp);
- else if (cmd_check_flag(data->chflags, 'D'))
+ else if (args_has(self->args, 'D'))
wp = window_pane_find_down(wp);
if (wp == NULL) {
ctx->error(ctx, "pane not found");