On Mon, Mar 28, 2011 at 05:58:28PM -0400, Ben Boeckel wrote:
> On Sun, Mar 27, 2011 at 09:53:35PM +0100, Nicholas Marriott wrote:
> > > > 0004-Add-list-session-panes-command.patch
> > > > 0005-Add-list-server-panes-command.patch
> > > > 
> > > >     These two add commands to list panes with different scopes. Maybe a
> > > >     list-server-windows would be in order as well?
> > 
> > Hmm. I'm not at all convinced we need any new commands. I wonder if this
> > stuff could be hooked into existing ones as new flags.
> 
> New patches attached (-a and -s flags for server and session listing,
> respectively, for list-panes as well as -a for list-windows).
> 
> 0005-Add-a-and-s-flags-to-list-panes.patch
> 0006-Add-a-flag-to-list-windows.patch
> 

Yes I think these are great, thanks. I fixed some style nits and "all
all" in the man page and applied to OpenBSD, should be in SF sometime
soon.

> > > > 0006-Fix-list-panes-documentation-to-match-the-rest.patch
> > > > 
> > > >     Minor fix to the manpage for list-panes to match the rest of the
> > > >     documentation.
> > > > 
> > 
> > I think we don't need to do this, Xc/Xo are only needed in mdoc if you
> > hit the limit of the number of parameters to It.
> 
> Removed here.
> 
> > > > 0008-Add-I-flag-to-new-window-and-split-window.patch
> > > > 
> > > >     Add a -I flag to new-window and split-window commands (similar to
> > > >     -P) to print the ID of the new window.
> 
> Feedback?

I missed this one, let me dig it out again.

> 
> 0001 through 0003 are the same as before and 0004 is the 0008 from last
> time.
> 
> --Ben

> From 1ca8b937415788318a45dcf4671cd83b67f3c54d Mon Sep 17 00:00:00 2001
> From: Ben Boeckel <maths...@gmail.com>
> Date: Mon, 28 Mar 2011 17:46:29 -0400
> Subject: [PATCH 5/6] Add -a and -s flags to list-panes
> 
> The -a flag is used to list all panes on the server and the -s flag is
> used to list all panes in a session.
> ---
>  cmd-list-panes.c |   58 +++++++++++++++++++++++++++++++++++++++++++++--------
>  tmux.1           |   20 +++++++++++++++--
>  2 files changed, 66 insertions(+), 12 deletions(-)
> 
> diff --git a/cmd-list-panes.c b/cmd-list-panes.c
> index c8aa7e9..8670168 100644
> --- a/cmd-list-panes.c
> +++ b/cmd-list-panes.c
> @@ -30,28 +30,70 @@ int       cmd_list_panes_exec(struct cmd *, struct 
> cmd_ctx *);
>  
>  const struct cmd_entry cmd_list_panes_entry = {
>       "list-panes", "lsp",
> -     "t:", 0, 0,
> -     CMD_TARGET_WINDOW_USAGE,
> +     "t:as", 0, 0,
> +     "[-as] [-t target]",
>       0,
>       NULL,
>       NULL,
>       cmd_list_panes_exec
>  };
>  
> +static void cmd_list_panes_on_server(struct cmd_ctx* ctx);
> +static void cmd_list_panes_in_session(struct session* s, struct cmd_ctx* 
> ctx);
> +static void cmd_list_panes_in_window(struct winlink* wl, struct cmd_ctx* 
> ctx);
> +
>  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_on_server(ctx);
> +     } else if (args_has(args, 's')) {
> +             if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
> +                     return (-1);
> +
> +             cmd_list_panes_in_session(s, ctx);
> +     } else {
> +             if ((wl = cmd_find_window(ctx, args_get(args, 't'), NULL)) == 
> NULL)
> +                     return (-1);
> +
> +             cmd_list_panes_in_window(wl, ctx);
> +     }
> +
> +     return (0);
> +}
> +
> +void
> +cmd_list_panes_on_server(struct cmd_ctx* ctx)
> +{
> +     struct session  *s;
> +
> +     RB_FOREACH(s, sessions, &sessions) {
> +             cmd_list_panes_in_session(s, ctx);
> +     }
> +}
> +
> +void
> +cmd_list_panes_in_session(struct session* s, struct cmd_ctx* ctx)
> +{
> +     struct winlink  *wl;
> +
> +     RB_FOREACH(wl, winlinks, &s->windows) {
> +             cmd_list_panes_in_window(wl, ctx);
> +     }
> +}
> +
> +void cmd_list_panes_in_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;
> @@ -70,6 +112,4 @@ cmd_list_panes_exec(struct cmd *self, struct cmd_ctx *ctx)
>                   wp->fd == -1 ? " (dead)" : "");
>               n++;
>       }
> -
> -     return (0);
>  }
> diff --git a/tmux.1 b/tmux.1
> index 4b21282..67e877d 100644
> --- a/tmux.1
> +++ b/tmux.1
> @@ -1099,10 +1099,24 @@ exists, it is killed, otherwise an error is generated.
>  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 .
> +If
> +.Fl a
> +is given,
> +.Ar target
> +is ignored and all 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 Ic list-windows Op Fl t Ar target-session
>  .D1 (alias: Ic lsw )
>  List windows in the current session or in
> -- 
> 1.7.4.1
> 

