An indentation column.
Not a number. A tab advances to a stop that depends on what came before it,
so two columns reached through different mixes of tabs and spaces are only
PARTIALLY ordered: one is more indented than another only when it extends
the other's sequence. When neither extends the other, comparing them is an
error the user has to be told about — see ColumnOrder::Incomparable.
Plain is the case that happens on every line of every file anyone has
written, and is kept apart so it costs no allocation. Tabbed holds the
alternating run lengths — chars, tabs, chars, tabs, …, chars — LEFTMOST
first, so a comparison is a straight walk from the start of the line and an
append is a concatenation. (The reference stores the same list reversed; the
order here is the one that makes both operations read forwards.)
Every entry is in half-columns. A run of n tabs is stored as 2n.
That uniformity is what makes the +0.5 convention safe: a | at column N
takes part in comparisons as N.5, and storing tab counts in the same unit
means the half-column tolerance in cmp can never be triggered by a
difference of one tab, which it would if the two units were mixed.