mirror of
https://github.com/tmux/tmux.git
synced 2025-03-24 23:08:47 +00:00
Align index numbers in trees, from David Mandelberg, GitHub issue 4360.
This commit is contained in:
parent
80eb460fc9
commit
5d1a6acc84
20
mode-tree.c
20
mode-tree.c
@ -66,6 +66,7 @@ struct mode_tree_data {
|
||||
u_int line_size;
|
||||
|
||||
u_int depth;
|
||||
u_int maxdepth;
|
||||
|
||||
u_int width;
|
||||
u_int height;
|
||||
@ -196,6 +197,8 @@ mode_tree_build_lines(struct mode_tree_data *mtd,
|
||||
int flat = 1;
|
||||
|
||||
mtd->depth = depth;
|
||||
if (depth > mtd->maxdepth)
|
||||
mtd->maxdepth = depth;
|
||||
TAILQ_FOREACH(mti, mtl, entry) {
|
||||
mtd->line_list = xreallocarray(mtd->line_list,
|
||||
mtd->line_size + 1, sizeof *mtd->line_list);
|
||||
@ -528,6 +531,7 @@ mode_tree_build(struct mode_tree_data *mtd)
|
||||
TAILQ_INIT(&mtd->saved);
|
||||
|
||||
mode_tree_clear_lines(mtd);
|
||||
mtd->maxdepth = 0;
|
||||
mode_tree_build_lines(mtd, &mtd->children, 0);
|
||||
|
||||
if (mtd->line_list != NULL && tag == UINT64_MAX)
|
||||
@ -658,7 +662,7 @@ mode_tree_draw(struct mode_tree_data *mtd)
|
||||
char *text, *start, *key;
|
||||
const char *tag, *symbol;
|
||||
size_t size, n;
|
||||
int keylen, pad;
|
||||
int keylen, pad, namelen[mtd->maxdepth + 1];
|
||||
|
||||
if (mtd->line_size == 0)
|
||||
return;
|
||||
@ -682,6 +686,15 @@ mode_tree_draw(struct mode_tree_data *mtd)
|
||||
keylen = mti->keylen + 3;
|
||||
}
|
||||
|
||||
for (i = 0; i < mtd->maxdepth + 1; i++)
|
||||
namelen[i] = 0;
|
||||
for (i = 0; i < mtd->line_size; i++) {
|
||||
line = &mtd->line_list[i];
|
||||
mti = line->item;
|
||||
if ((int)strlen(mti->name) > namelen[line->depth])
|
||||
namelen[line->depth] = strlen(mti->name);
|
||||
}
|
||||
|
||||
for (i = 0; i < mtd->line_size; i++) {
|
||||
if (i < mtd->offset)
|
||||
continue;
|
||||
@ -731,8 +744,9 @@ mode_tree_draw(struct mode_tree_data *mtd)
|
||||
tag = "*";
|
||||
else
|
||||
tag = "";
|
||||
xasprintf(&text, "%-*s%s%s%s%s", keylen, key, start, mti->name,
|
||||
tag, (mti->text != NULL) ? ": " : "" );
|
||||
xasprintf(&text, "%-*s%s%*s%s%s", keylen, key, start,
|
||||
namelen[line->depth], mti->name, tag,
|
||||
(mti->text != NULL) ? ": " : "" );
|
||||
width = utf8_cstrwidth(text);
|
||||
if (width > w)
|
||||
width = w;
|
||||
|
Loading…
Reference in New Issue
Block a user