aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès2020-11-01 16:38:18 +0100
committerLudovic Courtès2020-11-01 16:38:18 +0100
commit2f4e62c0a0d9e7cf02b93a598287e4ed7713cb2b (patch)
tree68e8b5557785d7aecc826be31c3f63a8e231cff0
parent1f01fe1e1531200a5b712a835f6915fbd8562d32 (diff)
downloadskribilo-2f4e62c0a0d9e7cf02b93a598287e4ed7713cb2b.tar.gz
skribilo-2f4e62c0a0d9e7cf02b93a598287e4ed7713cb2b.tar.lz
skribilo-2f4e62c0a0d9e7cf02b93a598287e4ed7713cb2b.zip
justify: Turn the current justifier into a parameter.
* src/guile/skribilo/utils/justify.scm (*justifiers*): Remove. (*justifier*): New variable. (output-justified, output-token, output-newline) (output-flush, justification-width, with-justification) (with-justification/noflush): Adjust accordingly.
-rw-r--r--src/guile/skribilo/utils/justify.scm33
1 files changed, 14 insertions, 19 deletions
diff --git a/src/guile/skribilo/utils/justify.scm b/src/guile/skribilo/utils/justify.scm
index 09ac01f..3484bcf 100644
--- a/src/guile/skribilo/utils/justify.scm
+++ b/src/guile/skribilo/utils/justify.scm
@@ -96,7 +96,7 @@
;* output ... */
;*---------------------------------------------------------------------*/
(define (output-justified str)
- ((car *justifiers*) 'output str))
+ ((*justifier*) 'output str))
;*---------------------------------------------------------------------*/
;* output-token ... */
@@ -105,13 +105,13 @@
;* contains #\spaces. */
;*---------------------------------------------------------------------*/
(define (output-token str)
- ((car *justifiers*) 'output (string-replace-char str #\space #\bs)))
+ ((*justifier*) 'output (string-replace-char str #\space #\bs)))
;*---------------------------------------------------------------------*/
;* output-newline ... */
;*---------------------------------------------------------------------*/
(define (output-newline)
- ((car *justifiers*) 'newline))
+ ((*justifier*) 'newline))
;*---------------------------------------------------------------------*/
;* output-flush ... */
@@ -126,13 +126,13 @@
(lambda (x)
(display (text-string x))
(newline)))
- ((car *justifiers*) 'flush)))
+ ((*justifier*) 'flush)))
;*---------------------------------------------------------------------*/
;* justification-width ... */
;*---------------------------------------------------------------------*/
(define (justification-width)
- ((car *justifiers*) 'width))
+ ((*justifier*) 'width))
;*---------------------------------------------------------------------*/
;* with-justification ... */
@@ -141,11 +141,10 @@
(output-flush (*margin*))
(parameterize ((*margin* (if margin
(+ (*margin*) margin)
- (*margin*))))
- (set! *justifiers* (cons justifier *justifiers*))
+ (*margin*)))
+ (*justifier* justifier))
(thunk)
- (output-flush (*margin*))
- (set! *justifiers* (cdr *justifiers*))))
+ (output-flush (*margin*))))
;*---------------------------------------------------------------------*/
;* with-justification/noflush ... */
@@ -153,12 +152,10 @@
(define* (with-justification/noflush justifier thunk #:optional margin)
(parameterize ((*margin* (if margin
(+ (*margin*) margin)
- (*margin*))))
- (set! *justifiers* (cons justifier *justifiers*))
+ (*margin*)))
+ (*justifier* justifier))
(thunk)
- (let ((res ((car *justifiers*) 'flush)))
- (set! *justifiers* (cdr *justifiers*))
- res)))
+ ((*justifier*) 'flush)))
;*---------------------------------------------------------------------*/
;* *spaces* ... */
@@ -415,11 +412,9 @@
(else
(error "justifier" "Invalid command" cmd))))))))
-;*---------------------------------------------------------------------*/
-;* *justifiers* ... */
-;*---------------------------------------------------------------------*/
-(define *justifiers* (list (make-justifier *text-column-width*
- *text-justification*)))
+(define *justifier*
+ (make-parameter (make-justifier *text-column-width*
+ *text-justification*)))
;;; justify.scm ends here