=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-select-pane.c,v retrieving revision 1.10 retrieving revision 1.11 diff -c -r1.10 -r1.11 *** src/usr.bin/tmux/cmd-select-pane.c 2010/03/22 19:07:52 1.10 --- src/usr.bin/tmux/cmd-select-pane.c 2011/01/04 00:42:47 1.11 *************** *** 1,4 **** ! /* $OpenBSD: cmd-select-pane.c,v 1.10 2010/03/22 19:07:52 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-select-pane.c,v 1.11 2011/01/04 00:42:47 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott *************** *** 24,85 **** * Select pane. */ ! void cmd_select_pane_init(struct cmd *, int); int cmd_select_pane_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_select_pane_entry = { "select-pane", "selectp", "[-DLRU] " CMD_TARGET_PANE_USAGE, ! 0, "DLRU", ! cmd_select_pane_init, ! cmd_target_parse, ! cmd_select_pane_exec, ! cmd_target_free, ! cmd_target_print }; void ! cmd_select_pane_init(struct cmd *self, int key) { ! struct cmd_target_data *data; ! ! cmd_target_init(self, key); ! data = self->data; ! if (key == KEYC_UP) ! cmd_set_flag(&data->chflags, 'U'); if (key == KEYC_DOWN) ! cmd_set_flag(&data->chflags, 'D'); if (key == KEYC_LEFT) ! cmd_set_flag(&data->chflags, 'L'); if (key == KEYC_RIGHT) ! cmd_set_flag(&data->chflags, 'R'); if (key == 'o') ! data->target = xstrdup(":.+"); } int cmd_select_pane_exec(struct cmd *self, struct cmd_ctx *ctx) { ! struct cmd_target_data *data = self->data; struct winlink *wl; struct window_pane *wp; ! if ((wl = cmd_find_pane(ctx, data->target, NULL, &wp)) == NULL) return (-1); if (!window_pane_visible(wp)) { ! ctx->error(ctx, "pane not visible: %s", data->target); return (-1); } ! if (cmd_check_flag(data->chflags, 'L')) wp = window_pane_find_left(wp); ! else if (cmd_check_flag(data->chflags, 'R')) wp = window_pane_find_right(wp); ! else if (cmd_check_flag(data->chflags, 'U')) wp = window_pane_find_up(wp); ! else if (cmd_check_flag(data->chflags, 'D')) wp = window_pane_find_down(wp); if (wp == NULL) { ctx->error(ctx, "pane not found"); --- 24,80 ---- * Select pane. */ ! 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, ! cmd_select_pane_key_binding, ! NULL, ! cmd_select_pane_exec }; void ! cmd_select_pane_key_binding(struct cmd *self, int key) { ! self->args = args_create(0); if (key == KEYC_UP) ! args_set(self->args, 'U', NULL); if (key == KEYC_DOWN) ! args_set(self->args, 'D', NULL); if (key == KEYC_LEFT) ! args_set(self->args, 'L', NULL); if (key == KEYC_RIGHT) ! args_set(self->args, 'R', NULL); if (key == 'o') ! args_set(self->args, 't', ":.+"); } int cmd_select_pane_exec(struct cmd *self, struct cmd_ctx *ctx) { ! struct args *args = self->args; struct winlink *wl; struct window_pane *wp; ! 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"); return (-1); } ! if (args_has(self->args, 'L')) wp = window_pane_find_left(wp); ! else if (args_has(self->args, 'R')) wp = window_pane_find_right(wp); ! else if (args_has(self->args, 'U')) wp = window_pane_find_up(wp); ! else if (args_has(self->args, 'D')) wp = window_pane_find_down(wp); if (wp == NULL) { ctx->error(ctx, "pane not found");