The branch, hooks has been updated via 5abfa3ebc3e4e02484ea044a5cc7b2b163e39964 (commit) from 047fa29dd04623c1ebc892aa7db426839e26ecdd (commit)
- Log ----------------------------------------------------------------- commit 5abfa3ebc3e4e02484ea044a5cc7b2b163e39964 Author: Thomas Adam <tho...@xteddy.org> Commit: Thomas Adam <tho...@xteddy.org> movew: Use prepare flags and introduce RENUM flag move-window uses -t to mean two different things, depending on whether winlinks are being renumbered or not. Therefore, introduce CMD_PREP_SESSION_RENUM_T, to help with this. --- cmd-move-window.c | 40 ++++++++++++++++------------------------ cmd.c | 8 ++++++++ tmux.h | 3 ++- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/cmd-move-window.c b/cmd-move-window.c index 75a4c0c..fb29298 100644 --- a/cmd-move-window.c +++ b/cmd-move-window.c @@ -32,7 +32,7 @@ const struct cmd_entry cmd_move_window_entry = { "move-window", "movew", "dkrs:t:", 0, 0, "[-dkr] " CMD_SRCDST_WINDOW_USAGE, - 0, + CMD_PREP_WINDOW_S|CMD_PREP_SESSION_RENUM_T|CMD_PREP_INDEX_T, cmd_move_window_exec }; @@ -40,7 +40,7 @@ const struct cmd_entry cmd_link_window_entry = { "link-window", "linkw", "dks:t:", 0, 0, "[-dk] " CMD_SRCDST_WINDOW_USAGE, - 0, + CMD_PREP_WINDOW_S|CMD_PREP_INDEX_T, cmd_move_window_exec }; @@ -48,37 +48,29 @@ enum cmd_retval cmd_move_window_exec(struct cmd *self, struct cmd_q *cmdq) { struct args *args = self->args; - struct session *src, *dst, *s; - struct winlink *wl; + struct session *src = cmdq->state.sflag.s; + struct session *dst = cmdq->state.tflag.s; + struct winlink *wl = cmdq->state.sflag.wl; char *cause; - int idx, kflag, dflag; - - if ((wl = cmd_find_window(cmdq, args_get(args, 's'), &src)) == NULL) - return (CMD_RETURN_ERROR); - if ((idx = cmd_find_index(cmdq, args_get(args, 't'), &dst)) == -2) - return (CMD_RETURN_ERROR); + int idx = cmdq->state.tflag.idx, kflag, dflag; kflag = args_has(self->args, 'k'); dflag = args_has(self->args, 'd'); - if (server_link_window(src, wl, dst, idx, kflag, !dflag, - &cause) != 0) { + + if (args_has(args, 'r')) { + session_renumber_windows(dst); + recalculate_sizes(); + + return (CMD_RETURN_NORMAL); + } + + if (server_link_window(src, wl, dst, idx, kflag, !dflag, &cause) != 0) { cmdq_error(cmdq, "can't link window: %s", cause); free(cause); return (CMD_RETURN_ERROR); } - if (self->entry == &cmd_move_window_entry) { - if (args_has(args, 'r')) { - s = cmd_find_session(cmdq, args_get(args, 't'), 0); - if (s == NULL) - return (CMD_RETURN_ERROR); - - session_renumber_windows(s); - recalculate_sizes(); - - return (CMD_RETURN_NORMAL); - } + if (self->entry == &cmd_move_window_entry) server_unlink_window(src, wl); - } recalculate_sizes(); return (CMD_RETURN_NORMAL); diff --git a/cmd.c b/cmd.c index f59b018..14850dc 100644 --- a/cmd.c +++ b/cmd.c @@ -411,6 +411,14 @@ cmd_set_state_tflag(struct cmd *cmd, struct cmd_q *cmdq) } } break; + case CMD_PREP_SESSION_RENUM_T|CMD_PREP_INDEX_T: + state->tflag.s = cmd_find_session(cmdq, tflag, prefer); + if (state->tflag.s == NULL) { + state->tflag.idx = cmd_find_index(cmdq, tflag, &state->tflag.s); + if (state->tflag.idx == -2) + return (-1); + } + break; case CMD_PREP_SESSION_T: state->tflag.s = cmd_find_session(cmdq, tflag, prefer); if (state->tflag.s == NULL) diff --git a/tmux.h b/tmux.h index 03098e7..47b3665 100644 --- a/tmux.h +++ b/tmux.h @@ -1465,12 +1465,13 @@ struct cmd_entry { #define CMD_PREP_INDEX_S 0x1000 #define CMD_PREP_CANFAIL 0x2000 #define CMD_PREP_PREFERUNATTACHED 0x4000 +#define CMD_PREP_SESSION_RENUM_T 0x8000 int flags; enum cmd_retval (*exec)(struct cmd *, struct cmd_q *); }; #define CMD_PREP_ALL_T (CMD_PREP_SESSION_T|CMD_PREP_WINDOW_T|CMD_PREP_PANE_T| \ - CMD_PREP_INDEX_T) + CMD_PREP_INDEX_T|CMD_PREP_SESSION_RENUM_T) #define CMD_PREP_ALL_S (CMD_PREP_SESSION_S|CMD_PREP_WINDOW_S|CMD_PREP_PANE_S| \ CMD_PREP_INDEX_S) ----------------------------------------------------------------------- Summary of changes: cmd-move-window.c | 40 ++++++++++++++++------------------------ cmd.c | 8 ++++++++ tmux.h | 3 ++- 3 files changed, 26 insertions(+), 25 deletions(-) hooks/post-receive -- tmux ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk _______________________________________________ tmux-cvs mailing list tmux-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-cvs