mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 10:08:47 +00:00
|PatchSet 874
|Date: 2011/03/28 21:17:39 |Author: nicm |Branch: HEAD |Tag: (none) |Log: |Allow a start and end line to be specified for capture-pane which may be |negative to capture part of the history. Prompted by request from Victor |J Orlikowski.
This commit is contained in:
parent
8ab7fcf7eb
commit
0a2b3492c3
@ -1,4 +1,4 @@
|
|||||||
/* $Id: cmd-capture-pane.c,v 1.6 2011-01-07 14:45:33 tcunha Exp $ */
|
/* $Id: cmd-capture-pane.c,v 1.7 2011-04-06 22:19:42 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009 Jonathan Alvarado <radobobo@users.sourceforge.net>
|
* Copyright (c) 2009 Jonathan Alvarado <radobobo@users.sourceforge.net>
|
||||||
@ -31,8 +31,8 @@ int cmd_capture_pane_exec(struct cmd *, struct cmd_ctx *);
|
|||||||
|
|
||||||
const struct cmd_entry cmd_capture_pane_entry = {
|
const struct cmd_entry cmd_capture_pane_entry = {
|
||||||
"capture-pane", "capturep",
|
"capture-pane", "capturep",
|
||||||
"b:t:", 0, 0,
|
"b:E:S:t:", 0, 0,
|
||||||
"[-b buffer-index] [-t target-pane]",
|
"[-b buffer-index] [-E end-line] [-S start-line] [-t target-pane]",
|
||||||
0,
|
0,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
@ -46,19 +46,47 @@ cmd_capture_pane_exec(struct cmd *self, struct cmd_ctx *ctx)
|
|||||||
struct window_pane *wp;
|
struct window_pane *wp;
|
||||||
char *buf, *line, *cause;
|
char *buf, *line, *cause;
|
||||||
struct screen *s;
|
struct screen *s;
|
||||||
int buffer;
|
struct grid *gd;
|
||||||
u_int i, limit;
|
int buffer, n;
|
||||||
|
u_int i, limit, top, bottom, tmp;
|
||||||
size_t len, linelen;
|
size_t len, linelen;
|
||||||
|
|
||||||
if (cmd_find_pane(ctx, args_get(args, 't'), NULL, &wp) == NULL)
|
if (cmd_find_pane(ctx, args_get(args, 't'), NULL, &wp) == NULL)
|
||||||
return (-1);
|
return (-1);
|
||||||
s = &wp->base;
|
s = &wp->base;
|
||||||
|
gd = s->grid;
|
||||||
|
|
||||||
buf = NULL;
|
buf = NULL;
|
||||||
len = 0;
|
len = 0;
|
||||||
|
|
||||||
for (i = 0; i < screen_size_y(s); i++) {
|
n = args_strtonum(args, 'S', SHRT_MIN, SHRT_MAX, &cause);
|
||||||
line = grid_view_string_cells(s->grid, 0, i, screen_size_x(s));
|
if (cause != NULL)
|
||||||
|
top = gd->hsize;
|
||||||
|
else if (n < 0 && (u_int) -n > gd->hsize)
|
||||||
|
top = 0;
|
||||||
|
else
|
||||||
|
top = gd->hsize + n;
|
||||||
|
if (top > gd->hsize + gd->sy - 1)
|
||||||
|
top = gd->hsize + gd->sy - 1;
|
||||||
|
|
||||||
|
n = args_strtonum(args, 'E', SHRT_MIN, SHRT_MAX, &cause);
|
||||||
|
if (cause != NULL)
|
||||||
|
bottom = gd->hsize + gd->sy - 1;
|
||||||
|
else if (n < 0 && (u_int) -n > gd->hsize)
|
||||||
|
bottom = 0;
|
||||||
|
else
|
||||||
|
bottom = gd->hsize + n;
|
||||||
|
if (bottom > gd->hsize + gd->sy - 1)
|
||||||
|
bottom = gd->hsize + gd->sy - 1;
|
||||||
|
|
||||||
|
if (bottom < top) {
|
||||||
|
tmp = bottom;
|
||||||
|
bottom = top;
|
||||||
|
top = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = top; i <= bottom; i++) {
|
||||||
|
line = grid_string_cells(s->grid, 0, i, screen_size_x(s));
|
||||||
linelen = strlen(line);
|
linelen = strlen(line);
|
||||||
|
|
||||||
buf = xrealloc(buf, 1, len + linelen + 1);
|
buf = xrealloc(buf, 1, len + linelen + 1);
|
||||||
|
11
tmux.1
11
tmux.1
@ -1,4 +1,4 @@
|
|||||||
.\" $Id: tmux.1,v 1.297 2011-04-06 22:16:33 nicm Exp $
|
.\" $Id: tmux.1,v 1.298 2011-04-06 22:19:42 nicm Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
.\"
|
.\"
|
||||||
@ -957,11 +957,20 @@ If
|
|||||||
is given, the new window does not become the current window.
|
is given, the new window does not become the current window.
|
||||||
.It Xo Ic capture-pane
|
.It Xo Ic capture-pane
|
||||||
.Op Fl b Ar buffer-index
|
.Op Fl b Ar buffer-index
|
||||||
|
.Op Fl E Ar end-line
|
||||||
|
.Op Fl S Ar start-line
|
||||||
.Op Fl t Ar target-pane
|
.Op Fl t Ar target-pane
|
||||||
.Xc
|
.Xc
|
||||||
.D1 (alias: Ic capturep )
|
.D1 (alias: Ic capturep )
|
||||||
Capture the contents of a pane to the specified buffer, or a new buffer if none
|
Capture the contents of a pane to the specified buffer, or a new buffer if none
|
||||||
is specified.
|
is specified.
|
||||||
|
.Pp
|
||||||
|
.Fl S
|
||||||
|
and
|
||||||
|
.Fl E
|
||||||
|
specify the starting and ending line numbers, zero is the first line of the
|
||||||
|
visible pane and negative numbers are lines in the history.
|
||||||
|
The default is to capture only the visible contents of the pane.
|
||||||
.It Xo
|
.It Xo
|
||||||
.Ic choose-client
|
.Ic choose-client
|
||||||
.Op Fl t Ar target-window
|
.Op Fl t Ar target-window
|
||||||
|
Loading…
Reference in New Issue
Block a user