10.4.3 Advanced Formatting

It is frequently useful to post-process the fields in some way. Padding, limiting, cutting off parts and suppressing certain values can be achieved by using tilde modifiers. A typical tilde spec might look like ‘%~(cut 3)~(ignore "0")y’.

These are the valid modifiers:

pad
pad-left

Pad the field to the left with spaces until it reaches the required length.

pad-right

Pad the field to the right with spaces until it reaches the required length.

max
max-left

Cut off characters from the left until it reaches the specified length.

max-right

Cut off characters from the right until it reaches the specified length.

cut
cut-left

Cut off the specified number of characters from the left.

cut-right

Cut off the specified number of characters from the right.

ignore

Return an empty string if the field is equal to the specified value.

form

Use the specified form as the field value when the ‘@’ spec is used.

Here’s an example:

"~(form (current-time-string))@"

Let’s take an example. The ‘%o’ spec in the summary mode lines will return a date in compact ISO8601 format—‘19960809T230410’. This is quite a mouthful, so we want to shave off the century number and the time, leaving us with a six-character date. That would be ‘%~(cut-left 2)~(max-right 6)~(pad 6)o’. (Cutting is done before maxing, and we need the padding to ensure that the date is never less than 6 characters to make it look nice in columns.)

Ignoring is done first; then cutting; then maxing; and then as the very last operation, padding.