summaryrefslogtreecommitdiffstats
path: root/cmd-swap-pane.c
diff options
context:
space:
mode:
authornicm <nicm>2015-12-14 00:31:54 +0000
committernicm <nicm>2015-12-14 00:31:54 +0000
commita3129fd4e820d7ccb3797fed491e7c021b63c568 (patch)
tree2670410ce357adf7dee1ace4f33d88f034b2ec12 /cmd-swap-pane.c
parentecfeee2e8255a77f82a07124c93c8dbc7683c421 (diff)
Instead of combined flags for -c, -s, -t, split into different sets
using an enum and simplify the parsing code.
Diffstat (limited to 'cmd-swap-pane.c')
-rw-r--r--cmd-swap-pane.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/cmd-swap-pane.c b/cmd-swap-pane.c
index 7b50e3be..84332c2f 100644
--- a/cmd-swap-pane.c
+++ b/cmd-swap-pane.c
@@ -35,14 +35,16 @@ const struct cmd_entry cmd_swap_pane_entry = {
.args = { "dDs:t:U", 0, 0 },
.usage = "[-dDU] " CMD_SRCDST_PANE_USAGE,
- .flags = CMD_PANE_MARKED_S|CMD_PANE_T,
+ .sflag = CMD_PANE_MARKED,
+ .tflag = CMD_PANE,
+
+ .flags = 0,
.exec = cmd_swap_pane_exec
};
enum cmd_retval
cmd_swap_pane_exec(struct cmd *self, struct cmd_q *cmdq)
{
- struct args *args = self->args;
struct winlink *src_wl, *dst_wl;
struct window *src_w, *dst_w;
struct window_pane *tmp_wp, *src_wp, *dst_wp;
@@ -52,22 +54,23 @@ cmd_swap_pane_exec(struct cmd *self, struct cmd_q *cmdq)
dst_wl = cmdq->state.tflag.wl;
dst_w = dst_wl->window;
dst_wp = cmdq->state.tflag.wp;
- src_wp = cmdq->state.sflag.wp;
src_wl = cmdq->state.sflag.wl;
src_w = src_wl->window;
+ src_wp = cmdq->state.sflag.wp;
server_unzoom_window(dst_w);
- if (!args_has(args, 's')) {
+ if (args_has(self->args, 'D')) {
+ src_wl = dst_wl;
src_w = dst_w;
- if (args_has(self->args, 'D')) {
- src_wp = TAILQ_NEXT(dst_wp, entry);
- if (src_wp == NULL)
- src_wp = TAILQ_FIRST(&dst_w->panes);
- } else if (args_has(self->args, 'U')) {
- src_wp = TAILQ_PREV(dst_wp, window_panes, entry);
- if (src_wp == NULL)
- src_wp = TAILQ_LAST(&dst_w->panes, window_panes);
- }
+ src_wp = TAILQ_NEXT(dst_wp, entry);
+ if (src_wp == NULL)
+ src_wp = TAILQ_FIRST(&dst_w->panes);
+ } else if (args_has(self->args, 'U')) {
+ src_wl = dst_wl;
+ src_w = dst_w;
+ src_wp = TAILQ_PREV(dst_wp, window_panes, entry);
+ if (src_wp == NULL)
+ src_wp = TAILQ_LAST(&dst_w->panes, window_panes);
}
server_unzoom_window(src_w);