bournish: 'ls' adjusts the column width depending on the entries.

* guix/build/bournish.scm (display-tabulated): Remove #:columns and
  #:column-width parameters.  Add #:terminal-width and #:column-gap.
  Compute COLUMN-WIDTH and COLUMNS.
This commit is contained in:
Ludovic Courtès 2017-05-13 15:41:57 +02:00
parent c7d1b061f5
commit 1812205cf5
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -48,11 +48,19 @@ (define (expand-variable str)
str))
(define* (display-tabulated lst
#:key (columns 3)
(column-width (/ 78 columns)))
"Display the list of string LST in COLUMNS columns of COLUMN-WIDTH
characters."
#:key
(terminal-width 80)
(column-gap 2))
"Display the list of string LST in as many columns as needed given
TERMINAL-WIDTH. Use COLUMN-GAP spaces between two subsequent columns."
(define len (length lst))
(define column-width
;; The width of a column. Assume all the columns have the same width
;; (GNU ls is smarter than that.)
(+ column-gap (reduce max 0 (map string-length lst))))
(define columns
(max 1
(quotient terminal-width column-width)))
(define pad
(if (zero? (modulo len columns))
0