mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 20:00:19 +02:00
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.
This commit is contained in:
parent
f2781c9604
commit
c4b2bd3781
4 changed files with 49 additions and 5 deletions
|
@ -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
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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 \
|
||||
|
|
34
test-suite/tests/texinfo.plain-text.test
Normal file
34
test-suite/tests/texinfo.plain-text.test
Normal file
|
@ -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."))))))
|
Loading…
Add table
Add a link
Reference in a new issue