summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/window-copy.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2022-06-21 09:30:02 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2022-06-21 09:30:02 +0000
commit2c4996bd801d0f1adabe59891da5d4b1cb96a959 (patch)
tree27b8793545eb859309aaabffbb67625cbc9e3810 /usr.bin/tmux/window-copy.c
parent9525288c28cedd2dda4d16de0809abf64108e777 (diff)
Store time lines are scrolled into history and display in copy mode.
Diffstat (limited to 'usr.bin/tmux/window-copy.c')
-rw-r--r--usr.bin/tmux/window-copy.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/usr.bin/tmux/window-copy.c b/usr.bin/tmux/window-copy.c
index a6a02ab5217..e99c021ee49 100644
--- a/usr.bin/tmux/window-copy.c
+++ b/usr.bin/tmux/window-copy.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: window-copy.c,v 1.335 2022/06/09 09:12:55 nicm Exp $ */
+/* $OpenBSD: window-copy.c,v 1.336 2022/06/21 09:30:01 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -4092,8 +4092,9 @@ window_copy_write_line(struct window_mode_entry *wme,
struct window_copy_mode_data *data = wme->data;
struct screen *s = &data->screen;
struct options *oo = wp->window->options;
+ struct grid_line *gl;
struct grid_cell gc, mgc, cgc, mkgc;
- char hdr[512];
+ char hdr[512], tmp[256], *t;
size_t size = 0;
u_int hsize = screen_hsize(data->backing);
@@ -4107,23 +4108,29 @@ window_copy_write_line(struct window_mode_entry *wme,
mkgc.flags |= GRID_FLAG_NOPALETTE;
if (py == 0 && s->rupper < s->rlower && !data->hide_position) {
+ gl = grid_get_line(data->backing->grid, hsize - data->oy);
+ if (gl->time == 0)
+ xsnprintf(tmp, sizeof tmp, "[%u/%u]", data->oy, hsize);
+ else {
+ t = format_pretty_time(gl->time, 1);
+ xsnprintf(tmp, sizeof tmp, "%s [%u/%u]", t, data->oy,
+ hsize);
+ free(t);
+ }
+
if (data->searchmark == NULL) {
if (data->timeout) {
size = xsnprintf(hdr, sizeof hdr,
- "(timed out) [%u/%u]", data->oy, hsize);
- } else {
- size = xsnprintf(hdr, sizeof hdr,
- "[%u/%u]", data->oy, hsize);
- }
+ "(timed out) %s", tmp);
+ } else
+ size = xsnprintf(hdr, sizeof hdr, "%s", tmp);
} else {
- if (data->searchcount == -1) {
- size = xsnprintf(hdr, sizeof hdr,
- "[%u/%u]", data->oy, hsize);
- } else {
+ if (data->searchcount == -1)
+ size = xsnprintf(hdr, sizeof hdr, "%s", tmp);
+ else {
size = xsnprintf(hdr, sizeof hdr,
- "(%d%s results) [%u/%u]", data->searchcount,
- data->searchmore ? "+" : "", data->oy,
- hsize);
+ "(%d%s results) %s", data->searchcount,
+ data->searchmore ? "+" : "", tmp);
}
}
if (size > screen_size_x(s))