Applied thanks.

On Fri, Nov 11, 2011 at 05:11:52PM -0500, Ben Boeckel wrote:
> On Sat, Nov 05, 2011 at 09:03:03 +0000, Nicholas Marriott wrote:
> > -                                         window_pane_index change is a
> >   separate thing I guess.
> 
> Attached.
> 
> --Ben

> From a1da8eef7dec2fd729927d33ebc6c3bfde54031a Mon Sep 17 00:00:00 2001
> From: Ben Boeckel <maths...@gmail.com>
> Date: Thu, 20 Oct 2011 12:03:55 -0400
> Subject: [PATCH] Change window_pane_index to be like window_index
> 
> ---
>  trunk/cmd-respawn-pane.c |    7 +++++--
>  trunk/cmd-split-window.c |    3 ++-
>  trunk/screen-redraw.c    |    5 +++--
>  trunk/status.c           |    5 ++++-
>  trunk/tmux.h             |    2 +-
>  trunk/window.c           |   18 ++++++++++--------
>  6 files changed, 25 insertions(+), 15 deletions(-)
> 
> diff --git a/trunk/cmd-respawn-pane.c b/trunk/cmd-respawn-pane.c
> index 7e272a8..d4d67d5 100644
> --- a/trunk/cmd-respawn-pane.c
> +++ b/trunk/cmd-respawn-pane.c
> @@ -49,15 +49,18 @@ cmd_respawn_pane_exec(struct cmd *self, struct cmd_ctx 
> *ctx)
>       struct session          *s;
>       struct environ           env;
>       const char              *cmd;
> -     char                    *cause;
> +     char                    *cause;
> +     u_int                    idx;
>  
>       if ((wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp)) == NULL)
>               return (-1);
>       w = wl->window;
>  
>       if (!args_has(self->args, 'k') && wp->fd != -1) {
> +             if (window_pane_index(wp, &idx) != 0)
> +                     fatalx("index not found");
>               ctx->error(ctx, "pane still active: %s:%u.%u",
> -                 s->name, wl->idx, window_pane_index(w, wp));
> +                 s->name, wl->idx, idx);
>               return (-1);
>       }
>  
> diff --git a/trunk/cmd-split-window.c b/trunk/cmd-split-window.c
> index 6a95e1b..258c632 100644
> --- a/trunk/cmd-split-window.c
> +++ b/trunk/cmd-split-window.c
> @@ -139,7 +139,8 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx 
> *ctx)
>       environ_free(&env);
>  
>       if (args_has(args, 'P')) {
> -             paneidx = window_pane_index(wl->window, new_wp);
> +             if (window_pane_index(new_wp, &paneidx) != 0)
> +                     fatalx("index not found");
>               ctx->print(ctx, "%s:%u.%u", s->name, wl->idx, paneidx);
>       }
>       return (0);
> diff --git a/trunk/screen-redraw.c b/trunk/screen-redraw.c
> index a12fa36..c9e0542 100644
> --- a/trunk/screen-redraw.c
> +++ b/trunk/screen-redraw.c
> @@ -264,7 +264,7 @@ screen_redraw_draw_number(struct client *c, struct 
> window_pane *wp)
>  {
>       struct tty              *tty = &c->tty;
>       struct session          *s = c->session;
> -     struct options          *oo = &s->options;
> +     struct options          *oo = &s->options;
>       struct window           *w = wp->window;
>       struct grid_cell         gc;
>       u_int                    idx, px, py, i, j, xoff, yoff;
> @@ -272,7 +272,8 @@ screen_redraw_draw_number(struct client *c, struct 
> window_pane *wp)
>       char                     buf[16], *ptr;
>       size_t                   len;
>  
> -     idx = window_pane_index(w, wp);
> +     if (window_pane_index(wp, &idx) != 0)
> +             fatalx("index not found");
>       len = xsnprintf(buf, sizeof buf, "%u", idx);
>  
>       if (wp->sx < len)
> diff --git a/trunk/status.c b/trunk/status.c
> index 5db40b4..ca3e9d4 100644
> --- a/trunk/status.c
> +++ b/trunk/status.c
> @@ -372,6 +372,7 @@ status_replace1(struct client *c, struct session *s, 
> struct winlink *wl,
>       char    ch, tmp[256], *ptr, *endptr, *freeptr;
>       size_t  ptrlen;
>       long    limit;
> +     u_int   idx;
>  
>       if (s == NULL)
>               s = c->session;
> @@ -422,8 +423,10 @@ status_replace1(struct client *c, struct session *s, 
> struct winlink *wl,
>               ptr = tmp;
>               goto do_replace;
>       case 'P':
> +             if (window_pane_index(wp, &idx) != 0)
> +                     fatalx("index not found");
>               xsnprintf(
> -                 tmp, sizeof tmp, "%u", window_pane_index(wl->window, wp));
> +                 tmp, sizeof tmp, "%u", idx);
>               ptr = tmp;
>               goto do_replace;
>       case 'S':
> diff --git a/trunk/tmux.h b/trunk/tmux.h
> index 08650d5..be8f296 100644
> --- a/trunk/tmux.h
> +++ b/trunk/tmux.h
> @@ -1927,7 +1927,7 @@ struct window_pane *window_pane_next_by_number(struct 
> window *,
>                       struct window_pane *, u_int);
>  struct window_pane *window_pane_previous_by_number(struct window *,
>                       struct window_pane *, u_int);
> -u_int                 window_pane_index(struct window *, struct window_pane 
> *);
> +int           window_pane_index(struct window_pane *, u_int *);
>  u_int                 window_count_panes(struct window *);
>  void          window_destroy_panes(struct window *);
>  struct window_pane *window_pane_find_by_id(u_int);
> diff --git a/trunk/window.c b/trunk/window.c
> index 8b82c06..e170dd2 100644
> --- a/trunk/window.c
> +++ b/trunk/window.c
> @@ -483,19 +483,21 @@ window_pane_previous_by_number(struct window *w, struct 
> window_pane *wp,
>       return (wp);
>  }
>  
> -u_int
> -window_pane_index(struct window *w, struct window_pane *wp)
> +int
> +window_pane_index(struct window_pane *wp, u_int *i)
>  {
>       struct window_pane      *wq;
> -     u_int                    n;
> +     struct window           *w = wp->window;
>  
> -     n = options_get_number(&w->options, "pane-base-index");
> +     *i = options_get_number(&w->options, "pane-base-index");
>       TAILQ_FOREACH(wq, &w->panes, entry) {
> -             if (wp == wq)
> -                     break;
> -             n++;
> +             if (wp == wq) {
> +                     return (0);
> +             }
> +             (*i)++;
>       }
> -     return (n);
> +
> +     return (-1);
>  }
>  
>  u_int
> -- 
> 1.7.6.4
> 




------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to