> From fc562952eba5a53e66469f89b3362b335686cf8b Mon Sep 17 00:00:00 2001
> From: Ben Boeckel <maths...@gmail.com>
> Date: Mon, 28 Mar 2011 17:47:06 -0400
> Subject: [PATCH 6/6] Add -a flag to list-windows
> 
> The -a flag is used to list all windows on the server.
> ---
>  cmd-list-windows.c |   38 +++++++++++++++++++++++++++++++-------
>  tmux.1             |   10 ++++++++--
>  2 files changed, 39 insertions(+), 9 deletions(-)
> 
> diff --git a/cmd-list-windows.c b/cmd-list-windows.c
> index 29feabb..fe39ed4 100644
> --- a/cmd-list-windows.c
> +++ b/cmd-list-windows.c
> @@ -30,25 +30,51 @@ int       cmd_list_windows_exec(struct cmd *, struct 
> cmd_ctx *);
>  
>  const struct cmd_entry cmd_list_windows_entry = {
>       "list-windows", "lsw",
> -     "t:", 0, 0,
> -     CMD_TARGET_SESSION_USAGE,
> +     "t:a", 0, 0,
> +     "[-a] " CMD_TARGET_SESSION_USAGE,
>       0,
>       NULL,
>       NULL,
>       cmd_list_windows_exec
>  };
>  
> +static void cmd_list_windows_on_server(struct cmd_ctx *ctx);
> +static void cmd_list_windows_in_session(struct session* s, struct cmd_ctx 
> *ctx);
> +
>  int
>  cmd_list_windows_exec(struct cmd *self, struct cmd_ctx *ctx)
>  {
>       struct args     *args = self->args;
>       struct session  *s;
> +
> +     if (args_has(args, 'a')) {
> +             cmd_list_windows_on_server(ctx);
> +     } else {
> +             if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
> +                     return (-1);
> +
> +             cmd_list_windows_in_session(s, ctx);
> +     }
> +
> +     return (0);
> +}
> +
> +void
> +cmd_list_windows_on_server(struct cmd_ctx *ctx)
> +{
> +     struct session  *s;
> +
> +     RB_FOREACH(s, sessions, &sessions) {
> +             cmd_list_windows_in_session(s, ctx);
> +     }
> +}
> +
> +void
> +cmd_list_windows_in_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 +82,4 @@ cmd_list_windows_exec(struct cmd *self, struct cmd_ctx *ctx)
>                   layout, wl == s->curw ? " (active)" : "");
>               xfree(layout);
>       }
> -
> -     return (0);
>  }
> diff --git a/tmux.1 b/tmux.1
> index 67e877d..a98b89f 100644
> --- a/tmux.1
> +++ b/tmux.1
> @@ -1117,9 +1117,15 @@ is a session (or the current session).
>  If neither is given,
>  .Ar target
>  is a window (or the current window).
> -.It Ic list-windows Op Fl t Ar target-session
> +.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
> -- 
> 1.7.4.1
> 




------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself; 
WebMatrix provides all the features you need to develop and publish 
your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to