Skip to content

Commit

Permalink
Show count of search results in copy mode.
Browse files Browse the repository at this point in the history
  • Loading branch information
nicm committed Mar 24, 2017
1 parent df3ab87 commit 591b26e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
2 changes: 1 addition & 1 deletion colour.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ colour_to_6cube(int v)
* map our RGB colour to the closest in the cube, also work out the closest
* grey, and use the nearest of the two.
*
* Note that the xterm has much lower resolution for darker colors (they are
* Note that the xterm has much lower resolution for darker colours (they are
* not evenly spread out), so our 6 levels are not evenly spread: 0x0, 0x5f
* (95), 0x87 (135), 0xaf (175), 0xd7 (215) and 0xff (255). Greys are more
* evenly spread (8, 18, 28 ... 238).
Expand Down
30 changes: 27 additions & 3 deletions window-copy.c
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ struct window_copy_mode_data {
int searchtype;
char *searchstr;
bitstr_t *searchmark;
u_int searchcount;
int searchthis;
int searchx;
int searchy;
int searcho;
Expand Down Expand Up @@ -1170,7 +1172,7 @@ window_copy_search_marks(struct window_pane *wp, struct screen *ssp)
struct screen *s = data->backing, ss;
struct screen_write_ctx ctx;
struct grid *gd = s->grid;
int found, cis;
int found, cis, which = -1;
u_int px, py, b, nfound = 0, width;

if (ssp == NULL) {
Expand All @@ -1196,7 +1198,10 @@ window_copy_search_marks(struct window_pane *wp, struct screen *ssp)
px, gd->sx, cis);
if (!found)
break;

nfound++;
if (px == data->cx && py == gd->hsize + data->cy - data->oy)
which = nfound;

b = (py * gd->sx) + px;
bit_nset(data->searchmark, b, b + width - 1);
Expand All @@ -1205,6 +1210,12 @@ window_copy_search_marks(struct window_pane *wp, struct screen *ssp)
}
}

if (which != -1)
data->searchthis = 1 + nfound - which;
else
data->searchthis = -1;
data->searchcount = nfound;

if (ssp == &ss)
screen_free(&ss);
return (nfound);
Expand Down Expand Up @@ -1262,8 +1273,21 @@ window_copy_write_line(struct window_pane *wp, struct screen_write_ctx *ctx,
gc.flags |= GRID_FLAG_NOPALETTE;

if (py == 0) {
size = xsnprintf(hdr, sizeof hdr,
"[%u/%u]", data->oy, screen_hsize(data->backing));
if (data->searchmark == NULL) {
size = xsnprintf(hdr, sizeof hdr,
"[%u/%u]", data->oy, screen_hsize(data->backing));
} else {
if (data->searchthis == -1) {
size = xsnprintf(hdr, sizeof hdr,
"(%u results) [%d/%u]", data->searchcount,
data->oy, screen_hsize(data->backing));
} else {
size = xsnprintf(hdr, sizeof hdr,
"(%u/%u results) [%d/%u]", data->searchthis,
data->searchcount, data->oy,
screen_hsize(data->backing));
}
}
if (size > screen_size_x(s))
size = screen_size_x(s);
screen_write_cursormove(ctx, screen_size_x(s) - size, 0);
Expand Down

0 comments on commit 591b26e

Please sign in to comment.