Add flags to selectp to enable and disable input to a pane, from Anish
authornicm <nicm@openbsd.org>
Mon, 11 Aug 2014 22:14:30 +0000 (22:14 +0000)
committernicm <nicm@openbsd.org>
Mon, 11 Aug 2014 22:14:30 +0000 (22:14 +0000)
Athalye.

usr.bin/tmux/cmd-select-pane.c
usr.bin/tmux/tmux.1
usr.bin/tmux/tmux.h
usr.bin/tmux/window.c

index e543a9a..3d1b2d5 100644 (file)
@@ -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);
 }
index 67086d4..0c9f127 100644 (file)
@@ -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
index c9d7c68..949e082 100644 (file)
@@ -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;
index 1903505..bf018bd 100644 (file)
@@ -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;