From 3e6d45acf67e37db3614a581ab5aaa3b9509a430 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Mon, 24 Dec 2012 12:34:32 +0000 Subject: [PATCH] Add -T option to select-window to toggle to last window if already current, from Raghavendra D Prabhu. --- cmd-select-window.c | 16 +++++++++++++--- window-choose.c | 2 -- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cmd-select-window.c b/cmd-select-window.c index eaa3e889..70d60bed 100644 --- a/cmd-select-window.c +++ b/cmd-select-window.c @@ -31,8 +31,8 @@ enum cmd_retval cmd_select_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_select_window_entry = { "select-window", "selectw", - "lnpt:", 0, 0, - "[-lnp] " CMD_TARGET_WINDOW_USAGE, + "lnpTt:", 0, 0, + "[-lnpT] " CMD_TARGET_WINDOW_USAGE, 0, cmd_select_window_key_binding, NULL, @@ -130,7 +130,17 @@ cmd_select_window_exec(struct cmd *self, struct cmd_ctx *ctx) if (wl == NULL) return (CMD_RETURN_ERROR); - if (session_select(s, wl->idx) == 0) + /* + * If -T and select-window is invoked on same window as + * current, switch to previous window. + */ + if (args_has(self->args, 'T') && wl == s->curw) { + if (session_last(s) != 0) { + ctx->error(ctx, "no last window"); + return (-1); + } + server_redraw_session(s); + } else if (session_select(s, wl->idx) == 0) server_redraw_session(s); } recalculate_sizes(); diff --git a/window-choose.c b/window-choose.c index ab0d803b..20482a66 100644 --- a/window-choose.c +++ b/window-choose.c @@ -43,7 +43,6 @@ void window_choose_scroll_down(struct window_pane *); void window_choose_collapse(struct window_pane *, struct session *); void window_choose_expand(struct window_pane *, struct session *, u_int); void window_choose_collapse_all(struct window_pane *); -void window_choose_expand_all(struct window_pane *); enum window_choose_input_type { WINDOW_CHOOSE_NORMAL = -1, @@ -118,7 +117,6 @@ window_choose_ready(struct window_pane *wp, u_int cur, ARRAY_CONCAT(&data->old_list, &data->list); window_choose_collapse_all(wp); - window_choose_redraw_screen(wp); } struct screen *