summaryrefslogtreecommitdiff
path: root/usr.bin/tmux
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2015-12-15 00:45:03 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2015-12-15 00:45:03 +0000
commit10a2236d6c6bcbc69d7b119e3b2189d9a8f103fe (patch)
tree4c205fa00d448590749ca6c67202eae1d584d847 /usr.bin/tmux
parent2a71b26011419ebe35acd10754e837091573a1db (diff)
We changed somewhat recently to us the pty when tmux was run inside
itself to work out the current pane. This is confusing in many cases (particularly notable is that "tmux neww\; splitw" would not split the new window), and the few advantages do not make up for the confusion. So drop this behaviour and return to using the current window and pane; keep the pty check but only use it to limit the list of possible current sessions.
Diffstat (limited to 'usr.bin/tmux')
-rw-r--r--usr.bin/tmux/cmd-find.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/usr.bin/tmux/cmd-find.c b/usr.bin/tmux/cmd-find.c
index 8f0be8baa72..73db4e7b5ab 100644
--- a/usr.bin/tmux/cmd-find.c
+++ b/usr.bin/tmux/cmd-find.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-find.c,v 1.24 2015/12/15 00:11:24 nicm Exp $ */
+/* $OpenBSD: cmd-find.c,v 1.25 2015/12/15 00:45:02 nicm Exp $ */
/*
* Copyright (c) 2015 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -249,7 +249,11 @@ cmd_find_current_session_with_client(struct cmd_find_state *fs)
{
struct window_pane *wp;
- /* If this is running in a pane, that's great. */
+ /*
+ * If this is running in a pane, we can use that to limit the list of
+ * sessions to those containing that pane (we still use the current
+ * window in the best session).
+ */
if (fs->cmdq->client->tty.path != NULL) {
RB_FOREACH(wp, window_pane_tree, &all_window_panes) {
if (strcmp(wp->tty, fs->cmdq->client->tty.path) == 0)
@@ -262,11 +266,8 @@ cmd_find_current_session_with_client(struct cmd_find_state *fs)
if (wp == NULL)
goto unknown_pane;
- /* We now know the window and pane. */
+ /* Find the best session and winlink containing this pane. */
fs->w = wp->window;
- fs->wp = wp;
-
- /* Find the best session and winlink. */
if (cmd_find_best_session_with_window(fs) != 0) {
if (wp != NULL) {
/*
@@ -278,6 +279,13 @@ cmd_find_current_session_with_client(struct cmd_find_state *fs)
}
return (-1);
}
+
+ /* Use the current window and pane from this session. */
+ fs->wl = fs->s->curw;
+ fs->idx = fs->wl->idx;
+ fs->w = fs->wl->window;
+ fs->wp = fs->w->active;
+
return (0);
unknown_pane:
@@ -290,6 +298,7 @@ unknown_pane:
fs->idx = fs->wl->idx;
fs->w = fs->wl->window;
fs->wp = fs->w->active;
+
return (0);
}