diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2010-01-07 19:47:10 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2010-01-07 19:47:10 +0000 |
commit | 462a11301aaf06dab52b06a9c52ed12d99537c5f (patch) | |
tree | e31414da95ea9467ebefa31ca6afe2e57065036a /cmd-split-window.c | |
parent | ad8509f361fc6b68bfc6220aa79ab36e03460705 (diff) | |
download | rtmux-462a11301aaf06dab52b06a9c52ed12d99537c5f.tar.gz rtmux-462a11301aaf06dab52b06a9c52ed12d99537c5f.tar.bz2 rtmux-462a11301aaf06dab52b06a9c52ed12d99537c5f.zip |
Change split-window to accept a pane target (it should be split-pane but
renaming the command would be annoying).
Diffstat (limited to 'cmd-split-window.c')
-rw-r--r-- | cmd-split-window.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/cmd-split-window.c b/cmd-split-window.c index 6a9c4c9f..2941e2bf 100644 --- a/cmd-split-window.c +++ b/cmd-split-window.c @@ -45,7 +45,7 @@ struct cmd_split_window_data { const struct cmd_entry cmd_split_window_entry = { "split-window", "splitw", - "[-dhv] [-p percentage|-l size] [-t target-window] [command]", + "[-dhv] [-p percentage|-l size] [-t target-pane] [command]", 0, "", cmd_split_window_init, cmd_split_window_parse, @@ -149,7 +149,7 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx) struct session *s; struct winlink *wl; struct window *w; - struct window_pane *wp; + struct window_pane *wp, *new_wp; struct environ env; char *cmd, *cwd, *cause; const char *shell; @@ -157,7 +157,7 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx) int size; enum layout_type type; - if ((wl = cmd_find_window(ctx, data->target, &s)) == NULL) + if ((wl = cmd_find_pane(ctx, data->target, &s, &wp)) == NULL) return (-1); w = wl->window; @@ -193,10 +193,10 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx) if (*shell == '\0' || areshell(shell)) shell = _PATH_BSHELL; - wp = window_add_pane(w, hlimit); - if (window_pane_spawn(wp, cmd, shell, cwd, &env, s->tio, &cause) != 0) + new_wp = window_add_pane(w, hlimit); + if (window_pane_spawn(new_wp, cmd, shell, cwd, &env, s->tio, &cause) != 0) goto error; - if (layout_split_pane(w->active, type, size, wp) != 0) { + if (layout_split_pane(wp, type, size, new_wp) != 0) { cause = xstrdup("pane too small"); goto error; } @@ -204,7 +204,7 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx) server_redraw_window(w); if (!data->flag_detached) { - window_set_active_pane(w, wp); + window_set_active_pane(w, new_wp); session_select(s, wl->idx); server_redraw_session(s); } else @@ -215,8 +215,8 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx) error: environ_free(&env); - if (wp != NULL) - window_remove_pane(w, wp); + if (new_wp != NULL) + window_remove_pane(w, new_wp); ctx->error(ctx, "create pane failed: %s", cause); xfree(cause); return (-1); |