guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 01/02: texinfo: Add '*line-width*' fluid to control line


From: Ludovic Courtès
Subject: [Guile-commits] 01/02: texinfo: Add '*line-width*' fluid to control line wrapping.
Date: Wed, 29 Jan 2020 09:20:26 -0500 (EST)

civodul pushed a commit to branch master
in repository guile.

commit c4b2bd378136ed0177a88642220ea85eef034ced
Author: Ludovic Courtès <address@hidden>
AuthorDate: Wed Jan 29 14:56:17 2020 +0100

    texinfo: Add '*line-width*' fluid to control line wrapping.
    
    * module/texinfo/plain-text.scm (*line-width*): New variable.
    (wrap*): Honor it.
    * doc/ref/texinfo.texi (texinfo plain-text): Document it.
    * test-suite/tests/texinfo.plain-text.test: New file.
    * test-suite/Makefile.am (SCM_TESTS): Add it.
---
 doc/ref/texinfo.texi                     |  8 +++++++-
 module/texinfo/plain-text.scm            | 11 +++++++----
 test-suite/Makefile.am                   |  1 +
 test-suite/tests/texinfo.plain-text.test | 34 ++++++++++++++++++++++++++++++++
 4 files changed, 49 insertions(+), 5 deletions(-)

diff --git a/doc/ref/texinfo.texi b/doc/ref/texinfo.texi
index 5006fd4..64a866b 100644
--- a/doc/ref/texinfo.texi
+++ b/doc/ref/texinfo.texi
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Guile Reference Manual.
-@c Copyright (C) 2013 Free Software Foundation, Inc.
+@c Copyright (C) 2013, 2020 Free Software Foundation, Inc.
 @c See the file guile.texi for copying conditions.
 
 @c Note: Don't use "Texinfo" as the node name here because this leads to
@@ -452,6 +452,12 @@ Transform @var{tree} into plain text. Returns a string.
 
 @end defun
 
+@defvr {Scheme Variable} *line-width*
+This fluid (@pxref{Fluids and Dynamic States}) specifies the length of
+line for the purposes of line wrapping in the @code{stexi->plain-text}
+conversion.
+@end defvr
+
 @node texinfo serialize
 @subsection (texinfo serialize)
 @subsubsection Overview
diff --git a/module/texinfo/plain-text.scm b/module/texinfo/plain-text.scm
index 809cdb7..6b7885a 100644
--- a/module/texinfo/plain-text.scm
+++ b/module/texinfo/plain-text.scm
@@ -1,6 +1,6 @@
 ;;;; (texinfo plain-text) -- rendering stexinfo as plain text
 ;;;;
-;;;;   Copyright (C) 2009, 2010, 2011, 2013  Free Software Foundation, Inc.
+;;;;   Copyright (C) 2009, 2010, 2011, 2013, 2020  Free Software Foundation, 
Inc.
 ;;;;    Copyright (C) 2003,2004,2009  Andy Wingo <wingo at pobox dot com>
 ;;;; 
 ;;;; This library is free software; you can redistribute it and/or
@@ -32,7 +32,8 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-13)
   #:use-module (ice-9 match)
-  #:export (stexi->plain-text))
+  #:export (stexi->plain-text
+            *line-width*))
 
 ;; The return value is a string.
 (define (arg-ref key %-args)
@@ -52,6 +53,7 @@
 
 (define *indent* (make-fluid ""))
 (define *itemizer* (make-fluid (make-ticker "* ")))
+(define *line-width* (make-fluid 72))
 
 (define-macro (with-indent n . body)
   `(with-fluids ((*indent* (string-append (fluid-ref *indent*)
@@ -69,9 +71,10 @@
      ,@body))
 
 (define (wrap* . strings)
-  (let ((indent (fluid-ref *indent*)))
+  (let ((indent (fluid-ref *indent*))
+        (width  (fluid-ref *line-width*)))
     (fill-string (string-concatenate strings)
-                 #:line-width 72 #:initial-indent indent
+                 #:line-width width #:initial-indent indent
                  #:subsequent-indent indent)))
 (define (wrap . strings)
   (string-append (apply wrap* strings) "\n\n"))
diff --git a/test-suite/Makefile.am b/test-suite/Makefile.am
index 3810197..0dc86b0 100644
--- a/test-suite/Makefile.am
+++ b/test-suite/Makefile.am
@@ -179,6 +179,7 @@ SCM_TESTS = tests/00-initial-env.test               \
            tests/texinfo.test                  \
            tests/texinfo.docbook.test          \
            tests/texinfo.html.test             \
+           tests/texinfo.plain-text.test       \
            tests/texinfo.serialize.test        \
            tests/texinfo.string-utils.test     \
            tests/threads.test                  \
diff --git a/test-suite/tests/texinfo.plain-text.test 
b/test-suite/tests/texinfo.plain-text.test
new file mode 100644
index 0000000..565da8c
--- /dev/null
+++ b/test-suite/tests/texinfo.plain-text.test
@@ -0,0 +1,34 @@
+;;;; texinfo.plain-text.test                 -*- scheme -*-
+;;;;
+;;;; Copyright (C) 2020 Free Software Foundation, Inc.
+;;;;
+;;;; This program is free software; you can redistribute it and/or
+;;;; modify it under the terms of the GNU General Public License as
+;;;; published by the Free Software Foundation; either version 3 of the
+;;;; License, or (at your option) any later version.
+;;;;
+;;;; This program is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;;; General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU General Public License
+;;;; along with this library; if not, write to the Free Software
+;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+;;;; 02110-1301 USA
+
+(define-module (test-suite test-plain-text)
+  #:use-module (test-suite lib)
+  #:use-module (texinfo plain-text))
+
+(with-test-prefix "stexi->plain-text"
+  (pass-if-equal "one paragraph, default line width"
+      "This is another sentence.  That too.\n\n"
+    (stexi->plain-text
+     '(*fragment* (para "This is another sentence. That too."))))
+
+  (pass-if-equal "one paragraph, *line-width* set"
+      "This is another sentence.\nThat too.\n\n"
+    (with-fluids ((*line-width* 26))
+      (stexi->plain-text
+       '(*fragment* (para "This is another sentence. That too."))))))



reply via email to

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