Hi

Thanks, but I'm afraid I already did this a few days ago by giving
capture-pane start and end line arguments (it is in OpenBSD I don't
think it has made it to SF yet).


On Thu, Mar 31, 2011 at 01:15:13AM +0530, Raghavendra D Prabhu wrote:
> Hi,
>     I have been wanting the capability to capture the history and store
> store it to a file much akin to save-buffer. While checking the sources,
> I noticed that it had been noticed in TODO to be added with -h to
> capture-pane. So I have implemented it. I have also tested it myself.
> 
> %<%<------------------------------------------------------------------
> 
> 
> Adding -h to capture-pane now captures history of that pane.
> 
> Signed-off-by: Raghavendra D Prabhu <rpra...@wnohang.net>
> ---
>  cmd-capture-pane.c |   50 ++++++++++++++++++++++++++++++++++++--------------
>  1 files changed, 36 insertions(+), 14 deletions(-)
> 
> diff --git a/cmd-capture-pane.c b/cmd-capture-pane.c
> index a2c2fdd..1ed0bb3 100644
> --- a/cmd-capture-pane.c
> +++ b/cmd-capture-pane.c
> @@ -31,8 +31,8 @@ int cmd_capture_pane_exec(struct cmd *, struct cmd_ctx *);
>  const struct cmd_entry cmd_capture_pane_entry = {
>       "capture-pane", "capturep",
> -     "b:t:", 0, 0,
> -     "[-b buffer-index] [-t target-pane]",
> +     "b:t:h", 0, 0,
> +     "[-b buffer-index] [-t target-pane] [-h capture-history]",
>       0,
>       NULL,
>       NULL,
> @@ -47,8 +47,9 @@ cmd_capture_pane_exec(struct cmd *self, struct cmd_ctx *ctx)
>       char                    *buf, *line, *cause;
>       struct screen           *s;
>       int                      buffer;
> -     u_int                    i, limit;
> -     size_t                   len, linelen;
> +     u_int                    i, j, limit;
> +     size_t                   len, linelen, cellsize;
> +     struct grid*             gd;
>       if (cmd_find_pane(ctx, args_get(args, 't'), NULL, &wp) == NULL)
>               return (-1);
> @@ -57,16 +58,37 @@ cmd_capture_pane_exec(struct cmd *self, struct cmd_ctx 
> *ctx)
>       buf = NULL;
>       len = 0;
> -     for (i = 0; i < screen_size_y(s); i++) {
> -            line = grid_view_string_cells(s->grid, 0, i, screen_size_x(s));
> -            linelen = strlen(line);
> -
> -            buf = xrealloc(buf, 1, len + linelen + 1);
> -            memcpy(buf + len, line, linelen);
> -            len += linelen;
> -            buf[len++] = '\n';
> -
> -            xfree(line);
> +     if (!args_has(args, 'h')) {
> +            for (i = 0; i < screen_size_y(s); i++) {
> +                     line = grid_view_string_cells(s->grid, 0, i, 
> screen_size_x(s));
> +                     linelen = strlen(line);
> +
> +                     buf = xrealloc(buf, 1, len + linelen + 1);
> +                     memcpy(buf + len, line, linelen);
> +                     len += linelen;
> +                     buf[len++] = '\n';
> +
> +                     xfree(line);
> +             }
> +     } else  {
> +             gd = s->grid;
> +             line = NULL;
> +             // Looping over the previous history + viewable text
> +             for (i = 0; i < gd->hsize + gd->sy; i++) {
> +                     cellsize = gd->linedata[i].cellsize;
> +                     line = xrealloc(line,1,cellsize+1);
> +                     for (j = 0; j < cellsize; j++) {
> +                                     line[j] = 
> gd->linedata[i].celldata[j].data;
> +                     }
> +                     line[cellsize]='\0';
> +
> +                     buf = xrealloc(buf, 1, len + cellsize + 1);
> +                     memcpy(buf + len, line, cellsize);
> +                     len += cellsize;
> +                     buf[len++] = '\n';
> +
> +             }
> +             xfree(line);
>       }
>       limit = options_get_number(&global_options, "buffer-limit");
> -- 
> 1.7.4.2
> 
> --------------------------
> Raghavendra Prabhu
> GPG ID:D72BE977
> 



------------------------------------------------------------------------------
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