summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd-attach-session.c16
-rw-r--r--cmd-break-pane.c15
-rw-r--r--cmd-capture-pane.c4
-rw-r--r--cmd-choose-tree.c5
-rw-r--r--cmd-copy-mode.c10
-rw-r--r--cmd-detach-client.c13
-rw-r--r--cmd-display-menu.c45
-rw-r--r--cmd-display-message.c9
-rw-r--r--cmd-find-window.c6
-rw-r--r--cmd-find.c11
-rw-r--r--cmd-if-shell.c22
-rw-r--r--cmd-join-pane.c15
-rw-r--r--cmd-kill-pane.c5
-rw-r--r--cmd-kill-session.c9
-rw-r--r--cmd-kill-window.c5
-rw-r--r--cmd-list-buffers.c2
-rw-r--r--cmd-list-clients.c5
-rw-r--r--cmd-list-keys.c2
-rw-r--r--cmd-list-panes.c9
-rw-r--r--cmd-list-sessions.c2
-rw-r--r--cmd-list-windows.c7
-rw-r--r--cmd-load-buffer.c7
-rw-r--r--cmd-lock-server.c7
-rw-r--r--cmd-move-window.c37
-rw-r--r--cmd-new-session.c15
-rw-r--r--cmd-new-window.c10
-rw-r--r--cmd-paste-buffer.c3
-rw-r--r--cmd-pipe-pane.c9
-rw-r--r--cmd-queue.c117
-rw-r--r--cmd-rename-session.c5
-rw-r--r--cmd-rename-window.c12
-rw-r--r--cmd-resize-pane.c11
-rw-r--r--cmd-resize-window.c5
-rw-r--r--cmd-respawn-pane.c7
-rw-r--r--cmd-respawn-window.c5
-rw-r--r--cmd-rotate-window.c6
-rw-r--r--cmd-run-shell.c15
-rw-r--r--cmd-save-buffer.c7
-rw-r--r--cmd-select-layout.c5
-rw-r--r--cmd-select-pane.c10
-rw-r--r--cmd-select-window.c8
-rw-r--r--cmd-send-keys.c27
-rw-r--r--cmd-set-environment.c17
-rw-r--r--cmd-set-option.c12
-rw-r--r--cmd-show-environment.c19
-rw-r--r--cmd-show-options.c12
-rw-r--r--cmd-source-file.c2
-rw-r--r--cmd-split-window.c10
-rw-r--r--cmd-swap-pane.c10
-rw-r--r--cmd-swap-window.c15
-rw-r--r--cmd-switch-client.c17
-rw-r--r--cmd-wait-for.c4
-rw-r--r--control.c4
-rw-r--r--format.c29
-rw-r--r--key-bindings.c2
-rw-r--r--menu.c2
-rw-r--r--notify.c13
-rw-r--r--popup.c12
-rw-r--r--server-client.c9
-rw-r--r--spawn.c19
-rw-r--r--tmux.h51
-rw-r--r--window.c2
62 files changed, 470 insertions, 336 deletions
diff --git a/cmd-attach-session.c b/cmd-attach-session.c
index 23a321bd..4ffd3dd2 100644
--- a/cmd-attach-session.c
+++ b/cmd-attach-session.c
@@ -50,10 +50,12 @@ enum cmd_retval
cmd_attach_session(struct cmdq_item *item, const char *tflag, int dflag,
int xflag, int rflag, const char *cflag, int Eflag)
{
- struct cmd_find_state *current = &item->shared->current;
+ struct cmdq_shared *shared = cmdq_get_shared(item);
+ struct cmd_find_state *current = &shared->current;
+ struct cmd_find_state target;
enum cmd_find_type type;
int flags;
- struct client *c = item->client, *c_loop;
+ struct client *c = cmdq_get_client(item), *c_loop;
struct session *s;
struct winlink *wl;
struct window_pane *wp;
@@ -80,11 +82,11 @@ cmd_attach_session(struct cmdq_item *item, const char *tflag, int dflag,
type = CMD_FIND_SESSION;
flags = CMD_FIND_PREFER_UNATTACHED;
}
- if (cmd_find_target(&item->target, item, tflag, type, flags) != 0)
+ if (cmd_find_target(&target, item, tflag, type, flags) != 0)
return (CMD_RETURN_ERROR);
- s = item->target.s;
- wl = item->target.wl;
- wp = item->target.wp;
+ s = target.s;
+ wl = target.wl;
+ wp = target.wp;
if (wl != NULL) {
if (wp != NULL)
@@ -118,7 +120,7 @@ cmd_attach_session(struct cmdq_item *item, const char *tflag, int dflag,
environ_update(s->options, c->environ, s->environ);
c->session = s;
- if (~item->shared->flags & CMDQ_SHARED_REPEAT)
+ if (~shared->flags & CMDQ_SHARED_REPEAT)
server_client_set_key_table(c, NULL);
tty_update_client_offset(c);
status_timer_start(c);
diff --git a/cmd-break-pane.c b/cmd-break-pane.c
index b4997f91..6f82ee42 100644
--- a/cmd-break-pane.c
+++ b/cmd-break-pane.c
@@ -49,15 +49,18 @@ static enum cmd_retval
cmd_break_pane_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
- struct cmd_find_state *current = &item->shared->current;
+ struct cmdq_shared *shared = cmdq_get_shared(item);
+ struct cmd_find_state *current = &shared->current;
+ struct cmd_find_state *target = cmdq_get_target(item);
+ struct cmd_find_state *source = cmdq_get_source(item);
struct client *c = cmd_find_client(item, NULL, 1);
- struct winlink *wl = item->source.wl;
- struct session *src_s = item->source.s;
- struct session *dst_s = item->target.s;
- struct window_pane *wp = item->source.wp;
+ struct winlink *wl = source->wl;
+ struct session *src_s = source->s;
+ struct session *dst_s = target->s;
+ struct window_pane *wp = source->wp;
struct window *w = wl->window;
char *name, *cause;
- int idx = item->target.idx;
+ int idx = target->idx;
const char *template;
char *cp;
diff --git a/cmd-capture-pane.c b/cmd-capture-pane.c
index 3510142e..588b0fd5 100644
--- a/cmd-capture-pane.c
+++ b/cmd-capture-pane.c
@@ -193,8 +193,8 @@ static enum cmd_retval
cmd_capture_pane_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
- struct client *c = item->client;
- struct window_pane *wp = item->target.wp;
+ struct client *c = cmdq_get_client(item);
+ struct window_pane *wp = cmdq_get_target(item)->wp;
char *buf, *cause;
const char *bufname;
size_t len;
diff --git a/cmd-choose-tree.c b/cmd-choose-tree.c
index 8b667ec5..0ada8fd4 100644
--- a/cmd-choose-tree.c
+++ b/cmd-choose-tree.c
@@ -72,7 +72,8 @@ static enum cmd_retval
cmd_choose_tree_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
- struct window_pane *wp = item->target.wp;
+ struct cmd_find_state *target = cmdq_get_target(item);
+ struct window_pane *wp = target->wp;
const struct window_mode *mode;
if (cmd_get_entry(self) == &cmd_choose_buffer_entry) {
@@ -86,6 +87,6 @@ cmd_choose_tree_exec(struct cmd *self, struct cmdq_item *item)
} else
mode = &window_tree_mode;
- window_pane_set_mode(wp, NULL, mode, &item->target, args);
+ window_pane_set_mode(wp, NULL, mode, target, args);
return (CMD_RETURN_NORMAL);
}
diff --git a/cmd-copy-mode.c b/cmd-copy-mode.c
index 3b20689c..d5e132f9 100644
--- a/cmd-copy-mode.c
+++ b/cmd-copy-mode.c
@@ -57,10 +57,12 @@ static enum cmd_retval
cmd_copy_mode_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
- struct cmdq_shared *shared = item->shared;
- struct client *c = item->client;
+ struct cmdq_shared *shared = cmdq_get_shared(item);
+ struct cmd_find_state *source = cmdq_get_source(item);
+ struct cmd_find_state *target = cmdq_get_target(item);
+ struct client *c = cmdq_get_client(item);
struct session *s;
- struct window_pane *wp = item->target.wp, *swp;
+ struct window_pane *wp = target->wp, *swp;
if (args_has(args, 'q')) {
window_pane_reset_mode_all(wp);
@@ -80,7 +82,7 @@ cmd_copy_mode_exec(struct cmd *self, struct cmdq_item *item)
}
if (args_has(args, 's'))
- swp = item->source.wp;
+ swp = source->wp;
else
swp = wp;
if (!window_pane_set_mode(wp, swp, &window_copy_mode, NULL, args)) {
diff --git a/cmd-detach-client.c b/cmd-detach-client.c
index 34682459..f4e350a8 100644
--- a/cmd-detach-client.c
+++ b/cmd-detach-client.c
@@ -57,11 +57,12 @@ const struct cmd_entry cmd_suspend_client_entry = {
static enum cmd_retval
cmd_detach_client_exec(struct cmd *self, struct cmdq_item *item)
{
- struct args *args = cmd_get_args(self);
- struct client *c, *cloop;
- struct session *s;
- enum msgtype msgtype;
- const char *cmd = args_get(args, 'E');
+ struct args *args = cmd_get_args(self);
+ struct cmd_find_state *source = cmdq_get_source(item);
+ struct client *c, *cloop;
+ struct session *s;
+ enum msgtype msgtype;
+ const char *cmd = args_get(args, 'E');
if ((c = cmd_find_client(item, args_get(args, 't'), 0)) == NULL)
return (CMD_RETURN_ERROR);
@@ -77,7 +78,7 @@ cmd_detach_client_exec(struct cmd *self, struct cmdq_item *item)
msgtype = MSG_DETACH;
if (args_has(args, 's')) {
- s = item->source.s;
+ s = source->s;
if (s == NULL)
return (CMD_RETURN_NORMAL);
TAILQ_FOREACH(cloop, &clients, entry) {
diff --git a/cmd-display-menu.c b/cmd-display-menu.c
index 74637ceb..ada3ef23 100644
--- a/cmd-display-menu.c
+++ b/cmd-display-menu.c
@@ -65,9 +65,11 @@ static void
cmd_display_menu_get_position(struct client *c, struct cmdq_item *item,
struct args *args, u_int *px, u_int *py, u_int w, u_int h)
{
+ struct cmdq_shared *shared = cmdq_get_shared(item);
+ struct cmd_find_state *target = cmdq_get_target(item);
struct session *s = c->session;
- struct winlink *wl = item->target.wl;
- struct window_pane *wp = item->target.wp;
+ struct winlink *wl = target->wl;
+ struct window_pane *wp = target->wp;
struct style_ranges *ranges;
struct style_range *sr;
const char *xp, *yp;
@@ -97,9 +99,9 @@ cmd_display_menu_get_position(struct client *c, struct cmdq_item *item,
*px = wp->xoff - ox;
else
*px = 0;
- } else if (strcmp(xp, "M") == 0 && item->shared->mouse.valid) {
- if (item->shared->mouse.x > w / 2)
- *px = item->shared->mouse.x - w / 2;
+ } else if (strcmp(xp, "M") == 0 && shared->mouse.valid) {
+ if (shared->mouse.x > w / 2)
+ *px = shared->mouse.x - w / 2;
else
*px = 0;
} else if (strcmp(xp, "W") == 0) {
@@ -131,8 +133,8 @@ cmd_display_menu_get_position(struct client *c, struct cmdq_item *item,
*py = wp->yoff + wp->sy - oy;
else
*py = 0;
- } else if (strcmp(yp, "M") == 0 && item->shared->mouse.valid)
- *py = item->shared->mouse.y + h;
+ } else if (strcmp(yp, "M") == 0 && shared->mouse.valid)
+ *py = shared->mouse.y + h;
else if (strcmp(yp, "S") == 0) {
if (options_get_number(s->options, "status-position") == 0) {
if (lines != 0)
@@ -172,11 +174,9 @@ static enum cmd_retval
cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
+ struct cmdq_shared *shared = cmdq_get_shared(item);
+ struct cmd_find_state *target = cmdq_get_target(item);
struct client *c;
- struct session *s = item->target.s;
- struct winlink *wl = item->target.wl;
- struct window_pane *wp = item->target.wp;
- struct cmd_find_state *fs = &item->target;
struct menu *menu = NULL;
struct menu_item menu_item;
const char *key;
@@ -190,16 +190,15 @@ cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item)
return (CMD_RETURN_NORMAL);
if (args_has(args, 'T'))
- title = format_single(item, args_get(args, 'T'), c, s, wl, wp);
+ title = format_single_from_target(item, args_get(args, 'T'), c);
else
title = xstrdup("");
-
menu = menu_create(title);
for (i = 0; i != args->argc; /* nothing */) {
name = args->argv[i++];
if (*name == '\0') {
- menu_add_item(menu, NULL, item, c, fs);
+ menu_add_item(menu, NULL, item, c, target);
continue;
}
@@ -215,7 +214,7 @@ cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item)
menu_item.key = key_string_lookup_string(key);
menu_item.command = args->argv[i++];
- menu_add_item(menu, &menu_item, item, c, fs);
+ menu_add_item(menu, &menu_item, item, c, target);
}
free(title);
if (menu == NULL) {
@@ -229,9 +228,9 @@ cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item)
cmd_display_menu_get_position(c, item, args, &px, &py, menu->width + 4,
menu->count + 2);
- if (!item->shared->mouse.valid)
+ if (!shared->mouse.valid)
flags |= MENU_NOMOUSE;
- if (menu_display(menu, flags, item, px, py, c, fs, NULL, NULL) != 0)
+ if (menu_display(menu, flags, item, px, py, c, target, NULL, NULL) != 0)
return (CMD_RETURN_NORMAL);
return (CMD_RETURN_WAIT);
}
@@ -240,8 +239,8 @@ static enum cmd_retval
cmd_display_popup_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
+ struct cmd_find_state *target = cmdq_get_target(item);
struct client *c;
- struct cmd_find_state *fs = &item->target;
const char *value, *cmd = NULL, **lines = NULL;
const char *shellcmd = NULL;
char *cwd, *cause;
@@ -278,7 +277,7 @@ cmd_display_popup_exec(struct cmd *self, struct cmdq_item *item)
}
if (nlines != 0)
- w = popup_width(item, nlines, lines, c, fs) + 2;
+ w = popup_width(item, nlines, lines, c, target) + 2;
else
w = c->tty.sx / 2;
if (args_has(args, 'w')) {
@@ -298,13 +297,13 @@ cmd_display_popup_exec(struct cmd *self, struct cmdq_item *item)
value = args_get(args, 'd');
if (value != NULL)
- cwd = format_single(item, value, c, fs->s, fs->wl, fs->wp);
+ cwd = format_single_from_target(item, value, c);
else
- cwd = xstrdup(server_client_get_cwd(c, fs->s));
+ cwd = xstrdup(server_client_get_cwd(c, target->s));
value = args_get(args, 'R');
if (value != NULL)
- shellcmd = format_single(item, value, c, fs->s, fs->wl, fs->wp);
+ shellcmd = format_single_from_target(item, value, c);
if (args_has(args, 'K'))
flags |= POPUP_WRITEKEYS;
@@ -313,7 +312,7 @@ cmd_display_popup_exec(struct cmd *self, struct cmdq_item *item)
else if (args_has(args, 'E'))
flags |= POPUP_CLOSEEXIT;
if (popup_display(flags, item, px, py, w, h, nlines, lines, shellcmd,
- cmd, cwd, c, fs) != 0)
+ cmd, cwd, c, target) != 0)
return (CMD_RETURN_NORMAL);
return (CMD_RETURN_WAIT);
}
diff --git a/cmd-display-message.c b/cmd-display-message.c
index d4d4ad25..8fb09f20 100644
--- a/cmd-display-message.c
+++ b/cmd-display-message.c
@@ -61,10 +61,11 @@ static enum cmd_retval
cmd_display_message_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
+ struct cmd_find_state *target = cmdq_get_target(item);
struct client *c, *target_c;
- struct session *s = item->target.s;
- struct winlink *wl = item->target.wl;
- struct window_pane *wp = item->target.wp;
+ struct session *s = target->s;
+ struct winlink *wl = target->wl;
+ struct window_pane *wp = target->wp;
const char *template;
char *msg, *cause;
struct format_tree *ft;
@@ -105,7 +106,7 @@ cmd_display_message_exec(struct cmd *self, struct cmdq_item *item)
flags = FORMAT_VERBOSE;
else
flags = 0;
- ft = format_create(item->client, item, FORMAT_NONE, flags);
+ ft = format_create(cmdq_get_client(item), item, FORMAT_NONE, flags);
format_defaults(ft, target_c, s, wl, wp);
if (args_has(args, 'a')) {
diff --git a/cmd-find-window.c b/cmd-find-window.c
index 798754d1..e1faeb2f 100644
--- a/cmd-find-window.c
+++ b/cmd-find-window.c
@@ -45,7 +45,8 @@ static enum cmd_retval
cmd_find_window_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self), *new_args;
- struct window_pane *wp = item->target.wp;
+ struct cmd_find_state *target = cmdq_get_target(item);
+ struct window_pane *wp = target->wp;
const char *s = args->argv[0];
char *filter, *argv = { NULL };
int C, N, T;
@@ -116,8 +117,7 @@ cmd_find_window_exec(struct cmd *self, struct cmdq_item *item)
args_set(new_args, 'Z', NULL);
args_set(new_args, 'f', filter);
- window_pane_set_mode(wp, NULL, &window_tree_mode, &item->target,
- new_args);
+ window_pane_set_mode(wp, NULL, &window_tree_mode, target, new_args);
args_free(new_args);
free(filter);
diff --git a/cmd-find.c b/cmd-find.c
index 81afb423..a258a10f 100644
--- a/cmd-find.c
+++ b/cmd-find.c
@@ -961,10 +961,11 @@ cmd_find_target(struct cmd_find_state *fs, struct cmdq_item *item,
if (server_check_marked() && (flags & CMD_FIND_DEFAULT_MARKED)) {
fs->current = &marked_pane;
log_debug("%s: current is marked pane", __func__);
- } else if (cmd_find_valid_state(&item->shared->current)) {
- fs->current = &item->shared->current;
+ } else if (cmd_find_valid_state(&cmdq_get_shared(item)->current)) {
+ fs->current = &cmdq_get_shared(item)->current;
log_debug("%s: current is from queue", __func__);
- } else if (cmd_find_from_client(&current, item->client, flags) == 0) {
+ } else if (cmd_find_from_client(&current, cmdq_get_client(item),
+ flags) == 0) {
fs->current = &current;
log_debug("%s: current is from client", __func__);
} else {
@@ -981,7 +982,7 @@ cmd_find_target(struct cmd_find_state *fs, struct cmdq_item *item,
/* Mouse target is a plain = or {mouse}. */
if (strcmp(target, "=") == 0 || strcmp(target, "{mouse}") == 0) {
- m = &item->shared->mouse;
+ m = &cmdq_get_shared(item)->mouse;
switch (type) {
case CMD_FIND_PANE:
fs->wp = cmd_mouse_pane(m, &fs->s, &fs->wl);
@@ -1237,7 +1238,7 @@ cmd_find_current_client(struct cmdq_item *item, int quiet)
struct cmd_find_state fs;
if (item != NULL)
- c = item->client;
+ c = cmdq_get_client(item);
if (c != NULL && c->session != NULL)
return (c);
diff --git a/cmd-if-shell.c b/cmd-if-shell.c
index a678cf40..a385f9f7 100644
--- a/cmd-if-shell.c
+++ b/cmd-if-shell.c
@@ -63,20 +63,19 @@ static enum cmd_retval
cmd_if_shell_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
- struct mouse_event *m = &item->shared->mouse;
+ struct cmdq_shared *shared = cmdq_get_shared(item);
+ struct cmd_find_state *target = cmdq_get_target(item);
+ struct mouse_event *m = &shared->mouse;
struct cmd_if_shell_data *cdata;
char *shellcmd, *cmd;
const char *file;
struct cmdq_item *new_item;
- struct cmd_find_state *fs = &item->target;
struct client *c = cmd_find_client(item, NULL, 1);
- struct session *s = fs->s;
- struct winlink *wl = fs->wl;
- struct window_pane *wp = fs->wp;
+ struct session *s = target->s;
struct cmd_parse_input pi;
struct cmd_parse_result *pr;
- shellcmd = format_single(item, args->argv[0], c, s, wl, wp);
+ shellcmd = format_single_from_target(item, args->argv[0], c);
if (args_has(args, 'F')) {
if (*shellcmd != '0' && *shellcmd != '\0')
cmd = args->argv[1];
@@ -92,7 +91,7 @@ cmd_if_shell_exec(struct cmd *self, struct cmdq_item *item)
cmd_get_source(self, &pi.file, &pi.line);
pi.item = item;
pi.c = c;
- cmd_find_copy_state(&pi.fs, fs);
+ cmd_find_copy_state(&pi.fs, target);
pr = cmd_parse_from_string(cmd, &pi);
switch (pr->status) {
@@ -103,7 +102,7 @@ cmd_if_shell_exec(struct cmd *self, struct cmdq_item *item)
free(pr->error);
return (CMD_RETURN_ERROR);
case CMD_PARSE_SUCCESS:
- new_item = cmdq_get_command(pr->cmdlist, fs, m, 0);
+ new_item = cmdq_get_command(pr->cmdlist, target, m, 0);
cmdq_insert_after(item, new_item);
cmd_list_free(pr->cmdlist);
break;
@@ -121,7 +120,7 @@ cmd_if_shell_exec(struct cmd *self, struct cmdq_item *item)
memcpy(&cdata->mouse, m, sizeof cdata->mouse);
if (!args_has(args, 'b'))
- cdata->client = item->client;
+ cdata->client = cmdq_get_client(item);
else
cdata->client = c;
if (cdata->client != NULL)
@@ -139,9 +138,10 @@ cmd_if_shell_exec(struct cmd *self, struct cmdq_item *item)
cdata->input.c = c;
if (cdata->input.c != NULL)
cdata->input.c->references++;
- cmd_find_copy_state(&cdata->input.fs, fs);
+ cmd_find_copy_state(&cdata->input.fs, target);
- if (job_run(shellcmd, s, server_client_get_cwd(item->client, s), NULL,
+ if (job_run(shellcmd, s,
+ server_client_get_cwd(cmdq_get_client(item), s), NULL,
cmd_if_shell_callback, cmd_if_shell_free, cdata, 0, -1,
-1) == NULL) {
cmdq_error(item, "failed to run command: %s", shellcmd);
diff --git a/cmd-join-pane.c b/cmd-join-pane.c
index 2d26d82b..ab0fea62 100644
--- a/cmd-join-pane.c
+++ b/cmd-join-pane.c
@@ -64,7 +64,10 @@ static enum cmd_retval
cmd_join_pane_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
- struct cmd_find_state *current = &item->shared->current;
+ struct cmdq_shared *shared = cmdq_get_shared(item);
+ struct cmd_find_state *current = &shared->current;
+ struct cmd_find_state *target = cmdq_get_target(item);
+ struct cmd_find_state *source = cmdq_get_source(item);
struct session *dst_s;
struct winlink *src_wl, *dst_wl;
struct window *src_w, *dst_w;
@@ -80,15 +83,15 @@ cmd_join_pane_exec(struct cmd *self, struct cmdq_item *item)
else
not_same_window = 0;
- dst_s = item->target.s;
- dst_wl = item->target.wl;
- dst_wp = item->target.wp;
+ dst_s = target->s;
+ dst_wl = target->wl;
+ dst_wp = target->wp;
dst_w = dst_wl->window;
dst_idx = dst_wl->idx;
server_unzoom_window(dst_w);
- src_wl = item->source.wl;
- src_wp = item->source.wp;
+ src_wl = source->wl;
+ src_wp = source->wp;
src_w = src_wl->window;
server_unzoom_window(src_w);
diff --git a/cmd-kill-pane.c b/cmd-kill-pane.c
index 301b9fa6..2302d7bb 100644
--- a/cmd-kill-pane.c
+++ b/cmd-kill-pane.c
@@ -45,8 +45,9 @@ static enum cmd_retval
cmd_kill_pane_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
- struct winlink *wl = item->target.wl;
- struct window_pane *loopwp, *tmpwp, *wp = item->target.wp;
+ struct cmd_find_state *target = cmdq_get_target(item);
+ struct winlink *wl = target->wl;
+ struct window_pane *loopwp, *tmpwp, *wp = target->wp;
if (args_has(args, 'a')) {
server_unzoom_window(wl->window);
diff --git a/cmd-kill-session.c b/cmd-kill-session.c
index 978d1b9c..c10efba6 100644
--- a/cmd-kill-session.c
+++ b/cmd-kill-session.c
@@ -45,11 +45,10 @@ const struct cmd_entry cmd_kill_session_entry = {
static enum cmd_retval
cmd_kill_session_exec(struct cmd *self, struct cmdq_item *item)
{
- struct args *args = cmd_get_args(self);
- struct session *s, *sloop, *stmp;
- struct winlink *wl;
-
- s = item->target.s;
+ struct args *args = cmd_get_args(self);
+ struct cmd_find_state *target = cmdq_get_target(item);
+ struct session *s = target->