guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Ludovic Courtès
Subject: 02/02: bournish: 'ls' adjusts the column width depending on the entries.
Date: Sat, 13 May 2017 10:52:27 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 1812205cf56011293cdd3c8d522e4154c8e617dd
Author: Ludovic Courtès <address@hidden>
Date:   Sat May 13 15:41:57 2017 +0200

    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.
---
 guix/build/bournish.scm | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/guix/build/bournish.scm b/guix/build/bournish.scm
index 7aa1f8c..247a687 100644
--- a/guix/build/bournish.scm
+++ b/guix/build/bournish.scm
@@ -48,11 +48,19 @@ refers to."
       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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]