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