aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd-find.c22
-rw-r--r--cmd-split-window.c7
-rw-r--r--server-client.c6
-rw-r--r--tmux.h6
4 files changed, 24 insertions, 17 deletions
diff --git a/cmd-find.c b/cmd-find.c
index 68c15f15..ea8c1e83 100644
--- a/cmd-find.c
+++ b/cmd-find.c
@@ -879,7 +879,7 @@ cmd_find_log_state(const char *prefix, struct cmd_find_state *fs)
}
/* Find state from a session. */
-int
+void
cmd_find_from_session(struct cmd_find_state *fs, struct session *s)
{
cmd_find_clear_state(fs, NULL, 0);
@@ -890,11 +890,10 @@ cmd_find_from_session(struct cmd_find_state *fs, struct session *s)
fs->wp = fs->w->active;
cmd_find_log_state(__func__, fs);
- return (0);
}
/* Find state from a winlink. */
-int
+void
cmd_find_from_winlink(struct cmd_find_state *fs, struct winlink *wl)
{
cmd_find_clear_state(fs, NULL, 0);
@@ -905,7 +904,6 @@ cmd_find_from_winlink(struct cmd_find_state *fs, struct winlink *wl)
fs->wp = wl->window->active;
cmd_find_log_state(__func__, fs);
- return (0);
}
/* Find state from a session and window. */
@@ -942,6 +940,22 @@ cmd_find_from_window(struct cmd_find_state *fs, struct window *w)
return (0);
}
+/* Find state from a winlink and pane. */
+void
+cmd_find_from_winlink_pane(struct cmd_find_state *fs, struct winlink *wl,
+ struct window_pane *wp)
+{
+ cmd_find_clear_state(fs, NULL, 0);
+
+ fs->s = wl->session;
+ fs->wl = wl;
+ fs->idx = fs->wl->idx;
+ fs->w = fs->wl->window;
+ fs->wp = wp;
+
+ cmd_find_log_state(__func__, fs);
+}
+
/* Find state from a pane. */
int
cmd_find_from_pane(struct cmd_find_state *fs, struct window_pane *wp)
diff --git a/cmd-split-window.c b/cmd-split-window.c
index 4d061d94..cb39d8f8 100644
--- a/cmd-split-window.c
+++ b/cmd-split-window.c
@@ -172,12 +172,7 @@ cmd_split_window_exec(struct cmd *self, struct cmdq_item *item)
if (to_free != NULL)
free((void *)to_free);
- cmd_find_clear_state(&fs, NULL, 0);
- fs.s = s;
- fs.wl = wl;
- fs.w = w;
- fs.wp = new_wp;
- cmd_find_log_state(__func__, &fs);
+ cmd_find_from_winlink_pane(&fs, wl, new_wp);
hooks_insert(s->hooks, item, &fs, "after-split-window");
return (CMD_RETURN_NORMAL);
diff --git a/server-client.c b/server-client.c
index d5717ae6..29ee4caa 100644
--- a/server-client.c
+++ b/server-client.c
@@ -946,11 +946,7 @@ retry:
/* Find default state if the pane is known. */
if (KEYC_IS_MOUSE(key) && m->valid && wp != NULL) {
- cmd_find_clear_state(&fs, NULL, 0);
- fs.s = s;
- fs.wl = fs.s->curw;
- fs.w = fs.wl->window;
- fs.wp = wp;
+ cmd_find_from_winlink_pane(&fs, s->curw, wp);
cmd_find_log_state(__func__, &fs);
if (!cmd_find_valid_state(&fs))
diff --git a/tmux.h b/tmux.h
index 5d614d38..f0453b99 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1744,15 +1744,17 @@ int cmd_find_valid_state(struct cmd_find_state *);
void cmd_find_copy_state(struct cmd_find_state *,
struct cmd_find_state *);
void cmd_find_log_state(const char *, struct cmd_find_state *);
-int cmd_find_from_session(struct cmd_find_state *,
+void cmd_find_from_session(struct cmd_find_state *,
struct session *);
-int cmd_find_from_winlink(struct cmd_find_state *,
+void cmd_find_from_winlink(struct cmd_find_state *,
struct winlink *);
int cmd_find_from_session_window(struct cmd_find_state *,
struct session *, struct window *);
int cmd_find_from_window(struct cmd_find_state *, struct window *);
int cmd_find_from_pane(struct cmd_find_state *,
struct window_pane *);
+void cmd_find_from_winlink_pane(struct cmd_find_state *,
+ struct winlink *, struct window_pane *);
/* cmd.c */
int cmd_pack_argv(int, char **, char *, size_t);