column: use NOEXTREMES for the last column

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2017-04-03 14:43:13 +02:00
parent 90852c3e12
commit c728e00012
2 changed files with 27 additions and 1 deletions

View File

@ -87,7 +87,9 @@ very long table entries may be printed on multiple lines.
.IP "\fB\-E, \-\-table-noextreme\fP \fIcolumns\fP"
Specify columns where is possible to ignore unusually long (longer than
average) cells when calculate column width. The option has impact to the width
calculation, but the printed text is not affected.
calculation and table formatting, but the printed text is not affected.
The option is used for the last visible column by default.
.IP "\fB\-W, \-\-table-wrap\fP \fIcolumns\fP"
Specify columns where is possible to use multi-line cell for long text when
necessary.

View File

@ -230,6 +230,24 @@ static struct libscols_column *string_to_column(struct column_control *ctl, cons
return scols_table_get_column(ctl->tab, colnum);
}
static struct libscols_column *get_last_visible_column(struct column_control *ctl)
{
struct libscols_iter *itr;
struct libscols_column *cl, *last = NULL;
itr = scols_new_iter(SCOLS_ITER_FORWARD);
if (!itr)
err_oom();
while (scols_table_next_column(ctl->tab, itr, &cl) == 0) {
if (scols_column_get_flags(cl) & SCOLS_FL_HIDDEN)
continue;
last = cl;
}
scols_free_iter(itr);
return last;
}
static int column_set_flag(struct libscols_column *cl, int fl)
{
@ -344,6 +362,12 @@ static void modify_table(struct column_control *ctl)
apply_columnflag_from_list(ctl, ctl->tab_colhide,
SCOLS_FL_HIDDEN , _("failed to parse --table-hide list"));
if (!ctl->tab_colnoextrem) {
struct libscols_column *cl = get_last_visible_column(ctl);
if (cl)
column_set_flag(cl, SCOLS_FL_NOEXTREMES);
}
if (ctl->tree)
create_tree(ctl);