mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 01:48:47 +00:00
Show if filter is active/no matches in modes.
This commit is contained in:
parent
fe7a871a23
commit
0817132f97
21
mode-tree.c
21
mode-tree.c
@ -62,6 +62,7 @@ struct mode_tree_data {
|
|||||||
int preview;
|
int preview;
|
||||||
char *search;
|
char *search;
|
||||||
char *filter;
|
char *filter;
|
||||||
|
int no_matches;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mode_tree_item {
|
struct mode_tree_item {
|
||||||
@ -357,7 +358,8 @@ mode_tree_build(struct mode_tree_data *mtd)
|
|||||||
TAILQ_INIT(&mtd->children);
|
TAILQ_INIT(&mtd->children);
|
||||||
|
|
||||||
mtd->buildcb(mtd->modedata, mtd->sort_type, &tag, mtd->filter);
|
mtd->buildcb(mtd->modedata, mtd->sort_type, &tag, mtd->filter);
|
||||||
if (TAILQ_EMPTY(&mtd->children))
|
mtd->no_matches = TAILQ_EMPTY(&mtd->children);
|
||||||
|
if (mtd->no_matches)
|
||||||
mtd->buildcb(mtd->modedata, mtd->sort_type, &tag, NULL);
|
mtd->buildcb(mtd->modedata, mtd->sort_type, &tag, NULL);
|
||||||
|
|
||||||
mode_tree_free_items(&mtd->saved);
|
mode_tree_free_items(&mtd->saved);
|
||||||
@ -479,7 +481,7 @@ mode_tree_draw(struct mode_tree_data *mtd)
|
|||||||
u_int w, h, i, j, sy, box_x, box_y;
|
u_int w, h, i, j, sy, box_x, box_y;
|
||||||
char *text, *start, key[7];
|
char *text, *start, key[7];
|
||||||
const char *tag, *symbol;
|
const char *tag, *symbol;
|
||||||
size_t size;
|
size_t size, n;
|
||||||
int keylen;
|
int keylen;
|
||||||
|
|
||||||
if (mtd->line_size == 0)
|
if (mtd->line_size == 0)
|
||||||
@ -587,11 +589,24 @@ mode_tree_draw(struct mode_tree_data *mtd)
|
|||||||
screen_write_cursormove(&ctx, 0, h);
|
screen_write_cursormove(&ctx, 0, h);
|
||||||
screen_write_box(&ctx, w, sy - h);
|
screen_write_box(&ctx, w, sy - h);
|
||||||
|
|
||||||
xasprintf(&text, " %s (sort: %s) ", mti->name,
|
xasprintf(&text, " %s (sort: %s)", mti->name,
|
||||||
mtd->sort_list[mtd->sort_type]);
|
mtd->sort_list[mtd->sort_type]);
|
||||||
if (w - 2 >= strlen(text)) {
|
if (w - 2 >= strlen(text)) {
|
||||||
screen_write_cursormove(&ctx, 1, h);
|
screen_write_cursormove(&ctx, 1, h);
|
||||||
screen_write_puts(&ctx, &gc0, "%s", text);
|
screen_write_puts(&ctx, &gc0, "%s", text);
|
||||||
|
|
||||||
|
if (mtd->no_matches)
|
||||||
|
n = (sizeof "no matches") - 1;
|
||||||
|
else
|
||||||
|
n = (sizeof "active") - 1;
|
||||||
|
if (mtd->filter != NULL && w - 2 >= strlen(text) + 10 + n + 2) {
|
||||||
|
screen_write_puts(&ctx, &gc0, " (filter: ");
|
||||||
|
if (mtd->no_matches)
|
||||||
|
screen_write_puts(&ctx, &gc, "no matches");
|
||||||
|
else
|
||||||
|
screen_write_puts(&ctx, &gc0, "active");
|
||||||
|
screen_write_puts(&ctx, &gc0, ") ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free(text);
|
free(text);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user