summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2014-08-11 22:14:31 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2014-08-11 22:14:31 +0000
commita7ddbaae13339a4e9fc9b184c25716b74f8f95c3 (patch)
treed5f8dc6d1a62fa11b03ba44939104462c1ef89a6 /usr.bin
parent8d7dae74c21753d031f081b38ee3ac575ba63da4 (diff)
Add flags to selectp to enable and disable input to a pane, from Anish
Athalye.
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/tmux/cmd-select-pane.c36
-rw-r--r--usr.bin/tmux/tmux.121
-rw-r--r--usr.bin/tmux/tmux.h3
-rw-r--r--usr.bin/tmux/window.c9
4 files changed, 47 insertions, 22 deletions
diff --git a/usr.bin/tmux/cmd-select-pane.c b/usr.bin/tmux/cmd-select-pane.c
index e543a9a4fd6..3d1b2d54616 100644
--- a/usr.bin/tmux/cmd-select-pane.c
+++ b/usr.bin/tmux/cmd-select-pane.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-select-pane.c,v 1.17 2013/10/10 12:00:22 nicm Exp $ */
+/* $OpenBSD: cmd-select-pane.c,v 1.18 2014/08/11 22:14:30 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -29,8 +29,8 @@ enum cmd_retval cmd_select_pane_exec(struct cmd *, struct cmd_q *);
const struct cmd_entry cmd_select_pane_entry = {
"select-pane", "selectp",
- "lDLRt:U", 0, 0,
- "[-lDLRU] " CMD_TARGET_PANE_USAGE,
+ "DdeLlRt:U", 0, 0,
+ "[-DdeLlRU] " CMD_TARGET_PANE_USAGE,
0,
cmd_select_pane_key_binding,
cmd_select_pane_exec
@@ -38,8 +38,8 @@ const struct cmd_entry cmd_select_pane_entry = {
const struct cmd_entry cmd_last_pane_entry = {
"last-pane", "lastp",
- "t:", 0, 0,
- CMD_TARGET_WINDOW_USAGE,
+ "det:", 0, 0,
+ "[-de] " CMD_TARGET_WINDOW_USAGE,
0,
NULL,
cmd_select_pane_exec
@@ -78,10 +78,16 @@ cmd_select_pane_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR);
}
- server_unzoom_window(wl->window);
- window_set_active_pane(wl->window, wl->window->last);
- server_status_window(wl->window);
- server_redraw_window_borders(wl->window);
+ if (args_has(self->args, 'e'))
+ wl->window->last->flags &= ~PANE_INPUTOFF;
+ else if (args_has(self->args, 'd'))
+ wl->window->last->flags |= PANE_INPUTOFF;
+ else {
+ server_unzoom_window(wl->window);
+ window_set_active_pane(wl->window, wl->window->last);
+ server_status_window(wl->window);
+ server_redraw_window_borders(wl->window);
+ }
return (CMD_RETURN_NORMAL);
}
@@ -108,9 +114,15 @@ cmd_select_pane_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR);
}
- window_set_active_pane(wl->window, wp);
- server_status_window(wl->window);
- server_redraw_window_borders(wl->window);
+ if (args_has(self->args, 'e'))
+ wp->flags &= ~PANE_INPUTOFF;
+ else if (args_has(self->args, 'd'))
+ wp->flags |= PANE_INPUTOFF;
+ else {
+ window_set_active_pane(wl->window, wp);
+ server_status_window(wl->window);
+ server_redraw_window_borders(wl->window);
+ }
return (CMD_RETURN_NORMAL);
}
diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1
index 67086d44343..0c9f1271b6b 100644
--- a/usr.bin/tmux/tmux.1
+++ b/usr.bin/tmux/tmux.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: tmux.1,v 1.397 2014/06/20 10:46:59 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.398 2014/08/11 22:14:30 nicm Exp $
.\"
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
.\"
@@ -14,7 +14,7 @@
.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
.\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: June 20 2014 $
+.Dd $Mdocdate: August 11 2014 $
.Dt TMUX 1
.Os
.Sh NAME
@@ -1292,7 +1292,7 @@ flag, see the
section.
This command works only if at least one client is attached.
.It Ic display-panes Op Fl t Ar target-client
-.D1 (alias: Ic displayp)
+.D1 (alias: Ic displayp )
Display a visible indicator of each pane shown by
.Ar target-client .
See the
@@ -1382,9 +1382,16 @@ The
.Fl a
option kills all but the window given with
.Fl t .
-.It Ic last-pane Op Fl t Ar target-window
+.It Xo Ic last-pane
+.Op Fl de
+.Op Fl t Ar target-window
+.Xc
.D1 (alias: Ic lastp )
Select the last (previously selected) pane.
+.Fl e
+enables or
+.Fl d
+disables input to the pane.
.It Ic last-window Op Fl t Ar target-session
.D1 (alias: Ic last )
Select the last (previously selected) window.
@@ -1701,7 +1708,7 @@ and
.Ic previous-layout
commands.
.It Xo Ic select-pane
-.Op Fl lDLRU
+.Op Fl DdeLlRU
.Op Fl t Ar target-pane
.Xc
.D1 (alias: Ic selectp )
@@ -1721,6 +1728,10 @@ target pane is used.
is the same as using the
.Ic last-pane
command.
+.Fl e
+enables or
+.Fl d
+disables input to the pane.
.It Xo Ic select-window
.Op Fl lnpT
.Op Fl t Ar target-window
diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h
index c9d7c686552..949e082927b 100644
--- a/usr.bin/tmux/tmux.h
+++ b/usr.bin/tmux/tmux.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.467 2014/08/09 07:33:37 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.468 2014/08/11 22:14:30 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -956,6 +956,7 @@ struct window_pane {
#define PANE_FOCUSED 0x4
#define PANE_RESIZE 0x8
#define PANE_FOCUSPUSH 0x10
+#define PANE_INPUTOFF 0x20
int argc;
char **argv;
diff --git a/usr.bin/tmux/window.c b/usr.bin/tmux/window.c
index 19035058e1c..bf018bddb9b 100644
--- a/usr.bin/tmux/window.c
+++ b/usr.bin/tmux/window.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: window.c,v 1.112 2014/06/23 10:27:05 nicm Exp $ */
+/* $OpenBSD: window.c,v 1.113 2014/08/11 22:14:30 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -1057,8 +1057,9 @@ window_pane_key(struct window_pane *wp, struct session *sess, int key)
return;
}
- if (wp->fd == -1)
+ if (wp->fd == -1 || wp->flags & PANE_INPUTOFF)
return;
+
input_key(wp, key);
if (options_get_number(&wp->window->options, "synchronize-panes")) {
TAILQ_FOREACH(wp2, &wp->window->panes, entry) {
@@ -1071,8 +1072,8 @@ window_pane_key(struct window_pane *wp, struct session *sess, int key)
}
void
-window_pane_mouse(
- struct window_pane *wp, struct session *sess, struct mouse_event *m)
+window_pane_mouse(struct window_pane *wp, struct session *sess,
+ struct mouse_event *m)
{
if (!window_pane_visible(wp))
return;