ui: Add 'indented-string'.

* guix/scripts/pull.scm (display-news-entry): Remove extra space in
format string for 'indented-string'.
(indented-string): Remove.
(display-new/upgraded-packages)[pretty]: Pass #:initial-indent? to
'indented-string'.
* guix/ui.scm (indented-string): New procedure.
This commit is contained in:
Ludovic Courtès 2020-03-20 12:44:43 +01:00
parent ea6e2299b4
commit 7b322d3c4c
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 20 additions and 15 deletions

View file

@ -269,7 +269,7 @@ (define commit
(let ((body (or (assoc-ref body language)
(assoc-ref body (%default-message-language))
"")))
(format port " ~a~%"
(format port "~a~%"
(indented-string
(parameterize ((%text-width (- (%text-width) 4)))
(string-trim-right
@ -520,19 +520,6 @@ (define (ensure-default-profile)
;;; Queries.
;;;
(define (indented-string str indent)
"Return STR with each newline preceded by IDENT spaces."
(define indent-string
(make-list indent #\space))
(list->string
(string-fold-right (lambda (chr result)
(if (eqv? chr #\newline)
(cons chr (append indent-string result))
(cons chr result)))
'()
str)))
(define profile-package-alist
(mlambda (profile)
"Return a name/version alist representing the packages in PROFILE."
@ -589,7 +576,7 @@ (define* (display-new/upgraded-packages alist1 alist2
(define (pretty str column)
(indented-string (fill-paragraph str (- (%text-width) 4)
column)
4))
4 #:initial-indent? #f))
(define concise/max-item-count
;; Maximum number of items to display when CONCISE? is true.

View file

@ -104,6 +104,7 @@ (define-module (guix ui)
read/eval
read/eval-package-expression
check-available-space
indented-string
fill-paragraph
%text-width
texi->plain-text
@ -1206,6 +1207,23 @@ (define-syntax with-error-handling
(lambda ()
body ...)))))
(define* (indented-string str indent
#:key (initial-indent? #t))
"Return STR with each newline preceded by IDENT spaces. When
INITIAL-INDENT? is true, the first line is also indented."
(define indent-string
(make-list indent #\space))
(list->string
(string-fold-right (lambda (chr result)
(if (eqv? chr #\newline)
(cons chr (append indent-string result))
(cons chr result)))
'()
(if initial-indent?
(string-append (list->string indent-string) str)
str))))
(define* (fill-paragraph str width #:optional (column 0))
"Fill STR such that each line contains at most WIDTH characters, assuming
that the first character is at COLUMN.