summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-03-11 16:07:04 +0100
committerLudovic Courtès <ludo@gnu.org>2020-03-11 18:42:08 +0100
commit3c1ea8dcef3342dba9fb1456effb31eb106a189a (patch)
tree114591c6ca6204a819799894849ab9d9b44add4b
parent10c2ca9e4ab1925e7a6791627dd60e843aff28ee (diff)
downloadpatches-3c1ea8dcef3342dba9fb1456effb31eb106a189a.tar
patches-3c1ea8dcef3342dba9fb1456effb31eb106a189a.tar.gz
ui: Restore line wrapping for 'package->recutils'.
Fixes a regression introduced when switching to Guile 3.0.0 whereby monkey-patching 'wrap*' wouldn't have any effects due to inlining. * guix/ui.scm (%text-width): Define in terms of the '*line-width*' fluid when it's defined. <top level>: Set (@@ (texinfo plain-text) wrap*) only when '*line-width*' is undefined.
-rw-r--r--guix/ui.scm27
1 files changed, 17 insertions, 10 deletions
diff --git a/guix/ui.scm b/guix/ui.scm
index fbe2b70485..6f1ca9c0b2 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -1218,16 +1218,23 @@ converted to a space; sequences of more than one line break are preserved."
;;;
(define %text-width
- (make-parameter (terminal-columns)))
-
-(set! (@@ (texinfo plain-text) wrap*)
- ;; XXX: Monkey patch this private procedure to let 'package->recutils'
- ;; parameterize the fill of description field correctly.
- (lambda strings
- (let ((indent (fluid-ref (@@ (texinfo plain-text) *indent*))))
- (fill-string (string-concatenate strings)
- #:line-width (%text-width) #:initial-indent indent
- #:subsequent-indent indent))))
+ ;; '*line-width*' was introduced in Guile 2.2.7/3.0.1. On older versions of
+ ;; Guile, monkey-patch 'wrap*' below.
+ (if (defined? '*line-width*)
+ (let ((parameter (fluid->parameter *line-width*)))
+ (parameter (terminal-columns))
+ parameter)
+ (make-parameter (terminal-columns))))
+
+(unless (defined? '*line-width*) ;Guile < 2.2.7
+ (set! (@@ (texinfo plain-text) wrap*)
+ ;; XXX: Monkey patch this private procedure to let 'package->recutils'
+ ;; parameterize the fill of description field correctly.
+ (lambda strings
+ (let ((indent (fluid-ref (@@ (texinfo plain-text) *indent*))))
+ (fill-string (string-concatenate strings)
+ #:line-width (%text-width) #:initial-indent indent
+ #:subsequent-indent indent)))))
(define (texi->plain-text str)
"Return a plain-text representation of texinfo fragment STR."