Update of /cvsroot/tmux/tmux
In directory vz-cvs-2.sog:/tmp/cvs-serv19779

Modified Files:
        cmd-list-panes.c cmd-list-windows.c tmux.1 
Log Message:
|PatchSet 875
|Date: 2011/03/29 00:13:00
|Author: nicm
|Branch: HEAD
|Tag: (none)
|Log:
|Add -a and -s options to lsp to list all panes in the server or session
|respectively. Likewise add -s to lsw. From Ben Boeckel.



Index: cmd-list-panes.c
===================================================================
RCS file: /cvsroot/tmux/tmux/cmd-list-panes.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- cmd-list-panes.c    6 Apr 2011 22:16:33 -0000       1.8
+++ cmd-list-panes.c    6 Apr 2011 22:20:16 -0000       1.9
@@ -28,10 +28,14 @@
 
 int    cmd_list_panes_exec(struct cmd *, struct cmd_ctx *);
 
+void   cmd_list_panes_server(struct cmd_ctx *);
+void   cmd_list_panes_session(struct session *, struct cmd_ctx *);
+void   cmd_list_panes_window(struct winlink *, struct cmd_ctx *);
+
 const struct cmd_entry cmd_list_panes_entry = {
        "list-panes", "lsp",
-       "t:", 0, 0,
-       CMD_TARGET_WINDOW_USAGE,
+       "ast:", 0, 0,
+       "[-as] [-t target]",
        0,
        NULL,
        NULL,
@@ -41,17 +45,54 @@
 int
 cmd_list_panes_exec(struct cmd *self, struct cmd_ctx *ctx)
 {
-       struct args             *args = self->args;
-       struct winlink          *wl;
+       struct args     *args = self->args;
+       struct session  *s;
+       struct winlink  *wl;
+
+       if (args_has(args, 'a'))
+               cmd_list_panes_server(ctx);
+       else if (args_has(args, 's')) {
+               s = cmd_find_session(ctx, args_get(args, 't'));
+               if (s == NULL)
+                       return (-1);
+               cmd_list_panes_session(s, ctx);
+       } else {
+               wl = cmd_find_window(ctx, args_get(args, 't'), NULL);
+               if (wl == NULL)
+                       return (-1);
+               cmd_list_panes_window(wl, ctx);
+       }
+
+       return (0);
+}
+
+void
+cmd_list_panes_server(struct cmd_ctx *ctx)
+{
+       struct session  *s;
+
+       RB_FOREACH(s, sessions, &sessions)
+               cmd_list_panes_session(s, ctx);
+}
+
+void
+cmd_list_panes_session(struct session *s, struct cmd_ctx *ctx)
+{
+       struct winlink  *wl;
+
+       RB_FOREACH(wl, winlinks, &s->windows)
+               cmd_list_panes_window(wl, ctx);
+}
+
+void
+cmd_list_panes_window(struct winlink *wl, struct cmd_ctx *ctx)
+{
        struct window_pane      *wp;
        struct grid             *gd;
        struct grid_line        *gl;
        u_int                    i, n;
        unsigned long long       size;
 
-       if ((wl = cmd_find_window(ctx, args_get(args, 't'), NULL)) == NULL)
-               return (-1);
-
        n = 0;
        TAILQ_FOREACH(wp, &wl->window->panes, entry) {
                gd = wp->base.grid;
@@ -64,12 +105,11 @@
                }
                size += gd->hsize * sizeof *gd->linedata;
 
-               ctx->print(ctx, "%u: [%ux%u] [history %u/%u, %llu bytes] 
%%%u%s%s",
+               ctx->print(ctx,
+                   "%u: [%ux%u] [history %u/%u, %llu bytes] %%%u%s%s",
                    n, wp->sx, wp->sy, gd->hsize, gd->hlimit, size, wp->id,
                    wp == wp->window->active ? " (active)" : "",
                    wp->fd == -1 ? " (dead)" : "");
                n++;
        }
-
-       return (0);
 }

Index: cmd-list-windows.c
===================================================================
RCS file: /cvsroot/tmux/tmux/cmd-list-windows.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- cmd-list-windows.c  7 Jan 2011 14:45:34 -0000       1.45
+++ cmd-list-windows.c  6 Apr 2011 22:20:16 -0000       1.46
@@ -28,10 +28,13 @@
 
 int    cmd_list_windows_exec(struct cmd *, struct cmd_ctx *);
 
+void   cmd_list_windows_server(struct cmd_ctx *);
+void   cmd_list_windows_session(struct session *, struct cmd_ctx *);
+
 const struct cmd_entry cmd_list_windows_entry = {
        "list-windows", "lsw",
-       "t:", 0, 0,
-       CMD_TARGET_SESSION_USAGE,
+       "at:", 0, 0,
+       "[-a] " CMD_TARGET_SESSION_USAGE,
        0,
        NULL,
        NULL,
@@ -43,12 +46,34 @@
 {
        struct args     *args = self->args;
        struct session  *s;
+
+       if (args_has(args, 'a'))
+               cmd_list_windows_server(ctx);
+       else {
+               s = cmd_find_session(ctx, args_get(args, 't'));
+               if (s == NULL)
+                       return (-1);
+               cmd_list_windows_session(s, ctx);
+       }
+
+       return (0);
+}
+
+void
+cmd_list_windows_server(struct cmd_ctx *ctx)
+{
+       struct session  *s;
+
+       RB_FOREACH(s, sessions, &sessions)
+               cmd_list_windows_session(s, ctx);
+}
+
+void
+cmd_list_windows_session(struct session *s, struct cmd_ctx *ctx)
+{
        struct winlink  *wl;
        char            *layout;
 
-       if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
-               return (-1);
-
        RB_FOREACH(wl, winlinks, &s->windows) {
                layout = layout_dump(wl->window);
                ctx->print(ctx, "%d: %s [%ux%u] [layout %s]%s",
@@ -56,6 +81,4 @@
                    layout, wl == s->curw ? " (active)" : "");
                xfree(layout);
        }
-
-       return (0);
 }

Index: tmux.1
===================================================================
RCS file: /cvsroot/tmux/tmux/tmux.1,v
retrieving revision 1.298
retrieving revision 1.299
diff -u -d -r1.298 -r1.299
--- tmux.1      6 Apr 2011 22:19:42 -0000       1.298
+++ tmux.1      6 Apr 2011 22:20:16 -0000       1.299
@@ -1119,13 +1119,33 @@
 If
 .Fl d
 is given, the newly linked window is not selected.
-.It Ic list-panes Op Fl t Ar target-window
+.It Xo Ic list-panes
+.Op Fl as
+.Op Fl t Ar target
+.Xc
 .D1 (alias: Ic lsp )
-List the panes in the current window or in
-.Ar target-window .
-.It Ic list-windows Op Fl t Ar target-session
+If
+.Fl a
+is given,
+.Ar target
+is ignored and all panes on the server are listed.
+If
+.Fl s
+is given,
+.Ar target
+is a session (or the current session).
+If neither is given,
+.Ar target
+is a window (or the current window).
+.It Xo Ic list-windows
+.Op Fl a
+.Op Fl t Ar target-session
+.Xc
 .D1 (alias: Ic lsw )
-List windows in the current session or in
+If
+.Fl a
+is given, list all windows on the server.
+Otherwise, list windows in the current session or in
 .Ar target-session .
 .It Xo Ic move-window
 .Op Fl dk


------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
tmux-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-cvs

Reply via email to