mirror of
https://https.git.savannah.gnu.org/git/groff.git
synced 2026-01-26 15:39:07 +00:00
* tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Put newlines after opening braces in sed scripts. macOS and GNU sed tolerate their absence, but this sed does not. * HACKING: Document this problem.
18107 lines
700 KiB
Plaintext
18107 lines
700 KiB
Plaintext
2023-02-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Port a test to Solaris 11 sed.
|
||
|
||
* tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Put
|
||
newlines after opening braces in sed scripts. macOS and GNU sed
|
||
tolerate their absence, but this sed does not.
|
||
* HACKING: Document this problem.
|
||
|
||
2023-02-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.am (groff_TESTS) [!USE_GROHTML]: Don't
|
||
test the 'grohtml' driver if we know it won't work.
|
||
|
||
2023-02-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/\
|
||
device_control_escapes_express_basic_latin.sh: Use printf(1),
|
||
which is often a shell built-in command, more consistently.
|
||
Double backslashes intended as literals in the format string,
|
||
and single-quote format strings using them. Fixes test failure
|
||
seen on Solaris 11 with GNU Bash 4.4 and ksh 93u+ (2012-08-01).
|
||
|
||
2023-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an_use-input-traps-correctly.sh: Explicitly test
|
||
`SM` and `SB` with 'ps' output device. If one set
|
||
GROFF_TYPESETTER=utf8 in the test environment, these test cases
|
||
would fail. Thanks to John Gardner for the report.
|
||
|
||
2023-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Add Automake conditional, `HAVE_GHOSTSCRIPT`, so
|
||
that we can populate the list of PDF device font tests
|
||
dynamically. Call new macro
|
||
`GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE`. Call
|
||
`GROFF_GHOSTSCRIPT_VERSION_NOTICE` after it, but before
|
||
`GROFF_URW_FONTS_NOTICE`.
|
||
* m4/groff.m4 (GROFF_AWK_NOTICE): New macro produces warning if
|
||
no awk could be found. This reduces gropdf functionality, but
|
||
so do missing URW fonts, so we report this problem separately.
|
||
Report the names under which we sought it, since there's a
|
||
configure script option for that.
|
||
(GROFF_GHOSTSCRIPT_AVAILABILITY_NOTICE): New macro explains
|
||
consequences of missing optional dependency on Ghostscript
|
||
program: reduced grohtml functionality, nonfunctional pdfroff.
|
||
Report the names under which we sought it, since there's a
|
||
configure script option for that.
|
||
(GROFF_CHECK_GROPDF_PROGRAMS): Better characterize gropdf's
|
||
reduced function, pointing out the ways in which it would be
|
||
more useful if the dependencies were met. Also simplify the
|
||
computational grammar.
|
||
(GROFF_URW_FONTS_NOTICE): Identify 'U' as the foundry name
|
||
gropdf uses for the URW fonts. Confirm continuing availability
|
||
of most recent URW fonts release; bump date.
|
||
* font/devpdf/devpdf.am: Test availability of "basic" (PDF base
|
||
14) fonts (plus groff's "EURO") if either Ghostscript or URW
|
||
fonts are available. Test availability of URW fonts (35) only
|
||
if Ghostscript _and_ the URW fonts were found at configuration
|
||
time.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63808>. Thanks to Deri
|
||
James for the report and extremely helpful pseudocode.
|
||
|
||
2023-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK,
|
||
GROFF_URW_FONTS_NOTICE): Add macro dependency on
|
||
`GROFF_GHOSTSCRIPT_PATH`, which should have been there already.
|
||
(GROFF_GROHTML_PROGRAM_NOTICE): Add macro dependency on
|
||
`GROFF_CHECK_GROHTML_PROGRAMS`, which should have been there
|
||
already.
|
||
|
||
(GROFF_CHECK_GROHTML_PROGRAMS, GROFF_PNMTOOLS_CAN_BE_QUIET):
|
||
Move `AC_REQUIRE` expansions to precede shell variable
|
||
assignments (after checking that the required macros don't
|
||
clobber the assignments we're making).
|
||
|
||
2023-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/tests/basic-fonts-present.sh: Revise test again,
|
||
per feedback from Deri James. Even without Ghostscript or URW
|
||
fonts available, gropdf can generate valid PDF documents; it
|
||
simply can't embed fonts in general (without further
|
||
arrangements made on the host system), which means it is
|
||
restricted to the PDF base 14 fonts. That's enough for many
|
||
purposes, including generating our compiled man pages document
|
||
{with minor degradations to the typeface lists in gropdf(1) and
|
||
grops(1)}. Drop the 'gs' command check, which also didn't check
|
||
for the name of the Ghostscript interpreter determined by the
|
||
"configure" script. Replace dynamically generated font list
|
||
with a static one (the base 14 fonts plus groff's EURO).
|
||
|
||
2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/tests/basic-fonts-present.sh: Revise test.
|
||
Improve explanation of why we're looking for the gs(1) command
|
||
in a font availability test. Prefix diagnostic output with name
|
||
of test script. Perform a search for the 'ps' device font
|
||
descriptions that will work in more build scenarios (i.e., don't
|
||
assume an out-of-tree build taking place in an immediate
|
||
subdirectory of the source). Distinguish failure to find the
|
||
font descriptions from a failure to locate the 'gs' command,
|
||
skipping the test in both scenarios. Reduce noise in output.
|
||
* m4/groff.m4 (GROFF_CHECK_GROPDF_PROGRAMS): Revise warning
|
||
issued when awk and Ghostscript are unavailable; gropdf will not
|
||
be completely inoperative. Characterize its reduced function.
|
||
|
||
Thanks to Deri James in <https://lists.gnu.org/archive/html/\
|
||
groff-commit/2023-02/msg00089.html> for prompting me to take a
|
||
another look at this.
|
||
|
||
2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/latin2_works.sh:
|
||
* tmac/tests/latin5_works.sh:
|
||
* tmac/tests/latin9_works.sh: Port to work around macOS's
|
||
apparently POSIX non-conforming 'od' command. Use single-byte
|
||
octal output format instead of "character", and update test
|
||
expectations accordingly. Apparently gratuitously, macOS also
|
||
puts more spaces after the octal address field when using this
|
||
output format.
|
||
* HACKING: Document, and elaborate upon, this problem.
|
||
|
||
2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Port a test to work with macOS sed.
|
||
|
||
* tmac/tests/doc_heading-font-remapping-works.sh: Put semicolons
|
||
between commands and closing braces in sed script. Put each of
|
||
multiple closing braces on a separate input line, because macOS
|
||
doesn't accept them otherwise. Resolves test failure observed
|
||
on macOS.
|
||
* HACKING: Document the closing brace sequence problem.
|
||
|
||
2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Port a test to work with macOS sed.
|
||
|
||
* tmac/tests/an_TS-adds-no-vertical-space.sh: Put semicolons
|
||
between commands and closing braces in sed script. Separate
|
||
command stream into multiple '-e' expressions, breaking them
|
||
after branch and label commands. Resolves test failure observed
|
||
on macOS.
|
||
* HACKING: Document the above problems.
|
||
|
||
2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/\
|
||
some_escapes_accept_newline_delimiters.sh: Weaken regexes in two
|
||
test cases to accommodate excessive output from macOS's 'od'
|
||
command. Resolves test failure seen on macOS.
|
||
* HACKING: Add section "Writing Tests" and document the above
|
||
since this is the second time I've cracked my shin on this.
|
||
|
||
2023-02-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/tests/basic-fonts-present.sh: Skip test if 'gs'
|
||
command not available. The test is to ensure that gropdf will
|
||
produce sound documents using the base fonts from PostScript,
|
||
but since gropdf requires Ghostscript to do this (as noted in
|
||
our "./configure" messages), it makes no sense to validate font
|
||
availability if the program is absent. Resolves test failure
|
||
seen on macOS with minimal dependencies installed.
|
||
|
||
2023-02-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Manipulating Filling and Adjustment): Say more
|
||
about the consequences of a break.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63777>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2023-02-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Re-re-christen 'ESCAPE_AMPERSAND' ('\&'). Now call it a
|
||
{non-transparent} "dummy character". Also rechristen
|
||
'ESCAPE_RIGHT_PARENTHESIS', ('\)') as the "transparent dummy
|
||
character"; it has no impact on sentence-ending detection.
|
||
|
||
* doc/groff.texi:
|
||
* doc/meref.me.in:
|
||
* man/groff.7.man:
|
||
* man/groff_diff.7.man:
|
||
* man/roff.7.man:
|
||
* src/preproc/refer/refer.1.man:
|
||
* tmac/groff_man.7.man.in: Do it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62816>. Thanks to Dave
|
||
Kemper for the report and to the groff mailing list for the
|
||
vigorous discussion. I don't expect my solution to please
|
||
everyone.
|
||
|
||
2023-02-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Add internal register `an*MR-URL-format` to
|
||
select from a few known formats of man page hyperlink. There
|
||
are three known on macOS, and one used everywhere else.
|
||
* tmac/man.local: Document this feature so macOS users can enjoy
|
||
the OSC 8 hyperlink feature if their terminal application
|
||
supports it.
|
||
|
||
I hope that this feature will be a temporary measure while macOS
|
||
implements support for the man page URL format used everywhere
|
||
else in the world.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63768>. Thanks to John
|
||
Gardner for the report, research, consultation, and testing.
|
||
|
||
2023-02-11 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[BuildFoundries]: Fails if neither ghostcript nor URW fonts
|
||
are installed.
|
||
|
||
* font/devpdf/util/BuildFoundries.pl: When the change to hold
|
||
paths in an array, rather than a delimited string (see commit
|
||
4ae4aeb6555f4f16c28fcb03eb1f56577826054c), the FindGSpath
|
||
subroutine should return a pointer to an empty array when the
|
||
call to ghostscript fails, rather than return an empty string,
|
||
as was done previously.
|
||
|
||
See <https://lists.gnu.org/archive/html/groff/2023-02/\
|
||
msg00042.html>; thanks to Bruno Haible for the report.
|
||
|
||
2023-02-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Switch to using system's assert.h header file. It is futile to
|
||
attempt to preserve compatibility with ISO C90 systems by
|
||
providing a bespoke predicate-reporting assert() (a C99 feature)
|
||
when gnulib, which we require, itself demands C99. This ensures
|
||
that `static_assert` remains defined so that gnulib can use it.
|
||
Thanks to Bruno Haible for the consultation.
|
||
<https://lists.gnu.org/archive/html/groff/2023-02/msg00034.html>
|
||
|
||
* src/include/assert.h: Delete.
|
||
|
||
* src/devices/grodvi/dvi.cpp:
|
||
* src/devices/grolbp/lbp.cpp:
|
||
* src/devices/grolj4/lj4.cpp:
|
||
* src/include/itable.h:
|
||
* src/include/stringclass.h:
|
||
* src/libs/libbib/linear.cpp:
|
||
* src/libs/libbib/search.cpp:
|
||
* src/libs/libdriver/printer.cpp:
|
||
* src/libs/libgroff/assert.cpp:
|
||
* src/libs/libgroff/color.cpp:
|
||
* src/libs/libgroff/errarg.cpp:
|
||
* src/libs/libgroff/font.cpp:
|
||
* src/libs/libgroff/nametoindex.cpp:
|
||
* src/libs/libgroff/prime.cpp:
|
||
* src/libs/libgroff/relocate.cpp:
|
||
* src/libs/libgroff/searchpath.cpp:
|
||
* src/preproc/eqn/box.cpp:
|
||
* src/preproc/eqn/delim.cpp:
|
||
* src/preproc/eqn/pile.cpp:
|
||
* src/preproc/eqn/script.cpp:
|
||
* src/preproc/html/pre-html.cpp:
|
||
* src/preproc/pic/pic.h:
|
||
* src/preproc/preconv/preconv.cpp:
|
||
* src/preproc/soelim/soelim.cpp:
|
||
* src/roff/groff/groff.cpp:
|
||
* src/roff/troff/troff.h:
|
||
* src/utils/hpftodit/hpftodit.cpp:
|
||
* src/utils/indxbib/indxbib.cpp:
|
||
* src/utils/lkbib/lkbib.cpp:
|
||
* src/utils/lookbib/lookbib.cpp:
|
||
* src/utils/tfmtodit/tfmtodit.cpp: Respell "assert.h" inclusion
|
||
with angle brackets instead of quotation marks.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63078>.
|
||
|
||
2023-02-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (token::next): Use correct kind of
|
||
null object in comparison. Fixes latent bug that would be
|
||
exposed if we were to migrate from zero literals to `nullptr`.
|
||
|
||
2023-02-09 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf] Parse multiple entries in 'papersize' as specified in
|
||
the groff_font man page. Reported by Ben Wong and fix based on
|
||
his patch, thanks.
|
||
|
||
* src/devices/gropdf/gropdf.pl: Parse papersize string for
|
||
possible multiple (space separated) entries. First valid entry
|
||
wins.
|
||
|
||
Fixes https://savannah.gnu.org/bugs/?63757
|
||
|
||
2023-02-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Correct numerous typos and solecisms throughout the source tree.
|
||
|
||
* ChangeLog:
|
||
* ChangeLog.115:
|
||
* ChangeLog.116:
|
||
* ChangeLog.117:
|
||
* ChangeLog.118:
|
||
* ChangeLog.119:
|
||
* ChangeLog.121:
|
||
* ChangeLog.122:
|
||
* Makefile.am:
|
||
* NEWS:
|
||
* PROBLEMS:
|
||
* README:
|
||
* contrib/chem/chem.am:
|
||
* contrib/chem/chem.pl:
|
||
* contrib/glilypond/README.txt:
|
||
* contrib/glilypond/glilypond.pl:
|
||
* contrib/hdtbl/groff_hdtbl.7.man:
|
||
* contrib/mm/ChangeLog:
|
||
* contrib/mm/m.tmac:
|
||
* contrib/pdfmark/pdfmark.ms:
|
||
* doc/automake.mom:
|
||
* doc/groff.texi:
|
||
* doc/me-revisions:
|
||
* doc/webpage.ms:
|
||
* m4/lib-link.m4:
|
||
* man/groff.7.man:
|
||
* man/groff_diff.7.man:
|
||
* man/roff.7.man:
|
||
* src/devices/grohtml/post-html.cpp:
|
||
* src/devices/grolbp/lbp.h:
|
||
* src/devices/gropdf/TODO:
|
||
* src/devices/gropdf/gropdf.1.man:
|
||
* src/devices/gropdf/gropdf.pl:
|
||
* src/devices/xditview/ChangeLog:
|
||
* src/devices/xditview/xditview.c:
|
||
* src/libs/libdriver/input.cpp:
|
||
* src/libs/libgroff/glyphuni.cpp:
|
||
* src/preproc/eqn/eqn.1.man:
|
||
* src/preproc/grn/gprint.h:
|
||
* src/preproc/grn/main.cpp:
|
||
* src/preproc/html/pre-html.cpp:
|
||
* src/preproc/preconv/preconv.cpp:
|
||
* src/preproc/tbl/table.cpp:
|
||
* src/roff/groff/pipeline.c:
|
||
* src/roff/groff/tests/substring_works.sh:
|
||
* src/roff/groff/tests/
|
||
use_point_size_escape_with_single_digit_arg.sh:
|
||
* src/roff/troff/div.cpp:
|
||
* src/roff/troff/input.cpp:
|
||
* src/roff/troff/troff.1.man:
|
||
* src/utils/grog/grog.pl:
|
||
* src/utils/indxbib/indxbib.cpp:
|
||
* src/utils/tfmtodit/tfmtodit.1.man:
|
||
* tmac/doc-old.tmac:
|
||
* tmac/doc.tmac:
|
||
* tmac/groff_man.7.man.in:
|
||
* tmac/hyphen.fr: Do it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63589>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2023-02-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Drop XFAIL test. It was written with an unclear
|
||
understanding of how DWB (AT&T) and Heirloom Doctools troff
|
||
behaved. The individual checks might come back, modified.
|
||
|
||
* src/preproc/tbl/tests/table-lacks-spurious-top-border.sh:
|
||
Delete.
|
||
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Drop it.
|
||
(tbl_XFAIL_TESTS, XFAIL_TESTS): Drop now empty assignment and
|
||
unnecessary update, respectively.
|
||
|
||
2023-02-04 Bertrand Garrigues <bertrand.garrigues@laposte.net>
|
||
|
||
Update gnulib submodule
|
||
|
||
gnulib now points on sha1 4e9fcc7b84fcac07a3e5a3cd5f66d1ff320dc8e8
|
||
|
||
2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man pages]: Provide page-local fallback definition of new `MR`
|
||
macro. I didn't think I was going to have to do this, but the
|
||
premier site on the web for viewing Linux man pages, Michael
|
||
Kerrisk's man7.org, has been pulling snapshots of the pages
|
||
themselves without upgrading the underlying macros, and so man
|
||
page cross references set with `MR` are getting lost in its
|
||
presentations. (I acknowledge: Ingo Schwarze warned me
|
||
something like this could happen.) This definition is intended
|
||
as a stopgap measure only. I want to revert this after groff
|
||
1.23 is released and has spread to some reasonable degree.
|
||
|
||
* contrib/chem/chem.1.man:
|
||
* contrib/eqn2graph/eqn2graph.1.man:
|
||
* contrib/gdiffmk/gdiffmk.1.man:
|
||
* contrib/glilypond/glilypond.1.man:
|
||
* contrib/gperl/gperl.1.man:
|
||
* contrib/gpinyin/gpinyin.1.man:
|
||
* contrib/grap2graph/grap2graph.1.man:
|
||
* contrib/hdtbl/groff_hdtbl.7.man:
|
||
* contrib/mm/groff_mm.7.man:
|
||
* contrib/mm/groff_mmse.7.man:
|
||
* contrib/mm/mmroff.1.man:
|
||
* contrib/mom/groff_mom.7.man:
|
||
* contrib/pdfmark/pdfroff.1.man:
|
||
* contrib/pic2graph/pic2graph.1.man:
|
||
* contrib/rfc1345/groff_rfc1345.7.man:
|
||
* man/groff.7.man:
|
||
* man/groff_char.7.man:
|
||
* man/groff_diff.7.man:
|
||
* man/groff_font.5.man:
|
||
* man/groff_out.5.man:
|
||
* man/groff_tmac.5.man:
|
||
* man/roff.7.man:
|
||
* src/devices/grodvi/grodvi.1.man:
|
||
* src/devices/grohtml/grohtml.1.man:
|
||
* src/devices/grolbp/grolbp.1.man:
|
||
* src/devices/grolj4/grolj4.1.man:
|
||
* src/devices/gropdf/gropdf.1.man:
|
||
* src/devices/gropdf/pdfmom.1.man:
|
||
* src/devices/grops/grops.1.man:
|
||
* src/devices/grotty/grotty.1.man:
|
||
* src/devices/xditview/gxditview.1.man:
|
||
* src/preproc/eqn/eqn.1.man:
|
||
* src/preproc/eqn/neqn.1.man:
|
||
* src/preproc/grn/grn.1.man:
|
||
* src/preproc/pic/pic.1.man:
|
||
* src/preproc/preconv/preconv.1.man:
|
||
* src/preproc/refer/refer.1.man:
|
||
* src/preproc/soelim/soelim.1.man:
|
||
* src/preproc/tbl/tbl.1.man:
|
||
* src/roff/groff/groff.1.man:
|
||
* src/roff/nroff/nroff.1.man:
|
||
* src/roff/troff/troff.1.man:
|
||
* src/utils/addftinfo/addftinfo.1.man:
|
||
* src/utils/afmtodit/afmtodit.1.man:
|
||
* src/utils/grog/grog.1.man:
|
||
* src/utils/hpftodit/hpftodit.1.man:
|
||
* src/utils/indxbib/indxbib.1.man:
|
||
* src/utils/lkbib/lkbib.1.man:
|
||
* src/utils/lookbib/lookbib.1.man:
|
||
* src/utils/pfbtops/pfbtops.1.man:
|
||
* src/utils/tfmtodit/tfmtodit.1.man:
|
||
* src/utils/xtotroff/xtotroff.1.man:
|
||
* tmac/groff_man.7.man.in:
|
||
* tmac/groff_me.7.man:
|
||
* tmac/groff_ms.7.man:
|
||
* tmac/groff_trace.7.man:
|
||
* tmac/groff_www.7.man: Do it.
|
||
|
||
2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix bugs using boxes or vertical rules at table edges on
|
||
nroff devices, particularly when combined with region or column
|
||
expansion.
|
||
|
||
* src/preproc/tbl/table.h (class table): Add `GAP_EXPAND`
|
||
enumeration constant. James Clark seems to have designed GNU
|
||
tbl carefully to avoid distinguishing region expansion from
|
||
column expansion in a categorical way, but I needed a way for
|
||
formatting-time logic to know which was in use. (Column
|
||
expansion, the "x" modifier, expands columns--i.e., text.
|
||
Region expansion expands [or compresses] the _gaps_ between
|
||
columns.)
|
||
* src/preproc/tbl/main.cpp (process_options): Set `GAP_EXPAND`
|
||
flag in table if "expand" region option seen.
|
||
* src/preproc/tbl/table.cpp: Add new macro `LEFTOVER_FACTOR_REG`
|
||
to name a new roff register for the remainder of gap-expansion
|
||
space when the amount of space available for expansion is
|
||
divided by the number of gaps.
|
||
(table::compute_overall_width): If _not_ expanding a table in
|
||
either respect and in nroff mode, reduce line length by 1n for
|
||
each of any left and right border (because the vertical lines
|
||
eat character cells). This prevents bordered or boxed tables
|
||
from being overset even when they use neither expansion feature.
|
||
(table::compute_separation_factor): If gap-expanding a table,
|
||
store any remainder from the division used to compute the
|
||
separation factor into the new `LEFTOVER_FACTOR_REG`.
|
||
(table::compute_column_positions): Insert that remainder into
|
||
the gap before the last (rightmost) column of the table. This
|
||
_could_ be done more elegantly by spreading each en in a
|
||
symmetric way across a subset of the gaps. (It is necessarily a
|
||
subset by the pigeonhole principle.) But it didn't seem worth
|
||
the effort for a feature (region expansion) that few users
|
||
employ. (Usually what you want is the "x" column modifier.)
|
||
Alternatively, "forget it, Jake--it's a terminal emulator".
|
||
|
||
* src/preproc/tbl/tbl.am (tbl_XFAIL_TESTS): Remove now-passing
|
||
tests.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63640> and
|
||
<https://savannah.gnu.org/bugs/?63749>.
|
||
|
||
2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::compute_column_positions):
|
||
Stop multiplying the gaps at the left and right edges of a table
|
||
{which occur when it is boxed or has a leading and/or trailing
|
||
vertical line} by the column separation factor. Only interior
|
||
column gaps should be spread. This change prevents tables using
|
||
the "expand" region option from being overset (exceeding the
|
||
line length), but might not (yet) fully expand to that length on
|
||
low-resolution devices due to integer roundoff.
|
||
|
||
2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::compute_total_separation)
|
||
(table::compute_separation_factor, table::compute_widths): Add
|
||
comments to generated roff output to assist the mystified user.
|
||
|
||
2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Refactor.
|
||
|
||
* src/preproc/tbl/table.cpp:
|
||
* src/preproc/tbl/table.h: Rename `compute_expand_width` to
|
||
`compute_overall_width`, since this member function is used on
|
||
_all_ tables, not just those undergoing column or gap expansion.
|
||
For instance, in a post-groff 1.22.4 development, it throws a
|
||
diagnostic if an unexpanded table overruns the line length.
|
||
* src/preproc/tbl/table.cpp (table::compute_widths): Update call
|
||
site of `compute_overall_width`.
|
||
* src/preproc/tbl/table.cpp: Split the roff register behind the
|
||
`EXPAND_REG` C++ preprocessor macro into two, adding
|
||
`AVAILABLE_WIDTH_REG`. Annotate the distinction.
|
||
(compute_overall_width): Annotate. Move and conditionalize
|
||
logic so as not to produce as much unnecessary roff output.
|
||
|
||
2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (main): Avoid reading from invalid
|
||
memory upon failure to open an input file.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63751>.
|
||
|
||
2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/lex.cpp (get_delimited_text): Avoid reading
|
||
from invalid memory when throwing diagnostic. Duplicate
|
||
`filename` string, then free it on all paths out of function.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63214>.
|
||
|
||
2023-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Add more tests.
|
||
|
||
* src/preproc/tbl/tests/boxes-and-vertical-rules.sh:
|
||
* src/preproc/tbl/tests/expand-region-option-works.sh:
|
||
* src/preproc/tbl/tests/x-column-modifier-works.sh: Do it.
|
||
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run tests.
|
||
(tbl_XFAIL_TESTS): Add; future changes will resolve these.
|
||
|
||
2023-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::compute_column_positions):
|
||
If a table has "left separation" (it is boxed, or has a vertical
|
||
rule on the left-hand side), increase the first column's start
|
||
register value by 1n, for symmetry with the right-hand size.
|
||
|
||
* src/preproc/tbl/tests/check-horizontal-line-length.sh:
|
||
* src/preproc/tbl/tests/check-line-intersections.sh:
|
||
* src/preproc/tbl/tests/check-vertical-line-length.sh: Update
|
||
output expectations.
|
||
|
||
* src/preproc/tbl/tbl.am (tbl_XFAIL_TESTS): Remove now-passing
|
||
test.
|
||
|
||
See <https://savannah.gnu.org/bugs/?61597> for background.
|
||
|
||
2023-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::compute_total_separation):
|
||
Trivially refactor; rename loop indices so it's obvious which
|
||
dimension of a matrix they're referring to.
|
||
|
||
2023-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::determine_row_type)
|
||
(table::compute_widths, table::do_row): Boolify some local ints.
|
||
|
||
2023-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Refactor handling of vertical lines in format. Validate
|
||
input more strictly. Add diagnostics when vertical lines are
|
||
redundant with box borders.
|
||
|
||
* src/preproc/tbl/main.cpp (process_format): Shift diagnostic
|
||
about excess vertical lines in a sequence at the beginning of a
|
||
row description to later, after the first proper column
|
||
descriptor has been interpreted. Normalize a sequence of more
|
||
than two consecutive vertical lines to 2 when they occur at the
|
||
beginning of a row description. Unconditionally update
|
||
`list->vline` and reset `vline_count` once we start looking for
|
||
modifiers, since we know we've finished any sequence of vertical
|
||
lines, and at the end of a row definition. Rename and retype
|
||
loop variable int `success` to Boolean
|
||
`is_valid_modifier_sequence`. Drop now-invalid assertion.
|
||
* src/preproc/tbl/table.cpp (table::add_vlines): Throw new
|
||
diagnostics when vertical lines are redundant with box borders.
|
||
Add assertion to ensure we got a valid vertical line value (0,
|
||
1, or 2) from `process_format`. Throw these only once per table
|
||
format, not for every row.
|
||
|
||
2023-01-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (process_table): Trivially refactor.
|
||
Rename `form` to `fmt` to imply "format", not "form".
|
||
|
||
2023-01-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (process_format): Throw error
|
||
diagnostic if more than 2 vertical lines are specified at the
|
||
beginning of a row definition.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63731>.
|
||
|
||
2023-01-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (process_format): Recast diagnostic
|
||
message to refer to character by its Unicode name and generalize
|
||
to accurately cover additional circumstance of excess '|'
|
||
symbols at end of row definition.
|
||
|
||
2023-01-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/ms.ms: Remove redundant initializations.
|
||
|
||
2023-01-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/ms.ms: Define appropriate hyphen-minus mapping on 'cp1047'
|
||
output device.
|
||
|
||
2023-01-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (TE): Enable no-space mode after outputting the
|
||
display distance vertically, replacing any inter-paragraph
|
||
distance that might follow.
|
||
|
||
2023-01-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Fix misleading diagnostic message.
|
||
|
||
* src/preproc/html/pre-html.cpp (main): The suggestion should be
|
||
to re-run the formatter (groff, troff), not "pre-grohtml", with
|
||
a different output driver since the document may be malformed.
|
||
|
||
2023-01-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (process_format): Fix code hygiene
|
||
nit: nullify `list` pointer after freeing its target.
|
||
|
||
2023-01-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Really fix Savannah #63449.
|
||
|
||
* src/preproc/tbl/main.cpp (process_format): "Or" on the
|
||
`HAS_TOP_VLINE` flag if the format specification begins with a
|
||
"|"; the beginning is a separate state in the FSM used to parse
|
||
the description. I missed it in commit 0e93ab4102, 1 December.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63449>.
|
||
|
||
2023-01-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/tests/\
|
||
do-not-overdraw-page-top-in-nroff-mode.sh: Correct erroneous
|
||
check of test output, and add two more test cases.
|
||
|
||
2023-01-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Move the saving of the hyphenation mode from
|
||
the "top level" to...
|
||
(mY): ...this new macro.
|
||
(SY, mQ, MR): Call `mY` before disabling hyphenation.
|
||
|
||
Problem introduced by me in commit 096c2f0567, 16 February.
|
||
"an-ext.tmac" gets sourced by "an.tmac" before any
|
||
command-line setting of the `HY` register is handled, so (for
|
||
groff) the stored hyphenation mode was the default for the
|
||
language, not reflecting user disablement. The synopsis macros,
|
||
which do not have an alternate implementation in "an.tmac" for
|
||
leverage of groff features, were causing hyphenation to be
|
||
resurrected (after `YS`) even if the user had disabled it.
|
||
Saving the hyphenation mode anew upon entry to these macros is
|
||
arguably inefficient, but it is more correct since a man page
|
||
could conceivably manipulate the automatic hyphenation mode
|
||
{even if that's not recommended outside of tbl(1) text blocks}.
|
||
|
||
2023-01-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add regression test for hyphenation getting wrongly
|
||
restored by `YS`, `ME`, `UE`, and `MR` macros.
|
||
|
||
* tmac/tests/an_HY-register-works.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2023-01-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (Sh, Ss): Narrow scope of font remappings
|
||
lexically and restrict remapping to the heading font family (if
|
||
any) to avoid undesired remapping of fonts in page headers if,
|
||
say, a (sub)section heading begins just prior to a page
|
||
break--which is ugly anyway and should be avoided, but the
|
||
package has no keep macros and solving that problem in an
|
||
automatic way promises to be complex.
|
||
|
||
2023-01-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (MT, UR): Throw style warning if macro called
|
||
without (exactly one) argument.
|
||
|
||
2022-12-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/groff-man-pages.pdf): Set (sub)section
|
||
headings in Helvetica bold in compiled man pages, as a test and
|
||
demonstration of the `HF` feature's application to both man(7)
|
||
and mdoc(7) documents.
|
||
|
||
2022-12-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Support `HF` string.
|
||
|
||
* tmac/doc.tmac (initialization): Add logic supporting `HF`
|
||
string just as our man(7) implementation does. If the font name
|
||
ends with `B` (as the default does), set
|
||
`doc-remap-I-style-in-headings` register and extract font
|
||
family, which can be empty (as is the default).
|
||
* tmac/mdoc/doc-common (Sh, Ss): If
|
||
`doc-remap-I-style-in-headings` register set, perform (and
|
||
unwind) font remapping of italic to bold-italic face.
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Define `doc-Sh-font` in terms of `HF`.
|
||
|
||
* tmac/tests/doc_heading-font-remapping-works.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
* tmac/groff_mdoc.7.man (Options): Document it.
|
||
* NEWS: Update item.
|
||
|
||
Fixes last part of <https://savannah.gnu.org/bugs/?63046>.
|
||
|
||
2022-12-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Revise "fallback" character definitions in several
|
||
respects for Unicode characters from General Punctuation block.
|
||
|
||
* tmac/fallbacks.tmac: Comment out fallbacks for U+200B, U+2010,
|
||
U+2011, and U+201[89CD], due to ineffectuality or apparent groff
|
||
bugs. Redefine U+2012 fallback to include hair space (\^)
|
||
around synthetic figure dash. Redefine U+2016 to use `\[ba]`
|
||
special characters instead of ordinary `|` characters to dodge
|
||
possible character translations by user.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?63354>. Thanks to
|
||
Dave Kemper for the (multifarious) discussion.
|
||
|
||
2022-12-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Invoking groff, Built-in Registers):
|
||
* man/groff.7.man (Writable predefined registers):
|
||
* src/roff/groff/groff.1.man (Environment):
|
||
* src/roff/troff/troff.1.man (Environment): Replace erroneous
|
||
reference to ctime(3) with localtime(3).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63509>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-12-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Fix potential problem(s) in trap handler.
|
||
|
||
* src/roff/groff/tests/smoke-test_html_device.sh: Move call of
|
||
`cleanup` function from end of script to after the tests that
|
||
generate temporary files have been run, and before script
|
||
possibly exits with status 77 to skip some checks. Within trap
|
||
handler, mask trapped signals while running handler.
|
||
(cleanup): Reset trap dispositions to default after removing
|
||
files; once the temporary files are gone, we no longer need a
|
||
trap handler. One might already be running however, and this
|
||
ensures that its "suicide" ("kill -s INT $$") will succeed.
|
||
|
||
2022-12-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Support `FT` register.
|
||
|
||
* tmac/doc.tmac (initialization): Add logic supporting `FT`
|
||
register just as our man(7) implementation does.
|
||
* tmac/mdoc/doc-common (doc-set-up-titles): Plant footer trap in
|
||
validated user-requested location.
|
||
* tmac/groff_mdoc.7.man (Options): Document it.
|
||
* NEWS: Update item.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?63046>.
|
||
|
||
2022-12-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Fix code style nit: use `as` requests to
|
||
avoid overlong input lines.
|
||
|
||
2022-12-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac: Inform user we're ignoring their "-rD1" setting
|
||
if also formatting HTML; parallels groff man(7) behavior.
|
||
|
||
2022-12-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac: Trivially refactor. Relocate handling of `D`
|
||
command-line register to prepare for greater synchronization
|
||
with groff man(7).
|
||
|
||
2022-12-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp: Trivially refactor. Rename
|
||
{portion of} internal register to include an interword hyphen
|
||
for readability.
|
||
|
||
2022-12-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Change default line length to 6.5 inches.
|
||
|
||
* tmac/s.tmac (par@load-init): Do it.
|
||
|
||
* doc/groff.texi (ms Document Control Settings):
|
||
* doc/ms.ms (Document control settings):
|
||
* tmac/groff_ms.7.man (Document control settings): Document it.
|
||
|
||
* tmac/tests/s_honor-MINGW-when-two-columns.sh:
|
||
* tmac/tests/s_mark-column-start-correctly.sh: Update test
|
||
expectations.
|
||
|
||
* NEWS: Add item.
|
||
|
||
2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (TH): Relocate `an-break-body-text` trap to be
|
||
one half-inch above footer (instead of twice the footer
|
||
distance). I reason that anyone who customizes `FT` is doing so
|
||
to overprint some kind of material at the bottoms of pages, or
|
||
simply to make the margin larger. (One then wonders why we
|
||
don't have an `HD` register for the top.) Also remove register
|
||
when done with it.
|
||
* tmac/groff_man.7.man.in (Options) <FT>: Document this.
|
||
|
||
2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (TH): Trivially refactor. Rename
|
||
`an-footer-location` to `an*footer-location` and set page traps
|
||
in order descending the page.
|
||
|
||
2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Support `X` register.
|
||
|
||
* tmac/doc.tmac (initialization): Add logic supporting `X`
|
||
register just as our man(7) implementation does.
|
||
* tmac/groff_mdoc.7.man (Options): Document it.
|
||
* NEWS: Update item.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?63046>.
|
||
|
||
2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Add unit test for `X` register.
|
||
|
||
* tmac/tests/doc_X-register-works.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac (Nm): Fix `if` -> `ie` typo/thinko.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63527>. Thanks to John
|
||
Gardner for the report.
|
||
|
||
2022-12-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/doc_Nm-works.sh: Add more checks.
|
||
|
||
2022-12-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/smoke-test_html_device.sh: Add checks for
|
||
inlining of images when tbl(1) or eqn(1) used.
|
||
|
||
2022-12-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/andoc.tmac (reload-man): Unplant `doc-break-body-text`
|
||
trap, added in commit 892703b17e, 6 September. Its survival
|
||
into man(7) pages didn't seem to cause any problems but I have
|
||
no confidence that will remain true forever.
|
||
|
||
2022-12-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (initialization): Fix problem with `FT` register
|
||
validation. Small but valid values were being rejected due to
|
||
inappropriate use of scaling operator. Also throw user a bone
|
||
by expressing what size '1v' is for the output device, in basic
|
||
units.
|
||
|
||
2022-12-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man, mdoc]: Fix Savannah #63500. Support use of `P` (initial
|
||
page number) register when batch rendering, regardless of
|
||
switching macro packages between man(7) and mdoc(7) or setting
|
||
of `C` (continuous numbering) register. (`P` without `C` means
|
||
"start numbering each rendered document at \n[P]".)
|
||
|
||
* tmac/an.tmac (an-end): Call `an*break-page-with-new-number`
|
||
instead of invoking `bp`.
|
||
(an*break-page-with-new-number): If `P` is set and `C` is not,
|
||
use value of `P` as the next page number.
|
||
(TH): If `C` register is set, remove `P` register after ending a
|
||
previous document.
|
||
(initialization): If `P` is set, assign the page number using
|
||
the `pn` request if the transition to the first formatted page
|
||
has not yet occurred; otherwise update page number register `%`
|
||
directly. Also ignore it with diagnostic if `ps4html` register
|
||
{for grohtml's internal use} is set. Add explanatory comment.
|
||
|
||
* tmac/mdoc/doc-common (Dd): If `C` register is set, remove `P`
|
||
register after ending a previous document.
|
||
(doc-end-macro): Call `doc-break-page-with-new-number` instead
|
||
of invoking `bp`.
|
||
(doc-break-page-with-new-number): If `P` is set and `C` is not,
|
||
use value of `P` as the next page number.
|
||
* tmac/doc.tmac (initialization): If `P` is set, assign the page
|
||
number using the `pn` request if the transition to the first
|
||
formatted page has not yet occurred; otherwise update page
|
||
number register `%` directly. Also ignore it with diagnostic if
|
||
`ps4html` register (for grohtml's internal use) is set. Add
|
||
explanatory comment.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63500>.
|
||
|
||
2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Support `P` register.
|
||
|
||
* tmac/doc.tmac (initialization): Add logic supporting `P`
|
||
register just as our man(7) implementation does.
|
||
* tmac/groff_mdoc.7.man (Formatting with groff, troff, and
|
||
nroff): Document it.
|
||
* NEWS: Update item.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?63046>.
|
||
|
||
2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Add unit tests for man/mdoc `P` register.
|
||
|
||
* tmac/tests/an_P-register-works.sh:
|
||
* tmac/tests/andoc_P-register-works.sh:
|
||
* tmac/tests/doc_P-register-works.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run tests.
|
||
|
||
2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man, mdoc]: Refactor. Rename a Boolean register to more
|
||
clearly communicate its purpose. This also reverses its sense.
|
||
|
||
* tmac/an.tmac (TH): Rename `an-is-first-page-of-document` to
|
||
`an*need-titles-reset`. Drop redundant store. Reverse sense of
|
||
test.
|
||
(initialization): Initialize it to zero.
|
||
|
||
* tmac/mdoc/doc-common (Dd): Rename
|
||
`doc-is-first-page-of-document` to `doc-need-titles-reset`.
|
||
Drop redundant store. Reverse sense of test.
|
||
(initialization): Initialize it to zero.
|
||
|
||
2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Add future regression test for header/footer
|
||
mishandling that wasn't already covered (not a live bug; was
|
||
exposed by attempted refactoring).
|
||
|
||
* tmac/tests/andoc_check-an-to-doc-transition.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man, mdoc]: Trivially refactor.
|
||
|
||
* tmac/an.tmac (an-start-new-document): Rename this...
|
||
(an*break-page-with-new-number): ...to reflect its reduced
|
||
responsibility.
|
||
|
||
* tmac/mdoc/doc-common (doc-start-new-document): Rename this...
|
||
(doc-break-page-with-new-number): ...to reflect its reduced
|
||
responsibility.
|
||
|
||
2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man, mdoc]: Refactor to separate page number management from
|
||
header trap management.
|
||
|
||
* tmac/an.tmac (an-start-new-document): Stop removing
|
||
`an-header` trap.
|
||
(TH): Clear the trap here even if not continuously rendering,
|
||
and call `an-start-new-document`.
|
||
|
||
* tmac/mdoc/doc-common (doc-start-new-document): Stop removing
|
||
`doc-header` trap.
|
||
(Dd): Clear the trap here even if not continuously rendering,
|
||
and call `doc-start-new-document`.
|
||
|
||
2022-12-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common: Refactor for better parallelism with our
|
||
man(7) implementation and to prepare for a synchronized change
|
||
to both.
|
||
(Dd): Move open-coded (inlined) operations from here...
|
||
(doc-start-new-document): ...to this new macro.
|
||
(doc-end-macro): Drop unnecessary register assignment. `Dd`
|
||
takes care of it if there is a subsequent mdoc(7) document.
|
||
|
||
2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix off-by-one error in generated diagnostic message.
|
||
|
||
* src/preproc/tbl/table.cpp: Define new preprocessor macro,
|
||
`PREVIOUS_PAGE_REG`.
|
||
(table::init_output): Compute value for register named using
|
||
`PREVIOUS_PAGE_REG`, use it in diagnostic, and then remove it.
|
||
Also fix verb tense in message.
|
||
|
||
2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Expose the fact of a table's boxedness via a troff
|
||
register so that macro packages can make more intelligent
|
||
decisions about space requirements (since box borders occupy
|
||
significant space on nroff devices).
|
||
|
||
* src/preproc/tbl/table.cpp: Define new preprocessor macro,
|
||
`IS_BOXED_REG`.
|
||
(table::do_top): Initialize "boxedness" register.
|
||
|
||
2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (TH): Clarify computation and diagnostic message.
|
||
|
||
2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix Savannah #61878.
|
||
|
||
* src/preproc/tbl/table.cpp: Define new preprocessor macro,
|
||
`STARTING_PAGE_REG`.
|
||
(table::define_bottom_macro): Have the formatter issue a warning
|
||
if an unkept, boxed table ends on a different page than it
|
||
began.
|
||
(table::do_top): Save current page number when table begins.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61878>.
|
||
|
||
2022-12-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Regression-test Savannah #61878.
|
||
|
||
* src/preproc/tbl/tests/\
|
||
warn-on-long-boxed-unkept-table.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
2022-12-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp: Write comments to generated output;
|
||
these correspond to functions in this file and to major
|
||
operations of table construction.
|
||
(init_output, compute_widths, define_bottom_macro, do_row)
|
||
(do_top, do_bottom): Do it.
|
||
|
||
2022-12-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Trivially refactor. Rename class `constant_int_reg` to
|
||
`readonly_register`. Say "readonly" instead of "const" to
|
||
try to avoid confusion with C++ constness. Drop "int" because
|
||
integer-valued registers are the norm, not the exception.
|
||
|
||
* src/roff/troff/column.cpp (init_column_requests):
|
||
* src/roff/troff/div.cpp (init_div_requests):
|
||
* src/roff/troff/input.cpp (top level, init_input_requests):
|
||
* src/roff/troff/node.cpp (init_node_requests):
|
||
* src/roff/troff/reg.h: Do it.
|
||
|
||
2022-12-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Trivially refactor. Rename class `constant_reg` to
|
||
`readonly_text_register`. Say "readonly" instead of "const" to
|
||
try to avoid confusion with C++ constness. Say "text" because
|
||
this class is _mostly_ used for interpolation of string-valued
|
||
registers like the version registers `.x`, `.y` and `.Y`.
|
||
Nevertheless there are some abuses (apparently because the
|
||
constructors for register classes don't accept integer
|
||
parameters for initialization--why?).
|
||
|
||
* src/roff/troff/input.cpp (top level)
|
||
(readonly_text_register::readonly_text_register)
|
||
(readonly_text_register::get_string)
|
||
(main, init_registers, init_requests): Do it.
|
||
|
||
2022-12-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Trivially refactor. Rename `number_reg_dictionary` to
|
||
`register_dictionary`. It's shorter _and_ non-abbreviated _and_
|
||
matches our documentation.
|
||
|
||
* src/roff/troff/column.cpp (init_column_requests):
|
||
* src/roff/troff/div.cpp (page_number, init_div_requests):
|
||
* src/roff/troff/env.cpp (print_env, init_env_requests)
|
||
(init_hyphen_requests):
|
||
* src/roff/troff/input.cpp (length_request)
|
||
(interpolate_number_format, do_register, do_if_request, main)
|
||
(init_registers, init_input_requests):
|
||
* src/roff/troff/node.cpp (get_register, init_node_requests):
|
||
* src/roff/troff/reg.cpp (top level, define_number_reg)
|
||
(inline_define_reg, alter_format, remove_reg, alias_reg)
|
||
(rename_reg, print_number_regs):
|
||
* src/roff/troff/reg.h: Do it.
|
||
|
||
2022-12-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add regression test.
|
||
|
||
* tmac/tests/an_link-trailing-text-hugs-previous.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/fallbacks.tmac: Really use troff-mode fallbacks only on
|
||
typesetting devices; because this macro file is loaded so early,
|
||
we cannot rely on ".if t". Thanks to Dave Kemper for the
|
||
discussion in Savannah #63354.
|
||
|
||
2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Use more mnemonic register names, thanks to
|
||
the recent freeing up of some name space.
|
||
- mJ -> mH: saved automatic hyphenation mode
|
||
- mX -> mE: formatting in EX/EE context (Boolean)
|
||
|
||
2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdf.tmac: Drop deletion of unused string `PDFHREF.TEXT`.
|
||
|
||
2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (an-end, AT, UC, DT, PD, SH, IP, BI, BR, IB, IR)
|
||
(RB, RI, OP, an*end-hyperlink, MR): Refactor; "nop"ify macros
|
||
that produce formatted output or call other macros using string
|
||
interpolations--except where we can't: see Savannah #63470.
|
||
|
||
2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (R): Drop macro definition, which implements a
|
||
hack for people who try to use "R" as a font style macro. This
|
||
doesn't seem to happen much in actual practice (though perhaps
|
||
the diagnostic this hack produces is responsible for suppression
|
||
of the mistake). Retaining it interferes with the
|
||
"nop"-ification of this macro file.
|
||
* NEWS: Add item.
|
||
|
||
2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Use truly traditional hyphenation mode on
|
||
non-groff-compatible formatters.
|
||
|
||
2022-12-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Update test coverage and expectations.
|
||
|
||
* tmac/tests/an_ME-punct-hyphenates.sh: Test both "an.tmac" and
|
||
"an-ext.tmac" implementations of `ME`.
|
||
* tmac/tests/an_UE-punct-hyphenates.sh: Test both "an.tmac" and
|
||
"an-ext.tmac" implementations of `UE`.
|
||
* tmac/tests/an_UE-breaks-before-long-URIs.sh: Update test
|
||
expectations. I appear to have inadvertently fixed some
|
||
inelegant rendering.
|
||
|
||
2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Rename to reflect code reorganization.
|
||
|
||
* tmac/tests/an-ext_ME-punct-hyphenates.sh:
|
||
* tmac/tests/an-ext_MT-body-hyphenates.sh:
|
||
* tmac/tests/an-ext_UE-breaks-before-long-URIs.sh:
|
||
* tmac/tests/an-ext_UE-punct-hyphenates.sh:
|
||
* tmac/tests/an-ext_UR-body-hyphenates.sh: Rename these...
|
||
* tmac/tests/an_ME-punct-hyphenates.sh:
|
||
* tmac/tests/an_MT-body-hyphenates.sh:
|
||
* tmac/tests/an_UE-breaks-before-long-URIs.sh:
|
||
* tmac/tests/an_UE-punct-hyphenates.sh:
|
||
* tmac/tests/an_UR-body-hyphenates.sh: ...to these.
|
||
|
||
* tmac/tmac.am (tmac_TESTS): Reflect renames.
|
||
|
||
2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Remove groff-feature-dependent code for
|
||
hyperlink management, greatly reducing the size of the file,
|
||
which we permissively license and encourage people to copy
|
||
around. Drop register definitions corresponding to
|
||
groff-specific output device names. Drop definition and use of
|
||
`mL` and `mR` strings for angle brackets; no observable change
|
||
on non-groff formatters. Recognize `mG` register to enable
|
||
testing of these macros even if the formatter is groff.
|
||
(mV): Radically simplify. This internal "back-end" for `MT` and
|
||
`UR` now just stores its argument in a string, `m1`.
|
||
(mQ): Radically simplify. This internal "back-end" for `ME` and
|
||
`UE` now just disables automatic hyphenation, formats the saved
|
||
`m1` string between angle brackets, suffixes it with the
|
||
optional argument, and restores automatic hyphenation.
|
||
(UR, MT): Call `mV` with one argument, not nine.
|
||
(UE, ME): Call `mQ` with one argument, not nine.
|
||
|
||
* tmac/tests/an-ext_MR-works.sh: Add test of this file's
|
||
simplified `MR` implementation.
|
||
* tmac/tests/an-ext_MT-works.sh:
|
||
* tmac/tests/an-ext_UR-works.sh: Move tests of groff-specific
|
||
hyperlink output from here...
|
||
* tmac/tests/an_MT-works.sh:
|
||
* tmac/tests/an_UR-works.sh: ...to these new files.
|
||
* tmac/tests/an_MR-works.sh:
|
||
* tmac/tests/an_MT-works.sh:
|
||
* tmac/tests/an_UR-works.sh: Add tests for valid HTML formatting
|
||
of hyperlinks, which experience shows is a bit fragile in the
|
||
face of diversion manipulation and output line continuation.
|
||
|
||
* tmac/tmac.am (tmac_TESTS): Run new tests.
|
||
|
||
2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Support `mG` register: clear it to force the
|
||
loading of this file's macros even if they have an
|
||
implementation in tmac/an.tmac and the formatter claims groff
|
||
compatibility. This is to ease these macros' testing under
|
||
groff and keep the implementations here simple.
|
||
* tmac/an.tmac: Initialize `mG` register to 1 if not set on
|
||
command line.
|
||
|
||
2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Initialize `mX` register.
|
||
|
||
2022-12-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Define `mC` string (constant-width typeface
|
||
used by `EX`/`EE` macros) as `R` in nroff mode. Thanks to
|
||
Russ Allbery for prompting me to think more about the
|
||
limitations of Solaris troff. Implementations do varying
|
||
things with the "previous" font restored by `\fP` or an
|
||
unargumented `.ft` if a requested font is not found.
|
||
|
||
2022-11-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix Savannah #63449.
|
||
|
||
* src/preproc/tbl/table.h (class table): Add new enumeration
|
||
constants for use with `flags` member variable: `HAS_TOP_VLINE`
|
||
and `HAS_TOP_HLINE`, which track properties of the table.
|
||
Unlike others, these have no correspondence to table region
|
||
options.
|
||
* src/preproc/tbl/main.cpp (process_format): Add new local
|
||
Boolean to track whether we're interpreting a format for the
|
||
first row. Use this to "or" on the `HAS_TOP_VLINE` or
|
||
`HAS_TOP_HLINE` flags if "|" or [_-] are encountered in the
|
||
first row's format, as appropriate.
|
||
(process_data): "Or" on `HAS_TOP_HLINE` if a single or double
|
||
horizontal line is used as the first row's data.
|
||
* src/preproc/tbl/table.cpp (do_top): On nroff mode devices, add
|
||
one vee of space above the table if we're going to be drawing an
|
||
unintersected vertical rule above the table's top.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63449>.
|
||
|
||
2022-11-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Regression-test Savannah #63449.
|
||
|
||
* src/preproc/tbl/tests/\
|
||
do-not-overdraw-page-top-in-nroff-mode.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (struct input_entry_format)
|
||
(input_entry_format::input_entry_format)
|
||
free_input_entry_format_list, process_format): Trivially
|
||
refactor. Rename `pre_vline` to `vline_count`.
|
||
|
||
2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp
|
||
(vertical_rule::contribute_to_bottom_macro, table::print)
|
||
(table::init_output, table::divide_span)
|
||
(table::compute_expand_width, table::define_bottom_macro)
|
||
(table::do_bottom): Produce roff output that is more readable,
|
||
for maintainability. Indent control lines inside macro
|
||
definitions. Standardize form of `if`, `ie`, and `el` requests.
|
||
Some output will not be indented because it is produced within
|
||
narrowly-scoped C++ functions (set_troff_location,
|
||
table::print_single_hline, table::print_double_hline,
|
||
table::do_row), I haven't verified that each one is called from
|
||
a consistent troff indentation level, and I'm not sure it's a
|
||
win to parameterize those functions in the indentation level.
|
||
|
||
2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix Savannah #61909.
|
||
|
||
* src/preproc/tbl/table.cpp (SAVED_INTER_WORD_SPACE_SIZE)
|
||
(SAVED_INTER_SENTENCE_SPACE_SIZE): Add new preprocessor macros.
|
||
(block_entry::do_divert): Restore saved inter-word and
|
||
inter-sentence space when formatting a text entry.
|
||
(table::init_output): When a table region begions, save the
|
||
values of inter-word and inter-sentence space. Add request to
|
||
the reset macro to restore saved inter-word and inter-sentence
|
||
space when leaving table region.
|
||
(table::do_top): Set inter-sentence space to be equal to
|
||
inter-word space. This way spaces are "literal" in ordinary
|
||
table extries (but not text blocks).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61909>.
|
||
|
||
2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Regression-test Savannah #61909.
|
||
|
||
* src/preproc/tbl/tests/\
|
||
save-and-restore-inter-sentence-space.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Suppress line numbering when formatting tables, and
|
||
restore it afterward.
|
||
|
||
* src/preproc/tbl/table.cpp: Revert much of commit b69062693's
|
||
{2011-07-20} changes to this file. They were too complex for me
|
||
to understand, and permitted Savannah #60140 to persist (or
|
||
caused it).
|
||
(ROW_START_LINE_REG, ROW_SAVE_LINE_REG, ROW_MAX_LINE_REG)
|
||
(REPEATED_NM_SET_MACRO, REPEATED_NM_SUS_MACRO): Drop
|
||
preprocessor macros.
|
||
(SAVED_NUMBERING_LINENO, SAVED_NUMBERING_SUPPRESSION_COUNT): Add
|
||
new preprocessor macros.
|
||
(table::init_output, table::print_single_hline)
|
||
(table::print_double_hline, table::define_bottom_macro)
|
||
(table::do_row, table::do_top, table::do_bottom): Drop old
|
||
logic.
|
||
|
||
(table::init_output): When the table begins, save the current
|
||
line number register `ln` and the count of remaining lines to be
|
||
suppressed (the new `.nn` register). Then suppress numbering
|
||
for the next 2 billion+ lines of output, with a groveling
|
||
apology to the elegance police.
|
||
(table::do_bottom): Restore saved value of `.nn`. If numbering
|
||
was active (even if suppressed), restore it with `nm` request.
|
||
If it wasn't, disable it, in case it was turned on inside the
|
||
table region.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60140>. Thanks to Hans
|
||
Bezemer for noting the practical significance of this bug.
|
||
|
||
2022-11-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Regression-test Savannah #60140.
|
||
|
||
* src/preproc/tbl/tests/save-and-restore-line-numbering.sh: Do
|
||
it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
2022-11-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Implement new `.nn` register to report the remaining
|
||
count of lines to have their numbering suppressed.
|
||
|
||
* src/roff/troff/env.h (class environment): Declare new member
|
||
function `get_no_number_count()`.
|
||
* src/roff/troff/env.cpp (get_no_number_count): Define new
|
||
member function, returning value of member variable
|
||
`no_number_count`.
|
||
(init_env_requests): Define new ".nn" register and attach it to
|
||
`get_no_number_count()`.
|
||
|
||
* doc/groff.texi (Miscellaneous): Document it. Include example
|
||
of use to determine whether current output line will be
|
||
numbered. Also clarify meaning of register; `.nn` is not
|
||
decremented except when output line numbering is enabled.
|
||
* man/groff.7.man (Read-only registers): Document it.
|
||
|
||
* src/roff/groff/tests/dot-nn_register_works.sh: Test it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
* NEWS: Add item.
|
||
|
||
See <https://lists.gnu.org/archive/html/groff/2022-11/\
|
||
msg00153.html>.
|
||
|
||
2022-11-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/fallbacks.tmac: Comment out four of the fallback
|
||
character definitions for (preconv'd) Unicode character input
|
||
added to address Savannah #58930 (corresponding to \[dg], \[dd],
|
||
\[%0], and \[rn]; they are failing for not yet understood
|
||
reasons involving "macros" attached to groff character info
|
||
structs, and the semantics of what it means for a character to
|
||
"exist" per the 'c' conditional operator. Fixes regression when
|
||
using "tty-char.tmac" (which nroff loads by default). Problem
|
||
introduced by me in commit 132182bd71, 23 October. The hope is
|
||
to resolve this issue post-groff 1.23.0. Thanks to Dave Kemper
|
||
for the report and discussion in Savannah #63332.
|
||
|
||
2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac (SY, YS, mV): Remove `mA`, `mI`, and `mT`
|
||
registers when done with them.
|
||
|
||
2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/node.h (character_exists):
|
||
* src/roff/troff/node.cpp (character_exists): Boolify.
|
||
|
||
2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[doc]: Add make(1) dependency.
|
||
|
||
* doc/doc.am (doc/groff-man-pages.pdf): Add dependency on our
|
||
FreeEuro font since we embed it.
|
||
|
||
2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Refactor generation of "freeeuro.pfa" to make more
|
||
economical use of existing infrastructure, per a suggestion from
|
||
Deri James. This also puts the file where gropdf's "download"
|
||
file can find it when running it in a separate build directory.
|
||
We use it to generate "groff-man-pages.pdf".
|
||
|
||
* font/devps/freeeuro.pfa: Rename this...
|
||
* font/devps/freeeuro.ps: ...to this. We can now use the suffix
|
||
rule that also applies to "symbolsl.ps" and "zapfdr.ps".
|
||
|
||
* font/devps/devps.am (DEVPSFONTFILES): Move "freeeuro.pfa" from
|
||
here...
|
||
(DEVPSFONTFILES_GENERATED): ...to here.
|
||
(EXTRA_DIST): Ship the "new" "freeeuro.ps" file.
|
||
|
||
2022-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devps/psstrip.sed: Stop stripping comment lines in
|
||
general instead of preserving only ones that use the form in the
|
||
Document Structuring Conventions. This way we won't strip
|
||
copyright notices, like Werner Lemberg's in the FreeEuro font.
|
||
Thanks to Deri James for pointing this out.
|
||
|
||
2022-11-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
tmac/an-ext.tmac: Refactor to reduce code size.
|
||
|
||
* tmac/an-ext.tmac: Refactor to reduce code size. `UE` and `ME`
|
||
have nearly identical implementations so...
|
||
|
||
(mQ): Define new macro to perform the requisite actions, and...
|
||
|
||
(UE, ME): Make these into wrappers calling mQ.
|
||
|
||
2022-11-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add unit tests for `MT/ME` and `UR/UE`.
|
||
|
||
* tmac/tests/an-ext_MT-works.sh:
|
||
* tmac/tests/an-ext_UR-works.sh: Do it.
|
||
|
||
* tmac/tmac.am (tmac_TESTS): Run tests.
|
||
|
||
2022-11-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl: Throw warning if paper format is
|
||
unrecognized.
|
||
|
||
2022-11-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (Msg): Align more closely with
|
||
diagnostic message format prescribed by GNU Coding Standards:
|
||
emit space (only) prior to message severity.
|
||
|
||
2022-11-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/meref.me.in: Drop unnecessary initialization parameters
|
||
from document. The line and title length do not need to be set
|
||
in troff mode; the document lays out fine for a variety of paper
|
||
formats if these are not forced to 6.5 inches. Also drop
|
||
redundant initialization of `pp` register.
|
||
|
||
2022-11-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Fix Savannah #63377.
|
||
|
||
* tmac/doc.tmac (Nm): Properly leverage new
|
||
`doc-in-name-section` variable. Set page topic `doc-topic-name`
|
||
to the first encountered argumentful `Nm` call in the "Name"
|
||
section while handling other "Name" section concerns, instead of
|
||
later after deciding we're not in the "Synopsis" section.
|
||
Problem caused by me when fixing antediluvian mdoc bug in commit
|
||
0d85615c62, 5 November.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63377>. Thanks to John
|
||
Gardner for the report.
|
||
|
||
2022-11-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Add tests for `Nm` macro.
|
||
|
||
* tmac/tests/doc_Nm-works.sh: Do it. Test regression reported
|
||
in Savannah #63377. Also ensure that we handle the case where
|
||
multiple `Nm` items are declared in the "Name" section (as might
|
||
happen in library man pages).
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-11-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/papersize.tmac: Improve integration with mm(7) macro
|
||
package. If a paper format has been selected, set `W` register
|
||
to new line length (if not already set on command line).
|
||
Similarly, set `O` register to 1 inch for the symmetric
|
||
horizontal margins otherwise assumed by this macro file. This
|
||
means that "groff -mm" and "groff -dpaper=letter -mm" are _not_
|
||
synonymous (when groff is configured to use U.S. letter as the
|
||
default paper format), because groff mm(7) uses a page offset of
|
||
0.963 inches on typesetters for compatibility with DWB mm.
|
||
* NEWS: Add item.
|
||
|
||
See discussion in <https://lists.gnu.org/archive/html/\
|
||
groff/2022-11/msg00081.html> and (some) follow-ups.
|
||
|
||
2022-11-16 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
* src/devices/gropdf/gropdf.pl: If the argument to the paper
|
||
format option '-p' matches a recognized format but includes a
|
||
trailing 'L' or 'l' ("legalL" or "a4l", for example), rotate the
|
||
document's MediaBox.
|
||
|
||
2022-11-16 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
* src/devices/gropdf/gropdf.pl: Fix incorrect hotspot placement
|
||
if page is in landscape orientation.
|
||
(FixRect): Perform coordinate transform if page is rotated.
|
||
(Rotate): New function performs relevant trigonometry.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63380>. Thanks to Blake
|
||
McBride for the report.
|
||
|
||
2022-11-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Integrate better with papersize.tmac by no longer
|
||
forcing line (and title) length to 6 inches for typesetters on
|
||
initialization. Gather default line length from output device
|
||
description, possibly modified later (by other macro file or
|
||
input). No change to terminal ("nroff mode") output.
|
||
* NEWS: Add item.
|
||
|
||
2022-11-16 Peter Schaffter <peter@schaffter.ca>
|
||
|
||
* tmac/papersize.tmac: If a paper format has been selected,
|
||
smuggle right margin setting to mom(7) if not overridden by the
|
||
user. See discussion in <https://lists.gnu.org/archive/html/\
|
||
groff/2022-11/msg00081.html> and (some) follow-ups.
|
||
|
||
2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/groff-man-pages.pdf)
|
||
(doc/groff-man-pages.utf8.txt): Add dependencies on new
|
||
`TMAC_PACKAGE_MAN` and `TMAC_PACKAGE_MDOC` convenience macros.
|
||
|
||
2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am (TMAC_PACKAGE_MAN, TMAC_PACKAGE_MDOC): Define
|
||
convenience macros for in-tree documents to depend on.
|
||
|
||
2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Trivially refactor. Rename `an-section` to
|
||
`an*section`.
|
||
|
||
2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grolbp/lbp.cpp (usage): Tweak usage message. The
|
||
output driver should be perfectly capable of handling output
|
||
from non-GNU (but device-independent) troffs.
|
||
|
||
2022-11-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grops/ps.cpp (usage): Employ more informative
|
||
metasyntactic variable names in usage message. Also summarize
|
||
program's function and direct reader to man page if help
|
||
explicitly requested (inferred from identity of output stream).
|
||
|
||
2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Trivially refactor for congruence with
|
||
documentary terminology. Rename strings and macros.
|
||
- an-title -> an*topic
|
||
- an-abbreviate-page-title -> an*abbreviate-page-topic
|
||
- an-title-abbv -> an*topic-abbv
|
||
- an-title-string -> an*topic-string
|
||
- an-title-length -> an*topic-length
|
||
- an-title-length-prev -> an*topic-length-prev
|
||
- an-title-new-length -> an*topic-new-length
|
||
- an-page-title-style -> an*topic-style
|
||
(TH): Recast diagnostic message to refer to "section", not
|
||
"volume" title.
|
||
|
||
2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Refactor to reduce code size. `UR` and `MT`
|
||
have identical implementations so...
|
||
(mV): Define new macro to perform the requisite actions, and...
|
||
(UR, MT): Make these into wrappers calling mV.
|
||
|
||
2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac (UR, MT): Fix problem with incorrect line
|
||
lengths and occasional "can't adjust" warnings when using
|
||
hyperlinks. Reduce the line length within the diversion by the
|
||
amount of indentation used in the context. Without this, lines
|
||
were getting set too short. (You might think they'd be too
|
||
long, but when creating a new environment, the _formatter's_
|
||
default line length is used; that's 65n on terminal devices.)
|
||
|
||
2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add test to ensure that link text (when the hyperlink
|
||
itself is not formatted because the device supports
|
||
hyperlinking) uses the correct line length and is adjusted.
|
||
|
||
* tmac/tests/an_adjust-link-text-correctly.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run tests.
|
||
|
||
2022-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/devpdf.am: Refactor.
|
||
(MOSTLYCLEANFILES): Populate macro incrementally, adjacent to
|
||
the targets that build the files to be cleaned. This will
|
||
enable cleaner refactoring in the future.
|
||
(DEFAULT_BASE35_FONTS): Add new macro storing the targets of the
|
||
PostScript Level 2 standard base 35 font descriptions.
|
||
(devpdffont_DATA): Populate using `DEFAULT_BASE35_FONTS`.
|
||
(URW_BASE35_FONTS): Add new macro, empty if [!HAVE_URW_FONTS];
|
||
and [HAVE_URW_FONTS] otherwise naming the `U` foundry font
|
||
description counterparts of the `DEFAULT_BASE35_FONTS`.
|
||
(devpdffont_DATA): Append `URW_BASE35_FONTS`.
|
||
($(DEFAULT_BASE35_FONTS) $(URW_BASE35_FONTS)): Assert dependency
|
||
on "font/devpdf/download". This isn't literally true, but
|
||
BuildFoundries generates all of these together, so if the
|
||
"font/devpdf/download" target rule runs successfully, the font
|
||
description files named in these macro expansions will be
|
||
generated too.
|
||
|
||
2022-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Add new command-line option to
|
||
specify the generated font description's "spacewidth" parameter;
|
||
in commit bf7f6862c3, 2021-09-24, I made libgroff complain if
|
||
this directive is missing (since any font, even a "special" one,
|
||
can be selected as current and the formatter's behavior when
|
||
encountering an input space should be well-defined under that
|
||
circumstance). Adding this option enables a well-formed font
|
||
description to be produced.
|
||
* src/utils/afmtodit/afmtodit.pl (usage):
|
||
* src/utils/afmtodit/afmtodit.1.man (Synopsis, Options):
|
||
Document it.
|
||
* NEWS: Add item.
|
||
|
||
2022-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Use our own fatal exit
|
||
function instead of Perl's "die".
|
||
(croak): New subroutine emits argument as part of diagnostic
|
||
message and exits with status 1.
|
||
(usage): Exit with status 2, not 1, on usage errors.
|
||
|
||
* NEWS: Document new exit behavior.
|
||
|
||
2022-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/devpdf.am (font/devpdf/download): Improve
|
||
comprehensibility of comments in generated "download" file.
|
||
Stop bracketing path element separator with spaces.
|
||
|
||
2022-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl (LoadFoundry): Stop
|
||
capitalizing beginning of diagnostic message (per GNU Coding
|
||
Standards). Drop ellipsis from end since no further diagnostics
|
||
relevant to that message are expected. Trim trailing slashes
|
||
from font path elements.
|
||
|
||
2022-11-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devps/devps.am: Refactor. Turn two identical target
|
||
rules into a (BSD-make-style, old-fashioned) pattern rule.
|
||
|
||
2022-11-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Rechristen self "GNU roff".
|
||
|
||
2022-11-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/pic/pic.ypp: Slightly refactor. Rename parameter
|
||
`form` (format) to `fmt` to make its nature as an abbreviation
|
||
clear.
|
||
(format_number, do_sprintf): Reorder null pointer equality
|
||
comparisons to avoid inadvertent lvalue assignment.
|
||
(do_sprintf): Declare lists of valid format conversion
|
||
specifiers and modifiers explicitly instead of as happenstance
|
||
literals. Recast diagnostic messages to refer to "invalid", not
|
||
"bad" input; refer to input keyword correctly as "sprintf" (not
|
||
"snprintf"); and report the identity of the invalid conversion
|
||
specifier we reject.
|
||
|
||
2022-11-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac (Fl, doc-flag-recursion, doc-print-recursive)
|
||
(doc-print-prefixes, Ar, Nm, Pa, Xr, doc-do-func, Fn)
|
||
(doc-do-func-args, Fo): Remove now-relic resets of type size to
|
||
previous value. Since commit 5125754cdf, 23 February, no mdoc
|
||
macro ever changes the type size.
|
||
|
||
2022-11-08 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Cater for invalid entries in download file.
|
||
|
||
* src/devices/gropdf/gropdf.pl: Test if path in the "download"
|
||
file points to a readable file. Also change order so that the
|
||
first valid entry is used as the font to embed. This replaces
|
||
previous order where last found entry is used.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62950>.
|
||
|
||
2022-11-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Set page topic in roman in "Name" section.
|
||
|
||
* tmac/doc.tmac (Nm): If in the "Name" section of the page, set
|
||
argument(s) with the `No` (normal formatting) macro instead of
|
||
handling them...normally. Since `Nm`'s usual behavior is to set
|
||
the next argument in boldface, in this circumstance it is set in
|
||
roman. Aligns page rendering with man(7) and fixes a bug
|
||
documented in the 4.3BSD-Reno mdoc.samples(7) page (1990-06-22),
|
||
upon which the groff_mdoc(7) page is based.
|
||
* tmac/groff_mdoc.7.man (Bugs): De-document bug.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?62926>.
|
||
|
||
2022-11-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common: Add internal register
|
||
`doc-in-name-section` to keep track of whether a macro is called
|
||
within the "Name" section of the document, to prepare a means of
|
||
fixing a long-standing bug with `Nm`.
|
||
(Sh): Canonicalize capitalization of section heading sooner.
|
||
Set or clear `doc-in-name-section` based on result.
|
||
(Rd): Add new register to dump.
|
||
* tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars):
|
||
Handle new register.
|
||
|
||
2022-11-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Use font CR, not CB, for `Cm` ("command modifier") and
|
||
`Fl` ("flag") macros on typesetters.
|
||
|
||
* tmac/mdoc/doc-ditroff (doc-Cm-font, doc-Fl-Font): Switch to
|
||
Courier roman from Courier bold. This congrues better with
|
||
other `Li` literals, which were not in boldface.
|
||
|
||
2022-11-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-nroff (doc-Li-Font): Switch from roman to bold.
|
||
On typesetters, the use of Courier (roman) plainly distinguishes
|
||
unquoted literals from their context. On terminals there was no
|
||
such visible distinction. Fortunately, in groff_mdoc(7) itself,
|
||
this does not result in a blinding blitz of boldface because the
|
||
`Ql` (quoted literal) macro is so often used, and it maintains
|
||
the roman style. This change further aligns groff mdoc(7) with
|
||
groff man(7) style conventions. (Also see how we handle
|
||
literals for typesetters and terminals in the "ms.ms" document.)
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Make `Sx` macro perform quotation, not italicization.
|
||
It's thorougly inconsistent with English composition practices
|
||
to refer to (sub)section headings within a document as if they
|
||
were major works.
|
||
|
||
* tmac/doc.tmac (Sx): Implement.
|
||
* tmac/mdoc/doc-ditroff (doc-Sx-font):
|
||
* tmac/mdoc/doc-nroff (doc-Sx-font): Delete.
|
||
* tmac/groff_mdoc.7.man (Section Cross References): Rename...
|
||
((Sub)section cross references): ...to this. Recognize
|
||
existence of `Ss` macro, curiously overlooked before.
|
||
* NEWS: Add item.
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Drop now-unused `doc-pageref` string. It was nowhere
|
||
interpolated outside of state management macros.
|
||
|
||
* tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars):
|
||
* tmac/mdoc/doc-common: Do it.
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (doc-header, doc-footer): Revise for
|
||
clarity and to use correct typefaces for titles.
|
||
(doc-header): Add new strings to ease title construction.
|
||
`doc-xref` stores the fully formatted page topic and section
|
||
number, e.g., "troff(1)"; `doc-abbv` stores the its potentially
|
||
abbreviated form when it is too long to fit.
|
||
(doc-footer): Use `doc-xref` as above. Stop setting the `Os`
|
||
and `Dd` parameters in the ("semantic"?) font used for the
|
||
page's section number (probably unnoticed all these years
|
||
because the font used to render that was (Times) roman).
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac:
|
||
* tmac/mdoc/doc-common: Rename strings for clarity.
|
||
- doc-document-title -> doc-page-topic
|
||
- doc-document-title-saved -> doc-page-topic-saved
|
||
* tmac/mdoc/doc-common: Use new name.
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff (doc-page-topic-font):
|
||
* tmac/mdoc/doc-nroff (doc-page-topic-font): Set man page topic
|
||
names in italics.
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Rename strings for clarity.
|
||
- doc-caption-font -> doc-page-topic-font
|
||
- doc-caption-font2 -> doc-page-section-font
|
||
* tmac/mdoc/doc-common (doc-header, doc-footer): Use new names.
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac: Delete suppression of `Pa` font selection in a
|
||
"Files" section. This special handling was not documented.
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff (doc-Pa-font): Set file specifications
|
||
in italics on typesetters. (Terminals already use italics.)
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff (doc-Xr-font):
|
||
* tmac/mdoc/doc-nroff (doc-Xr-font): Set man page topic cross
|
||
references in italics.
|
||
|
||
2022-11-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Rename `doc-Tn-font-shape` to
|
||
`doc-Tn-font` for better parallelism with other font selection
|
||
strings for mdoc macros, since the `Tn` macro no longer
|
||
manipulates the type size.
|
||
* tmac/doc.tmac (Tn): Use new name.
|
||
|
||
2022-11-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Debugging): Fix misleading claim. The
|
||
arguments to the `tm`, `tmc`, and `tm1` requests are not read in
|
||
copy mode. For example, you don't need to double backslashes to
|
||
get them to interpolate registers or strings.
|
||
|
||
2022-11-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (an-end):
|
||
* tmac/mdoc/doc-common (doc-end-macro): Ensure that document
|
||
footer appears in continuous rendering mode even when a final
|
||
pending output line in the document is 1v from the page bottom.
|
||
Replace `fl` call with `br`, which IMO has clearer semantics.
|
||
Extend page length by 1v before doing so if the current vertical
|
||
position is within 1v of the page bottom.
|
||
|
||
Thanks to Alex Colomar for the report.
|
||
|
||
2022-11-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man, mdoc]: Regression-test special case of continuous
|
||
rendering when the last pending output line in the document is
|
||
1v from the (notional) page bottom.
|
||
|
||
* tmac/tests/an_output-footer-when-continuously-rendering.sh:
|
||
* tmac/tests/doc_output-footer-when-continuously-rendering.sh:
|
||
Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run tests.
|
||
|
||
2022-11-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (TE): Update diagnostic to mention another
|
||
failure mode: a man page that is simply a `so` request requires
|
||
soelim(1) to be run if the sourced page uses tbl(1).
|
||
|
||
2022-11-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/xditview/xditview.am
|
||
($(GXDITVIEW_GROFF_VERSION_H)): Run `$(MKDIR_P)` and `printf` as
|
||
separate rule commands in order to use them with `$(AM_V_at)`
|
||
and `$(AM_V_GEN)`, respectively. Prevents noise from build.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63302>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[eqn]: Fix Savannah #63299.
|
||
|
||
* src/preproc/eqn/main.cpp: Revise input file line number
|
||
handling.
|
||
(read_line): Stop dealing with `current_lineno` here; it's now
|
||
up to its caller (`do_file()`) to manipulate the line number.
|
||
(do_file): When reading new file, initialize `current_lineno` to
|
||
1 instead of 0. Reset it to zero when encountering EOF (so that
|
||
diagnostics will not include a line number at all). When
|
||
performing nested call to `read_line()` to gather '.EN' from
|
||
input, increment the line number. Write correct line number in
|
||
output groff `lf` requests; in groff, its first argument assigns
|
||
the number of the _next_ input line. Increment line number at
|
||
end of outer `read_line()` loop.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63299>. Thanks to Alex
|
||
Colomar for the report.
|
||
|
||
2022-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[eqn]: Regression-test Savannah #63299.
|
||
|
||
* src/preproc/eqn/tests/\
|
||
diagnostics-report-correct-line-numbers.sh: Do it.
|
||
* src/preproc/eqn/eqn.am (eqn_TESTS, TESTS, EXTRA_DIST): Run
|
||
test.
|
||
|
||
2022-10-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl (fail, warn, construct_command)
|
||
(version): Restore trailing newlines to `print`ed output. They
|
||
went missing when I removed the assignment of the output record
|
||
separator in commit 6f2e367836, 24 October. Thanks to Dave
|
||
Kemper for catching this.
|
||
|
||
2022-10-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/preconv.cpp: Trivially refactor. Rename
|
||
`default_encoding` to `fallback_encoding` for clarity. Update
|
||
comments and debugging diagnostic messages accordingly.
|
||
|
||
2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grolj4]: Absorb lj4_font(5) man page into grolj4(1).
|
||
|
||
* src/devices/grolj4/lj4_font.5.man: Delete, moving content...
|
||
* src/devices/grolj4/grolj4.1.man (Fonts): ...hither.
|
||
|
||
* doc/doc.am (GROFF_MAN_PAGES1):
|
||
* src/devices/grolj4/grolj4.am (man5_MANS, EXTRA_DIST): Stop
|
||
formatting and shipping removed page.
|
||
|
||
* src/roff/groff/groff.1.man:
|
||
* src/utils/hpftodit/hpftodit.1.man: Drop references to page.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61819>.
|
||
|
||
2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Support `SN` register to configure subsection heading
|
||
indentation.
|
||
|
||
* tmac/doc.tmac: Recognize `SN` register if set on command line
|
||
and use groff man(7)-compatible default if it is not.
|
||
* tmac/mdoc/doc-common (Ss): Use this register instead of a
|
||
literal.
|
||
* tmac/groff_mdoc.7.man (Formatting with groff, troff, and
|
||
nroff): Document it.
|
||
* NEWS: Update item.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?62926>.
|
||
|
||
2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Support `IN` register to configure paragraph
|
||
indentation.
|
||
|
||
* tmac/doc.tmac: Recognize `IN` register if set on command line
|
||
and use groff man(7)-compatible defaults if it is not.
|
||
* tmac/mdoc/doc-common (Sh): Use this register instead of
|
||
`doc-paragraph-indentation`.
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Stop setting pargraph indentation
|
||
defaults here.
|
||
* tmac/groff_mdoc.7.man (Formatting with groff, troff, and
|
||
nroff): Document it.
|
||
* NEWS: Update item.
|
||
|
||
* tmac/tests/doc_Mt-works.sh:
|
||
* tmac/tests/doc_indents-correctly.sh: Update test expectations.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?62926>.
|
||
|
||
2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (Sh): Fix code style nit. Set paragraph
|
||
indentation absolutely rather than incrementally. mdoc(7)
|
||
doesn't have relative inset macros like man(7)'s `RS`/`RE`, so
|
||
the relative measurement could mislead the reader. (The
|
||
section heading itself uses an indentation of 0.)
|
||
|
||
2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Fix Debian #1022179.
|
||
|
||
* tmac/mdoc/doc-common (Ss): Indent entire subsection heading by
|
||
3 ens, even if it breaks across output lines. (Change and
|
||
restore indentation explicitly instead of using a temporary
|
||
indent to achieve this. Also indent absolutely by 3n instead of
|
||
retreating by one quarter inch.)
|
||
|
||
Fixes <https://bugs.debian.org/1022179>. Thanks to наб for the
|
||
report.
|
||
|
||
2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/doc_indents-correctly.sh: Add regression test for
|
||
Debian #1022179.
|
||
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Fix misleading register name.
|
||
|
||
* tmac/mdoc/doc-common (Sh):
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Rename `doc-subheader-indent` to
|
||
`doc-paragraph-indentation`, because the latter is what it's
|
||
used for.
|
||
|
||
2022-10-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_POPPLER): Improve shell code portability.
|
||
Per the GNU Autoconf manual, "The -a, -o, '(', and ')' operands
|
||
are not present in all implementations, and have been marked
|
||
obsolete by Posix 2008. ...portable uses of test should never
|
||
have more than four arguments, and scripts should use shell
|
||
constructs like '&&' and '||' instead."
|
||
|
||
2022-10-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/preconv.cpp: Alter usage message handling.
|
||
(usage): Summarize purpose of program and steer reader to man
|
||
page (only) if help was explicitly requested, and exit
|
||
successfully from here...
|
||
(main): ...instead of calling scope.
|
||
|
||
2022-10-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/preconv.cpp (usage): Use more
|
||
communicative metasyntactic variable names.
|
||
* src/preproc/preconv/preconv.1.man (Synopsis, Options): Align
|
||
with updated usage message.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp: Alter usage message handling.
|
||
(usage): Summarize purpose of program and steer reader to man
|
||
page (only) if help was explicitly requested, and exit
|
||
successfully from here...
|
||
(main): ...instead of calling scope.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grolbp/lbp.cpp: Alter usage message handling.
|
||
(usage): Summarize purpose of program and steer reader to man
|
||
page (only) if help was explicitly requested, and exit
|
||
successfully from here...
|
||
(main): ...instead of calling scope.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grolbp/lbp.cpp (main): Handle `getopt_long()`
|
||
return value more idiomatically.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grolbp/lbp.cpp: Fix code style nits.
|
||
(main): Use standard C library symbols `EXIT_SUCCESS` and
|
||
`EXIT_FAILURE` instead of integer literals as arguments to
|
||
`exit()`. Add assertion.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grotty/tty.cpp: Alter usage message handling.
|
||
(usage): Summarize purpose of program and steer reader to man
|
||
page (only) if help was explicitly requested, and exit
|
||
successfully from here...
|
||
(main): ...instead of calling scope.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grotty/tty.cpp: Fix code style nits.
|
||
(main): Use standard C library symbols `EXIT_SUCCESS` and
|
||
`EXIT_FAILURE` instead of integer literals as arguments to
|
||
`exit()`. Replace `assert(0)` call with communicative
|
||
predicate.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp: Alter usage message handling.
|
||
(synopsis, help): Coalesce these two functions...
|
||
(usage): ...into this one. Summarize purpose of program and
|
||
steer reader to man page only if help was explicitly requested,
|
||
rather than blitzing user with text upon a usage error. Also
|
||
drop option summary from usage message, as it duplicates
|
||
groff(1).
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Alter usage message handling.
|
||
(help): Rename this subroutine...
|
||
(usage): ...to this. Summarize purpose of program and steer
|
||
reader to man page only if help was explicitly requested, rather
|
||
than blitzing user with text upon a usage error. Also drop
|
||
option summary from usage message, as it duplicates grog(1).
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Drop relic code and comments.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Migrate expansion of Perl interpreter in shebang.
|
||
Use the same technique as afmtodit, mmroff, gropdf, and pdfmom.
|
||
|
||
* src/utils/grog/grog.am (grog): Replace "@PERL@" instead of
|
||
'^\(#! \).*perl'.
|
||
* src/utils/grog/grog.pl: Use "@PERL@" in shebang.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[afmtodit]: Give program a usage message.
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Add new scalar `want_help` of
|
||
Boolean sense. Recognize new long option `--help`, attached to
|
||
`$want_help`. Stop stripping off directory name components from
|
||
program name when emitting diagnostics. No other groff program
|
||
does this (well, gropdf did until recently), and it might save
|
||
users some confusion if they're working with multiple copies of
|
||
afmtodit.
|
||
(usage): New subroutine reports usage message. If help was
|
||
explicitly requested, summarize purpose of program and steer
|
||
reader to man page.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[afmtodit]: Migrate expansion of Perl interpreter in shebang.
|
||
Use the same technique as mmroff, gropdf, and pdfmom.
|
||
|
||
* src/utils/afmtodit/afmtodit.am (afmtodit): Replace "@PERL@"
|
||
instead of "/usr/bin/perl".
|
||
* src/utils/afmtodit/afmtodit.pl: Use "@PERL@" in shebang.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[gropdf] Give program a usage message.
|
||
|
||
* src/devices/gropdf/gropdf.pl: Add new scalar `want_help` of
|
||
Boolean sense. Recognize new long option `--help`, attached to
|
||
`$want_help`.
|
||
(usage): New subroutine reports usage message. If help was
|
||
explicitly requested, summarize purpose of program and steer
|
||
reader to man page.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/xditview/xditview.c (Syntax): "#if 0" out
|
||
reference to `-noPolyText` option, whose effect is likewise
|
||
bracketed in another file.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (enable_warning, disable_warning):
|
||
Recast diagnostic messages for clarity.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pfbtops]: Fix code style and diagnostic nits.
|
||
|
||
* src/utils/pfbtops/pfbtops.c (error): Exit with `EXIT_FAILURE`
|
||
status (from standard C library) instead of status 2.
|
||
(main): Exit with `EXIT_SUCCESS` status when writing version or
|
||
help information. Exit with status 2 when dying due to usage
|
||
error. Use `fprintf()` and `strerror()` to construct error
|
||
message when dying due to inability to open input file instead
|
||
of using `perror()`, which anonymizes its caller and thus should
|
||
never be used in serious work. Avoid it like `gets()`.
|
||
* NEWS: Add item for exit status changes.
|
||
|
||
Continues the long process of fixing Savannah #52463.
|
||
|
||
2022-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man pages]: Don't document macro package compatibility wrapper
|
||
directory if it's not used.
|
||
|
||
* Makefile.am (.man): Use sed to replace
|
||
'@COMPATIBILITY_WRAPPERS@' in man page text with value of
|
||
`compatibility_wrappers` shell variable. Document its purpose.
|
||
* src/preproc/eqn/eqn.1.man (Description):
|
||
* src/preproc/grn/grn.1.man (Options):
|
||
* src/roff/groff/groff.1.man (Installation directories):
|
||
* src/roff/troff/troff.1.man (Environment): Mention
|
||
`@SYSTEMMACRODIR@` only if `@COMPATIBILITY_WRAPPERS@` expands to
|
||
something other than "no" (it could be "yes" or "manual").
|
||
|
||
Thanks to Alexander Kanavin and Jeremy Puhlman for the report.
|
||
|
||
2022-10-21 Robert Yang <liezhi.yang@windriver.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl:
|
||
* src/devices/gropdf/gropdf.pl:
|
||
* src/devices/gropdf/pdfmom.pl: Replace use of '-w' in shebang
|
||
line with "use warnings;".
|
||
|
||
2022-10-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/fallbacks.tmac: Define fallback characters for many code
|
||
points from the Unicode General Punctuation Block. This is to
|
||
ease migration from other documentation formats; in many cases
|
||
there are more idiomatic *roff ways of getting results that
|
||
typeset better and are amenable to fine tuning. For instance,
|
||
Unicode defines spaces and dashes of various discrete widths;
|
||
when typesetting with *roff, you can have a space or dash (among
|
||
other things) of any length achievable by the output device.
|
||
* tmac/ps.tmac: Migrate non-breaking hyphen fallback character
|
||
definition from here to the foregoing.
|
||
|
||
Fixes <https://savannah.gnu.org/?58930>. Thanks to Dave Kemper
|
||
for the report and discussion.
|
||
|
||
2022-10-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac:
|
||
* tmac/s.tmac: Escape newlines when opening conditional blocks.
|
||
|
||
Fixes <https://savannah.gnu.org/?63197>. Thanks to Bjarni Ingi
|
||
Gislason for the report and Dave Kemper for the quick fix.
|
||
|
||
2022-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grodvi/dvi.cpp (usage):
|
||
* src/devices/grohtml/post-html.cpp (usage):
|
||
* src/devices/grolbp/lbp.cpp (usage):
|
||
* src/devices/grolj4/lj4.cpp (usage):
|
||
* src/devices/grops/ps.cpp (usage):
|
||
* src/devices/grotty/tty.cpp (usage):
|
||
* src/devices/xditview/xditview.cpp (usage):
|
||
* src/preproc/eqn/main.cpp (usage):
|
||
* src/preproc/grn/main.cpp (usage):
|
||
* src/preproc/html/pre-html.cpp (usage):
|
||
* src/preproc/pic/main.cpp (usage):
|
||
* src/preproc/preconv/preconv.cpp (usage):
|
||
* src/preproc/refer/refer.cpp (usage):
|
||
* src/preproc/soelim/soelim.cpp (usage):
|
||
* src/preproc/tbl/main.cpp (usage):
|
||
* src/roff/groff/groff.cpp (synopsis, help):
|
||
* src/roff/nroff/nroff.sh:
|
||
* src/roff/troff/input.cpp (usage):
|
||
* src/utils/addftinfo/addftinfo.cpp (usage):
|
||
* src/utils/hpftodit/hpftodit.cpp (usage):
|
||
* src/utils/indxbib/indxbib.cpp (usage):
|
||
* src/utils/lkbib/lkbib.cpp (usage):
|
||
* src/utils/lookbib/lookbib.cpp (usage):
|
||
* src/utils/pfbtops/pfbtops.c (usage):
|
||
* src/utils/tfmtodit/tfmtodit.cpp (usage):
|
||
* src/utils/xtotroff/xtotroff.c (usage): Update usage message.
|
||
Present different modes of operation on separate output lines.
|
||
Sort options in English lexicographic order. Document help
|
||
option(s) as last mode of operation.
|
||
|
||
2022-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl: Revise handling of argument 0.
|
||
Rename scalar `progname` to `prog` for brevity (and preparation
|
||
for writing a usage message). Also stop stripping off directory
|
||
name components from it. No other groff program does this, and
|
||
it might save users some confusion if they're working with
|
||
multiple copies of gropdf.
|
||
|
||
2022-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Migrate terminology from "paper size" to "paper format" or
|
||
"paper dimensions" as appropriate in documentation and
|
||
diagnostic messages. "Format" implies an orientation (which can
|
||
be overridden in many cases) whereas size does not. When only
|
||
the magnitudes of measurements are at issue (mainly for internal
|
||
purposes), use the term "dimensions".
|
||
|
||
* NEWS:
|
||
* PROBLEMS:
|
||
* doc/groff.texi:
|
||
* m4/groff.m4 (GROFF_PAGE):
|
||
* man/groff_font.5.man:
|
||
* man/groff_tmac.5.man:
|
||
* src/devices/grodvi/dvi.cpp (main):
|
||
* src/devices/grolbp/grolbp.1.man:
|
||
* src/devices/grolbp/lbp.cpp (main):
|
||
* src/devices/grolj4/grolj4.1.man:
|
||
* src/devices/grolj4/lj4.cpp (lj4_printer::lj4_printer, main):
|
||
* src/devices/grolj4/lj4_font.5.man:
|
||
* src/devices/gropdf/gropdf.1.man:
|
||
* src/devices/grops/grops.1.man:
|
||
* src/devices/grops/ps.cpp (main):
|
||
* src/roff/groff/groff.1.man:
|
||
* tmac/papersize.tmac: Do it.
|
||
|
||
2022-10-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff (doc-left-parenthesis)
|
||
(doc-right-parenthesis, doc-left-bracket, doc-right-bracket):
|
||
Drop thin and hair space escape sequences from these string
|
||
definitions. (Also, doc-right-bracket was inconsistent with
|
||
doc-left-bracket, the former inserting horizontal motion only
|
||
before the bracket character.) Eliminates excess space when
|
||
using Pq, Po, Pc and Bq, Bo, Bc macros and formatting for
|
||
typesetters, and aligns output with behavior of `Pq` and `Bq` as
|
||
documented in groff_mdoc(7).
|
||
|
||
Fixes <https://bugs.debian.org/1021795>. Thanks to наб for the
|
||
report.
|
||
|
||
2022-10-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff: Use groff-canonical typeface names in
|
||
font selection escape sequences. Migrate 'C' to 'CR' and 'CO'
|
||
to 'CI'. (Admittedly, "Courier oblique" is more pedantically
|
||
correct than "Courier italic". But the iron ball of Unix troff
|
||
history and its style trio [later quartet] of "R", "I", "B"
|
||
{then "BI"} will not be ignored.)
|
||
|
||
2022-10-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff: Drop nilpotent type size escape
|
||
sequences from string definitions.
|
||
|
||
2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Document a CSTR #54 erratum regarding \n(st and \n(sb.
|
||
|
||
* doc/groff.texi (Page Motions):
|
||
* man/groff.7.man (Writable registers):
|
||
* man/groff_diff.7.man (New registers): Do it.
|
||
|
||
* PROBLEMS: Further clarify. Note DWB and Heirloom behavior.
|
||
|
||
2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/main.cpp (read_line): Fix switched test
|
||
consequents when updating `current_lineno`.
|
||
|
||
2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/xtotroff/xtotroff.c (main): Annotate "xtotroff" as a
|
||
GNU program in version information.
|
||
|
||
2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/xditview/xditview.am
|
||
($(GXDITVIEW_GROFF_VERSION_H): Perform correct substitution to
|
||
get groff version string into `Version_string` C symbol.
|
||
Continues commit c73decb58f, 9 October.
|
||
|
||
2022-10-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.1.man (Files): Fix ordering error.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63228>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-10-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/lex.cpp (get_delimited_text): Clear line
|
||
number when hitting EOF.
|
||
* src/preproc/eqn/main.cpp: Revise end-of-file handling. Clear
|
||
line number upon reaching EOF so that we don't report a nonsense
|
||
value one greater than the number of lines in the input file.
|
||
(read_line): Boolify. Make static (local linkage only), since
|
||
it has no external callers. Introduce new Boolean variable
|
||
`is_end_of_file`. Clear `current_lineno` if EOF, and increment
|
||
it otherwise.
|
||
(do_file, main): Clarify diagnostic messages.
|
||
|
||
2022-10-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[eqn]: Improve diagnostics involving unprintable characters.
|
||
|
||
* src/preproc/eqn/main.cpp (input_char_description): New
|
||
function constructs a human-readable string describing
|
||
characters.
|
||
(read_line, inline_equation, main): Call new function and adjust
|
||
diagnostic message wording to accommodate the phrase it returns.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63218>.
|
||
|
||
2022-10-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[eqn]: Improve diagnostics.
|
||
|
||
* src/preproc/eqn/lex.cpp (file_input::~file_input):
|
||
* src/preproc/eqn/main.cpp (main): Die if `fclose()` fails and
|
||
report underlying system error.
|
||
(inline_equation): Identify inline equation context.
|
||
|
||
2022-10-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (2c, 1c): Throw diagnostic if changing columnation
|
||
with a footnote pending. This isn't necessarily an error per
|
||
se, but in many cases it will flag an undesirable page layout
|
||
due to the limited flexibility of me(7)'s footnote support at
|
||
present. See <https://savannah.gnu.org/bugs/?63176>.
|
||
|
||
2022-10-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/main.cpp: Fix code style nits.
|
||
(usage): Align output with man page. Document separate
|
||
invocation modes separately.
|
||
(main): Use standard C library symbols `EXIT_SUCCESS` and
|
||
`EXIT_FAILURE` with `exit()` calls instead of integer literals.
|
||
Replace `assert(0)` call with communicative predicate. Check
|
||
return value of `fclose()`, and exit with fatal error if it
|
||
fails. Distinguish `ferror()` status and `fflush(stdout)`
|
||
failures when cleaning up before exit.
|
||
|
||
2022-10-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (read_color_draw_node): Clarify
|
||
diagnostic.
|
||
|
||
2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/dvi.tmac: Always render \[aq] as a neutral apostrophe.
|
||
Thanks to the TC fonts, we can do this even when the default CM
|
||
text fonts are in use.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63200>.
|
||
|
||
2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/ec.tmac: Remove apparently unnecessary remappings of
|
||
styles (and reassertion of style slots in the font mounting
|
||
position list, albeit in an unusual order (RBI instead of RIB)).
|
||
This code frustrated the rendering of man pages with post-1.22.4
|
||
groff for the 'dvi' output device when using EC fonts. Instead
|
||
remap the T and H family typefaces in all four styles
|
||
explicitly. (The CW and CWI faces were already handled.) Also
|
||
add remappings of groff+PostScriptish font names "CB" and "CBI"
|
||
to CW EC faces of normal weight, corresponding to dvi.tmac; see
|
||
commits 529e2ca0c4, 2002-03-23 and c9741da6c0, 2021-05-06.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63194>.
|
||
|
||
2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an_works-with-ec.sh: Add regression test for
|
||
Savannah #63194.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/ec_works.sh: Add unit test to validate use of EC
|
||
fonts when "-mec" option given.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/latin2.tmac:
|
||
* tmac/latin5.tmac:
|
||
* tmac/latin9.tmac: Perform the character remapping shenanigans
|
||
of the fix for Savannah #63112 only if the output device is
|
||
"latin1" (a terminal using an 8-bit character encoding). Only
|
||
then can we be sure that Latin-1 glyphs will be unavailable when
|
||
other encodings are used and that `\N` escape sequences will
|
||
identify correct glyph indices in a font (because there is no
|
||
font per se accessible to groff--simply a terminal implementing
|
||
a character encoding).
|
||
|
||
2022-10-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (GetType1): Clarify diagnostic.
|
||
When failing to open a font file for embedding in a PDF, mention
|
||
this context.
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.tables: Update against Unicode 15.
|
||
No substantive changes.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63188>.
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: If URW fonts were located, add the directory
|
||
where they were found to the configuration report.
|
||
|
||
Attempts to fix <https://savannah.gnu.org/bugs/?62860> (2/2).
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4: Try to make gropdf's search for URW font files
|
||
more deterministic. To disambiguate cases where multiple--not
|
||
necessarily identical--copies may be found on the system, search
|
||
_only_ in the directory given to the `--with-urw-fonts-dir`
|
||
configure option, if present. This populates the "Foundry" file
|
||
generated by the build, causing gropdf to search there first.
|
||
(GROFF_URW_FONTS_PATH): Stop `AC_SUBST`ing `urwfontsdir` here.
|
||
(GROFF_URW_FONTS_CHECK): `AC_REQUIRE` `GROFF_URW_FONTS_PATH` to
|
||
be run first. If `urwfontsdir` is not null, search only there
|
||
for URW fonts. Assign `urwfontsdir` the value of the directory
|
||
in which the fonts are found. Assign it an empty value if none
|
||
are found. Either way, `AC_SUBST` the variable.
|
||
|
||
Attempts to fix <https://savannah.gnu.org/bugs/?62860> (1/2).
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (LoadFont): Clarify diagnostic.
|
||
gropdf opens "fonts" in two distinct ways. On the one hand, it
|
||
opens groff font description files for essentially all
|
||
nontrivial output. On the other, it may open actual Type 1 font
|
||
files for embedding in a PDF. Make failure of the former case
|
||
less confusable with the latter.
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Document new XN/XH and related macros.
|
||
|
||
* doc/groff.texi (Creating a table of contents):
|
||
* doc/ms.ms (Creating a table of contents):
|
||
* tmac/groff_ms.7.man (Creating a table of contents): Do it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63110>.
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[gxditview]: Support `-version`, `--version` option. As a C
|
||
program, gxditview had no access to the (C++) libgroff
|
||
`Version_string` symbol, so construct a header file to store
|
||
this datum at build time. If groff gets other user-facing C
|
||
programs, we should consider generating this header in
|
||
src/include instead.
|
||
|
||
* src/devices/xditview/xditview.am: Generate "groff_version.h"
|
||
file.
|
||
(GXDITVIEW_GROFF_VERSION_H): Define new macro.
|
||
($(GXDITVIEW_GROFF_VERSION_H)): Define target to generate file.
|
||
(XDITVIEW_GENHDRS): Add $(GXDITVIEW_GROFF_VERSION_H).
|
||
|
||
* src/devices/xditview/xditview.c: Include new header file.
|
||
(Syntax): Report newly supported options.
|
||
(main): Recognize and handle new options.
|
||
|
||
* src/devices/xditview/gxditview.1.man (Synopsis): Document
|
||
them.
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[gxditview]: Update usage message production and contents.
|
||
|
||
* src/devices/xditview/xditview.c: Use C99 Boolean type.
|
||
(Syntax): Accept additional Boolean argument indicating whether
|
||
the usage message is to be issued due to an error. Write
|
||
message to stderr if so, and stdout otherwise. Stop presuming
|
||
length of output line; guessing where to wrap is unreliable due
|
||
to variable terminal width and length of argv[0]. Write one
|
||
line per invocation mode of the program. Stop duplicatively
|
||
documenting standard X Toolkit options. Exit with standard C
|
||
library `EXIT_FAILURE` status if there was an error, and
|
||
`EXIT_SUCCESS` otherwise.
|
||
(main): Refactor to prepare for `--version` support.
|
||
|
||
* src/devices/xditview/gxditview.1.man (Synopsis): Sync list of
|
||
options with usage message.
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Recognize "--version" as
|
||
synonym for "-v". To achieve this, use Getopt::Long instead of
|
||
Getopt::Std.
|
||
* src/utils/afmtodit/afmtodit.1.man (Synopsis, Options):
|
||
Document it.
|
||
|
||
2022-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/pdfmom.pl: Recognize "--version" as synonym
|
||
for "-v".
|
||
* src/devices/gropdf/pdfmom.1.man (Synopsis, Description):
|
||
Document it.
|
||
|
||
2022-10-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl (version): Identify as a GNU program.
|
||
|
||
2022-10-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grolj4/grolj4.1.man (Typefaces): Add new
|
||
subsection.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60929>. Thanks to T. Kurt
|
||
Bond for the report.
|
||
|
||
2022-10-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/meref.me.in (Columnated Output): Document persistence of
|
||
`$s` register value across columnation mode changes.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62717>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2022-10-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/meref.me.in: Annotate empty default arguments more
|
||
consistently.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62801>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2022-10-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/meref.me.in: Fix documentation error.
|
||
(Summary) <\_>: Describe as "underrule", not "underscore".
|
||
These are distinct: the latter is a glyph; the former is drawn
|
||
by typesetters and rendered with SGR attributes on terminals.
|
||
|
||
2022-10-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* NEWS: Advise users of changes to "name" directive handling in
|
||
font description files.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61423>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2022-10-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/number.cpp: Refactor and fix code style nits.
|
||
Boolify and rename static (local) functions.
|
||
- parse_expr -> is_valid_expression
|
||
- start_number -> is_valid_expression_start
|
||
- parse_term -> is_valid_term
|
||
Rename preprocessor macro `SCALE_INDICATOR_CHARS` to
|
||
`SCALING_UNITS`.
|
||
(is_valid_expression, is_valid_term): Rename parameters and
|
||
demote them from `int` to `bool`.
|
||
- scaling_indicator -> scaling_unit (no demotion)
|
||
- parenthesised -> is_parenthesized
|
||
- rigid -> is_mandatory
|
||
(is_valid_expression_start, is_valid_expression, is_valid_term):
|
||
Return Boolean rather than integer literals.
|
||
(get_vunits, get_hunits, get_number_rigidly, get_number)
|
||
(get_integer): Update call sites of renamed functions. Replace
|
||
Boolean-valued integer literals used as Booleans with Boolean
|
||
literals and annotate their purposes. (See <https://\
|
||
stackoverflow.com/questions/38076786/\
|
||
why-doesnt-c-support-named-parameters>.)
|
||
(get_vunits, get_hunits, get_number, get_integer): Replace `0`
|
||
in assertions with a communicative predicate. In all of these
|
||
it's an unhandled `switch()` case.
|
||
|
||
2022-10-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_expr_test, do_zero_width): Use
|
||
better terminology in diagnostic messages.
|
||
|
||
2022-10-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Fix Savannah #63151.
|
||
|
||
* src/roff/troff/input.cpp (read_draw_node): Throw "delim"
|
||
warning diagnostic when a drawing escape sequence ends the line
|
||
without a closing delimiter.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63151>.
|
||
|
||
2022-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/fallbacks.tmac: Define fallbacks for characters in ISO
|
||
Latin-{2,5,9} but not in Latin-1.
|
||
|
||
Fixes <https://bugs.debian.org/782903>. Thanks to Rafal Pietrak
|
||
for the report.
|
||
|
||
2022-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Fix Savannah #63149.
|
||
|
||
* src/roff/troff/reg.cpp (alter_format): Throw comprehensible
|
||
diagnostic when input delete character encountered in register
|
||
format.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63149>.
|
||
|
||
2022-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Describe an input delete character comprehensibly.
|
||
|
||
* src/roff/troff/input.cpp (token::description): The delete
|
||
character (ISO 127 decimal, EBCDIC 7) is a valid `TOKEN_CHAR`
|
||
but is not printable. Don't attempt to output it literally in
|
||
diagnostics; describe it in a phrase instead.
|
||
|
||
2022-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Apply consistent terminology.
|
||
|
||
* src/roff/troff/input.cpp: Rename functions to better align
|
||
with our documentation, and decouple their names from an
|
||
assumption of diagnostic severity. Also give them imperative
|
||
names since they are called for their side effects, not their
|
||
return values.
|
||
- empty_name_warning -> diagnose_missing_identifier
|
||
- non_empty_name_warning -> diagnose_invalid_identifier
|
||
(diagnose_missing_identifier): Refer to absent operand as
|
||
"identifier", not "name", in diagnostic messages since the
|
||
latter (strictly) refers to the request/macro/string/diversion
|
||
name space, and this function is also used to gather register
|
||
identifiers.
|
||
|
||
2022-10-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Fix Savannah #63112 (3/3).
|
||
|
||
* tmac/latin2.tmac: Replace characters that ISO Latin-1 has but
|
||
Latin-2 doesn't. Map characters that ISO Latin-2 has and
|
||
Latin-1 doesn't to their numeric code points.
|
||
|
||
2022-10-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Regression-test Savannah #63112 (3/3).
|
||
|
||
* tmac/tests/latin2_works: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Fix Savannah #63112 (2/3).
|
||
|
||
* tmac/latin5.tmac: Replace characters that ISO Latin-1 has but
|
||
Latin-5 doesn't. Map characters that ISO Latin-5 has and
|
||
Latin-1 doesn't to their numeric code points.
|
||
|
||
2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Regression-test Savannah #63112 (2/3).
|
||
|
||
* tmac/tests/latin5_works: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Fix Savannah #63112 (1/3).
|
||
|
||
* tmac/latin9.tmac: Replace characters that ISO Latin-1 has but
|
||
Latin-9 doesn't. Map characters that ISO Latin-9 has and
|
||
Latin-1 doesn't to their numeric code points.
|
||
|
||
2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Regression-test Savannah #63112 (1/3).
|
||
|
||
* tmac/tests/latin9_works: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp: Refactor to parallelize logic in
|
||
similar routines; namely, those handling escape sequences that
|
||
accept newlines as argument delimiters.
|
||
|
||
2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp: Fix inconsistencies in handling of
|
||
escape sequences that accept newlines as delimiters. Some threw
|
||
spurious warnings as in Savannah #63011; others failed to treat
|
||
a newline-terminated escape sequence also as the ending of an
|
||
input line.
|
||
(do_name_test, do_zero_width): Suppress spurious warning.
|
||
(do_zero_width, do_width, do_special): Synthesize newline to
|
||
terminate input line.
|
||
|
||
2022-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/\
|
||
some_escapes_accept_newline_delimiters.sh: Add test cases for
|
||
`\A` and test formatted output of escape sequences, not just the
|
||
absence of diagnostics from permitted use of newlines as
|
||
argument delimiters.
|
||
|
||
2022-09-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libdriver/input.cpp (do_file): Make use of
|
||
positioning commands before the first page is started fatal
|
||
errors; they suggest ill-formed input. The 'p' command
|
||
clobbers the vertical position anyway. (See
|
||
https://bugs.debian.org/421437 for discussion.)
|
||
|
||
2022-09-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdf.tmac: Add inclusion guard; if a `pdfmark` macro is
|
||
already defined, skip inclusion of this file. Unfortunately
|
||
there are multiple name collisions with pdfmark.tmac.
|
||
|
||
2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp:
|
||
* src/roff/troff/request.h: Trivially refactor. Boolify
|
||
`interpolate_macro` and `request::invoke`. Also rename
|
||
parameter `no_next` to `do_not_want_next_token`, exposing
|
||
potentially confusing interface design.
|
||
|
||
2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (spring_trap, interpolate_string)
|
||
(interpolate_string_with_args): Improve error diagnostics: when
|
||
a sprung trap or an interpolation fails because it's being
|
||
attempted on a request, say so explicitly and _name_ it. If the
|
||
argument to the trap-planting request or to a string
|
||
interpolation escape sequence is itself an interpolation, this
|
||
name might not be obvious. Consider:
|
||
.wh \n[pos] \*[mac]
|
||
.em \*[mac]
|
||
.itc 1 \*[mac]
|
||
\*[\*[mac]]
|
||
Supplying this information requires no additional overhead.
|
||
|
||
2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (interpolate_string): Trivially
|
||
refactor. Rename function parameter from `s` to `nm` to more
|
||
obviously align with `interpolate_string_with_args()`.
|
||
|
||
2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_zero_width, token::description)
|
||
(interpolate_string, interpolate_string_with_args)
|
||
(token::get_char): Revise diagnostic messages to stop presuming
|
||
the identity of the escape character.
|
||
|
||
2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (set_escape_char): Recast error
|
||
message to describe attempted operation and tell the user what
|
||
we're doing about being instructed to use an invalid escape
|
||
character.
|
||
|
||
2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (read_size): Be more helpful to
|
||
ambiguous type size escape sequence users; offer advice in
|
||
terms of the current escape character.
|
||
|
||
2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp (main): Fix SEGV when exiting
|
||
gxditview. The `postdriver` pointer always referred to
|
||
allocated memory except when the `-X` option was given; it was
|
||
then assigned the address of a #defined string literal. It was
|
||
thus statically allocated and an error to attempt to `free()`
|
||
it. Duplicate the string on the heap instead so that we can
|
||
clean up uniformly regardless of postprocessor. Problem caused
|
||
by me when introducing `xexit()` in commit 6769e56aab, 20 June.
|
||
|
||
2022-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (@o, n2, sk (f, ++): Consistently call `@err`
|
||
macro with `do`.
|
||
|
||
2022-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Initialize new register `_f`, the value of `$m`
|
||
{column count} of the previous pending footnote, to zero,
|
||
meaning there is no previous pending footnote.
|
||
(@o): Emit diagnostic when flushing footnotes into a different
|
||
column layout than the pending footnote last added. Set `_f` to
|
||
zero.
|
||
((f): Emit diagnostic when enqueueing footnote using a different
|
||
column layout than the previous pending footnote used. Set `_f`
|
||
to `$m`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58736>. Thanks to Dave
|
||
Kemper for the report and discussion.
|
||
|
||
2022-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Explicitly initialize and annotate internal
|
||
register `?f`.
|
||
|
||
2022-09-08 Nikita Ivanov <nikita.vyach.ivanov@gmail.com>
|
||
|
||
* tmac/ps.tmac: Fallback definitions for glyphs that usually
|
||
come from special fonts should use `schar` instead of `fchar`.
|
||
{Define fallback special characters using `schar` instead of
|
||
`fchar` for glyphs that we do not expect to find in text fonts;
|
||
that is, they don't have bold, italic, and bold-italic stylistic
|
||
variants. This means all special character definitions in the
|
||
file except for rules, ligatures, and digraphs. Problem dates
|
||
back to a series of commits from March 2002 to February 2003,
|
||
straddling the introduction of the `schar` request in November
|
||
2002. --GBR}
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62955>.
|
||
|
||
2022-09-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Slightly simplify new `XN` macro feature to align it more
|
||
closely with Berkeley TOC macro behavior; don't prepend the
|
||
table of contents entry with the section number (`\*[SN]`). If
|
||
desired, a document can define `XN-REPLACEMENT`. This does not
|
||
regress "pdfmark.ms" because it uses an alternative, older
|
||
implementation of these features from "spdf.tmac".
|
||
|
||
* tmac/s.tmac (XH-UPDATE-TOC): Update comments.
|
||
(XN-REPLACEMENT): Do it.
|
||
|
||
2022-09-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdf.tmac (pdf*href-I): Call `pdf:error` macro by its
|
||
correct name. Both this macro file and
|
||
contrib/pdfmark/pdfmark.tmac seem to want to use the 'pdf'
|
||
prefix for their macro names, with much confusing overlap.
|
||
Problem dates back to commit 87046b2948, 2011-07-26.
|
||
|
||
2022-09-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_URW_FONTS_CHECK): If Ghostscript or awk are
|
||
unavailable, skip only the prepopulation of the URW font search
|
||
path instead of the entire check. This way we still locate the
|
||
URW fonts if they are in one of several standard locations.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62775>.
|
||
|
||
2022-09-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Trivially refactor.
|
||
|
||
* src/roff/troff/input.cpp (do_name_test): Boolify and rename
|
||
local variables to..."impredicate" their names.
|
||
- bad_char -> got_bad_char
|
||
- some_char -> got_some_char
|
||
|
||
2022-09-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grodvi, ...]: Trivially refactor.
|
||
|
||
Tidy up #includes of the "assert.h" header, which we locally
|
||
provide to ensure a C99-conformant implementation. Drop
|
||
inclusion of header from files that don't directly need it, add
|
||
it where they do, and spell the inclusion consistently with
|
||
double quotes to cue the reader of its local status.
|
||
|
||
* src/devices/grodvi/dvi.cpp:
|
||
* src/devices/grolj4/lj4.cpp:
|
||
* src/libs/libdriver/printer.cpp:
|
||
* src/preproc/eqn/box.cpp:
|
||
* src/preproc/eqn/delim.cpp:
|
||
* src/preproc/eqn/pile.cpp:
|
||
* src/preproc/eqn/script.cpp: Add inclusion.
|
||
|
||
* src/include/driver.h:
|
||
* src/libs/libgroff/fontfile.cpp:
|
||
* src/preproc/eqn/eqn.h:
|
||
* src/preproc/html/pushback.cpp:
|
||
* src/preproc/refer/refer.h:
|
||
* src/preproc/tbl/table.h:
|
||
* src/utils/addftinfo/addftinfo.cpp: Drop inclusion.
|
||
|
||
* src/include/itable.h:
|
||
* src/include/stringclass.h:
|
||
* src/libs/libbib/linear.cpp:
|
||
* src/libs/libbib/search.cpp:
|
||
* src/libs/libgroff/color.cpp:
|
||
* src/libs/libgroff/font.cpp:
|
||
* src/libs/libgroff/nametoindex.cpp:
|
||
* src/libs/libgroff/prime.cpp:
|
||
* src/libs/libgroff/searchpath.cpp:
|
||
* src/preproc/html/pre-html.cpp:
|
||
* src/preproc/preconv/preconv.cpp:
|
||
* src/preproc/soelim/soelim.cpp:
|
||
* src/utils/indxbib/indxbib.cpp:
|
||
* src/utils/lkbib/lkbib.cpp:
|
||
* src/utils/lookbib/lookbib.cpp: Respell inclusion.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63079>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-09-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff, ...]: Trivially refactor.
|
||
|
||
Boolify and rename internal library function from
|
||
`invalid_input_char` to `is_invalid_input_char`.
|
||
|
||
* src/include/lib.h: Do it.
|
||
|
||
* src/libs/libgroff/font.cpp (text_file::next_line):
|
||
* src/preproc/eqn/lex.cpp (file_input::read_line):
|
||
* src/preproc/eqn/main.cpp (read_line, main):
|
||
* src/preproc/pic/lex.cpp (file_input::read_line,
|
||
simple_file_input::get, simple_file_input::peek):
|
||
* src/preproc/pic/main.cpp (top_input::get, top_input::peek)
|
||
(do_file):
|
||
* src/preproc/refer/command.cpp (input_stack::push_file):
|
||
* src/preproc/refer/refer.cpp (do_file, do_bib):
|
||
* src/roff/troff/env.cpp (environment::make_tag):
|
||
* src/roff/troff/input.cpp (file_iterator::fill)
|
||
(file_iterator::peek, get_char_for_escape_parameter)
|
||
(transparent_translate, read_request, asciify)
|
||
(input_char_description, read_string, transparent_file,
|
||
set_string): Update call sites.
|
||
|
||
2022-09-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Tweak diagnostic messages.
|
||
|
||
* src/roff/troff/input.cpp (token::description)
|
||
(input_char_description): Consistently use articles in
|
||
descriptive noun phrases.
|
||
|
||
2022-09-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Tweak diagnostic messages.
|
||
|
||
* src/roff/troff/input.cpp (non_empty_name_warning): Say
|
||
"identifier", not "name", in diagnostic message; it can be
|
||
thrown for attempted assignments to invalid register
|
||
identifiers, and some of our documentation refers to identifiers
|
||
in the name space shared by requests, macros, strings, and
|
||
diversions as "names".
|
||
|
||
* src/roff/troff/env.cpp (hyphen_trie::read_patterns_file):
|
||
* src/roff/troff/input.cpp (get_char_for_escape_parameter)
|
||
(token::usable_as_delimiter, non_empty_name_warning)
|
||
(pipe_source, psbb_locator::psbb_locator, open_request)
|
||
(opena_request, define_class, pipe_output, system_request):
|
||
Consistently say "_is_ not allowed". The zero copula poses too
|
||
great a risk of incomprehension IMO.
|
||
|
||
2022-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Add internal string `doc-Lk-font` to manage the typeface
|
||
in which to render URIs.
|
||
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Add it. Use roman instead of (Courier)
|
||
bold. This is more consistent with man(7)'s `UR` and less with
|
||
mandoc(1).
|
||
|
||
* tmac/doc.tmac (Lk): Use it instead of `doc-Sy-font`.
|
||
|
||
2022-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Fix Savannah #59738.
|
||
|
||
* tmac/doc.tmac (Lk): Process further macro arguments more like
|
||
other macros do, calling `doc-print-recursive`. This permits
|
||
recognition of end-of-sentence punctuation in the argument list.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59738>.
|
||
|
||
2022-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Regression-test Savannah #59738.
|
||
|
||
* tmac/tests/doc_Lk-respect-sentence-ending-punctuation.sh: Do
|
||
it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Fix code style nit. Rename `doc-arg-limit` to
|
||
`doc-arg-count`. This register doesn't track any sort of limit
|
||
on the number of arguments you can give to an mdoc(7) macro, or
|
||
anything like that. It is simply a count of the number of
|
||
arguments visible to the currently operating macro.
|
||
|
||
* tmac/doc.tmac:
|
||
* tmac/mdoc/doc-common:
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff:
|
||
* tmac/mdoc/doc-syms: Do it.
|
||
|
||
2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Fix errors in documentation regarding which escape
|
||
sequences accept newlines as argument delimiters, and other
|
||
inaccuracies.
|
||
|
||
* doc/groff.texi (Escape Sequences): Cover general cases before
|
||
exceptional ones. Leaders can be used as argument delimiters.
|
||
Call out letters and numerals as (usually) usable as well.
|
||
Correct an almost completely inaccurate list of escape sequences
|
||
that accept a newline as an argument delimiter: \A, \b, \o, \w,
|
||
\X, and \Z do; \B does not. Correct example of use of newline
|
||
as delimiter with \o escape sequence. Stop referring to the
|
||
decimal point as an "operator". Drop "newline" from a list of
|
||
prohibited delimiters by several escape sequences since it has
|
||
already been discussed.
|
||
|
||
* man/groff.7.man (Escape sequences): Replace weaksauce cross
|
||
reference to our Texinfo manual with a proper discussion of
|
||
acceptable delimiters in escape sequences, synced with the
|
||
foregoing change. Stop using quotation marks around escape
|
||
sequences, except for "\ " which obviously needs it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63002>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Don't throw a spurious warning when using newline as
|
||
delimiter with the few escape sequences that permit this.
|
||
|
||
* src/roff/troff/input.cpp (do_overstrike, do_bracket, do_width)
|
||
(do_special): Do it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?63011>. Thanks to Bjarni
|
||
Ingi Gislason for the report and Dave Kemper for the discussion.
|
||
|
||
2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Add regression test for Savannah #63011.
|
||
|
||
* src/roff/groff/tests/\
|
||
some_escapes_accept_newline_delimiters.sh: Do it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run it.
|
||
|
||
2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_special): Fix code style nit;
|
||
align function definition with declaration (internal linkage).
|
||
|
||
2022-09-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grops/ps.cpp (ps_printer::special)
|
||
(resource_manager::process_file): Fix code style nit. Mark
|
||
static structs initialized within functions and never modified
|
||
thereafter as `const`. This attempts to work around an apparent
|
||
false positive from AddressSanitizer. If it doesn't pacify
|
||
ASAN, please explain to me how constant structure members
|
||
initialized to string literals and pointers to functions within
|
||
the translation unit can ever be null. If that is infeasible,
|
||
please report a bug to your compiler vendor.
|
||
|
||
Fixes (addresses, at any rate) https://savannah.gnu.org/bugs/\
|
||
?61643>. Thanks to Bjarni Ingi Gislason for the report.
|
||
|
||
2022-09-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Refactor: relocate most rendering option handling to
|
||
"doc.tmac" from "doc-ditroff" and "doc-nroff", cutting down on a
|
||
lot of duplication. The `S` register retains separate handling.
|
||
|
||
* tmac/doc.tmac:
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Do it.
|
||
|
||
2022-09-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff (doc-setup-page-layout): In troff mode,
|
||
if the user does not define the `LL` register, use the device's
|
||
default line length, not 6.5 inches. If the user does not
|
||
define the `LT` register, make the default line length for
|
||
titles the same as the regular line length, not 6.5 inches
|
||
independently of it. This is consistent with man(7)'s handling
|
||
of `LL` and `LT`.
|
||
|
||
2022-09-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Support `AD` string to set default adjustment mode.
|
||
|
||
* tmac/mdoc/doc-common (Sh): Set adjustment mode to
|
||
user-specified default, not troff's default (and not only in
|
||
troff mode).
|
||
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Process `AD` string setting from command
|
||
line as man(7) does.
|
||
|
||
* tmac/groff_mdoc.7.man (Formatting with groff, troff, and
|
||
nroff): Document it.
|
||
|
||
* NEWS: Add and update items.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?63046>.
|
||
|
||
2022-09-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac (doc-tag-list): Fix code style nit: don't give
|
||
`ad` request a numeric argument. Say `l` instead of `0`.
|
||
|
||
2022-09-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Align inter-paragraph spacing with man(7).
|
||
|
||
* tmac/mdoc/doc-common: Use `doc-paragraph-space` when spacing
|
||
prior to section and subsection headings instead of spacing by
|
||
the 1v default.
|
||
* tmac/mdoc/doc-ditroff: Align inter-paragraph distance amount
|
||
in troff mode with man(7), reducing to 0.4v from 0.5v.
|
||
|
||
2022-09-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-nroff: Map monospaced fonts (CR, CB, CI, CBI) to
|
||
standard styles as man(7) has done for 15 years. This silences
|
||
warnings from the formatter when a man page attempts to use
|
||
fonts from the Courier family in tbl(1) tables, which is about
|
||
the only place a reasonable man page attempts such a thing.
|
||
|
||
2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Stop prefixing center header with name of operating
|
||
system. This was hard-coded to "BSD" and stuck on all mdoc(7)
|
||
pages using a default manual section number, regardless of host
|
||
operating system. Bad idea. Further, the argument to the `Os`
|
||
call, if any, or a default, is always disclosed in the left
|
||
footer.
|
||
|
||
* tmac/mdoc/doc-common: Do it.
|
||
(Dt): Initialize `doc-volume` as empty and annotate it;
|
||
calling the macro with a numeric second argument overrides the
|
||
fallback default of "LOCAL". A slash is no longer needed to
|
||
separate a recognized architecture string from the OS name, so
|
||
drop it.
|
||
|
||
* tmac/tests/doc_smoke-test.sh: Update test expectations.
|
||
|
||
2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Drop dead code. The register
|
||
`doc-volume-operating-system-ateol`, introduced in groff 1.18
|
||
{July 2002}, was being tested but never set to a nonzero value.
|
||
In fact, it seems never to have been.
|
||
|
||
* tmac/mdoc/doc-common: Get rid of it...
|
||
(Dt): ...and the dependent block.
|
||
|
||
2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Make `Ux` render "Unix" in mixed case.
|
||
|
||
* tmac/mdoc/doc-syms (Ux): Do it. Also remove local string
|
||
after we're done with it.
|
||
|
||
Continues work begun prior to groff 1.22.4 release.
|
||
|
||
2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Align spacing around headers with man(7).
|
||
|
||
* tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars):
|
||
* tmac/mdoc/doc-common (Rd):
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Stop defining, saving, and restoring
|
||
`doc-header-space`.
|
||
|
||
* tmac/mdoc/doc-common (doc-header): When starting new document
|
||
and not continuously rendering, space by one half-inch instead
|
||
of by the now-defunct `doc-header-space` amount (which,
|
||
strictly, should not have applied to this measurement). If
|
||
continuously rendering, extend page length by 1v to accommodate
|
||
header line. After formatting header, if not continuously
|
||
rendering, space to 1 inch below first text baseline.
|
||
|
||
2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Support `C` register for consecutive page numbering.
|
||
|
||
* tmac/mdoc/doc-common (Dd): Reset page number to 1 upon new
|
||
document only if not consecutively numbering.
|
||
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Process `C` register setting from command
|
||
line as man(7) does.
|
||
|
||
* tmac/groff_mdoc.7.man (Formatting with groff, troff, and
|
||
nroff): Document it.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?63046>.
|
||
|
||
2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Align trap management more closely with man(7).
|
||
|
||
* tmac/mdoc/doc-common: Call new macro (see below)
|
||
`doc-set-up-continuous-rendering` when initializing, if that
|
||
mode is configured.
|
||
(doc-ne): New macro replaces `ne` request
|
||
in continuous rendering mode. It extends the page length by the
|
||
amount in the argument or by 1v if none given.
|
||
(doc-bp): New macro replaces `bp` request in continuous
|
||
rendering mode, setting the page length to the vertical drawing
|
||
position.
|
||
(doc-set-up-continuous-rendering): New macro renames requests to
|
||
emplace the foregoing.
|
||
(Dd): Interpret this macro call strictly as starting a new
|
||
mdoc(7) document. (andoc.tmac already makes this assumption,
|
||
and has for over 20 years. groff_mdoc(7) and mandoc_mdoc(7)
|
||
also prescribe the sequence `Dd`, `Dt`, `Os`.) We require this
|
||
invariant even more rigidly now because it's the only way we can
|
||
be sure that we can process multiple documents while rendering
|
||
headers and footers with information corresponding to the
|
||
appropriate document. (man(7)'s `TH` has an advantage here in
|
||
that calling it is "atomic": from its arguments alone you can
|
||
obtain everything you need to know to format the header and
|
||
footer. In mdoc(7), permuting the initialization macro order
|
||
reliably produces chaos.) Break the page (if necessary)
|
||
_before_ processing any arguments (instead of after), to flush
|
||
the previous page's footer. Stop calling `doc-set-up-titles`
|
||
here; we don't have enough information to do that yet. Also
|
||
stop writing the PDF bookmark here, because `doc-document-title`
|
||
and `doc-section` will not reflect the new page content yet.
|
||
(Os): Once the `doc-operating-system` string content has been
|
||
determined, call `doc-set-up-titles`, write the PDF bookmark for
|
||
the page, and call `doc-header`, causing the page header to be
|
||
formatted. These changes further imply a stronger requirement
|
||
on initialization macro ordering being canonical.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62774> (7/7).
|
||
|
||
2022-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Trivially refactor. Relocate string and macro
|
||
definition within file. mdoc(7) mandates that the document
|
||
setup macros `Dd`, `Dt`, and `Os` be called in that order;
|
||
arrange their definitions accordingly, for maintainability.
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Refactor. Rename strings and macro for clarity. These
|
||
things don't only affect headers.
|
||
- doc-header-string -> doc-pageref
|
||
- doc-header-string-saved -> doc-pageref-saved
|
||
- doc-setup-header -> doc-set-up-titles
|
||
|
||
* tmac/doc.tmac:
|
||
* tmac/mdoc/doc-common: Do it.
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Refactor. There is no difference in
|
||
`doc-header-string` and `doc-setup-header` between the files
|
||
"doc-ditroff" and "doc-nroff", so define them only once, in
|
||
"doc-common".
|
||
|
||
* tmac/mdoc/doc-common:
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Do it.
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Align footer management more closely with man(7).
|
||
|
||
* tmac/doc.tmac (doc-save-global-vars, doc-restore-global-vars):
|
||
* tmac/mdoc/doc-common (Rd):
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Stop defining, saving, and restoring
|
||
`doc-footer-space`.
|
||
|
||
* tmac/mdoc/doc-common (doc-break-body-text): New macro, called
|
||
only when not continuously rendering, schedules a page break.
|
||
(doc-footer): Stop vertically spacing by `doc-footer-space`,
|
||
instead relying upon a trap to move us here.
|
||
|
||
* tmac/mdoc/doc-ditroff (doc-setup-header):
|
||
* tmac/mdoc/doc-nroff (doc-setup-header): Set traps at the end
|
||
of the page where man(7) does by default; break the body text at
|
||
1 inch from the page bottom, and write the footer at ½ inch.
|
||
|
||
* tmac/mdoc/doc-nroff (doc-setup-header): Add 1/6 em "thin
|
||
space" between man page name and parenthesized section, for
|
||
precise parity with doc-ditroff implementation. (`\|` does not
|
||
take up any character cells on nroff devices.)
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62774> (6/7).
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (Dt, Dd): Emit diagnostic warnings if
|
||
macros called with no arguments.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62774> (5/7).
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Fix code style nit: stop using Control+G as an escape
|
||
sequence argument delimiter. This is not necessary in groff and
|
||
hasn't been for at least thirty years. See the node/section
|
||
"Implementation Differences" of our Texinfo manual. Our mdoc
|
||
implementation does not operate in compatibility mode, so using
|
||
control characters like this obfuscates input to no advantage.
|
||
|
||
* tmac/doc.tmac:
|
||
* tmac/mdoc/doc-common:
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff:
|
||
* tmac/mdoc/doc-syms: Do it.
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (doc-footer): Pull more footer concerns
|
||
into this macro. Don't bail out if continuously rendering;
|
||
instead, format the appropriate footer text if we are. For now,
|
||
break the page only if we are not continuously rendering.
|
||
(doc-end-macro): Call `doc-footer` instead of formatting footer
|
||
here.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62774> (4/7).
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (doc-end-macro): When continuously
|
||
rendering, set the page reference (e.g., "ls(1)") in the right
|
||
footer instead of repeating the left footer. Thanks to Ingo
|
||
Schwarze for the discussion.
|
||
|
||
* tmac/tests/doc_smoke-test.sh: Update expectations of footer
|
||
regression test.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?62926>.
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (doc-end-macro): Reset strings to reduce
|
||
info leaks from one man page to the next.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62774> (3/7).
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (Dt): Stop reinitializing `doc-volume`
|
||
and `doc-section`. This is the job of package initialization
|
||
{and, soon, the end-of-input macro}.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62774> (2/7).
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common: Populate default date string
|
||
`doc-date-string` with "UNDATED".
|
||
(Dd, Dt, Os): Make more orthogonal: stop touching
|
||
`doc-topic-name`. It is "doc.tmac"'s job to initialize it and
|
||
the `Nm` macro's job to update it.
|
||
(Dd): Do nothing if given no arguments. (You can still blank
|
||
out the document date with an explicitly empty argument:
|
||
.Dd ""
|
||
.)
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62774> (1/7).
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common: Change `doc-default-operating-system`
|
||
string from "BSD" to "GNU", per discussion with Ingo Schwarze.
|
||
See <https://lists.gnu.org/archive/html/groff/2022-07/\
|
||
msg00280.html>.
|
||
|
||
* tmac/tests/doc_smoke-test.sh: Update expectations of footer
|
||
regression test.
|
||
|
||
2022-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common (Dt): Delete lingering and useless
|
||
definition of `doc-command-name` string. Thanks to Steffen
|
||
Nurpmeso for the report. See commit e9e92ee008, 27 August.
|
||
|
||
2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/pic/pic.ypp (not_lower_than): Emit deprecation
|
||
warning for use of 'rand()' with a (non-empty) argument. The
|
||
man page has declared it thus for over 30 years, at least since
|
||
groff 1.02 (June 1991).
|
||
|
||
2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/pic/pic.ypp (object_spec): Emit deprecation
|
||
diagnostic for "plot" command. The man page has declared it
|
||
thus for over 30 years, at least since groff 1.02 (June 1991).
|
||
|
||
2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/pic/pic.ypp (placeless_element): Explicitly say
|
||
that an unsafe command is being ignored in diagnostic.
|
||
|
||
2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/main.cpp (main): Drop man page reference from
|
||
deprecation diagnostics. The man page might be installed with a
|
||
prefix determined at configuration time, and that's too much
|
||
trouble to mess with for construction of a message. Trust the
|
||
user of these ancient options to try reading the man page with
|
||
the same name as the command.
|
||
|
||
2022-09-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Revise discussion of measurements.
|
||
|
||
* doc/groff.texi: Drop Texinfo @codequote* command brackets
|
||
around revised sections; relevant nodes have been reviewed for
|
||
correct glyph usage. Move concept index entries for obsolescent
|
||
term "machine units" to same location as "basic units".
|
||
Bump document date.
|
||
(Measurements): Rewrite presentation. We have already
|
||
introduced page geometry concepts, including the concept of
|
||
basic units.
|
||
(Motion Quanta): New subsection node; introduce this concept
|
||
much sooner, right after measurement units. Relocate
|
||
documentation of `.H` and `.V` registers from a miscellaneous
|
||
read-only register list here. Introduce example of rounding to
|
||
horizontal motion quantum.
|
||
(Default Units): Revise discussion. Stop abusing @result
|
||
notation in example.
|
||
(Built-In Registers): Relocate `.H` and `.V` as above.
|
||
|
||
* man/groff.7.man: Sync with Texinfo content updates.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61432>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-09-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Drop groff_filenames(5) document. It says nothing accurate that
|
||
is not covered elsewhere.
|
||
|
||
* contrib/groff_filenames: Delete.
|
||
* doc/doc.am (GROFF_MAN_PAGES): Drop.
|
||
* src/roff/groff/groff.1.man: Drop cross reference to it.
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61818>.
|
||
|
||
2022-09-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/tbl.1.man (Table data): Generalize discussion
|
||
of roff control line use in tables.
|
||
(Examples): Illustrate how to embed a comment in a table.
|
||
|
||
2022-08-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* NEWS: man(7)'s `TS` no longer adds vertical space. See commit
|
||
7ec36dc9b9, 30 July.
|
||
|
||
2022-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/main.cpp (main): Issue deprecation warning
|
||
upon use of '-p' or '-s' options. The eqn(1) man page has
|
||
documented these as deprecated since at least groff 1.02 (June
|
||
1991). Don't count on them sticking around another 30 years.
|
||
|
||
2022-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/main.cpp (main): Clarify error diagnostics
|
||
regarding invalid option arguments. Identify the option being
|
||
handled at the time and characterize the argument as "invalid",
|
||
not "bad".
|
||
|
||
2022-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[eqn]: Drop support for undocumented '-D' option. It has been
|
||
undocumented, and issued a warning of its obsolescence upon use,
|
||
for 30 years, since groff 1.06 (September 1992). That's plenty
|
||
long enough for a deprecation cycle.
|
||
|
||
* src/preproc/eqn/main.cpp (main): Do it.
|
||
* NEWS: Add item.
|
||
|
||
2022-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: (EX, EE): Always break line, even if call invalid.
|
||
|
||
* tmac/an.tmac (EX, EE):
|
||
* tmac/an-ext.tmac (EX, EE): Do it. Ingo Schwarze pointed out
|
||
that page authors will expect breaking semantics from these
|
||
macros even if using them in an ill-formed way. In a
|
||
well-formed document, the breaks are redundant but harmless (the
|
||
later `nf` and `fi` requests, respectively, also cause breaks).
|
||
|
||
2022-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Trivially refactor.
|
||
|
||
* tmac/doc.tmac:
|
||
* tmac/mdoc/doc-common: Rename string `doc-command-name` to
|
||
`doc-topic-name`; the former is misleading for man pages not in
|
||
sections 1, 6, or 8.
|
||
|
||
2022-08-25 Bjarni Ingi Gislason <bjarniig@vortex.is>
|
||
|
||
* man/groff_char.7.man: Fix bad example syntax.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62959>.
|
||
|
||
2022-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Trivially refactor.
|
||
|
||
* tmac/mdoc/doc-common:
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Stop using "Null" as an empty string
|
||
indicator when comparing a string interpolation to an empty
|
||
parameter will serve just as well; it is also more idiomatic.
|
||
The string in question, `doc-section`, is never formatted if it
|
||
is empty anyway; the very tests at issue, which populate
|
||
`doc-header-string`, ensure this.
|
||
|
||
2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (environment::set_family): Throw error
|
||
if user requests a font family that (when combined with the
|
||
current style) can't be resolved to a real font name. Fixes a
|
||
regression introduced by me in commit d8cb8cf9d8, 2021-09-15,
|
||
arising from a revision of font selection logic in node.cpp to
|
||
enable a bunch of _other_ font error diagnostics.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62941>. Thanks to Dave
|
||
Kemper for the report and two useful end points for a bisection.
|
||
|
||
2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (environment::set_family): Add some
|
||
paranoia. Add `assert()`s on the previous font mounting
|
||
position still being valid and the font family dictionary lookup
|
||
not returning a null pointer. Add an early return for the
|
||
latter case (which should be impossible).
|
||
|
||
2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/node.cpp (font_family::make_definite):
|
||
Refactor. Rename parameter from inscrutable `i` to
|
||
`mounting_position`. Add `assert()` to enforce invariant: we're
|
||
passed a mounting position that is nonnegative. Use `pos` as
|
||
short alias of parameter once we're into the function body.
|
||
Relocate conditional branches to front-load early returns as
|
||
well as those requiring little code to handle. This reduces the
|
||
average indentation level of the function, a readability win.
|
||
|
||
2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Restore robustness to `EE` misuse.
|
||
|
||
* tmac/an.tmac: Add `an*is-in-example` register to track state
|
||
of within-exampleness. Not doing so can cause a spurious use of
|
||
`EE` to wrongly set the inter-paragraph distance to zero.
|
||
(TH): Initialize register.
|
||
(EX): Test register; if set, ignore macro call and, if
|
||
`CHECKSTYLE` warnings are on, throw diagnostic. Set register.
|
||
(EE): Test register; if clear, ignore macro call and, if
|
||
`CHECKSTYLE` warnings are on, throw diagnostic. Clear register.
|
||
|
||
* tmac/an-ext.tmac (EX, EE): Similar, using `mX` register.
|
||
Because AT&T troff had no `return` request, invert the sense of
|
||
the tests and put the entire macro bodies inside conditionals.
|
||
|
||
This regressed post-1.22.4. Thanks to Ingo Schwarze for the
|
||
report and a proposed patch.
|
||
|
||
2022-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Refactor. Rename `mX` to `mZ` so we can use
|
||
`mX` for an "in-example" state register in a future commit.
|
||
Rename `mE` to `mF` to store the current font's mounting
|
||
position. Bizarrely, `mF` was not already used for this
|
||
purpose.
|
||
|
||
2022-08-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/error.cpp (do_error_with_file_and_line):
|
||
Trivially refactor. Use separate string constant for invariant
|
||
material. (This will make it easier to, for example, store the
|
||
diagnostic level strings in an array that can be indexed by
|
||
their corresponding `enum` type.)
|
||
|
||
2022-08-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (fatal_with_file_and_line)
|
||
(error_with_file_and_line, debug_with_file_and_line): Align more
|
||
closely with GNU Coding Standards regarding diagnostics: don't
|
||
suffix the colon after the program name with a space when
|
||
location information follows.
|
||
|
||
2022-08-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grohtml/grohtml.1.man: Fix erroneous claim.
|
||
Images are not generated when "baseline rules" or "box rules"
|
||
are encountered in the input. These are troff special
|
||
characters; the former is converted to an underscore and the
|
||
latter to U+2502, "box drawings light vertical". This remains
|
||
true even if a series of them is drawn with the `\l` escape
|
||
sequence. (I also checked vertical line drawing with `\L`.
|
||
grohtml's handling of that provoked a rather wet eructation from
|
||
my lower esophageal sphincter--the output is assuredly not
|
||
correct. But it's still not an image.)
|
||
|
||
2022-08-22 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Bug #62934 - after glyph remapped mark it as used
|
||
|
||
When many glyphs are remapped from code points above 255
|
||
such as writing documents in cyrillic with the U-TR fonts,
|
||
gropdf starts reusing code points in the range 128-255.
|
||
If subsequently one of those code points is actually required,
|
||
such as \(em (code 138), and it has been replaced by a
|
||
cyrillic, then it needs to be mapped to another free code.
|
||
|
||
To determine if a particular code point is free each glyph
|
||
has a USED flag. The bug was caused because after remapping
|
||
\(em to the next free glyph the USED flag was not set. So the
|
||
next new cyrillic character to be entered was given the same
|
||
code point as had been allocated to \(em.
|
||
|
||
* src/devices/gropdf/gropdf.pl: Set the USED flag on remapped
|
||
glyphs.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62934>.
|
||
|
||
Thanks to Nikita Ivanov for spotting the problem and testing
|
||
the fix.
|
||
|
||
2022-08-20 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Bug #62923 - problem using aliased glyphs
|
||
|
||
With a large font if 2 characters above the 255 code
|
||
point limit are aliased, the aliased glyph has incorrect meta
|
||
data.
|
||
|
||
* src/devices/gropdf/gropdf.pl: Instead of duplicating a pointer
|
||
to the font metadata, duplicate the data itself. Then, if the
|
||
glyph is remapped to a code point under 256, the metadata is
|
||
preserved.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62923>. Thanks to Nikita
|
||
Ivanov for the report.
|
||
|
||
2022-08-18 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Improve parsing of troff font files.
|
||
|
||
* src/devices/gropdf/gropdf.pl: Allow the glyph code number
|
||
to be octal or hex as well as a decimal number. If entity_name
|
||
is missing use name instead.
|
||
|
||
2022-08-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Support pic(1) "flyback" feature.
|
||
|
||
* tmac/s.tmac (PF): Add macro; it does what `PE` formerly did,
|
||
minus vertical spacing.
|
||
(PE): Call `PF` and vertically space as before.
|
||
|
||
* doc/groff.texi (ms Insertions):
|
||
* doc/ms.ms (Tables, figures, equations, and references):
|
||
* tmac/groff_ms.7.man (Tables, figures, equations, and
|
||
references): Document it.
|
||
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60558>.
|
||
|
||
2022-08-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (@PS): Validate better; check for 2 arguments
|
||
exactly.
|
||
|
||
2022-08-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pic]: Recognize `.PY` as synonym of `.PF`.
|
||
|
||
* src/preproc/pic/main.cpp:
|
||
* src/preproc/pic/pic.h: Add new Boolean variable,
|
||
`want_alternate_flyback` to record `.PY` usage.
|
||
|
||
* src/preproc/pic/main.cpp (top_input::get, top_input::peek):
|
||
Recognize it. Update diagnostic messages to mention it.
|
||
(main): Define `PY` troff macro as empty if not defined.
|
||
|
||
* src/preproc/pic/troff.cpp (troff_output::finish_picture):
|
||
Don't advance the vertical position if `want_alternate_flyback`.
|
||
Write out the `PY` macro call if it was on the input.
|
||
|
||
* src/preproc/pic/pic.1.man: Document it.
|
||
|
||
* tmac/pic.tmac (PY): Define the same as `PF`.
|
||
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62901>.
|
||
|
||
2022-08-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pic]: Refactor `flyback_flag`.
|
||
|
||
* src/preproc/pic/main.cpp:
|
||
* src/preproc/pic/pic.h:
|
||
* src/preproc/pic/troff.cpp: Rename to `want_flyback`.
|
||
|
||
* src/preproc/pic/main.cpp:
|
||
* src/preproc/pic/pic.h: Demote type from `int` to `bool`.
|
||
|
||
* src/preproc/pic/main.cpp (top_input::get, top_input::peek):
|
||
Use parentheses to clarify operation precedence.
|
||
|
||
2022-08-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/eqn.1.man: Expand to include lists of
|
||
recognized primitives and predefined macros.
|
||
|
||
2022-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* NEWS: Add item for new groff mm `V` register support.
|
||
|
||
2022-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/lex.cpp (do_delim): Recognize "delim on" even
|
||
in compatibility mode, enabling tbl to toggle eqn delimiter
|
||
recognition when it is run in compatibility mode as well.
|
||
* src/preproc/eqn/eqn.1.man (Controlling delimiters): Update.
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62852>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-08-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (TH): Fix spurious complaint from `CHECKSTYLE`
|
||
feature when a custom manual section title is declared for a
|
||
standard section number. Thanks to Quentin Monnet for the
|
||
report.
|
||
|
||
2022-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdfpic.tmac: Finish incomplete string renames. Continues
|
||
0fd6ab6b4c, 21 January.
|
||
pdfpic*file-name -> pdfpic*file-name-base
|
||
pspic-args -> pdfpic*pspic-args
|
||
|
||
2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (TS): Stop inserting space before tables. Unlike
|
||
ms(7), man(7) has no concept of "displays" and thus none of
|
||
"display distance". It is up to the page author to use
|
||
paragraphing macros around tables if vertical space is desired.
|
||
And not up to us to impose it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62841>.
|
||
|
||
2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Regression-test Savannah #62841.
|
||
|
||
* tmac/tests/an_TS-adds-no-vertical-space.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::do_bottom): Avoid
|
||
overprinting a double-boxed table's bottom border on nroff
|
||
devices.
|
||
|
||
2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Expand regression test for Savannah #49390. Check for
|
||
overlap of double box borders, too.
|
||
|
||
* src/preproc/tbl/tests/\
|
||
do-not-overlap-bottom-border-in-nroff.sh: Do it.
|
||
|
||
2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix Savannah #49390.
|
||
|
||
* src/preproc/tbl/table.cpp (table::do_bottom): Avoid
|
||
overprinting a boxed table's bottom border on nroff devices.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?49390>. Thanks to Osamu
|
||
Sayama for the report.
|
||
|
||
2022-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Regression-test Savannah #49390.
|
||
|
||
* src/preproc/tbl/tests/\
|
||
do-not-overlap-bottom-border-in-nroff.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
2022-07-28 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Improve slant application to lowercase Greek letters.
|
||
<https://lists.gnu.org/archive/html/groff/2022-07/msg00210.html>
|
||
|
||
* tmac/pdf.tmac: Slant only if the glyph is sourced from a
|
||
special font, not a regular (text) font containing Greek glyphs.
|
||
|
||
2022-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Add italic correction support to `I` and `BI`
|
||
macros. Call `par*define-font-macro` with newly recognized
|
||
third argument indicating that italic corrections should be
|
||
applied.
|
||
(par*define-font-macro): Apply the corrections if directed.
|
||
|
||
2022-07-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (input_char_description): Clear
|
||
static buffer on every entry to the function so that calling it
|
||
twice in succession where the second call populates the buffer
|
||
with less data than the first doesn't leave garbage characters
|
||
in a diagnostic message. Problem appears to date back to 1991
|
||
or earlier.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62813>.
|
||
|
||
2022-07-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (token::usable_as_delimiter):
|
||
(do_non_interpreted, interpolate_arg): Recast diagnostic
|
||
messages for clarity.
|
||
|
||
2022-07-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Initialize section number registers. Fixes
|
||
warnings when starting section numbering at a depth greater than
|
||
1.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62812>.
|
||
|
||
2022-07-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PAGE): Use 'grep -q' instead of redirecting
|
||
standard output to null device. The '-q' option was
|
||
standardized in POSIX Issue 5 (1997) or earlier. Also drop the
|
||
redirection of the standard error stream; we have already
|
||
checked the file named in "$descfile" for existence and
|
||
readability. grep should thus not emit diagnostic messages.
|
||
|
||
2022-07-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PAGE): Macro used awk(1) without
|
||
`AC_REQUIRE`-ing a relevant macro or checking for its existence.
|
||
Fortunately, sed is powerful enough for our needs. Remove
|
||
dependency on awk. Cope with "search" directive in resolv.conf
|
||
having multiple arguments. Match "domain" directive in same
|
||
file instead of "dom", which I cannot find attested (this logic
|
||
dates to 1991). Rename `dom` shell variable to `domains` for
|
||
clarity, since its multiplicity could be greater than 1.
|
||
|
||
2022-07-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PAGE): Refactor: drop AC_DEFINE of
|
||
`PAGEA4`. This symbol appears to be a relic; it is nowhere
|
||
tested or dereferenced.
|
||
|
||
2022-07-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tty-char.tmac: Drop definition of \[sd] special
|
||
character. This was superseded by commit 78e666246c, 8 May,
|
||
which defined a fallback for the character in tty.tmac instead.
|
||
Thanks to Dave Kemper for the catch.
|
||
|
||
2022-07-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
|
||
Skip test if "pdfinfo" command not available.
|
||
|
||
2022-07-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Add sanity checks for font description file generation
|
||
for PDF output device, prompted by discussion with Ingo
|
||
Schwarze. See <https://lists.gnu.org/archive/html/groff/\
|
||
2022-06/msg00094.html>.
|
||
|
||
* font/devpdf/tests/basic-fonts-present.sh:
|
||
* font/devpdf/tests/urw-fonts-present.sh: Add files.
|
||
|
||
* font/devpdf/devpdf.am (font_devpdf_TESTS): Add the former test
|
||
unconditionally, and the latter only if `HAVE_URW_FONTS`.
|
||
|
||
2022-07-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/devpdf.am: Refactor to simplify. Now that
|
||
symbol.map lives in the "devpdf/generate" directory along with
|
||
the other map files, it doesn't need a dedicated Makefile target
|
||
to produce it.
|
||
(DEVPDFFONTMAP_1, DEVPDFFONTMAP_2): Coalesce and rename to...
|
||
(devpdffontmapdata): ...this.
|
||
(font/devpdf/map/symbol.map:): Drop target.
|
||
(devpdffontmap_DATA, font/devpdf/download): Update dependencies.
|
||
|
||
2022-07-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl (LoadFoundry): Recast
|
||
diagnostic message so that the user understands the consequence
|
||
of failure to locate a Type 1 font file (that isn't one of the
|
||
base 14 PostScript level 1 fonts): the font will be unavailable
|
||
for the "pdf" output device.
|
||
|
||
2022-07-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl (LoadFoundry): Separate
|
||
lists of Type 1 font names with spaces as well as commas, for
|
||
better diagnostic message readability. Also begin message in
|
||
lowercase (per GNU Coding Standards).
|
||
|
||
2022-07-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl (LoadFoundry): Verify that
|
||
`$foundrypath->[$j]` is defined before operating on it.
|
||
|
||
2022-07-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[afmtodit]: Clarify diagnostic message.
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: When we have excess Adobe
|
||
Glyph List mappings for a groff special character identifier
|
||
{making the reverse mapping from groff special character to font
|
||
glyph name ambiguous}, report that we're ignoring the excess.
|
||
Use "print STDERR" instead of Perl "warn" built-in since we want
|
||
diagnostic messages to start with the name of the program
|
||
emitting them.
|
||
|
||
2022-07-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Name and place PS->groff glyph name maps consistently.
|
||
|
||
* font/devps/symbolmap: Rename from this...
|
||
* font/devps/generate/symbol.map: ...to this.
|
||
|
||
* font/devpdf/devpdf.am (font/devpdf/map/symbolmap): Rename
|
||
target...
|
||
(font/devpdf/map/symbol.map): ...to this.
|
||
(font/devpdf/map/symbol.map): Copy "devps" version of file from
|
||
its new location in the "generate" subdirectory.
|
||
|
||
* font/devpdf/Foundry.in: Reflect rename.
|
||
|
||
* font/devps/generate/Makefile (symbolmap): Rename target...
|
||
($(srcdir)/symbol.map): ...to this.
|
||
|
||
* font/devps/devps.am (DEVPSGENFILES, EXTRA_DIST):
|
||
* font/devps/generate/Makefile (S, EURO $(SPECIALFONTS), clean):
|
||
* src/utils/afmtodit/afmtodit.1.man: Reflect rename and
|
||
relocation.
|
||
|
||
* font/devps/generate/dingbats.rmap: Rename from this...
|
||
* font/devps/generate/dingbats-reversed.map: ...to this.
|
||
|
||
* font/devps/devps.am (DEVPSGENFILES):
|
||
* font/devps/generate/Makefile (ZDR):
|
||
* src/utils/afmtodit/afmtodit.1.man: Reflect rename.
|
||
|
||
* font/devps/generate/lgreekmap: Rename from this...
|
||
* font/devps/generate/slanted-symbol.map: ...to this.
|
||
|
||
* font/devps/devps.am (DEVPSGENFILES):
|
||
* font/devps/generate/Makefile (SS):
|
||
* src/utils/afmtodit/afmtodit.1.man: Reflect rename.
|
||
|
||
* font/devps/generate/textmap: Rename from this...
|
||
* font/devps/generate/text.map: ...to this.
|
||
|
||
* font/devpdf/Foundry.in:
|
||
* font/devpdf/devpdf.am (DEVPDFFONTMAP_1):
|
||
* font/devps/devps.am (DEVPSGENFILES):
|
||
* font/devps/generate/Makefile (TEXTMAP):
|
||
* src/devices/gropdf/gropdf.1.man:
|
||
* src/devices/grops/grops.1.man:
|
||
* src/utils/afmtodit/afmtodit.1.man: Reflect rename.
|
||
|
||
2022-07-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/ms.ps): Add dependency on "eqn", and call
|
||
groff with "-e" option.
|
||
* src/utils/grog/tests/smoke-test.sh: Update expected "grog"
|
||
output for the ms.ms document.
|
||
|
||
2022-07-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/ms.ps): Add dependency on "tbl".
|
||
|
||
2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/node.cpp (suppress_node::tprint): Add source
|
||
file line number after its name when emitting "grohtml-info", to
|
||
aid debugging.
|
||
|
||
2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/node.cpp (get_register, get_string): Reorder
|
||
null pointer inequality comparisons; they don't need to be in a
|
||
funny order because it's pretty hard to mistype `!=` as an
|
||
assignment operator. Annotate them as null pointers to ease any
|
||
future migration to ISO C++11. Use primitive type constructor
|
||
instead of C-style cast operator; this seems more idiomatic.
|
||
|
||
2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (generateImages): Flush the
|
||
standard error stream after writing to it in a loop.
|
||
|
||
2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (RP): Recognize new optional arguments
|
||
`no-renumber` and `no-repeat-info`, the latter as a synonym for
|
||
the existing `no`. The former suppresses the page number
|
||
manipulation that normally occurs. Drop now-unnecessary `pn 0`
|
||
request.
|
||
(top level, cov*first-page-init, RP, cov*print): Rename
|
||
`cov*rp-format` to `cov*use-rp-format` for clarity.
|
||
(cov*break-page): New macro breaks the cover page at the end,
|
||
resetting next page number to 1 only if desired by user.
|
||
(cov*print, cov*rp-print): Call `cov*break-page` instead of
|
||
invoking `bp`.
|
||
|
||
* doc/groff.texi (Document Description Macros) <RP>:
|
||
* doc/ms.ms (Document description macros) <RP>:
|
||
* tmac/groff_ms.7.man (Document description macros) <RP>:
|
||
Document them.
|
||
|
||
* NEWS: Add item.
|
||
|
||
2022-07-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Rename register `cov*rp-no` to
|
||
`cov*rp-no-repeat-info`.
|
||
|
||
2022-07-08 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl (LocateFile): Some systems
|
||
store .afm files in a parallel directory to the Type 1 files,
|
||
restore original path after checking for parallel directory.
|
||
|
||
2022-07-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/devpdf.am (font/devpdf/download): Call
|
||
"BuildFoundries" with new `--strict` option so that the build
|
||
fails if the AFM files for the URW fonts can't be found.
|
||
|
||
2022-07-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl: Add Boolean-valued scalar
|
||
`beStrict` (defaults false) and new command-line option
|
||
`--strict` to make it true.
|
||
(LoadFoundry): Check return value of subroutine `LocateAF`.
|
||
Emit diagnostic if it is null, as a warning if not "strict", and
|
||
fatal if so.
|
||
|
||
2022-07-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries): Add
|
||
dependency on "afmtodit" since "BuildFoundries" calls this
|
||
program when generating groff font description files from URW
|
||
fonts.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Fix Savannah #62690.
|
||
|
||
* tmac/s.tmac (P1, SC, UC, P2): Drop undocumented support for
|
||
document-private macros used by Kernighan & Cherry's
|
||
"Typesetting Mathematics -- User's Guide (Second Edition)".
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62690>.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Fix Savannah #62688.
|
||
|
||
* tmac/s.tmac (DE): Set no-space mode when ending displays.
|
||
(@EN): Set no-space mode after outputting the display distance
|
||
so that it doesn't combine with inter-paragraph space.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62688>.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Regression-test Savannah #62688.
|
||
|
||
* tmac/tests/s_no-excess-space-around-displays.tmac: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Fix Savannah #62687.
|
||
|
||
* tmac/s.tmac (@MC): Honor `MINGW` register even when setting
|
||
only two columns, as clearly implied by our documentation.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62687>.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Regression-test Savannah #62687.
|
||
|
||
* tmac/tests/s_honor-MINGW-when-two-columns.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Fix Savannah #62686.
|
||
|
||
* tmac/s.tmac (@MC): Set no-space mode before doing a paragraph
|
||
reset, not after: we don't want vertical space at the top of the
|
||
first column when entering multi-column mode, because then it
|
||
doesn't align with the tops of subsequent columns.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62686>.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Regression-test Savannah #62686.
|
||
|
||
* tmac/tests/s_mark-column-start-correctly.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (IX): Drop.
|
||
* NEWS: Add item.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Add "sorry" implementations for documented but
|
||
unsupported Unix Version 7 ms macros. This way it's easier to
|
||
tell when a historical document needs one and this case is
|
||
distinguishable from a document-private macro warned about with
|
||
"groff -w mac".
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (UX): Drop undocumented support for this macro.
|
||
This implementation isn't consistent with historical ones, which
|
||
identified the trademark holder. But doing that is a problem,
|
||
so just stop trying to cope. Also, spelling Unix in full caps
|
||
was an imposition by the AT&T legal department on the CSRC.
|
||
|
||
"The name Unix is a trademark, originally owned by Bell Labs and
|
||
subsequently traded off like a baseball card among a number of
|
||
companies." -- Ben Klemens
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Replace incomplete documentation of unimplemented macros.
|
||
|
||
* doc/groff.texi (Missing ms Macros):
|
||
* doc/ms.ms (AT&T ms macros not appearing in groff ms): Drop,
|
||
replacing with...
|
||
|
||
* doc/groff.texi (Unix Version 7 ms Macros Not Implemented by
|
||
groff ms):
|
||
* doc/ms.ms (Unix Version 7 ms macros not implemented by groff
|
||
ms):
|
||
* tmac/groff_ms.7.man (Unix Version 7 macros not implemented by
|
||
groff ms): ...these.
|
||
|
||
2022-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_translate): Throw an error
|
||
diagnostic when the user attempts to translate space characters.
|
||
{By contrast, translating _to_ [unbreakable, unadjustable]
|
||
spaces is an old troff hack often seen as ".tr ~ ", and largely
|
||
superseded by groff's "\~" escape sequence, now widely supported
|
||
by other troffs.}
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60803>. Thanks to T. Kurt
|
||
Bond and Oliver Corff for the report.
|
||
|
||
2022-07-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/pipeline.c: Refactor. Drop function rename via
|
||
preprocessor macro usage. Declare and define `c_error` by its
|
||
correct name.
|
||
(run_pipeline): Update call sites. Stop flushing standard error
|
||
stream after calling libgroff's `error` function (which
|
||
`c_error` wraps); libgroff already guarantees this operation.
|
||
|
||
2022-07-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (abort_request): Flush the standard
|
||
error stream before exiting, to improve chances of user seeing
|
||
any message as arguments to the `ab` request.
|
||
|
||
2022-06-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp
|
||
(char_buffer::run_output_filter): Die if platform supports
|
||
neither `fork()` nor `spawn()` for child process creation.
|
||
|
||
2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (cleanup): Add function to tidy
|
||
memory before exiting.
|
||
(main): Register aforementioned function with `atexit()`. Die
|
||
if registration fails.
|
||
|
||
2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (do_file): Die if `fclose()`
|
||
fails; such a situation suggests a pretty hosed environment.
|
||
|
||
2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (checkImageDir): If `mkdir()`
|
||
fails, use `strerror()` to report the underlying problem.
|
||
|
||
2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp: Refactor. Drop unnecessary
|
||
prototype for static function. Use idiomatic C++98 null pointer
|
||
constant. Annotate it as null pointer to ease any future
|
||
migration to ISO C++11. Boolify. Use C++98 bool data type
|
||
instead of preprocessor macros `TRUE` and `FALSE`. Demote some
|
||
global Boolean variables from `int` to `bool` and rename some to
|
||
be more clear: `show_progress` -> `want_progress_report`;
|
||
`debugging`; `eqn_flag` -> `need_eqn`.
|
||
(make_message): Rename this...
|
||
(make_string): ...to this. Align more closely with contemporary
|
||
version of example from Linux man-pages printf(3) page. Use
|
||
`vsnprintf()` to determine size of memory buffer needed prior to
|
||
allocation instead of iteratively growing it until it is large
|
||
enough. Always die if `vsnprintf()` fails: this function now
|
||
always returns a valid pointer if it returns at all.
|
||
(makeFileName, setupAntiAlias, imageList::createPage,
|
||
imageList::createImage): Update call sites to use
|
||
`make_string()`.
|
||
(char_buffer::can_see): Demote return type from `int` to `bool`.
|
||
(char_buffer::skip_spaces): Drop unused member function.
|
||
(char_buffer::read_file, makeTempFiles): Demote return type from
|
||
`int` to `void`. Stop returning after calling functions that
|
||
don't return.
|
||
(char_buffer::read_file): Call `sys_fatal()` if `fread()`
|
||
returns an error, similarly to other calls into the standard C
|
||
library that this file makes. Improve check for error from
|
||
`fread()` by not regarding a return value of zero when the
|
||
end-of-file indicator is set as an error condition.
|
||
(makeFileName, checkImageDir, char_buffer::run_output_filter,
|
||
scanArguments): Call `fatal()` instead of `error()` and then
|
||
`exit(1)`.
|
||
(makeFileName, scanArguments): Dismiss Shlemiel the Painter:
|
||
save return value of `strlen()` and call `strcpy()` multiple
|
||
times instead of mixing `strcpy()` and `strcat()`; the latter
|
||
approach rescans the string unnecessarily.
|
||
(char_buffer::run_output_filter): Stop passing unnecessary null
|
||
pointer argument to diagnostic message functions. Stop calling
|
||
`fflush()` after libgroff diagnostic function, which always
|
||
{ultimately} flushes the standard error stream itself.
|
||
(makeTempFiles, do_file, main): Boolify.
|
||
(makeTempFiles, do_file): Reorder null pointer equality
|
||
comparisons to avoid inadvertent lvalue assignment.
|
||
(scanArguments, main): Use `EXIT_SUCCESS` and `EXIT_FAILURE`
|
||
constants from C library instead of integer literals for exit
|
||
status.
|
||
(do_file): Demote return type from `int` to `bool`. Return
|
||
Boolean literals. Drop conditional with empty consequent.
|
||
(main): Declare local variables closer to the points of use.
|
||
Stop trying to be a register allocator: stop reusing loop index
|
||
variable `i` as integer storage for another (albeit related)
|
||
purpose; introduce `operand_index` instead. Clarify logic by
|
||
splitting combined initialization and comparison operations, and
|
||
by testing function return value directly instead of storing it
|
||
in a pointless temporary. Use `EXIT_SUCCESS` and `EXIT_FAILURE`
|
||
constants from C library instead of integer literals for exit
|
||
status.
|
||
|
||
2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp (run_commands): Trivially refactor.
|
||
Rename variable for clarity; add comment.
|
||
|
||
2022-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp
|
||
(char_buffer::run_output_filter): Return wait status of child
|
||
process.
|
||
(char_buffer::run_output_filter, main): Rename local variable
|
||
`status` to `wstatus` to recognize distinction between exit
|
||
status (a 7-bit quantity) and wait status (a wider type).
|
||
(main): Issue fatal diagnostic if child process exited with
|
||
nonzero status. Since the child's output to the standard error
|
||
stream is lost, advise re-running with different output driver
|
||
to see them. This unhappy shortcoming is filed as Savannah
|
||
#62673. Explicitly return zero otherwise.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60782>.
|
||
|
||
2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/ab_works.sh: Add regression test for
|
||
Savannah #60782.
|
||
|
||
2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Trivially refactor.
|
||
|
||
* src/roff/troff/input.cpp (token::next): Rename statement label
|
||
to use documentary terminology.
|
||
* src/roff/troff/node.cpp (make_composite_node)
|
||
(make_glyph_node): Make functions static since nothing outside
|
||
this translation unit calls them.
|
||
* src/roff/troff/node.cpp (make_glyph_node): Refactor optional
|
||
argument and its usage. Put it down, flip it, and reverse it.
|
||
That is, demote its type from `int` to `bool`, invert its sense,
|
||
and rename it since it affects warning, not error, diagnostics.
|
||
(character_exists): Update only call site of `make_glyph_node()`
|
||
that uses non-default argument value.
|
||
|
||
2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Adjust diagnostic message text to clarify and better
|
||
match terminology used in documentation.
|
||
|
||
* src/roff/troff/input.cpp (set_escape_char, do_overstrike)
|
||
(do_bracket, do_name_test, do_width, do_special):
|
||
* src/roff/troff/node.cpp (suppress_node::tprint): Migrate from
|
||
"escape" to "escape sequence".
|
||
|
||
* src/roff/troff/node.cpp (make_composite_node)
|
||
(make_glyph_node): Clarify what went wrong.
|
||
|
||
* src/roff/troff/input.cpp (token::get_char)
|
||
(check_missing_character): Migrate from "normal character" to
|
||
"ordinary character" (see groff_char(7)).
|
||
|
||
2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Rename a function for clarity.
|
||
|
||
* src/roff/troff/input.cpp (add_to_node_list): Rename this...
|
||
(add_to_zero_width_node_list): ...to this.
|
||
(do_zero_width): Update call site.
|
||
* src/roff/troff/token.h: Update declaration.
|
||
|
||
2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp (handle_unknown_desc_command):
|
||
Refactor to skip unnecessary string comparisons. We explicitly
|
||
return in the final case instead of falling off the end of this
|
||
void function for consistency if additional cases are added.
|
||
|
||
2022-06-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp (handle_unknown_desc_command):
|
||
Partially revert commit 64dc40d23a, 19 June. I forgot to save
|
||
and restore the previous values of the globals
|
||
`current_filename` and `current_lineno`, and, noticing that this
|
||
function has 3 return paths, decided that it's cheaper just to
|
||
go back to `error_with_file_and_line()`.
|
||
|
||
2022-06-21 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Add more search paths to the Foundry file.
|
||
|
||
* font/devpdf/Foundry.in: Use the directory specified with the
|
||
config flag --with-urw-fonts-dir to populate the default foundry
|
||
as well as the U foundry. Important to populate the download
|
||
file with font files to embed the fonts not part of the base
|
||
pdf fonts or if user wants all fonts embedded.
|
||
|
||
2022-06-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac (UR, MT): Fix problem with hyphenation
|
||
occurring before the end of the line when the line length was
|
||
not the device default (common for man pages at the terminal)
|
||
and hyperlinks were enabled. The issue is that the new
|
||
environment we created inherits the default environment's line
|
||
length (its state at troff initialization, prior to macro
|
||
package loading and configuration). This latent issue was
|
||
exposed by post-groff 1.22.4 changes to enable the hyphenation
|
||
of link text and add the hyperlink feature. Fix it by copying
|
||
the line length at the time the macro is called, which is
|
||
necessarily after man(7) sets up the line length, to the new
|
||
environment.
|
||
|
||
2022-06-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grops/psrm.cpp (resource_manager::output_prolog):
|
||
(resource_manager::supply_resource):
|
||
(resource_manager::read_download_file): Update diagnostic
|
||
message language and report underlying problem encountered by
|
||
system when failing to open files. This will probably be the
|
||
text for ENOENT in most cases, but should help avoid frustration
|
||
in those where it isn't.
|
||
|
||
2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grops/psrm.cpp
|
||
(resource_manager::read_download_file): Align diagnostic message
|
||
wording with gropdf in the same circumstance.
|
||
|
||
2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Throw warning in font category when a font selection
|
||
escape sequence is used after the output line continuation
|
||
escape sequence on an input line, because it is ignored.
|
||
|
||
* src/roff/troff/env.cpp (environment::set_font): Do it.
|
||
|
||
* doc/groff.texi (Warnings):
|
||
* src/roff/troff/troff.1.man (Warnings): Document it.
|
||
|
||
2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (font_change): Boolify.
|
||
|
||
2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (LoadFont): Revise error message
|
||
when a font can't be found for embedding. User failure to add
|
||
an entry for locating the font file seems a more likely scenario
|
||
than outright corruption of the file.
|
||
|
||
2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (font_change): Warn upon selection of a
|
||
nonexistent font name.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62656>.
|
||
|
||
2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Revise `environment::set_font` to return Boolean value
|
||
indicating success of font selection operation.
|
||
|
||
* src/roff/troff/env.cpp (environment::set_font):
|
||
* src/roff/troff/env.h (environment::set_font): Do it.
|
||
|
||
This prepares the way for a fix for Savannah #62656.
|
||
|
||
2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp: Use single exit path, freeing
|
||
memory allocated for strings.
|
||
(xexit): Add `exit()` wrapper; free allocated memory.
|
||
(main): Use it in all three exit paths.
|
||
|
||
2022-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp: Refactor to be more meticulous with
|
||
memory. Add globals `saved_path`, `groff_bin_path`, and
|
||
`groff_font` to store pointers into the process environment
|
||
returned by `putenv()`; once used, they need to remain valid for
|
||
the lifetime of the program.
|
||
(xstrdup): Add `strdup()` wrapper: dies if `strdup()` fails.
|
||
(main): Split nested `strsave()` and `xputenv()` (until recently
|
||
`putenv()`) calls. Free duplicate strings prior to exit.
|
||
|
||
2022-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp (main): Rename temporary variable to
|
||
avoid shadowing one in enclosing scope, which can lead to
|
||
cut-and-paste errors (ask me how I know).
|
||
|
||
2022-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp: Slightly refactor to indirect
|
||
`putenv` calls through an error-checking wrapper.
|
||
(xputenv): Add new function to die if `putenv()` fails.
|
||
(main): Update call sites to use it.
|
||
|
||
2022-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[groff]: Add information to diagnostic messages.
|
||
|
||
* src/roff/groff/groff.cpp (main): Report underlying system
|
||
error if `putenv()` fails.
|
||
(handle_unknown_desc_command): Set globals `current_filename`
|
||
and `current_lineno` from `filename` and `lineno` arguments
|
||
passed to us to we can use the simpler interface of `error()`
|
||
rather than `error_with_file_and_line()`.
|
||
|
||
2022-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Update return type of `font::load_desc` function to
|
||
enable more informative diagnostics from callers.
|
||
|
||
* src/include/font.h (font::load_desc): Change return type from
|
||
`bool` to `const char` pointer.
|
||
* src/libs/libgroff/font.cpp (font::load_desc): Return null
|
||
pointer literal on failed `open()` or validation failures.
|
||
Return filespec on success.
|
||
|
||
* src/libs/libdriver/input.cpp (do_file):
|
||
* src/preproc/grn/main.cpp (getres):
|
||
* src/roff/groff/groff.cpp (main):
|
||
* src/roff/troff/input.cpp (main): Compare `font::load_desc()`
|
||
return value to null pointer literal instead of treating it as a
|
||
Boolean.
|
||
|
||
* src/roff/groff/groff.cpp (main): Report full filespec of
|
||
troublesome "DESC" file when complaining of missing "postpro"
|
||
directive.
|
||
|
||
2022-06-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp: Add new Boolean global,
|
||
`need_postdriver`, and initialize it true.
|
||
(main): Make `need_postdriver` false if the `-X` or `-Z` options
|
||
are given. Test it later. This prevents groff from exiting
|
||
with a fatal error if an output driver is not available, but
|
||
also not required. Also reorder null pointer equality
|
||
comparison to avoid inadvertent lvalue assignment.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62640>.
|
||
|
||
2022-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp (help): Revise usage message for
|
||
expressiveness and clarity.
|
||
|
||
2022-06-21 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Correct display of pathnames used.
|
||
|
||
* font/devpdf/util/BuildFoundries.pl: Convert array to
|
||
string of pathnames.
|
||
|
||
2022-06-21 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Fix to gropdf.
|
||
|
||
* src/devices/gropdf/gropdf.pl: If pdfbookmark was called
|
||
within 5p of top of page (e.g. straight after a .bp when
|
||
\n[nl] was zero) the click destination would be off by a
|
||
page.
|
||
|
||
2022-06-19 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
* font/devpdf/devpdf.am: Always build PDF font description
|
||
files.
|
||
|
||
Build font/devpdf/download and the various TR, TB, CR etc.
|
||
files in the same directory even when they are not required
|
||
by the build because USE_GROPDF is unset, usually because
|
||
ghostscript is either unavailable or deliberately disabled
|
||
by the person running the build. These files need to be
|
||
built and installed anyway, and can be used on the target
|
||
system when the required infrastructure is available at run
|
||
time.
|
||
|
||
2022-06-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Revise introduction of vertical spacing concept to avoid
|
||
render inference that the formatter will compute a vertical
|
||
spacing appropriate to the type size automagically--it will not.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62617>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2022-06-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Revise discussion of end-of-sentence detection.
|
||
|
||
* doc/groff.texi (Filling):
|
||
* man/roff.7.man (Concepts): Do it. "Spaces" is a now a term
|
||
with a much more restricted usage. Emphasize the input context,
|
||
now explicitly identified as plain text files with Unix line
|
||
endings.
|
||
|
||
Fixes (one hopes) <https://savannah.gnu.org/bugs/?62593>.
|
||
Thanks to Ingo Schwarze for the report and Dave Kemper for the
|
||
discussion.
|
||
|
||
2022-06-10 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Changes to BuildFoundries.
|
||
|
||
* font/devpdf/util/BuildFoundries.pl: Collect search paths into
|
||
an array rather than a colon delimited string, this allows
|
||
the @PATH_SEPARATOR@ character (':' or ';') to be used to
|
||
delimit paths yielded by the command 'gs -h' but still use ':'
|
||
to delimit paths in the Foundry file. This means the same
|
||
Foundry file can be used on all systems.
|
||
|
||
* font/devpdf/Foundry.in: Add more likely paths to find the URW
|
||
fonts.
|
||
|
||
2022-06-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Weaken dependency on TeX, instead using it (to generate
|
||
the DVI and PDF forms of our Texinfo manual) only if it is
|
||
available.
|
||
|
||
* m4/groff.m4 (GROFF_USE_TEX_CHECK): Check for presence of 'tex'
|
||
executable in path. Set shell variable `groff_use_tex` to "yes"
|
||
if present, and "no" otherwise. This check runs only if the
|
||
'makeinfo' and 'texi2dvi' version checks have already passed.
|
||
|
||
* configure.ac: Run the new check. Set Automake conditional
|
||
`USE_TEX` only if shell variable `groff_use_tex` is "yes".
|
||
Report whether "groff.dvi" and "groff.pdf" are (re-)buildable.
|
||
|
||
* doc/doc.am: Parameterize names of groff.{dvi,pdf} targets as
|
||
Make macros `GROFF_DVI` and `GROFF_PDF`. Define them only if
|
||
`USE_TEX`. Do _not_ update `EXTRA_DIST` macro; leave the
|
||
literal file names there because we require that distribution
|
||
archives contain these files.
|
||
(.texi.dvi, .texi.pdf): Update suffix rules to check `USE_TEX`
|
||
and fail, complaining of missing 'tex' program, if these targets
|
||
are attempted without it being true. Only manually specifying
|
||
the file names as targets to 'make' or attempting to generate a
|
||
distribution archive without TeX present should cause these
|
||
errors.
|
||
|
||
* INSTALL.REPO: Update dependency information.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62592>. Thanks to Deri
|
||
James for the report.
|
||
|
||
2022-06-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (.texi.dvi, .texi.pdf, $(DOC_GNU_EPS)): Quote names
|
||
of programs when aborting because they're missing.
|
||
|
||
2022-06-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PROG_MAKEINFO, GROFF_PROG_TEXI2DVI):
|
||
Largely revert commit d5013ededc, 21 May: run checks for
|
||
'makeinfo' and 'texi2dvi' programs regardless of presence of
|
||
".tarball-version" file. Their presence is a necessary (but not
|
||
sufficient) condition for refresh of formatted forms of our
|
||
Texinfo manual if the source is modified.
|
||
|
||
Begins addressing <https://savannah.gnu.org/bugs/?62592>.
|
||
|
||
2022-06-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Rename some groff Autoconf macros to better match
|
||
Autoconf's own naming conventions.
|
||
|
||
* m4/groff.m4 (GROFF_MAKEINFO): Rename to...
|
||
(GROFF_PROG_MAKEINFO): ...this.
|
||
(GROFF_TEXI2DVI): Rename to...
|
||
(GROFF_PROG_TEXI2DVI): ...this.
|
||
|
||
* configure.ac:
|
||
* m4/groff.m4 (GROFF_TEXI2DVI): Update call sites.
|
||
|
||
2022-06-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (SH, SS, B, I, SM, SB): Set input trap with `it`
|
||
instead of `itc` for better Unix Version 7 man(7) compatibility.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?51468>. Also see
|
||
discussion at
|
||
https://lists.gnu.org/archive/html/groff/2022-06/msg00020.html
|
||
et sequentia (amid a vigorous bikeshedding of `\&`'s name).
|
||
|
||
2022-06-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Regression-test use of input traps.
|
||
|
||
* tmac/tests/an_use-input-traps-correctly.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-06-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (LoadDesc): Validate device
|
||
description file for essential directives and acceptable values
|
||
as grops(1) does.
|
||
|
||
2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff, grohtml, grops, grotty]: Update wording of diagnostic
|
||
messages to refer to "motion quantum" rather than "resolution"
|
||
where appropriate.
|
||
|
||
* src/devices/grohtml/post-html.cpp
|
||
(html_printer::html_printer):
|
||
* src/devices/grops/ps.cpp (ps_printer::ps_printer):
|
||
* src/devices/grotty/tty.cpp (tty_printer::set_char)
|
||
(tty_printer::add_char, tty_printer::end_page):
|
||
* src/roff/troff/env.cpp (line_length, title_length): Do it.
|
||
|
||
2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl: Do more "DESC" file validation.
|
||
(LoadDesc): Bomb out gracefully if any of "unitwidth", "res", or
|
||
"sizescale" missing from "DESC" file. This prevents Perl
|
||
warnings about use of uninitialized values, and undoubtedly
|
||
mangled output.
|
||
|
||
2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl: Revise diagnostic message
|
||
handling.
|
||
(top level): Add new scalar `progname` to house executable name.
|
||
(Msg): Output messages in format recommended by GNU Coding
|
||
Standards manual. Identify who's talking (Savannah #52463).
|
||
Rename `lev` scalar to `fatal` since it is used only as a
|
||
Boolean for immediately exiting with failure status. Report
|
||
diagnostic severity as part of message.
|
||
(Warn, Die): Add new subroutines through which all diagnostics
|
||
are now emitted.
|
||
(top level): Migrate a use of Perl `die` builtin to our `Die`.
|
||
(top level, ToPoints, LoadDownload, LoadDesc, do_x, GetPoints,
|
||
LoadSWF, LoadPDF, LoadStream, BuildStream, ParsePDFHash,
|
||
LoadFont, GetType1, GetChunk, RemapChr, do_N): Migrate `Msg(0,
|
||
...)` calls to `Warn` and `Msg(1, ...)` to `Die`. Begin
|
||
messages in lowercase (GNU Coding Standards). Recast a few
|
||
messages for clarity.
|
||
|
||
Continues the long process of fixing Savannah #52463.
|
||
|
||
2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (Load_Config): Drop unused
|
||
subroutine and its commented-out call site, which came in that
|
||
way in July 2011.
|
||
|
||
2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (LoadFont): Warn if a font to be
|
||
embedded in PDF output cannot be located in the "download" file.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62572>. Thanks to Deri
|
||
James.
|
||
|
||
2022-06-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/a4.tmac: Drop file from distribution. It has been
|
||
superseded by papersize.tmac for nearly 20 years.
|
||
* tmac/tmac.am (TMACNORMALFILES): Delete reference.
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62569>.
|
||
|
||
2022-06-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Parameterize X11-related man pages, so they don't get
|
||
spuriously generated (and not cleaned) when building with X11
|
||
support disabled.
|
||
|
||
* Makefile.am (.man): Fix logic nit: drop unnecessary removal of
|
||
target before clobbering it with sed.
|
||
* src/devices/xditview/xditview.am (GXDITVIEW_MAN1): Add new
|
||
macro, expanding to nothing if `WITHOUT_X11` and to the target
|
||
name otherwise.
|
||
(man1_MANS): Append `GXDITVIEW_MAN1` expansion, not a literal.
|
||
* src/devices/xditview/xditview.am (XTOTROFF_MAN1): Add new
|
||
macro, expanding to nothing if `WITHOUT_X11` and to the target
|
||
name otherwise.
|
||
(man1_MANS): Append `XTOTROFF_MAN1` expansion, not a literal.
|
||
* doc/doc.am (GROFF_MAN_PAGES1): Append foregoing expansions
|
||
instead of literals.
|
||
|
||
2022-06-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Add `AM_CONDITIONAL`: `HAVE_URW_FONTS`, so our
|
||
Automake files can more easily cope with their absence.
|
||
* font/devpdf/Foundry.in: Add easily matched phrases to
|
||
comments, to clearly delimit the URW foundry portion of the file
|
||
so it can be omitted if those fonts are absent.
|
||
* font/devpdf/devpdf.am (font/devpdf/Foundry): Generate file
|
||
differently depending on `HAVE_URW_FONTS`; keep the existing
|
||
procedure if true, and delete the URW section from the generated
|
||
file otherwise, avoiding diagnostic messages from afmtodit(1)
|
||
and our BuildFoundries script.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62570>.
|
||
|
||
2022-06-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries):
|
||
Generate script using the `PATH_SEPARATOR` Automake macro.
|
||
* font/devpdf/util/BuildFoundries.pl: Add `pathsep` scalar to
|
||
house the build-time path separator.
|
||
(LocateFile): Use it.
|
||
(LoadFoundry, CheckFoundry): Stop using spaces as part of the
|
||
path separation delimiter. It is not idiomatic.
|
||
|
||
2022-06-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Explicitly identify poppler tools in report.
|
||
|
||
2022-06-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl: Trivially refactor. Drop
|
||
unused hash `foundry`. Drop scalar `warn` that was set and
|
||
updated but never tested.
|
||
|
||
2022-06-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl: Alter script to write to
|
||
the standard output stream instead of (re)writing a file named
|
||
"download" in the current working directory. This recovers from
|
||
a problem I introduced in commit 6e62be835d, 2 May, as an
|
||
unforeseen side effect of improving build parallelism so that
|
||
the "download" file wouldn't be read until it was fully
|
||
populated. As a side benefit, this approach is more Unixy, and
|
||
less dependent on $PWD.
|
||
(top level): Stop calling `WriteDownload` with an argument.
|
||
(LoadFoundry): Close only the file handle of interest when done,
|
||
not all of them (including `STDOUT`, which we now need).
|
||
(CheckFoundry): Same--just for cleanliness, since at present
|
||
running the script in 'check' mode doesn't write to any streams.
|
||
(WriteDownload): Stop taking an argument and manipulating file
|
||
handles. Write download file to standard output.
|
||
(LoadDownload, WriteDownload): Drop `top` scalar, used as a
|
||
mutex to serialize read and write access to "download" file; it
|
||
is no longer needed since the "download" file is now only read.
|
||
|
||
2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Rename shell variables and Autoconf/Automake macros of
|
||
Boolean sense to have names more like logical predicates and
|
||
avoid doofy "DONT" nomenclature.
|
||
|
||
* m4/groff.m4 (GROFF_MAKE_RM): Rename shell variable
|
||
`groff_is_rm_defined` to `groff_make_defines_rm` (purely for
|
||
clarity; it already had a good name).
|
||
(GROFF_MAKE_RM): Rename this...
|
||
(GROFF_MAKE_DEFINES_RM): to this, to make parallelism obvious,
|
||
and enabling...
|
||
* configure.ac: ...rename of `MAKE_DONT_HAVE_RM` to
|
||
`MAKE_DEFINES_RM` with sense of test reversed. Also interpolate
|
||
`GROFF_MAKE_DEFINES_RM` instead of `GROFF_MAKE_RM`. This in
|
||
turn enables...
|
||
* Makefile.am: ...revision of conditional from
|
||
`MAKE_DONT_HAVE_RM` to "!`MAKE_DEFINES_RM`".
|
||
|
||
2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_URW_FONTS_PATH)
|
||
(GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_APPDEFDIR_OPTION)
|
||
(GROFF_UCHARDET): Recast help strings to more closely parallel
|
||
structure and style of Autoconf's own help strings.
|
||
(GROFF_WITH_COMPATIBILITY_WRAPPERS): Recast to tighten wording.
|
||
|
||
2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac:
|
||
* m4/groff.m4 (GROFF_APPDEFDIR_OPTION, GROFF_APPDEFDIR_DEFAULT)
|
||
(GROFF_APPDEFDIR_CHECK): Rename m4 macros and shell variable
|
||
from "*appres*" to "*appdef*. Update interpolation sites.
|
||
|
||
* configure.ac:
|
||
* m4/groff.m4 (GROFF_APPDEFDIR_CHECK): Further rename this...
|
||
(GROFF_APPDEFDIR_NOTICE): ...to this, for consistency with other
|
||
post-report output macros.
|
||
|
||
* Makefile.am:
|
||
* PROBLEMS:
|
||
* doc/automake.mom:
|
||
* src/devices/xditview/xditview.am: Update interpolation sites
|
||
of `appresdir`.
|
||
|
||
* Makefile.am:
|
||
* src/devices/xditview/gxditview.1.man:
|
||
* src/roff/groff/groff.1.man: Update interpolation sites of
|
||
`APPRESDIR`.
|
||
|
||
* NEWS: Add item.
|
||
|
||
2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_X11, GROFF_UCHARDET): Drop redundant
|
||
messages (which are easily overlooked amid the torrent of
|
||
"checking" output anyway). Discovery failures of X11 and the
|
||
uchardet library are already parts of the configuration report
|
||
at or near the end of output.
|
||
|
||
2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PNMTOPS_NOSETPAGE): Partially revert change
|
||
from 21 May and document why in a comment.
|
||
|
||
2022-06-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/troffrc: Skip loading of "papersize.tmac" if not in troff
|
||
mode.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62238>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-05-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Report use of "g" prefix for commands and macro
|
||
package compatibility wrappers.
|
||
* m4/groff.m4 (GROFF_G): Fix code style nits. Update
|
||
indentation to match recent practice.
|
||
|
||
2022-05-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Fix code style nits and tweak report. Stop
|
||
superfluously using braces for shell parameter expansions that
|
||
don't require them. The shell is not make(1). Say
|
||
"installation _directory_ prefix" since another kind of prefix
|
||
can be used by groff (the "g" in front of command and macro
|
||
package names shared with AT&T troff).
|
||
|
||
2022-05-31 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* doc/groff.texi: Fix content and style nits.
|
||
- Remove redundancy ("fixed-width... character that can't be
|
||
adjusted").
|
||
- Fix incorrect word ("environment value" -> "environment
|
||
variable").
|
||
- Add or change the placement of a couple tie{}s to comport
|
||
with style-guide recommendation.
|
||
- Grammarify.
|
||
- Clarify and tighten wording.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62551>.
|
||
|
||
2022-05-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/node.cpp (font_position): If mounting a font
|
||
fails and a third argument was given (to the `fp` request),
|
||
report its value in the diagnostic message. This could reveal a
|
||
prohibited attempt at directory traversal. See commit
|
||
a891161bc9, 7 November.
|
||
|
||
2022-05-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/fontfile.cpp (font::open_file): Refactor.
|
||
Move more logic, including memory allocation, inside conditional
|
||
that accepts only file names without '/' characters, skipping
|
||
unnecessary work in the alternative. Annotate use of zero
|
||
literals as null pointers to ease any future migration to ISO
|
||
C++11. Add 'const' qualifier to variable that doesn't require
|
||
modification (and which is used in the LHS of an equality
|
||
comparison, so that clumsy operator misuse will provoke a
|
||
compiler warning).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62532>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-05-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: In configuration report, say that we're
|
||
reporting compiler options along with the compiler executable.
|
||
Fix leftover test(1) comparison with garbage, overlooked in
|
||
commit faa22d89d2, 20 May.
|
||
|
||
2022-05-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/meintro_fr.ps): Build with '-t' option.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62542>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-05-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.1.man (Options) <-l>: Handle case where
|
||
no default print spooler is configured, and report formatter
|
||
behavior correctly if it isn't.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62535>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-05-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* Makefile.am (.man): Process '@PSPRINT@' substitutions with
|
||
"makevarescape.sed".
|
||
|
||
2022-05-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PROG_YACC, GROFF_MAKEINFO, GROFF_TEXI2DVI):
|
||
Fix logic error in detection of build scenario: the presence of
|
||
a ".git" directory is not an indicator that we're not building
|
||
from a distribution archive, because we might be building from a
|
||
snapshot archive (which also lacks it). Instead, perform checks
|
||
required only by builds from Git checkouts and snapshot archives
|
||
if the ".tarball-version" file is not present.
|
||
|
||
2022-05-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* Makefile.am (EXTRA_DIST): Ship "HACKING" file.
|
||
|
||
2022-05-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* bootstrap.conf: Add "pkg-config" to `buildreq`. Not having it
|
||
causes pretty horrible macro expansion problems and diagnostics
|
||
when 'autoreconf' is run; they're still pretty bad even if you
|
||
use `AC_REQUIRE` and `m4_pattern_forbid`. So just demand it.
|
||
|
||
2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devps/S:
|
||
* font/devps/symbolmap: Drop excess mapping of `*U` special
|
||
character. groff maps it to the Adobe Glyph List name
|
||
'Upsilon1'. (The AGL 'Upsilon' is a homoglyph of the Latin
|
||
capital 'Y'.)
|
||
* PROBLEMS: De-document build-time warning, now resolved.
|
||
|
||
2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.tables: Regenerate using Unicode
|
||
14.0. No substantive changes.
|
||
|
||
2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/make-afmtodit-tables: Refactor. Drop
|
||
unused variable `prog`. Use value of `CPP` from environment (if
|
||
defined) and use parameter expansion to apply a default if null
|
||
or not set. Use for loop to eliminate duplicative if statement.
|
||
Test input files for readability, not just existence. Use more
|
||
portable test(1) and shell syntax. Swap usage error and fatal
|
||
error exit statuses; using "1" for failure and "2" for usage
|
||
errors is more common in shell scripts I've seen. Update usage
|
||
message to put non-literal parameter in full caps, and clarify
|
||
its name. Update comment blocks written to generated files to
|
||
further clarify data provenance.
|
||
|
||
2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PRINT): Refactor. Stop performing checks
|
||
for spooler options if none is available. Stop redundantly
|
||
reporting command name used for spooling PostScript files. If
|
||
an option is required for spooling DVI files, report it alone
|
||
instead of repeating the command name as well.
|
||
|
||
2022-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Fix insensitivity of groff(1) man page to configured spooler.
|
||
|
||
* Makefile.am (.man): Replace `@PSPRINT@` in man page sources
|
||
with name of configured print spooler command.
|
||
* src/roff/groff/groff.1.man (Options) <-l>: Use configured
|
||
print spooler command instead of literal 'lpr'.
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_UCHARDET_CHECK): Fix grammar nit in failure
|
||
message when user demands uchardet support but the library
|
||
cannot be located.
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS): Fix logic error in
|
||
computation of verb to be used in notice message.
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PROG_YACC, GROFF_URW_FONTS_CHECK)
|
||
(GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_UCHARDET_NOTICE):
|
||
Improve shell code portability. Per the GNU Autoconf manual,
|
||
"The -a, -o, '(', and ')' operands are not present in all
|
||
implementations, and have been marked obsolete by Posix 2008.
|
||
...portable uses of test should never have more than four
|
||
arguments, and scripts should use shell constructs like '&&' and
|
||
'||' instead."
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.1.man (Installation directories): Don't
|
||
output a tagged paragraph for the X11 application defaults
|
||
directory if the build symbol '@APPRESDIR@' is not defined (that
|
||
is, we didn't build with X11 support).
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK): Fix code style
|
||
nits. Use lowercase for shell variables we define. Don't quote
|
||
literal operands to test(1) that don't contain syntactically
|
||
shell-significant characters. Update indentation to match
|
||
recent practice.
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_URW_FONTS_NOTICE): Don't emit the notice if
|
||
Ghostscript isn't available, since it was a prerequisite for
|
||
the `GROFF_URW_FONTS_CHECK` macro in the first place.
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Add print spooler determination to configuration
|
||
report.
|
||
|
||
* m4/groff.m4 (GROFF_PRINT): Add shell variable
|
||
`groff_have_spooler` to house the name of the print spooler
|
||
{"lp" or "lpr"} or the word "no".
|
||
* configure.ac: Report determined spooler, or its absence.
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Skip
|
||
seekability check of the standard input stream if there is no
|
||
controlling terminal.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62506>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-05-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS): Migrate from
|
||
`AC_FOREACH` to `m4_foreach` to avoid obsolescence warning from
|
||
GNU Autoconf 2.70 or later.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61059>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-05-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man: Rename "pilot" list macros for man(7) from
|
||
`BL`/`EL` to `LS`/`LE`, per suggestion from Alejandro Colomar.
|
||
|
||
2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_MAKEINFO, GROFF_TEXI2DVI): Check for
|
||
makeinfo(1) and texi2dvi(1) programs only if building from Git,
|
||
not a distribution archive.
|
||
|
||
2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/meintro_fr.ps): Call groff with `-K utf8`
|
||
instead of `-k`, in case the "configure" script didn't find
|
||
uchardet (and preconv(1) thus can't auto-detect an encoding).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59463>.
|
||
|
||
2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Skip
|
||
a check if /dev/stdin is not a character special device.
|
||
|
||
2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PDFTOOLS): Rename this...
|
||
(GROFF_POPPLER): ...to this.
|
||
* configure.ac: Update call site.
|
||
|
||
2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_UCHARDET_CHECK): Rename this...
|
||
(GROFF_UCHARDET_NOTICE): ...to this.
|
||
* configure.ac: Update call site.
|
||
|
||
* m4/groff.m4 (GROFF_UCHARDET_NOTICE): Tighten wording of
|
||
message reported to user.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59481>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PNMTOOLS_CAN_BE_QUIET)
|
||
(GROFF_PNMTOPS_NOSETPAGE): Skip check if prerequisite not met.
|
||
|
||
2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_URW_FONTS_CHECK): Rename this...
|
||
(GROFF_URW_FONTS_NOTICE): ...to this.
|
||
(GROFF_URW_FONTS): ...and this...
|
||
(GROFF_URW_FONTS_CHECK): ...to this.
|
||
(GROFF_URW_FONTS_NOTICE): Give lengthy notice message a one-line
|
||
summary.
|
||
* configure.ac: Update call sites.
|
||
|
||
2022-05-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_URW_FONTS): Refactor. If our prerequisites
|
||
are not met (availability of 'awk' and 'gs'), don't even run the
|
||
check logic or print a "checking" message.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Handle missing programs required to construct files needed at
|
||
runtime by gropdf more gracefully. Rename and refactor
|
||
configuration-time logic to be more understandable.
|
||
|
||
* configure.ac:
|
||
* m4/groff.m4: Rename `GROFF_PDFDOC_PROGRAMS` macro to
|
||
`GROFF_CHECK_GROPDF_PROGRAMS`. Rename shell variable
|
||
`make_pdfdoc` to `use_gropdf`. Set it explicitly to "no" or
|
||
"yes" instead of null or not null.
|
||
|
||
* configure.ac:
|
||
* m4/groff.m4:
|
||
* doc/doc.am: Rename `BUILD_PDFDOC` to `USE_GROPDF`.
|
||
|
||
* configure.ac: Call `GROFF_GROPDF_PROGRAM_NOTICE`.
|
||
|
||
* doc/doc.am: Bracket definition of `PROCESSEDDOCFILES_PDF`
|
||
macro and `$(PROCESSEDDOCFILES_PDF)` dependency declaration in
|
||
Automake `if USE_GROPDF` conditional. This prevents attempts
|
||
to build PDF documents using groff that are doomed to fail.
|
||
|
||
* m4/groff.m4: Refactor gropdf runtime-dependency program check.
|
||
Split into two macros: one (`GROFF_CHECK_GROPDF_PROGRAMS`)
|
||
performs the check, the other (`GROFF_GROPDF_PROGRAM_NOTICE`)
|
||
issues a notice at the end of the configuration process if at
|
||
least one program was not found. Rename `docnote` shell
|
||
variable to `gropdf_notice`. Tighten wording of notice. Drop
|
||
unused `make_install_pdfdoc` and `make_uninstall_pdfdoc` shell
|
||
variables.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Handle missing programs required at runtime by grohtml more
|
||
gracefully. Rename and refactor configuration-time logic to be
|
||
more understandable.
|
||
|
||
* configure.ac:
|
||
* m4/groff.m4: Rename `GROFF_HTML_PROGRAMS` macro to
|
||
`GROFF_CHECK_GROHTML_PROGRAMS`. Rename shell variable
|
||
`make_htmldoc` to `use_grohtml`. Set it explicitly to "no" or
|
||
"yes" instead of null or not null.
|
||
|
||
* configure.ac:
|
||
* m4/groff.m4:
|
||
* doc/doc.am: Rename `BUILD_HTML` to `USE_GROHTML`.
|
||
|
||
* configure.ac: Call `GROFF_GROHTML_PROGRAM_NOTICE`.
|
||
|
||
* doc/doc.am: Bracket definition of `PROCESSEDDOCFILES_HTML`
|
||
macro and `$(PROCESSEDDOCFILES_HTML)` dependency declaration
|
||
in Automake `if USE_GROHTML` conditional. This prevents an
|
||
attempt to build an HTML version of the "pic.ms" document that
|
||
is doomed to fail (noisily).
|
||
|
||
* m4/groff.m4: Refactor grohtml runtime-dependency program
|
||
check. Split into two macros: one
|
||
{`GROFF_CHECK_GROHTML_PROGRAMS`} performs the check, the other
|
||
{`GROFF_GROHTML_PROGRAM_NOTICE`} issues a notice at the end of
|
||
the configuration process if at least one program was not found.
|
||
Rename `html_docnote` shell variable to `grohtml_notice`.
|
||
Tighten wording of notice. Drop unused `make_install_htmldoc`
|
||
and `make_uninstall_htmldoc` shell variables.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_NOTICE): Add newline at
|
||
end of buggy Ghostscript notification, so that the multiple
|
||
possible lengthy notices after the configuration report have
|
||
blank lines separating them.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Check for m4 program at configuration time.
|
||
|
||
* m4/groff.m4 (GROFF_PROG_M4): Define new macro to perform the
|
||
check and error out if the program is missing.
|
||
* configure.ac: Call the new macro.
|
||
* tmac/tmac.am (tmac/groff_man.7.man)
|
||
(tmac/groff_man_style.7.man): Use the new implicitly AC_SUBST-ed
|
||
variable `M4` to run the program.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_PROG_YACC): Update wording of error
|
||
message: we search for "yacc", so report it as missing if it is
|
||
not found (along with "byacc" and "bison").
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Fix shell style nits. Get rid of string
|
||
{non-}nullity tests and comparisons involving concatenation with
|
||
garbage (usually "x"). See 13 November entry regarding m4. Use
|
||
idiomatic shell "brace style" for control structures.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Trivially refactor libgroff allocator configuration.
|
||
|
||
* m4/groff.m4 (GROFF_USE_GROFF_ALLOCATOR): Update description of
|
||
configuration flag to clarify that it's implemented in a
|
||
library. Rename shell variable to prefix it with "groff_",
|
||
putting it in an ad hoc name space as with other variables. If
|
||
feature disabled, set variable to literal "no".
|
||
* configure.ac: Use renamed variable and interpolate it directly
|
||
into configuration report, simplifying shell logic.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Revise configuration report for intelligibility.
|
||
Add report of C++ compiler and flags used: we compile much more
|
||
C++ than C code so this seems appropriate. Report Perl
|
||
interpreter version so that we can collect build reports and
|
||
turn the ratchet past Perl 5.6.1 at some point. Fix X11
|
||
"resources" misnomer (application defaults are what is meant).
|
||
Rephrase generally.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* Makefile.am (EXTRA_DIST): Ship "ChangeLog.122" in distribution
|
||
archive. Overlooked in commit c11995df16, 19 February 2021.
|
||
|
||
2022-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh:
|
||
Fix portability problem: POSIX says that "od -c" (and "od -t c")
|
||
are supposed to emit printing characters as defined by the
|
||
underlying locale, but GNU coreutils od doesn't do this and
|
||
macOS od does. Set `LC_ALL` to "C" when running it to force
|
||
3-digit octal reporting of characters with their eighth bit set.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62357>. Thanks to John
|
||
Gardner for the report. Also see <https://pubs.opengroup.org/\
|
||
onlinepubs/9699919799/utilities/od.html>.
|
||
|
||
2022-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* INSTALL.extra (In Case of Trouble): Add advice on using the
|
||
test suite, particularly if it fails.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62478> (one hopes).
|
||
|
||
2022-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Input Line Traps): Expand discussion. The
|
||
`it` and `itc` requests count neither input lines (strictly) nor
|
||
text lines. Instead, they count input lines that _directly
|
||
produce formatted output_ (and, in the case of `itc`, are not
|
||
"interrupted" or continued with the `\c` escape sequence). This
|
||
is useful--empty requests and requests that don't put nodes on
|
||
the output don't break things--but does demand some explanation.
|
||
Clarify and provide example.
|
||
* man/groff.7.man (Escape sequence short reference) <it>: Sync.
|
||
|
||
2022-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (environment::choose_breakpoint): Tweak
|
||
diagnostic message ("can't" -> "cannot").
|
||
* doc/groff.texi (Breaking): Update example.
|
||
|
||
2022-05-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Copy Mode):
|
||
* man/groff.7.man (Copy mode): Fix omission; `\?` is interpreted
|
||
in copy mode.
|
||
|
||
2022-05-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (PT): Unclutter name space; remove
|
||
`pg*saved-page-number-format` string when we're done with it.
|
||
|
||
2022-05-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Add unit tests, including one XFAIL for bad behavior.
|
||
|
||
* src/preproc/tbl/tests/check-horizontal-line-length.sh:
|
||
* src/preproc/tbl/tests/check-line-intersections.sh:
|
||
* src/preproc/tbl/tests/check-vertical-line-length.sh:
|
||
* src/preproc/tbl/tests/table-lacks-spurious-top-border.sh: Do
|
||
it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run tests.
|
||
(tbl_XFAIL_TESTS, XFAIL_TESTS): Expect one test failure.
|
||
|
||
2022-05-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grotty/tty.cpp (tty_printer::add_char): Modify
|
||
diagnostic message: what gets written "above [the] first line"
|
||
might not be a character (glyph) per se, but a line (rule) from
|
||
a drawing command, and in fact the occurrence of these from
|
||
boxed tables is the most common cause of this message I've seen.
|
||
|
||
2022-05-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grotty]: Do more input validation.
|
||
|
||
* src/devices/grotty/tty.cpp (tty_printer::draw): Throw warning
|
||
if an unsupported geometric primitive is encountered.
|
||
(tty_printer::line): Throw warning if a line is diagonal. Die
|
||
if length of a horizontal or vertical line is not a multiple of
|
||
the appropriate motion quantum of the device (troff should never
|
||
emit such nonsense, and currently doesn't appear to).
|
||
|
||
2022-05-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/tbl.1.man (Miscellaneous): Document GNU tbl's
|
||
use of `#T` and `T.` registers.
|
||
|
||
2022-05-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (read_color_draw_node): Tweak
|
||
diagnostic message to better distinguish drawing commands and
|
||
device control commands.
|
||
|
||
2022-05-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Mitigate double-free problem exposed by malformed
|
||
input.
|
||
|
||
* src/roff/troff/mtsm.h (struct statem): Place member variable
|
||
`issue_no` behind `DEBUGGING` preprocessor symbol, omitting it
|
||
from production and ordinary development builds.
|
||
* src/roff/troff/mtsm.cpp (no_of_statems): Place global variable
|
||
behind `DEBUGGING` preprocessor symbol, omitting it from
|
||
production and ordinary development builds.
|
||
(statem::statem): Make constructor trivial if `DEBUGGING` not
|
||
defined in preprocessor; it manipulates only `issue_no` and
|
||
`no_of_statems`, which are synchronized.
|
||
(statem::statem {copy}): Gate assignment of `issue_no` member
|
||
variable from copy constructor behind `DEBUGGING` preprocessor
|
||
symbol.
|
||
(statem::flush, mtsm::inherit): Gate debugging output, already
|
||
runtime-gated on `debug_state` symbol, of `issue_no` member
|
||
variable, so that we don't reference it when it is not declared.
|
||
|
||
See <https://savannah.gnu.org/bugs/?62040>.
|
||
|
||
2022-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[refer]: Rename a test artifact; it's a bibliographic database
|
||
file, not a refer(1) command file.
|
||
|
||
* src/preproc/refer/tests/artifacts/62124.ref: Rename this...
|
||
* src/preproc/refer/tests/artifacts/62124.bib: ...to this.
|
||
* src/preproc/refer/refer.am (EXTRA_DIST):
|
||
* src/preproc/refer/tests/report-correct-line-numbers.sh: Use
|
||
new name.
|
||
|
||
2022-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/command.cpp (process_commands): Begin
|
||
migration to use existing global variables for location reports
|
||
in diagnostic messages. Save current file name and line number
|
||
before calling `command_loop()` and restore them afterward.
|
||
Also decrement line counter before entering that loop because it
|
||
would be too far advanced by one due to the final newline on a
|
||
parsed input line.
|
||
|
||
2022-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/refer.cpp (main): Report system error on
|
||
`fflush()` failure. POSIX Issue 5 a.k.a. SUSv2 (1997) specifies
|
||
several possible `errno` values this C standard library function
|
||
can set; see
|
||
<https://pubs.opengroup.org/onlinepubs/007908799/xsh/fflush.html>.
|
||
|
||
2022-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[refer]: Refactor: drop unused version of function (taking only
|
||
a `const char *` parameter).
|
||
|
||
* src/preproc/refer/command.cpp (process_commands): Drop
|
||
definition.
|
||
* src/preproc/refer/command.h (process_commands): Drop
|
||
declaration.
|
||
|
||
2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/refer.cpp (do_file): Fix another off-by-one
|
||
line number reporting bug exposed by fix for Savannah #62391.
|
||
|
||
2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/tests/report-correct-line-numbers.sh: Add
|
||
more regression tests.
|
||
|
||
2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[refer]: Trivially refactor: boolify.
|
||
|
||
* src/preproc/refer/command.cpp (input_stack::push_file): Demote
|
||
and rename local variable from `int` to `bool`.
|
||
(bol): Renamed from this...
|
||
(is_at_beginning_of_line): ...to this.
|
||
|
||
2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[refer]: Trivially refactor.
|
||
|
||
* src/preproc/refer/command.cpp (input_stack::push_file):
|
||
* src/preproc/refer/refer.cpp (do_file): Drop unnecessary
|
||
construction of integer from integer (return type of `getc()`)
|
||
in argument to error diagnostic functions; parallelizes with
|
||
other diagnostic function calls.
|
||
|
||
2022-05-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/command.cpp: Refactor to simplify.
|
||
(get_location): Demote return type from `int` to `void`. The
|
||
function only ever returned a `1` literal.
|
||
(input_stack::error): Update call site to stop uselessly testing
|
||
return value of `get_location()`.
|
||
|
||
2022-05-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (dist-info-bits, install_infodoc, dist-gnueps): Fix
|
||
logic error. When checking both source and build trees for
|
||
files to copy, break after successfully copying the files, not
|
||
after the first iteration of the loop unconditionally. This
|
||
caused the Info documents not to be installed from out-of-tree
|
||
builds, and potentially would prevent them and doc/gnu.eps from
|
||
being included in the distribution archive if for some reason
|
||
they didn't build and that build failure were not treated as an
|
||
error. Problems introduced by me in commits e78bd20d54, 27
|
||
March, and d79c3f3a4a, 11 November.
|
||
|
||
2022-05-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_APPRESDIR_OPTION): Update comments and
|
||
human-readable output to (1) stop claiming that existing
|
||
gxditview application defaults in the installation directory
|
||
will be backed up; this is no longer true as of commit
|
||
c66cb7725f, 3 April; and (2) refer to these files as
|
||
"application defaults", not "resources". (X11 application
|
||
defaults are client-side and mandatory [for Xt-based programs];
|
||
X resources are stored server-side and need not be configured to
|
||
determine an X client's geometry and rendering.)
|
||
|
||
2022-05-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devX100-12/devX100-12.am (devX100_12_fontdir):
|
||
* font/devX100/devX100.am (devX100_fontdir):
|
||
* font/devX75-12/devX75-12.am (devX75_12_fontdir):
|
||
* font/devX75/devX75.am (devX75_fontdir): Define macros without
|
||
an extra "font/" layer in the directory hierarchy.
|
||
|
||
Fixes problem introduced by me in commit 3c82cbbfe5, 27
|
||
February.
|
||
|
||
2022-05-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries): Spell
|
||
dependency on `$(SH_DEPS_SED_SCRIPT)` using that macro expansion
|
||
instead of a literal file name. See doc/automake.mom.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/eqn.am (MAINTAINERCLEANFILES):
|
||
* src/preproc/pic/pic.am (MAINTAINERCLEANFILES):
|
||
* src/preproc/refer/refer.am (MAINTAINERCLEANFILES): Preserve
|
||
byacc/bison output artifacts unless "maintainer-clean"ing. Per
|
||
the GNU Automake manual, "The intermediate files generated by
|
||
yacc (or lex) will be included in any distribution that is made.
|
||
That way the user doesn’t need to have yacc or lex."
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* Makefile.am: Stop manually handling "test-groff". Per the
|
||
GNU Automake manual, "If configure built it, then distclean
|
||
should delete it." This is taken care of automatically if we
|
||
don't interfere.
|
||
(BUILT_SOURCES, MOSTLYCLEANFILES): Drop "test-groff".
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/eqn.am (neqn): Produce temporary file first
|
||
and set its permissions before moving it into place. If
|
||
anything in the future ever has a dependency on it, this avoids
|
||
a race where the file exists, satisfying a dependency, but
|
||
execution is attempted before its `x` permission bit is set.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Ensure that we install *.me source files, but don't
|
||
include them in the distribution archive.
|
||
|
||
* doc/doc.am (dist_otherdoc_DATA): Move `$(GENERATEDDOCFILES)`
|
||
from here...
|
||
(nodist_otherdoc_DATA): ...to here.
|
||
(.PRECIOUS): Add `$(GENERATEDDOCFILES)` so that make(1) doesn't
|
||
automatically remove "intermediate" objects in the .me.in -> .me
|
||
-> .ps chain.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Handle "gnu.eps" file better.
|
||
|
||
* doc/doc.am (GENERATEDDOCFILES): Remove `$(DOC_GNU_EPS)`.
|
||
(EXTRA_DIST): Ship `$(DOC_GNU_EPS)` in distribution archive.
|
||
($(DOC_GNU_EPS)): Simplify rule commands; stop trying to copy
|
||
the file around since it will either be (1) in the distribution
|
||
archive from which a build is performed; or (2) missing because
|
||
a build is being done from Git, in which case we expect the PNM
|
||
tools to be available.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (clean_otherdoc): Drop target: it doesn't seem to
|
||
accomplish anything.
|
||
(clean_infodoc): Drop target, moving its rules into...
|
||
(maintainer-clean-local): ...this. Drop deps, both gone now.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (distclean-local): Drop target: stop cleaning
|
||
generated forms of our Texinfo manual with the "distclean"
|
||
target. They ship with the distribution archive and should
|
||
remain in the tree even if the user needs to re-./configure.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Fix problems exposed by high build parallelism.
|
||
|
||
* font/devpdf/devpdf.am (font/devpdf/util/BuildFoundries)
|
||
(font/devpdf/DESC, font/devpdf/Foundry): Drop
|
||
unnecessary removal of target prior to creating it.
|
||
(font/devpdf/Foundry): Add creation of destination build
|
||
directory as other targets do.
|
||
(font/devpdf/download): Create dedicated target instead of
|
||
lumping its generation under the stamp file. Add missing
|
||
dependencies on `$(DEVPDFFONTMAP_1)`, `$(DEVPDFFONTMAP_2)`,
|
||
`font/devpdf/Foundry` and `font/devpdf/enc/text.enc`. Remove
|
||
now-unnecessarily complicated "forgery" of "GEN" line in quiet
|
||
builds. Tweak format of comment written to "download" file to
|
||
make field identities clearer. Construct output (with multiple
|
||
shell commands) in temporary file so it is not read prematurely
|
||
by the "BuildFoundries" script. Move target into place as the
|
||
last step.
|
||
(font/devpdf/stamp): Relocate target to follow its dependencies.
|
||
Add dependency on "font/devpdf/download".
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Tweak diagnostic messages in BuildFoundries script.
|
||
|
||
* font/devpdf/util/BuildFoundries.pl (LoadFoundry)
|
||
(WriteDownload, CheckFoundry): Recast for specificity and
|
||
consistent style.
|
||
(Die): Stop reporting line number with fatal errors; none of the
|
||
call sites are parsing input.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[refer]: Fix off-by-one error in line number for some
|
||
diagnostics.
|
||
|
||
* src/preproc/refer/command.cpp (input_item::get_location):
|
||
Decrement reported line number by one after looping over input
|
||
so that we report the line number as it was before the last
|
||
newline character seen. This off-by-one error was partially
|
||
masked by...
|
||
* src/preproc/refer/refer.cpp (do_file): ...initialization of
|
||
`current_lineno` to zero. However, for syntax problems (as
|
||
opposed to the semantic problems of refer(1) command
|
||
processing), this could result in complaints about the line
|
||
number before they occurred, even on "line zero". Initialize
|
||
the variable to 1.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62391>.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/tests/report-correct-line-numbers.sh: Add
|
||
regression test for Savannah #62391.
|
||
|
||
2022-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/tfmtodit/tfmtodit.cpp (usage): Tweak usage message.
|
||
Condense `-v` and `--version` into a single output line with
|
||
brace and pipe notation, which we do not use in our man pages,
|
||
but consistently do in our usage messages. Use lowercase for
|
||
option arguments since they are separated from option flag
|
||
letters by space. Call `fprintf()` once instead of 3 times.
|
||
|
||
2022-05-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/refer.cpp (main): Tweak wording of
|
||
diagnostic messages to refer to options consistently and to
|
||
characterize input as "invalid" rather than "bad".
|
||
(usage): Document --version option. Use more informative
|
||
metasyntactic variable names. Organize usage message
|
||
consistently with our others, and stop wrapping the output
|
||
lines: we know neither the width of the terminal nor the length
|
||
of the `program_name` string we're interpolating. See commit
|
||
b4de44f0, 19 July 2021.
|
||
|
||
2022-05-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (string_iterator::backtrace): Fix
|
||
spurious output when `mac.filename` is empty. Provoked by:
|
||
$ printf '\\(' | troff -b
|
||
|
||
2022-05-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/refer.cpp: Trivially refactor. Demote
|
||
global variable `recognize_R1_R2` from integer to Boolean.
|
||
(main, do_bib): Give expressions to `assert()` meaningful
|
||
content.
|
||
(is_list): Demote return type from `int` to `bool`.
|
||
(do_file): Demote and rename integer local variables
|
||
`start_of_line` to Boolean `at_start_of_line`.
|
||
(is_list, do_file): Reorder equality comparisons to avoid
|
||
inadvertent lvalue assignment.
|
||
|
||
2022-05-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Reduce and rationalize in-tree document dependencies.
|
||
This eliminates spurious rebuilds of numerous documents
|
||
{including the 380+-page groff-man-pages collections}. It also
|
||
fixes missing dependencies when using the build's groff to
|
||
generate PostScript documents.
|
||
|
||
* .gitignore: Drop old name of devpdf stamp file.
|
||
* doc/.gitignore: Drop now-unused "example.stamp" file.
|
||
* doc/doc.am (PROCESSEDDOCFILES_HTML, PROCESSEDDOCFILES_PDF)
|
||
(PROCESSEDDOCFILES_TXT): Add new macros grouping targets by the
|
||
format/output driver used to produce them, to better organize
|
||
dependencies for their generation.
|
||
(PROCESSEDDOCFILES): Redefine as simply the expansions of the
|
||
foregeoing.
|
||
(PROCESSEDFILES_DEPS_HTML, PROCESSEDFILES_DEPS_HTML,
|
||
PROCESSEDFILES_DEPS_PDF, PROCESSEDFILES_DEPS_TXT): Add new
|
||
macros defining prerequisites for production of the
|
||
corresponding output document formats.
|
||
($(PROCESSEDDOCFILES_HTML), $(PROCESSEDDOCFILES_PDF),
|
||
$(PROCESSEDDOCFILES_PS), $(PROCESSEDDOCFILES_TXT)): Declare the
|
||
dependencies using expansions of the foregoing macros.
|
||
(MOSTLYCLEANFILES): Drop "doc/automake.pdf", now part of
|
||
`PROCESSEDDOCFILES_PDF`.
|
||
(doc/automake.pdf): Drop dependencies already supplied by
|
||
`PROCESSEDFILES_DEPS_PDF`.
|
||
(HTMLDOCFILES): Drop macro. "doc/pic.html" is now in the
|
||
expansion of `PROCESSEDDOCFILES_HTML`.
|
||
(htmlpic_DATA): Redefine as expansion of
|
||
`PROCESSEDDOCFILES_HTML` instead of `HTMLDOCFILES`.
|
||
(PROCESSEDEXAMPLEFILES_HTML) [BUILD_HTML]: Define as
|
||
"doc/webpage.html", otherwise as empty.
|
||
(PROCESSEDEXAMPLEFILES_PS): Contain "doc/webpage.ps" and
|
||
"doc/grnexampl.ps".
|
||
(PROCESSEDEXAMPLEFILES): Redefine as expansions of
|
||
`PROCESSEDEXAMPLEFILES_HTML` and `PROCESSEDEXAMPLEFILES_PS`.
|
||
($(PROCESSEDEXAMPLEFILES_HTML), $(PROCESSEDEXAMPLEFILES_PS)):
|
||
Declare dependencies using `PROCESSEDFILES_DEPS_HTML` and
|
||
`PROCESSEDFILES_DEPS_PS`, respectively.
|
||
(HTMLEXAMPLEFILES): Drop macro. "doc/webpage.html" is now in
|
||
the expansion of `PROCESSEDDOCFILES_HTML`.
|
||
(nodist_htmlexamples_DATA): Drop macro, no longer needed.
|
||
($(PROCESSEDDOCFILES_PS)): Relocated and redefined above.
|
||
($(PROCESSEDEXAMPLEFILES) $(PROCESSEDDOCFILES)): Drop overbroad
|
||
dependency declarations in favor of the above.
|
||
(MOSTLYCLEANFILES, doc/examples.stamp): Drop generation and
|
||
removal of unnecessary stamp file.
|
||
(doc/pic.html, doc/webpage.html): Add explicit dependency on
|
||
required preprocessors. Drop redundant and spurious
|
||
dependencies.
|
||
* font/devhtml/devhtml.am (MOSTLYCLEANFILES)
|
||
(font/devhtml/stamp): Generate and remove stamp file to enable
|
||
reliable target dependencies for build-time generation of HTML
|
||
documents by groff.
|
||
* font/devpdf/devpdf.am (MOSTLYCLEANFILES, font/devpdf/stamp):
|
||
Rename stamp file from "font/devpdf/build_font_files".
|
||
(font/devpdf/stamp): Drop unnecessary dependency on "afmtodit".
|
||
* font/devps/devps.am (MOSTLYCLEANFILES, font/devps/stamp):
|
||
Generate and remove stamp file to enable reliable target
|
||
dependencies for build-time generation of PostScript documents
|
||
by groff.
|
||
* font/devutf8/devutf8.am (MOSTLYCLEANFILES)
|
||
(font/devutf8/stamp): Generate and remove stamp file to enable
|
||
reliable target dependencies for build-time generation of
|
||
UTF-8-encoded text documents by groff.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62084>; thanks to
|
||
Sergei Trofimovich for the report. Also fixes
|
||
<https://savannah.gnu.org/bugs/?62297>; thanks to Bjarni Ingi
|
||
Gislason for the report.
|
||
|
||
2022-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Fix code style nits in Automake files.
|
||
|
||
* doc/doc.am: Put spaces around (Auto)make variable assignments,
|
||
for consistency with the rest of this .am file, and our others.
|
||
* font/devpdf/devpdf.am (font/devpdf/build_font_files): Use
|
||
shell '>' operator instead of touch(1).
|
||
* font/devhtml/devhtml.am (font/devhtml/DESC):
|
||
* font/devps/devps.am (font/devps/DESC): Construct target in
|
||
temporary file, since doing so is a multi-step process, moving
|
||
it to the target name when it is complete and usable by
|
||
dependencies.
|
||
|
||
2022-04-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/refer.cpp (main): When complaining of
|
||
unrecognized option, report the entire option string (after
|
||
the leading dash), not just its first character.
|
||
|
||
2022-04-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/error.cpp: Trivially refactor. Explicitly
|
||
compare pointer lvalues to null pointers instead of punningly
|
||
treating them as Booleans. Annotate use of zero literals as
|
||
null pointers to ease any future migration to ISO C++11.
|
||
|
||
2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (an*abbreviate-inner-footer): Clean up better
|
||
before early returns. Remove temporary registers.
|
||
|
||
2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/fallbacks.tmac: Add fallbacks for U+02C6 MODIFIER LETTER
|
||
CIRCUMFLEX ACCENT and U+02DC SMALL TILDE to Basic Latin
|
||
characters.
|
||
|
||
2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Fix portability problem. Don't pass echo(1) arguments
|
||
containing backslashes because implementations handle them
|
||
differently. Use printf(1) instead. Thanks to Bertrand
|
||
Garrigues for reporting the problem and confirming the fix on
|
||
his build host.
|
||
|
||
* tmac/tests/e_chapter-titles-work.sh:
|
||
* tmac/tests/e_ld-works.sh:
|
||
* tmac/tests/localization-works.sh: Do it.
|
||
|
||
2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (ppsz): Recognize "com10" (U.S.
|
||
commercial envelope) paper format.
|
||
|
||
Addresses the original issue reported in
|
||
<https://bugs.debian.org/1009248>. We have however broadened
|
||
its scope; see <https://savannah.gnu.org/bugs/?62344>.
|
||
|
||
2022-04-27 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* src/devices/gropdf/gropdf.pl (ppsz): Recognize ISO B-series
|
||
paper formats using strings of the form "b0-b6", not "isob0-b6",
|
||
for consistency with libgroff and papersize.tmac.
|
||
|
||
Fixes <http://savannah.gnu.org/bugs/?62346>.
|
||
|
||
2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Refactor to simplify. Ingo's removal of the
|
||
"--with-doc" "configure" option, among other changes, clears the
|
||
way to remove many phony targets and simplify dependencies
|
||
involving generation of the 5 formats of our Texinfo manual.
|
||
(build_infodoc, doc, doc_all, doc_txt, dvi, doc_dvi, pdf,
|
||
doc_pdf, html, doc_html): Drop phony targets.
|
||
(all): Depend directly on doc/groff.{info,txt,html,dvi,pdf}.
|
||
* NEWS: Add item since "make doc" is no longer necessary and
|
||
will do nothing.
|
||
|
||
2022-04-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Handle `\R` sequences in text blocks robustly.
|
||
|
||
* src/preproc/tbl/table.cpp (table::add_entry): Fix SEGV when
|
||
repeating glyph table entry syntax (`\Rx`) used in a text block.
|
||
Lift extraction of entry string to be done unconditionally,
|
||
rather than in 5 different special cases. This frees us up to
|
||
rewrite the entry if necessary, changing '\R' to '\&' inside a
|
||
text block. Recast diagnostic to describe the problem
|
||
clearly--"bad repeated character" suggests that something is
|
||
wrong with the "argument" to `\R`, when really the problem is
|
||
the _context_.
|
||
|
||
Fixes <http://savannah.gnu.org/bugs/?62366>.
|
||
|
||
2022-04-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Regression-test Savannah #62366.
|
||
|
||
* src/preproc/tbl/tests/\
|
||
do-not-segv-when-backslash-R-in-text-block.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
2022-04-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/string.cpp (string::extract): Check return
|
||
value of `malloc()` for nullity, and only poke into the buffer
|
||
returned if it is valid. Discovered while troubleshooting
|
||
Savannah #62366.
|
||
|
||
2022-04-23 Bertrand Garrigues <bertrand.garrigues@laposte.net>
|
||
|
||
gnulib: replace non-recursive-gnulib-prefix-hack with
|
||
automake-subdir option
|
||
|
||
'non-recursive-gnulib-prefix-hack' is deprecated by gnulib's
|
||
commit f8eed11b15e9141d061900e4068ea1f3ba9b63f6 and replaced by
|
||
'--automake-subdir'.
|
||
|
||
* bootstrap.conf:
|
||
(gnulib_modules): Remove option
|
||
'non-recursive-gnulib-prefix-hack'.
|
||
(gnulib_tool_option_extras): Add option '--automake-subdir'.
|
||
(bootstrap_post_import_hook): Remove the invocation of
|
||
'build-aux/prefix-gnulib-mk'.
|
||
|
||
* doc/automake.mom: update documentation accordingly.
|
||
|
||
Fixes <http://savannah.gnu.org/bugs/?61708> and
|
||
<https://savannah.gnu.org/bugs/?62205> , issues reported and fix
|
||
suggested by Bjarni Ingi Gislason <bjarniig@rhi.hi.is>. Fix
|
||
also suggested by Werner LEMBERG <wl@gnu.org> (see
|
||
<https://repo.or.cz/ttfautohint.git/commit/a938fc63cb55ef48393a924d7083b13c1352d294>).
|
||
|
||
2022-04-23 Bertrand Garrigues <bertrand.garrigues@laposte.net>
|
||
|
||
Update gnulib submodule
|
||
|
||
* gnulib now points on c8b8f3bbcde37a53cd226f4c9cebd0dde6aca37f
|
||
|
||
* bootstrap: merge the latest version from gnulib/build-aux
|
||
{groff's bootstrap has a patch for OS X}.
|
||
|
||
* bootstrap.conf: update copyright date.
|
||
|
||
2022-04-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (XH-UPDATE-TOC): Modify Keith Marshall's new XN/XH
|
||
feature to indent TOC entries by section heading depth. The
|
||
increment is 2 ens per depth level.
|
||
|
||
2022-04-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (XA): Drop apparently useless `ll` request. It
|
||
doesn't do anything according to my tests.
|
||
|
||
2022-04-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/label.ypp: Drop redundant declaration of
|
||
`yyparse`. Both byacc 20140715 and GNU Bison 3.3.2 supply the
|
||
the function prototype themselves. Addresses
|
||
"-Wredundant-decls" warning from GCC.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?43569>.
|
||
|
||
2022-04-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/grn/hdb.cpp (DBGetType): Lower fatal diagnostics
|
||
to errors when encounting invalid element type characters.
|
||
Return a value interpreted by our caller as an error indication
|
||
instead. Helps compilers determine that we're not implicitly
|
||
falling through our cases. Addresses "-Wimplicit-fallthrough"
|
||
warnings from GCC.
|
||
|
||
Fixes https://savannah.gnu.org/bugs/?54702>.
|
||
|
||
2022-04-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/grn/hdb.cpp (DBRead): Add more validity checking.
|
||
Verify that the number of conversions returned by fscanf() is as
|
||
expected instead of throwing this information away--abort
|
||
processing ("giving up" like pic(1) does) if it does not.
|
||
Consistently report this abandonment in diagnostic messages.
|
||
Similarly validate pointer returned by fgets(). Soften handling
|
||
of invalid text condition from fatal error, introduced in
|
||
commit eb4f0675e, 16 August, to a normal one with abandonment of
|
||
Gremlin file. Addresses "-Wunused-result" warnings from GCC.
|
||
|
||
2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/grn/main.cpp (conv): Throw an error diagnostic
|
||
when failing to open a Gremlin picture file.
|
||
|
||
2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Fix extraneous space in output after `ME` or `UE` when
|
||
mandoc wrapper is used.
|
||
|
||
* tmac/an-ext.tmac (UE, ME): Double backslashes in macro
|
||
definitions when interpolating `.$` register (just like we tell
|
||
everyone else to do). This one was interesting to track down.
|
||
When using just `-man`, the problem never manifested; only with
|
||
`-mandoc`. The difference is that with the former, the `.$`
|
||
register is initialized to zero; with the latter, because `TH`
|
||
is aliased to another macro (then unaliased), `.$` has the
|
||
argument count to the `TH` macro, not to the macros actually
|
||
being called. This caused the wrong branch of a conditional to
|
||
be taken and put an extra space node on the output.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62044>.
|
||
|
||
2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/cp1047.tmac:
|
||
* tmac/latin1.tmac:
|
||
* tmac/latin2.tmac:
|
||
* tmac/latin5.tmac:
|
||
* tmac/latin9.tmac: Stop remapping input soft hyphen characters
|
||
with `tr` requests in character encoding macro files. The
|
||
formatter does this for us now.
|
||
|
||
2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Translate 8-bit NBSP and SHY on input.
|
||
|
||
* src/roff/troff/input.h: Define constant integers for "input"
|
||
no-break spaces and soft hyphens for EBCDIC and non-EBCDIC
|
||
(presumably ASCII/ISO 8859/Unicode) systems.
|
||
|
||
* src/roff/troff/input.cpp (token::next): Translate the input
|
||
character codes for NBSP to \~ and SHY to \%.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58962>. Thanks to Dave
|
||
Kemper for the report, code review, and his suggestion to push
|
||
more work to compile time.
|
||
|
||
2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[groff]: Regression-test Savannah #58962.
|
||
|
||
* src/roff/groff/handle_special_input_code_points.diff: Do it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2022-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_if_request): Clarify diagnostic;
|
||
at the point it is thrown, we know not merely that we're in a
|
||
conditional expression, but processing an output comparison
|
||
operator.
|
||
|
||
2022-04-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi:
|
||
* doc/ms.ms:
|
||
* man/groff.7.man: Characterize "roff language" in the singular,
|
||
not the plural, emphasizing the similarity of extant specimens.
|
||
|
||
* doc/groff.texi (Conventions Used in This Manual): Add
|
||
paragraph discussing denotations of "groff" and "roff".
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62233>. Thanks to John
|
||
Gardner and Dave Kemper for the discussion.
|
||
|
||
2022-04-12 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
Delete the harmful, ill-designed, buggy, and essentially
|
||
unmaintained and untested --with-doc option of the configure
|
||
script.
|
||
|
||
* configure.ac: Delete five AM_CONDITIONAL variables, one
|
||
autoconf(1) macro call, and some related diagnostic output.
|
||
* doc/doc.am: Delete two BUILD_EXAMPLES and one BUILD_OTHERDOC
|
||
conditional and use BUILD_HTML instead of BUILD_HTMLEXAMPLES.
|
||
* m4/groff.m4: Delete the GROFF_DOC_CHECK macro and simplify the
|
||
macros GROFF_HTML_PROGRAMS, GROFF_INSTALL_INFO, GROFF_MAKEINFO,
|
||
and GROFF_PDFDOC_PROGRAMS. This also deletes more than thirty
|
||
configuration variables.
|
||
* Makefile.am: Delete comments about 16 variables that are no
|
||
longer set.
|
||
* NEWS: Add details regarding the rationale.
|
||
|
||
2022-04-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/preconv.cpp (unicode_entity): Convert
|
||
input U+00A0 to \~ as troff would, not to \[u00A0].
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62300>.
|
||
|
||
2022-04-11 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf] fails to deal with 255th glyph in font.
|
||
|
||
* src/devices/gropdf/gropdf.pl: a pdf font can only contain 255
|
||
glyphs. The array which holds the glyph names also holds the
|
||
start position (zero) as first element, it is legal for it to
|
||
contain 256 elements, so truncate to 256 (not 255).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62294>.
|
||
|
||
2022-04-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[localization]: Define hyphenation mode registers for Japanese
|
||
and Chinese. They are set to zero but must be defined so that
|
||
macro packages can rely on their existence without causing 'reg'
|
||
warnings.
|
||
|
||
* tmac/ja.tmac:
|
||
* tmac/zh.tmac: Do it.
|
||
|
||
2022-04-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Add test for multi-lingual man(7) scenario.
|
||
|
||
* tmac/tests/localization-works.sh: Test two more cases. Ensure
|
||
that the 'trap bit' (hyphenation value 2, which has nothing to
|
||
do with any language) is preserved when switching locales back
|
||
from a CJK language, since those languages' modes
|
||
unconditionally clear it. We test Japanese and Chinese; we have
|
||
no localization macro file for Korean at this time.
|
||
|
||
2022-04-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Slightly refactor `an*abbreviate-inner-footer`.
|
||
|
||
* tmac/an.tmac (an*abbreviate-inner-footer): Discard
|
||
unnecessary string.
|
||
|
||
2022-04-09 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
Fix the configuration of texi2dvi.
|
||
|
||
* m4/groff.m4: Set groff_have_texi2dvi if texi2dvi(1) is
|
||
available and usable, even if the availability was specified by
|
||
the user by manually providing the configure variable
|
||
PROG_TEXI2DVI, and not only if it was autodetected.
|
||
Also, set the PROG_TEXI2DVI Makefile variable to the name of
|
||
the texi2dvi program specified by the user or autodetected,
|
||
and not to the string "found", such that this Makefile variable
|
||
can be used for invoking the program.
|
||
* doc/doc.am: Call the texi2dvi program specified by the user
|
||
or autodetected rather than hardcoding "texi2dvi". This lets
|
||
the groff build succeed on systems where the first texi2dvi
|
||
in the $PATH is an old version unfit for groff's purposes.
|
||
|
||
2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Abbreviate long `TH` arguments more carefully.
|
||
|
||
* tmac/an.tmac: Do it.
|
||
(an*scan-string-for-backslash): Add new helper macro.
|
||
(an*abbreviate-inner-footer): Rewrite. Use the foregoing and a
|
||
different technique to compute available space and shorten the
|
||
string.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62257>.
|
||
|
||
2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add regression test for Savannah #62257.
|
||
|
||
* tmac/tests/an_do-not-abbreviate-escape-using-TH-arguments.sh:
|
||
Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run it.
|
||
|
||
2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Trivially refactor. Rename strings `an-ifoot`
|
||
to `an*ifoot` and `an-outer-footer-text` to `an*ofoot`.
|
||
|
||
2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Refactor. Abbreviate page title and inner
|
||
footer only once per document instead of once per page.
|
||
Exception: the legacy macros `AT` and `UC` change the inner
|
||
footer, so re-abbreviate it if they are called.
|
||
(TH, AT, UC): Call abbreviation macros from here...
|
||
(an-header, an-footer): ...instead of here.
|
||
|
||
2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Refactor: initialize header/footer environment
|
||
only once. Also rename it to `an*env-header-and-footer`.
|
||
(TH): Do it here...
|
||
(an-header, an-footer): ...instead of here.
|
||
|
||
2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Trivially refactor.
|
||
(an*prepare-page-title): Rename this...
|
||
(an*abbreviate-page-title): ...to this.
|
||
(an-prepare-inner-footer): And this...
|
||
(an*abbreviate-inner-footer): ...to this.
|
||
(an-header, an-footer): Update call sites.
|
||
|
||
2022-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/other.cpp (hmotion_box::output): Fix typo in
|
||
generated MathML diagnostic message.
|
||
|
||
2022-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (EXTRA_DIST): Add "groff.dvi" and "groff.pdf" to
|
||
ensure that the GNU-released groff distribution archive contains
|
||
our Texinfo manual in these formats. (This doesn't increase the
|
||
build-dependency requirements unless you want to "make dist", in
|
||
which case it _should_.)
|
||
|
||
2022-04-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Add nroff mode fallback for `UL` macro.
|
||
|
||
* tmac/s.tmac (UL): On nroff devices, bracket the first argument
|
||
with \(ul (underline rule) special character escape sequences.
|
||
{In plain language, '.UL "like this"' renders "_like this_".}
|
||
See corresponding 12 February change to "tmac/e.tmac".
|
||
|
||
2022-04-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Drop unnecessary `-I` options to groff.
|
||
(DOC_GROFF): There is no need to look at the top of the build
|
||
directory for any file inclusions.
|
||
(doc/webpage.html): There is no need to look in `doc_builddir`
|
||
for file inclusions, since that is the current working directory
|
||
when "webpage.ms" is processed.
|
||
|
||
2022-04-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Trivially refactor. Use `RM` macro idiomatically.
|
||
Automake ensures that it is defined to call an `rm` command with
|
||
the `-f` option, and this in turn ignores failures to delete
|
||
nonexistent files, so...
|
||
(uninstall_doc_examples, uninstall-pdf): Stop adding superfluous
|
||
`-f` flag.
|
||
(clean_infodoc uninstall-pdf, uninstall-html): Stop prefixing
|
||
command with `-` to ignore error exit status.
|
||
(uninstall-html): Drop superfluous `-r` flag; we're only
|
||
deleting files with this command, not directories.
|
||
|
||
2022-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Trivially refactor shell style in rule commands.
|
||
The placement of `&&` was inconsistent. Always begin a
|
||
continued rule line with it, and don't give it its own
|
||
indentation level. In general, operators adjacent to line
|
||
continuations should _follow_ the continuations because they are
|
||
easier for humans to spot at the (possibly indented) beginning
|
||
of a physical line.
|
||
|
||
2022-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* Makefile.am: Rename `TFLAG` macro, which means "tmac flag", to
|
||
`MFLAG`, because it expands to `-M` options to groff, not the
|
||
`-T` option, which can be bewildering.
|
||
* doc/doc.am (DOC_GROFF): Update expansion site.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Rename `DOC_GROFF_ONLY` to `DOC_GROFF`.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Refactor. Drop ghastly hack used to get file
|
||
names into troff diagnostics when reading from standard input.
|
||
We've refactored so that it no longer does, making the hack
|
||
unnecessary. For the same reason, no users of the `DOC_GROFF`
|
||
macro remain, so delete it. Add comments to explain what
|
||
`DOC_SED` and `DOC_GROFF_ONLY` are for.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Refactor.
|
||
(doc/pic.html, doc/webpage.html): Drop indirection of source
|
||
document through `DOC_SED` macro. It was not necessary since
|
||
neither of these documents are parameterized in configuration
|
||
options (that is, they don't contain @VERSION@ or @g@).
|
||
|
||
2022-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Trivially refactor.
|
||
(doc/webpage.html): Tidy up dependency list. Create directory
|
||
using the same macro interpolation we use to change into it.
|
||
|
||
2022-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Refactor and fix error in builds in remote
|
||
out-of-source-tree builds exposed by pending commit and `make
|
||
distcheck`. The images generated for the pic.html and
|
||
webpage.html files were being built in the wrong directory, and
|
||
subsequently not found by an install rule.
|
||
(imagedir): Add comment explaining purpose of macro. It should
|
||
_not_ be used with any file specifications relative to the
|
||
source or build trees--it is for installation directories only.
|
||
(htmldocimagedir, exampleimagedir): Drop macros.
|
||
|
||
(doc/pic.html, doc/webpage.html): Replace interpolations of
|
||
`imagedir` with literal "img", since these files are being
|
||
generated within the build tree: the directory name is known.
|
||
|
||
(mostlyclean_doc, install_doc_htmldoc, install_doc_examples):
|
||
Replace interpolations of `htmldocimagedir` relative to
|
||
`doc_builddir` with "img" literals.
|
||
|
||
(install_doc_htmldoc, uninstall_doc_htmldoc): Interpolate
|
||
concatenation of `htmldocdir` and `imagedir` instead of
|
||
`htmldocimagedir` (relative to `DESTDIR`).
|
||
(install_doc_examples, uninstall_doc_examples): Interpolate
|
||
concatenation of `exampledir` and `imagedir` instead of
|
||
`exampleimagedir` (relative to `DESTDIR`).
|
||
|
||
2022-04-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Refactor. Relocate "doc/grnexampl.ps" target to
|
||
group it with other me(7) documents. Put addition of
|
||
"doc/examples.stamp" to `MOSTLYCLEANFILES` adjacent to its
|
||
target rule. Relocate same rule so that it precedes the target
|
||
depending on it (make(1) might not benefit from this, but human
|
||
readers can).
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Refactor.
|
||
(DOC_GROFF_ONLY): Drop preprocessor options from groff command.
|
||
This macro is now, simply, a way to run the in-tree groff: no
|
||
assumptions about preprocessors, macro packages, or output
|
||
device are made.
|
||
(doc/pic.html, doc/webpage.html): Add only necessary
|
||
preprocessor options after expansion of `DOC_GROFF_ONLY`.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Refactor. Add explicit dependencies of compiled
|
||
man page documents on preprocessors needed to generate them. In
|
||
their target rules, explicitly use groff's preprocessor options,
|
||
freeing us up to simplify the `DOC_GROFF_ONLY` macro.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Rationalize dependencies. Drop dependency of
|
||
`PROCESSEDEXAMPLEFILES` and `PROCESSEDDOCFILES` on expansion of
|
||
`hdtbltmac_DATA`, because nothing in this directory uses the
|
||
hdtbl package. Move dep of same expansions on "gnu.eps" to
|
||
"doc/webpage.html", which actually uses it. Put the numerous
|
||
dependencies of "doc/pic.html" and "doc/webpage.html" in a
|
||
parallel ordering so that they are easier for humans to
|
||
evaluate. These targets' dependencies on `bin_PROGRAMS` and
|
||
`prefixexecbin_PROGRAMS` are overkill and should be reviewed at
|
||
a later date.
|
||
|
||
2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Refactor use of target and suffix rules.
|
||
(doc/meintro.me, doc/meintro_fr.me, doc/meref.me): Add target
|
||
rules, with lengthy, exasperated comment about lack of feature
|
||
parity in various make(1) implementations.
|
||
(doc/meintro_fr.ps): Add target rule, as this seems to be the
|
||
only way to keep GNU Make from ignoring a '_fr.me._fr.ps' suffix
|
||
rule in favor of '.me.ps', which doesn't call preconv (and
|
||
doesn't need to--and moreover we don't want to build English
|
||
me(7) documents with the `-mfr` option). Depend on `preconv`.
|
||
(doc/webpage.ps): Convert from suffix rule to target rule.
|
||
(doc/ms.ps, doc/pic.ps, doc/webpage.ps): Add target rules and
|
||
dependencies.
|
||
(.ms.ps): Add commented-out suffix rule (since nothing uses it,
|
||
but might in the future).
|
||
(doc/meintro_fr.ps, .me.ps, doc/pic.ps, doc/webpage.ps): Migrate
|
||
expansions of `DOC_GROFF` to `DOC_GROFF_ONLY` to prepare for a
|
||
forthcoming simplification.
|
||
|
||
2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Clean generated doc files better. doc/me*.me were
|
||
getting left behind in the build tree.
|
||
(MOSTLYCLEANFILES): Add `GENERATEDDOCFILES`. This includes
|
||
`DOC_GNU_EPS`, so...
|
||
(clean_maintdoc): Drop phony target that manually removes it.
|
||
(maintainer-clean-local): Drop dependency on foregoing.
|
||
|
||
2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/xditview/xditview.am (install_xditview)
|
||
[!WITHOUT_X11]: Stop backing up existing "GXditview" and
|
||
"GXditview-color" application defaults files. There is no
|
||
symmetric restoration of them in the uninstall target, and it
|
||
seems like unjustifiable complexity to add such. These are
|
||
groff-specific file names, installed (by default) to /usr,
|
||
not /etc, so they are not going to be "configuration files" in
|
||
Debian-based systems, for example (and likely not elsewhere).
|
||
There are other ways to supersede application defaults for
|
||
programs using the X Toolkit Intrinsics.
|
||
|
||
2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Stop treating "gnu.eps" as an "example" file; it
|
||
is also used by pdfmark's cover.ms, which is ordinary
|
||
documentation. We therefore must not omit it when building.
|
||
(install-data-hook): Add dependency on new phony target,
|
||
"install_doc_gnu_eps".
|
||
(install_doc_examples): Move installation of "gnu.eps" from
|
||
here...
|
||
(install_doc_gnu_eps): ...to here. Also refactor the loop we
|
||
use to locate the file to follow a more idiomatic pattern.
|
||
|
||
2022-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (dist-info-bits, install_infodoc, dist-gnueps): Fix
|
||
code style nit: use consistent "brace style" in conditionals and
|
||
loops.
|
||
|
||
2022-04-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (mostlyclean_doc): When cleaning, try harder to
|
||
remove the image directory created by the "pic.html" and
|
||
"webpage.html" targets.
|
||
|
||
2022-04-02 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
* doc/doc.am: Stop installing doc/meintro.me.in,
|
||
doc/meintro_fr.me.in, and doc/meref.me.in.
|
||
|
||
2022-03-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/webpage.ms: Die horribly if `PSPIC` call fails.
|
||
|
||
2022-03-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pspic.tmac (pspic*error-hook): Define (as empty).
|
||
* man/groff_tmac.5.man (Auxiliary packages) <pspic>: Document.
|
||
* NEWS: Add item.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/webpage.ps): Relocate target rule.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
|
||
* tmac/tests/pdfpic_falls-back-to-PSPIC.sh: Remove output file
|
||
even when skipping test. Quote `fail` variable when checking it
|
||
with `test -z`.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff_tmac.7.man (Auxiliary packages): Tweak sboxes
|
||
documentation to imply ms dependency.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62062>.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (an*bookmark): Trivially refactor. Now that
|
||
we're no longer doing arithmetic on our first argument, simplify
|
||
our definition. Made possible by commit 3baf0e2f3, 23 February.
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/preconv.cpp (detect_file_encoding): Demote
|
||
an error diagnostic to a debugging message. libuchardet has no
|
||
man page, and inspecting the source of the
|
||
`uchardet_handle_data` function we find that it effectively
|
||
returns a Boolean value (if the result of a
|
||
`reinterpret_cast`(!) is not `NS_OK`). This is useless
|
||
information for a user-facing tool. We're designed to muddle on
|
||
regardless (see preconv(1)).
|
||
|
||
2022-03-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grodvi/dvi.cpp (dvi_printer::set_color)
|
||
(draw_dvi_printer::fill_next):
|
||
* src/devices/grops/ps.cpp (output::put_color):
|
||
* src/libs/libgroff/color.cpp (color::print_color): Construct
|
||
doubles instead of casting to them.
|
||
|
||
2022-03-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[doc]: Refactor handling of "gnu.eps" file.
|
||
|
||
* doc/doc.am: Put "gnu.eps" in a Make macro, `DOC_GNU_EPS`.
|
||
($(PROCESSEDEXAMPLEFILES) $(PROCESSEDDOCFILES),
|
||
doc/webpage.html, install_doc_examples): Migrate dependency to
|
||
`DOC_GNU_EPS`.
|
||
(doc/webpage.ps): Add (missing) dependency on `DOC_GNU_EPS`.
|
||
(DOC_GROFF_ONLY): Drop `-I` flag; it's not necessary given the
|
||
following.
|
||
(.ms.ps): Drop `-mwww` argument from suffix rule. A truly
|
||
generic ms document won't need it.
|
||
(doc/webpage.ps): Add target rule. Include `-mwww` argument.
|
||
(doc/webpage.ps, doc/webpage.html): Pass `-I` option to
|
||
`DOC_GROFF` and `DOC_GROFF_ONLY` (respectively) to enable
|
||
location of "gnu.eps" file. Search the build and source trees'
|
||
"doc" directories because the file can be generated as part of
|
||
the build or can come with the distribution archive.
|
||
(EXTRA_DIST): Drop redundant inclusion of "doc/gnu.xpm".
|
||
(clean_maintdoc): Add phony target to dispose of `DOC_GNU_EPS`.
|
||
(maintainer-clean-local): Depend on "clean_maintdoc".
|
||
|
||
* tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
|
||
* tmac/tests/pdfpic_falls-back-to-PSPIC.sh: Update tests to look
|
||
for "gnu.eps" in "doc" directory of build tree. Give generated
|
||
files distinguishable names so their tests can run concurrently.
|
||
|
||
2022-03-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Add new macro `PROCESSEDDOCFILES_PS` to isolate
|
||
names of targets in PostScript format. Expand this macro in
|
||
definition of `PROCESSEDDOCFILES` and use it to move PostScript
|
||
font description file dependencies of the latter and
|
||
`PROCESSEDEXAMPLEFILES` to the former. (At present, the
|
||
dependency might seem superfluous, since those files are in the
|
||
source distribution, but it's conceivable that in the near
|
||
future, they will be produced at build time from Adobe font
|
||
metric files; see font/devps/generate/Makefile). The "pic.html"
|
||
and "webpage.html" targets already had such a dependency because
|
||
of the way grohtml (pre-grohtml) works.
|
||
|
||
2022-03-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* INSTALL.extra: Add a section on uninstalling.
|
||
|
||
2022-03-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Create target rule for "doc/grnexampl.ps" instead
|
||
of relying on a suffix rule. Explicitly depend on grn and eqn
|
||
executables. Produce output using their groff flags, "-ge".
|
||
|
||
2022-03-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdfpic.tmac (PDFPIC): Fix breakage when no temporary
|
||
directory environment variables are defined: actually use string
|
||
interpolation syntax in comparand to output comparison
|
||
operator. Problem introduced by me in commits adc1999af and
|
||
24900cf6d, 15 February.
|
||
|
||
2022-03-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devX100-12/devX100-12.am:
|
||
* font/devX100/devX100.am:
|
||
* font/devX75-12/devX75-12.am:
|
||
* font/devX75/devX75.am: Fix in-tree build; expand `fontdir`
|
||
instead of `abs_top_builddir` Make macro when defining Automake
|
||
variable for generated artifacts. Problem introduced by me in
|
||
commit 3c82cbbfe, 27 February. Thanks to Robert Goulding for
|
||
the report.
|
||
|
||
2022-03-22 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
* doc/doc.am: delete redundant "SUFFIXES +=" line
|
||
|
||
2022-03-22 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
* doc/doc.am: fix non-portable syntax in the meintro_fr.ps
|
||
target: This rule requires DOC_GROFF and hence $<, so turn it
|
||
into a suffix rule.
|
||
|
||
2022-03-22 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
* doc/doc.am: fix non-portable syntax in the doc/me*.me targets:
|
||
POSIX does not define the meaning of $< in non-suffix rules, so
|
||
use the portable $? instead. This is adequate here because each
|
||
of these three rules has exactly one prerequisite.
|
||
|
||
2022-03-22 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
* doc/doc.am: fix non-portable syntax in the groff-man-pages.*
|
||
targets by using DOC_GROFF_ONLY rather than DOC_GROFF in order
|
||
to not use $< outside a suffix rule; DOC_GROFF functionality is
|
||
not needed here in the first place.
|
||
|
||
2022-03-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac:
|
||
* tmac/doc.tmac: Stop remapping input hyphens on `utf8` device.
|
||
|
||
2022-03-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac: Stop remapping ` and ' on `utf8` output device.
|
||
Aligns mdoc(7) with commit 697e6db7f, 19 October 2020 (for
|
||
man(7)).
|
||
|
||
2022-03-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Fix bug introduced in commit
|
||
0d451902c, 10 March. Don't store a newline in the version
|
||
string. Put `\n` in its interpolation context as necessary.
|
||
|
||
2022-03-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Install ptx.tmac.
|
||
|
||
* tmac/tmac.am (TMACNORMALFILES): Add it.
|
||
* NEWS: Report availability.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62201>. Thanks to Ralph
|
||
Corderoy for the report.
|
||
|
||
2022-03-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Drop ditroff(7) document. It says nothing that is not covered
|
||
elsewhere.
|
||
|
||
* man/ditroff.7.man: Delete.
|
||
* doc/doc.am (GROFF_MAN_PAGES):
|
||
* man/man.am (man7_MANS, EXTRA_DIST): Stop processing, shipping.
|
||
* src/roff/groff/groff.1.man: Drop cross reference to it.
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61817>.
|
||
|
||
2022-03-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[preconv]: Trivially refactor.
|
||
|
||
* src/preproc/preconv/preconv.cpp: Use diagnostic message
|
||
functions from libgroff where possible. Explain in a comment
|
||
why we don't use `debug()`. Boolify and rename some variables,
|
||
and use Boolean literals to assign to them.
|
||
debug_flag -> is_debugging
|
||
invalid_warning -> emit_invalid_utf8_warning
|
||
incomplete_warning -> emit_incomplete_utf8_warning
|
||
Rename `expected_bytes` to `expected_byte_count`. Except for
|
||
the debugging flag, these are all members of `struct
|
||
conversion`.
|
||
(get_tag_lines): Migrate to `warning()`.
|
||
(detect_file_encoding): Migrate to `error()` and `fatal()`, as
|
||
appropriate.
|
||
(utf8::invalid, utf8::incomplete, get_tag_lines): Don't break a
|
||
line in the middle of a diagnostic; doing so frustrates grepping
|
||
and necessarily makes an assumption about the terminal width.
|
||
|
||
2022-03-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Trivially refactor.
|
||
|
||
* src/roff/troff/input.cpp: Rename global variable
|
||
`have_string_arg` to `have_multiple_params` and demote it from
|
||
an integer to a Boolean. Assign Boolean literals to it.
|
||
(read_long_escape_parameters, get_copy, token::next): Do it.
|
||
|
||
2022-03-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix Savannah #62191.
|
||
|
||
* src/preproc/tbl/main.cpp (table_input::get): Increment input
|
||
line counter when encountering an escaped newline; this fixes
|
||
inaccurate diagnostics from the formatter at any point in a
|
||
document after a line-continued row of table data. Also drop a
|
||
"perhaps" comment. I tested the surmise (setting the FSM state
|
||
to "START"), and it results in bad formatting.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62191>. Problem appears
|
||
to date back to groff 1.02 (June 1991) at the latest.
|
||
|
||
2022-03-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Regression-test Savannah #62191.
|
||
|
||
* src/preproc/tbl/tests/count-continued-input-lines.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
2022-03-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Environments): Clarify environment handling.
|
||
* man/groff.7.man (Environments): Add new section.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62036>. Thanks to Dave
|
||
Kemper for the report and a suggested patch.
|
||
|
||
2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (initialization): Define `@b` as empty if
|
||
formatting for HTML, because no page breaks occur in that
|
||
format.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62039>.
|
||
|
||
2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grodvi/dvi.cpp (usage): Align usage message with
|
||
man page; disclose `-l` option.
|
||
|
||
2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grodvi/dvi.cpp (main):
|
||
* src/devices/grops/ps.cpp (main): Update diagnostic:
|
||
characterize bad `-w` argument as "invalid", not "bad", and
|
||
explicitly report it as ignored.
|
||
|
||
* src/devices/grodvi/dvi.cpp (main): Report invalid parameter
|
||
in `-w` diagnostic.
|
||
|
||
2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grodvi/dvi.cpp (dvi_printer::set_color)
|
||
(draw_dvi_printer::fill_next):
|
||
* src/devices/grops/ps.cpp (output::put_color):
|
||
* src/libs/libgroff/color.cpp (color::print_color): Explicitly
|
||
cast `enum` divisors to `double`; quietens
|
||
`-Wdeprecated-enum-float-conversion` warnings.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61964>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Recover more quickly from missing `EE` calls.
|
||
(initialization): Define new strings, `an*body-family` and
|
||
`an*example-family` to house the font families used in these
|
||
rendering contexts.
|
||
(TH, SH, SS): Restore the font family to `an*body-family`.
|
||
(TH): Set font style to roman as well.
|
||
(EX): Change to `an*example-family` instead of literal "C".
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62187>.
|
||
|
||
2022-03-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Test register for existence before using it to
|
||
set hyphenation mode. A site troffrc or other local
|
||
customization might remove the register (which is guaranteed to
|
||
be set under the stock configuration) and, perversely, Heirloom
|
||
Doctools troff interprets a `do` request, instead of ignoring it
|
||
as a historical troff implementation would, so if they borrow
|
||
our me(7) changes, the register would be unset, interpolate
|
||
zero, and hyphenation would wind up disabled.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62181>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2022-03-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Rename test to apply naming scheme.
|
||
|
||
* tmac/tests/pdfpic_falls_back_to_PSPIC.sh: Rename this...
|
||
* tmac/tests/pdfpic_falls-back-to-PSPIC.sh: ...to this.
|
||
* tmac/tmac.am (tmac_TESTS): Use new name.
|
||
|
||
2022-03-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grops/ps.cpp (usage): Align usage message with man
|
||
page synopsis.
|
||
|
||
2022-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Input Line Traps): Fix error; input traps do
|
||
_not_ ignore control lines. Error appears to have crept in with
|
||
the first version of our Texinfo manual, shipped with groff 1.14
|
||
{December 1999}.
|
||
|
||
2022-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devps/devps.am: Rename targets.
|
||
(fonts):
|
||
(devps_fonts): Rename these...
|
||
(maintainer-font-descriptions):
|
||
(devps_font-descriptions): ...to these. Add comments explaining
|
||
what they're for and why they aren't used in a build.
|
||
|
||
* font/devps/generate/Makefile: Add `outdir` variable to store
|
||
destination directory of font description files, and update all
|
||
targets that write artifacts to use this directory. This makes
|
||
the targets "phony", which I don't regard as a problem since the
|
||
generated artifacts are kept under source control, and this
|
||
isn't really a user-facing script (even though it gets
|
||
installed). I think there is a good chance that this will
|
||
become a shell script, because to avoid regressions we need to
|
||
generate the font descriptions using both the 229-glyph and
|
||
314-glyph versions of the Adobe fonts' AFM files (so that we get
|
||
wider glyph coverage _and_ more kerning pair data) and we need
|
||
to add kerning information for the ellipsis (Savannah #58897).
|
||
(symbolsl.afm): Revise generation process to be sensitive to
|
||
failure.
|
||
|
||
2022-03-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devps/symbolsl.afm: New file.
|
||
* font/devps/devps.am (EXTRA_DIST): We have long shipped
|
||
"symbol.afm" with the distribution archive--I don't see why we
|
||
don't ship "symbolsl.afm" and "zapfdr.afm" as well (metrics for
|
||
`SS`, the slanted symbol font, and ZDR, reversed Zapf Dingbats).
|
||
Like the Type 1 font descriptions themselves, this file is
|
||
updated only in "maintainer mode", not as part of the build.
|
||
Moreover, these fonts are not part of the PostScript level 2
|
||
base 35 fonts so their AFM files are unlikely to be readily
|
||
available elsewhere.
|
||
|
||
2022-03-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Trivially refactor. Store the
|
||
program's version string in scalar `afmtodit_version` and use
|
||
that in the usage message and comment embedded in the output.
|
||
|
||
2022-03-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Fix code style nits. Migrate
|
||
to the shebang line style we use in more recently modified Perl
|
||
scripts. Replace `-w` with `use warnings;`. Shorten an output
|
||
comment since the groff version string can grow long (see commit
|
||
1264531310, 14 January 2018).
|
||
|
||
2022-03-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Stop writing full file name to
|
||
the generated font description file as the "name" (i.e., don't
|
||
include directory components).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62150>. Thanks to Dave
|
||
Kemper for the discussion and code review.
|
||
|
||
2022-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.1.man:
|
||
* src/utils/afmtodit/afmtodit.pl: Update and align man page
|
||
synopsis, option descriptions, and command usage output.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/X.tmac: Redirect `fchar` requests for \[lq] and \[rq] to
|
||
\[dq] since the X11 Type 1-based text fonts encode ISO 8859-1
|
||
{Latin-1} and don't have typopgrapher's quotes. Drop `fchar`
|
||
request for \[aq], which _is_ represented, per recent changes.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* /font/devX100-12/CB:
|
||
* /font/devX100-12/CBI:
|
||
* /font/devX100-12/CI:
|
||
* /font/devX100-12/CR:
|
||
* /font/devX100-12/HB:
|
||
* /font/devX100-12/HBI:
|
||
* /font/devX100-12/HI:
|
||
* /font/devX100-12/HR:
|
||
* /font/devX100-12/NB:
|
||
* /font/devX100-12/NBI:
|
||
* /font/devX100-12/NI:
|
||
* /font/devX100-12/NR:
|
||
* /font/devX100-12/TB:
|
||
* /font/devX100-12/TBI:
|
||
* /font/devX100-12/TI:
|
||
* /font/devX100-12/TR:
|
||
* /font/devX100/CB:
|
||
* /font/devX100/CBI:
|
||
* /font/devX100/CI:
|
||
* /font/devX100/CR:
|
||
* /font/devX100/HB:
|
||
* /font/devX100/HBI:
|
||
* /font/devX100/HI:
|
||
* /font/devX100/HR:
|
||
* /font/devX100/NB:
|
||
* /font/devX100/NBI:
|
||
* /font/devX100/NI:
|
||
* /font/devX100/NR:
|
||
* /font/devX100/TB:
|
||
* /font/devX100/TBI:
|
||
* /font/devX100/TI:
|
||
* /font/devX100/TR:
|
||
* /font/devX75-12/CB:
|
||
* /font/devX75-12/CBI:
|
||
* /font/devX75-12/CI:
|
||
* /font/devX75-12/CR:
|
||
* /font/devX75-12/HB:
|
||
* /font/devX75-12/HBI:
|
||
* /font/devX75-12/HI:
|
||
* /font/devX75-12/HR:
|
||
* /font/devX75-12/NB:
|
||
* /font/devX75-12/NBI:
|
||
* /font/devX75-12/NI:
|
||
* /font/devX75-12/NR:
|
||
* /font/devX75-12/TB:
|
||
* /font/devX75-12/TBI:
|
||
* /font/devX75-12/TI:
|
||
* /font/devX75-12/TR:
|
||
* /font/devX75/CB:
|
||
* /font/devX75/CBI:
|
||
* /font/devX75/CI:
|
||
* /font/devX75/CR:
|
||
* /font/devX75/HB:
|
||
* /font/devX75/HBI:
|
||
* /font/devX75/HI:
|
||
* /font/devX75/HR:
|
||
* /font/devX75/NB:
|
||
* /font/devX75/NBI:
|
||
* /font/devX75/NI:
|
||
* /font/devX75/NR:
|
||
* /font/devX75/TB:
|
||
* /font/devX75/TBI:
|
||
* /font/devX75/TI:
|
||
* /font/devX75/TR: Regenerate font descriptions with xtotroff,
|
||
using updated ISO-8859_1 map. \[aq] and \[oq] are now aliases
|
||
of "'" and \[ga] is an alias of "`". This change probably
|
||
should have been made when the X11 fonts were corrected in
|
||
XFree86 4.0 (March 2000). See
|
||
<https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html>.
|
||
|
||
Fixes <https://bugs.debian.org/243238>.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libxutil/DviChar.c (ISO_8859_1_map): Fix incorrect
|
||
assignment of Latin-1 grave accent to \[oq] special character;
|
||
reassign it to the neutral apostrophe. Map \[aq] to neutral
|
||
apostrophe. Map \[ga] to '`'.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/xtotroff/xtotroff.1.man (Options) <-d>: Document new
|
||
option.
|
||
* src/utils/xtotroff/xtotroff.c (usage): Align with man page.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Manipulating Filling and Adjustment):
|
||
Explicitly identify the page offset as an output line property
|
||
that is not determined until a break occurs.
|
||
|
||
(Line Layout) <po>: Correct error; the page offset for terminal
|
||
devices is set by "tty.tmac", not "troffrc". (The manual has
|
||
been wrong for a long time; we've had it in tty.tmac since James
|
||
Clark put it there in 1992.) Recast and tighten wording. Drop
|
||
the word "horizontal"; there is no vertical page offset (as
|
||
such) in *roff. Replace hand-waving about unexpected results
|
||
with a description of the formatter's behavior. Document
|
||
request behavior without an argument before getting into the
|
||
weeds (and CSTR #54 errata). Migrate terminology from "scaling
|
||
indicator" to "scaling unit".
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58035>.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Expressions): Expand '|' operator explanation.
|
||
Split discussion of its application into horizontal and vertical
|
||
contexts. Add example of vertical usage.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60820>.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp: Trivially refactor. Drop `#define`
|
||
that was working around a GCC 2.95-era libstdc++ problem.
|
||
Shorten long line.
|
||
(get_char_for_escape_parameter): Demote parameter from `int` to
|
||
`bool` and use Boolean literal for default argument. Annotate a
|
||
null pointer constant.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Rename some internal functions.
|
||
|
||
* src/roff/troff/input.cpp: Do it.
|
||
(read_escape_name):
|
||
(read_long_escape_name):
|
||
(read_two_char_escape_name):
|
||
(get_char_for_escape_name):
|
||
(read_increment_and_escape_name): Rename these...
|
||
(read_escape_parameter):
|
||
(read_long_escape_parameters):
|
||
(get_char_for_escape_parameter):
|
||
(read_two_char_escape_parameter):
|
||
(read_increment_and_escape_parameter): ...to these.
|
||
(read_two_char_escape_parameter, read_long_escape_parameters,
|
||
read_escape_parameter, read_increment_and_escape_parameter,
|
||
get_copy, token::next): Update call sites.
|
||
|
||
2022-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (get_char_for_escape_name): Recast
|
||
diagnostic messages to more accurately refer to escape
|
||
"sequence" rather than "name". "Name" is a confusing term here,
|
||
given that it also applies to a group of objects sharing a name
|
||
space (natch): requests, macros, strings, and diversions.
|
||
Further, the "escape name" cited by these diagnostics is not the
|
||
escape function selector; that is, the character after the
|
||
escape character which determines how the escape sequence is to
|
||
be interpreted. These diagnostics are only thrown after that
|
||
function is known, however, when parsing of an escape sequence
|
||
parameter is attempted.
|
||
(input_char_description): Drop leading articles ("a") from
|
||
input character descriptions, to economize in diagnostic
|
||
messages this function helps produce.
|
||
(non_empty_name_warning): Use zero copula for economy.
|
||
|
||
* src/roff/troff/input.cpp (empty_name_warning, read_size)
|
||
(token::get_char, check_missing_character):
|
||
* src/roff/troff/number.cpp (start_number, parse_term): Recast
|
||
messages to more consistently use the form "expected X, got Y"
|
||
where feasible.
|
||
|
||
* src/roff/troff/number.cpp (start_number): Say "numeric
|
||
expression missing" instead of "missing number"; we don't
|
||
require a terminal symbol in the expression grammar here. Also
|
||
use `tok.description()` where we can, and remove assumption that
|
||
the escape character is the default.
|
||
|
||
2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (AT, UC, HP): Add deprecation warnings. For the
|
||
last, only do so if we're not inside a synopsis (SY/YS), since
|
||
our definition of `SY` calls `HP` internally. (This does seem
|
||
hypocritical. Perhaps if we knew the correct CSS incantation
|
||
to speak in grohtml, we could un-deprecate `HP`.)
|
||
|
||
2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.an (M4CHECK): Rename stamp file to make its purpose
|
||
clearer.
|
||
|
||
2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Tweak customization management.
|
||
|
||
* tmac/an.tmac: Load "man.local" with `msoquiet` request, so
|
||
people can get rid of the file if they don't need it.
|
||
(PT, BT): Define these macros only if not already defined. This
|
||
is slightly less paranoid but far more ergonomic, given
|
||
interactions with the andoc wrapper. Now user-defined page
|
||
header traps (PT) defined in man.local can take effect on the
|
||
first page rendered.
|
||
|
||
* tmac/groff_man.7.man.in (Hooks): Document how to remove page
|
||
headers and/or footers entirely.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61954>.
|
||
|
||
2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[refer,mm]: Add and use `ref*reset` macro to clean up between
|
||
bibilography entries.
|
||
|
||
* tmac/refer.tmac (]-): Move string clean up logic from here...
|
||
(ref*reset): ...to this new macro. Now we can also use it...
|
||
|
||
* contrib/mm/refer-mm.tmac (ref*][-first-pass): ...here.
|
||
|
||
Problem appears to date back to refer-mm.tmac's introduction in
|
||
January 2011. Thanks to Bjarni Ingi Gislason for the root-cause
|
||
analysis and proposed fix, to which I applied the DRY principle
|
||
and added a reset of `ref*string` as well.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60657>.
|
||
|
||
2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mm]: Regression-test Savannah #60657.
|
||
|
||
* contrib/mm/tests/remove-stale-bib-entry-data.sh: Do it.
|
||
* contrib/mm/tests/artifacts/60657.ref: Add new file.
|
||
* contrib/mm/mm.am (mm_TESTS): Run test.
|
||
(EXTRA_DIST): Ship test artifact in distribution archive.
|
||
|
||
Thanks to Bjarni Ingi Gislason for the straightforward
|
||
bug reproducer.
|
||
|
||
2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[refer]: Report correct line number in bibliography file
|
||
diagnostics.
|
||
|
||
* src/preproc/refer/refer.cpp (do_bib): Set line number to 1
|
||
upon successfully opening a bibliography file.
|
||
|
||
Problem appears to date back to groff 1.02 (June 1991) at the
|
||
latest.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62142>.
|
||
|
||
2022-03-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[refer]: Regression-test Savannah #62124.
|
||
|
||
* src/preproc/refer/tests/report-correct-line-numbers.sh: Do it.
|
||
* src/preproc/refer/tests/artifacts/62124.ref: Add new file.
|
||
* src/preproc/refer/refer.am (refer_TESTS): Run test.
|
||
(EXTRA_DIST): Ship test artifact in distribution archive.
|
||
|
||
2022-03-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/div.cpp
|
||
(top_level_diversion::transparent_output):
|
||
* src/roff/troff/input.cpp (transparent_translate): Suppress two
|
||
troublesome (i.e., more or less spurious) error diagnostics
|
||
about transparent output/throughput unless the environment
|
||
variable `GROFF_ENABLE_TRANSPARENCY_WARNINGS` is present. This
|
||
is a bit of a bodge until we get diversion sanitization worked
|
||
out. See Savannah #61407.
|
||
|
||
2022-03-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[preconv]: Stop assuming that the default input stream, or an
|
||
explicit '-' operand, is the only unseekable stream. Check
|
||
instead.
|
||
|
||
* src/preproc/preconv/preconv.cpp (do_file): Add new Boolean
|
||
`is_seekable`. Test the input stream with `fseek()` per a
|
||
suggestion from Ingo Schwarze. Report unseekability in debug
|
||
output and skip coding tag and uchardet tests altogether
|
||
{precisely paralleling our description in the preconv(1) man
|
||
page}. Also update debugging output to say "<standard input>"
|
||
instead of "-".
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62131>.
|
||
|
||
2022-03-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[preconv]: Regression-test Savannah #62131.
|
||
|
||
* src/preproc/preconv/tests/do-not-seek-the-unseekable.sh: Do
|
||
it.
|
||
* src/preproc/preconv/preconv.am (preconv_TESTS): Run test.
|
||
|
||
2022-03-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (process_format): Update diagnostic
|
||
to recognize that a font mounting position is also an acceptable
|
||
argument to the 'f' column modifier.
|
||
|
||
2022-02-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Refactor X11 font description generation. Integrate it with our
|
||
"new" (post-2014) Automake-based build system.
|
||
|
||
* src/utils/xtotroff/Makefile.in: Delete relic of old build
|
||
system. Also, it had a bug: it generated X11 output device
|
||
'DESC' files with a "unitwidth 10" directive even for the "-12"
|
||
devices, which is not correct (the in-tree DESC files we've been
|
||
shipping for years were nevertheless correct, apparently fixed
|
||
by hand by James Clark in groff 1.07 [March 1993]).
|
||
|
||
* src/utils/xtotroff/xtotroff.am: Define `xtotroff` variable for
|
||
use by X11 font description generation targets below.
|
||
|
||
* font/devX100-12/devX100-12.am:
|
||
* font/devX100/devX100.am:
|
||
* font/devX75-12/devX75-12.am:
|
||
* font/devX75/devX75.am: Add new (phony) targets, variously
|
||
named "devX{100,100_12,75,75_12}", to generate the corresponding
|
||
output device's DESC file and run xtotroff(1) to generate its
|
||
font description files. Be sure to set the correct "unitwidth"
|
||
for the "-12" devices. Add new dependency-only rule
|
||
"maintainer-font-descriptions" depending on these new targets
|
||
for convenience (and future expansion to devps and devlj4).
|
||
|
||
* FOR-RELEASE: Document existence of
|
||
"maintainer-font-descriptions" Make target and when to run it.
|
||
|
||
Running this target with the aforementioned bug fix, overwriting
|
||
the in-tree DESC and font description files using data gathered
|
||
from a running X server, results in no changes whatsoever. Say
|
||
what you will about X11 core font technology--it's stable.
|
||
|
||
2022-02-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Rename and ship "FontMap-X11". xtotroff(1) is not very useful
|
||
without a font name mapping file to read. To date it has been
|
||
available only in the source distribution. Remedy that. The
|
||
file is placed directly in the groff font directory alongside
|
||
the device directories because it applies to four different
|
||
devices, and four copies of this data are not required.
|
||
|
||
* src/devices/xditview/FontMap: Rename to...
|
||
* src/devices/xditview/FontMap-X11: ...this.
|
||
|
||
* LICENSES:
|
||
* src/devices/xditview/xditview.am (EXTRA_DIST): Reflect rename.
|
||
|
||
* src/devices/xditview/xditview.am (install_xditview
|
||
[!WITHOUT_X11], uninstall_xtdiview): (Un-)install it.
|
||
|
||
* src/utils/xtotroff/xtotroff.1.man (Files): Add section
|
||
documenting the presence and purpose of this file.
|
||
|
||
2022-02-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[xtotroff]: Add `-d` option to produce font description files in
|
||
specified directory.
|
||
|
||
* src/utils/xtotroff/xtotroff.c: Do it. Add global `destdir`
|
||
pointer.
|
||
(xtotroff_exit): Add new function to clean up storage allocated
|
||
by `strdup()` (below) for destination directory.
|
||
(MapFont): Introduce new variable `file_name`, into which we
|
||
assemble a destination file name from `destdir` (if not null)
|
||
and the troff font name. Handle memory allocation failure (by
|
||
carefully dying). Free allocated storage on success and failure
|
||
paths out of the function.
|
||
(usage): Document new `-d` option.
|
||
(main): Instruct `getopt_long` to expect a `-d` flag with an
|
||
argument. Use `strdup()` to make a copy of any such option
|
||
argument. Call `xtotroff_exit()` instead of `exit()`.
|
||
|
||
* src/utils/xtotroff/xtotroff.1.man: Document new `-d` option.
|
||
|
||
2022-02-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[xtotroff]: Trivially refactor.
|
||
|
||
* src/utils/xtotroff/xtotroff.c: Boolify. Include `stdbool.h`
|
||
and `errno.h` headers.
|
||
(charExists, CanonicalizeFontName, FontNamesAmbiguous, MapFont):
|
||
Boolify. Demote return type from `int` to `bool` and return
|
||
Boolean instead of integer literals.
|
||
(FontNamesAmbiguous, main): Reorder equality comparisons with
|
||
simple left-hand sides to avoid inadvertent lvalue assignments.
|
||
(FontNamesAmbiguous, MapFont): Refer to font name as "invalid",
|
||
not "bad", in diagnostic messages.
|
||
(MapFont, main): Use `strerror()` instead of `perror()` so that
|
||
diagnostics include the program name and an indication of
|
||
problem severity.
|
||
(MapFont): Compare `FILE` stream pointer to `NULL` instead of
|
||
treating it as a Boolean.
|
||
(main): Use `EXIT_SUCCESS` and `EXIT_FAILURE` constants from C
|
||
library instead of integer literals for exit status.
|
||
|
||
2022-02-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pic]: Fix "unused result" compiler warning.
|
||
|
||
* src/preproc/pic/pic.ypp (placeless_element) <SH>: Check return
|
||
value of `system()` to quieten `-Wunused-result` warning; if it
|
||
is less than zero, report it to the standard error stream.
|
||
|
||
2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/safer.tmac: Drop file from distribution. It contained
|
||
only comments.
|
||
* tmac/tmac.am (TMACNORMALFILES): Delete reference.
|
||
* NEWS: Add item. Suggest two workarounds for its absence.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61831>.
|
||
|
||
2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac (initialization): Drop definition of
|
||
`doc-curr-size` register. It is no longer needed since nothing
|
||
internal to the package now changes the type size.
|
||
|
||
* tmac/doc.tmac (Fl, doc-print-recursive, doc-print-prefixes)
|
||
(doc-generic-macro, Ar, Cd, doc-do-func-decl, Fd, In, Nm, Pa)
|
||
(Tn, doc-enclose-string, Ef, Bd, doc-save-global-vars)
|
||
(doc-restore-global-vars, doc-diag-list, Xr, Dl, Vt, Ft, Fa)
|
||
(doc-do-func, Fn, doc-do-func-args, Fo, Fc, %A, %B, %C, %D, %I)
|
||
(%J, %N, %O, %P, %Q, %R, %T, %U, %V, doc-do-reference, Hf, An)
|
||
Lk):
|
||
* tmac/mdoc/doc-common (Sh, Ss, Rd):
|
||
* tmac/mdoc/doc-syms (Ux, Bx, At, Dx, Fx, Nx, Ox, Bsx, St, Lb):
|
||
Drop interpolations of the string and comments documenting that
|
||
each macro has a side effect on the type size.
|
||
|
||
2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/doc.tmac (Tn):
|
||
* tmac/mdoc/doc-syms (Ux, Bx): Stop interpolating string
|
||
`doc-Tn-font-size` to set macro arguments at a smaller type
|
||
size. This leaves the string without a purpose, so...
|
||
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Drop definitions of `doc-Tn-font-size`.
|
||
|
||
* tmac/mdoc/doc-syms: Drop interpolations of that string from
|
||
numerous other string definitions.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60616>.
|
||
|
||
2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Revert addition of man(7) `BD` register. This feature, which I
|
||
introduced in commit ea3b27102f (31 January) doesn't work
|
||
because pdf.tmac normalizes the bookmark depth. Embedding a man
|
||
page in a larger PDF document with appropriately nested
|
||
bookmarks is a project that will have to await another day (or
|
||
perhaps already has tools to implement it).
|
||
|
||
* tmac/an.tmac: Do it.
|
||
* tmac/groff_man.7.man.in: De-document it.
|
||
|
||
2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdf.tmac: Add string containing the name of the macro
|
||
package for use in diagnostic messages.
|
||
(pdf:warn, pdf:error): Use it.
|
||
|
||
Continues the long process of fixing Savannah #52463.
|
||
|
||
2022-02-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man,mdoc,me]: Revise hyphenation localization.
|
||
|
||
* tmac/an.tmac (an*reset-hyphenation-mode): New macro sets the
|
||
hyphenation mode appropriate to the locale depending on the
|
||
values of `cR` (continuous rendering mode) and `HY` (hyphenation
|
||
enablement); the latter is now interpreted as a Boolean. Define
|
||
new register `an*hyphenation-mode` reflecting these conditions.
|
||
(TH): Call the foregoing instead of invoking `hy` request.
|
||
(MR): Restore hyphenation mode to `an*hyphenation-mode`.
|
||
(initialization): Simplify; if not defined, set `HY` to 1.
|
||
|
||
* tmac/e.tmac (ld): Set the hyphenation mode here instead of in
|
||
initialization (which already calls this macro). Set the mode
|
||
to 6 for the benefit of anyone borrowing our me(7) changes, but
|
||
then immediately change to the mode determined by the
|
||
localization file.
|
||
|
||
* tmac/mdoc/doc-common (doc-hyphen-flags): Set a hyphenation
|
||
mode appropriate to the locale, depending on the values of `cR`
|
||
and `HY`.
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff: Simplify initialization; if not defined,
|
||
set `HY` to 1.
|
||
|
||
* tmac/cs.tmac:
|
||
* tmac/de.tmac:
|
||
* tmac/en.tmac:
|
||
* tmac/fr.tmac:
|
||
* tmac/it.tmac:
|
||
* tmac/sv.tmac: Before switching locales, set a flag if
|
||
troublesome value 2 of the hyphenation mode is set so that we
|
||
can preserve it. Shift man(7) and me(7) logic to follow setup
|
||
of the new hyphenation mode; for the former, call the new
|
||
`an*reset-hyphenation-mode`.
|
||
|
||
* tmac/groff_man.7.man.in:
|
||
* tmac/groff_mdoc.7.man: Document updated meaning of `HY`
|
||
register.
|
||
|
||
* NEWS: Add item noting change of man(7) `HY`'s meaning. Update
|
||
existing item regarding mdoc(7)'s support for it (groff 1.22.4
|
||
mdoc(7) didn't recognize the register at all).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61734> (for real this
|
||
time?).
|
||
|
||
2022-02-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Regression-test Savannah #61734.
|
||
|
||
* tmac/tests/an_reset-hyphenation-correctly.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-02-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff_char.7.man (History): Add new section.
|
||
(See also): Add cross reference to 1976 edition of CSTR #54.
|
||
|
||
2022-02-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_man.7.man.in (Document structure macros) <EX, EE>
|
||
[style]: Add material cautioning writers against asoociating
|
||
the disablement of filling with some sort of "literal mode".
|
||
Document still-operational status of inter-sentence space
|
||
supplementation.
|
||
(Notes) [style]: Describe an alternative (and macro
|
||
call-symmetrical) means of using `RS` and `RE` with `TP`.
|
||
|
||
2022-02-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Add phony targets "man-all" and "man-clean" to
|
||
{re-}generate and delete all man pages, respectively.
|
||
|
||
Arguably fixes <https://savannah.gnu.org/bugs/?61167>.
|
||
|
||
2022-02-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* Makefile.am (.man): Prefix hyphenation control escape
|
||
sequences to more configuration-time interpolations to prevent
|
||
their hyphenation: @DEVICE@, @g@, @INDEX_SUFFIX@, @PAGE@,
|
||
@TMAC_{AN,M,S}_PREFIX@, @TMAC_MDIR@.
|
||
|
||
2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Refactor `EX` and `EE` macros.
|
||
|
||
* tmac/an-ext.tmac: Add new `mC` string to store the font name
|
||
to be used for example regions. In AT&T device-independent
|
||
troff, "CW" was a common name, so use that. It is however a
|
||
terrible fit for groff's font family and style-combination
|
||
functionality, and is inflexible in the face of font selection
|
||
requests and escape sequences within the example region. (One
|
||
either needs to know the names of the fonts available on the
|
||
output device, or suffer the indignity of mixed constant-width
|
||
and proportional typefaces.) Relatedly, drop groff-specific
|
||
font remapping requests.
|
||
(EX, EE): Ignore definition if GNU troff is the formatter. Drop
|
||
font family manipulation. Drop specialized logic for groff's
|
||
DVI output device.
|
||
|
||
* tmac/an.tmac (initialization): Resurrect font remapping
|
||
requests here.
|
||
(EX, EE): Add new definitions, saving and restoring more state
|
||
and remapping DVI output device fonts to reflect the absence of
|
||
CWB and CWBI faces.
|
||
|
||
2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Slightly refactor. Stop using groff's `HY`
|
||
register to restore the hyphenation mode, since I plan to change
|
||
its semantics to a Boolean value (see Savannah #61734).
|
||
Introduce new register `mJ` to store "1" (if not groff) and the
|
||
current hyphenation mode otherwise. Explain why in a comment.
|
||
(YS, UE, ME, MR): Restore hyphenation mode using `mJ` instead of
|
||
`HY`.
|
||
|
||
2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: Trivially refactor. Use a better idiom
|
||
{seen in James Clark's changes to BSD me(7)} for conditionally
|
||
defining a (simple) macro.
|
||
|
||
2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grotty/tty.cpp (tty_printer::special): Warn upon
|
||
encountering unrecognized device control commands using the
|
||
'tty:' tag.
|
||
|
||
2022-02-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grotty]: Remove 'sgr' device control command.
|
||
|
||
* src/devices/grotty/tty.cpp (tty_printer::special): Do it.
|
||
* src/devices/grotty/grotty.1.man (Device control commands):
|
||
{De-}document it.
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61561>.
|
||
|
||
2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdfpic.tmac: Add support for Cygwin/MinGW temporary
|
||
directory conventions.
|
||
|
||
2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdfpic.tmac: Search for temporary directories as groff(1)
|
||
does, instead of going straight to /tmp.
|
||
(pdfpic@get-temporary-directory): New function checks each of
|
||
its arguments for validity as a temporary directory; if one is
|
||
found, its name is left in `pdfpic*temporary-directory`.
|
||
(pdfpic@cleanup): Remove strings `pdfpic*temporary-directory`
|
||
and `pdfpic*temporary-file`.
|
||
(PDFPIC): Call `pdfpic@get-temporary-directory`, using the
|
||
contents of the environment variables $GROFF_TMPDIR and $TMPDIR,
|
||
and then /tmp, in that order. Store the temporary file name in
|
||
string `pdfpic*temporary-file`. Use this string in subsequent
|
||
`sy` and `so` requests.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62055> for Unix systems.
|
||
|
||
2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Add test for PDFPIC fallback to PSPIC.
|
||
|
||
* tmac/tests/pdfpic_falls_back_to_PSPIC.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Tweak PDFPIC test input.
|
||
|
||
* tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
|
||
Eliminate unnecessary blank lines from input. Also call gs(1)
|
||
with '-q' in addition to '-o'. (Why does the latter not imply
|
||
the former?!) Thanks to Deri James for the advice.
|
||
|
||
2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdfpic.tmac: Slightly refactor.
|
||
(pdfpic@cleanup, PDFPIC): Rename `pdfpic*file-name` to
|
||
`pdfpic*file-name-base` since it is not used as a complete file
|
||
name (but rather a basis for an ".eps" extension).
|
||
(PDFPIC): When testing PDF file extension, include the "."; a
|
||
file name like "mxyzptlkpdf" is too dubious to accept. Also
|
||
explicitly compare `systat` register as equal or not equal to
|
||
zero, since its truth value is inverted from the expectations of
|
||
*roff expressions.
|
||
|
||
2022-02-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdfpic.tmac (PDFPIC): Refactor PDFPIC_NOSPACE handling.
|
||
Stop shelling out to create, and then sourcing, a temporary file
|
||
just to obtain the value of an environment variable. groff
|
||
already has the `\V` escape sequence for that purpose (it's even
|
||
safe!). Check that the value of $GROFF_PDFPIC_NOSPACE is a
|
||
valid numeric expression before assigning it to a register.
|
||
Trivially, use '=' instead of '==' as an equality operator.
|
||
*roff languages do not use '=' as an assignment operator, and I
|
||
believe the '==' synonym to be a sop to C programmers.
|
||
|
||
2022-02-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Stop attempting to adjust pargraph tag lines.
|
||
|
||
* tmac/an.tmac (TP): Disable adjustment inside the diversion.
|
||
(an-write-paragraph-tag): Restore adjustment outside of it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62051>.
|
||
|
||
2022-02-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (@z): Conceal bare tab after request name (exposed
|
||
by no longer stripping the macro file). See commit ad0575f20, 9
|
||
December.
|
||
|
||
2022-02-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grops,troff]: Migrate to term "scaling unit" in diagnostics.
|
||
|
||
* src/devices/grops/ps.cpp (ps_printer::do_import):
|
||
* src/roff/troff/input.cpp (warnscale_request):
|
||
* src/roff/troff/number.cpp (parse_term): Do it.
|
||
|
||
2022-02-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Add nroff mode fallback for `u` macro.
|
||
|
||
* tmac/e.tmac (u): On nroff devices, bracket the first argument
|
||
with \(ul (underline rule) special character escape sequences.
|
||
{In plain language, '.u "like this"' renders "_like this_".}
|
||
|
||
I regard this as a cosmetic and semantic improvement; since the
|
||
quarter-em vertical motions used in troff mode were ignored in
|
||
nroff mode, the effect was not underlining but a sort of
|
||
strike-through, visible only at spaces in the argument. The use
|
||
of this macro was thus invisible in nroff output if no spaces
|
||
were present in the argument. This is probably the best we can
|
||
do without a fatter interface to terminal device capabilities.
|
||
|
||
2022-02-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Simulate boxed text support on nroff devices with ISO 6429
|
||
color escape sequences.
|
||
|
||
* tmac/e.tmac (bx): Do it. Add further fallback for non-groff
|
||
formatters in nroff mode, bracketing the boxed argument with '|'
|
||
glyphs.
|
||
* doc/meref.me.in: Document it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?62038>.
|
||
|
||
2022-02-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Rename registers `$v` -> `tv`, `$V` -> `dv`.
|
||
|
||
* tmac/e.tmac: Do it. Also include much commentary (including
|
||
some from James Clark in 1992) attempting to illuminate the
|
||
confusing history (and naming) of `$[rRvV]`.
|
||
|
||
* doc/meref.me.in: Document it. Introduce new terms
|
||
"text vertical spacing" and "display vertical spacing" earlier
|
||
and use them to condense and clarify discussions of their use.
|
||
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61710>.
|
||
|
||
2022-02-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Deferring Output): Add new node introducing
|
||
and motivating environments, diversions, and traps.
|
||
|
||
2022-02-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Add more compatibility mode guards.
|
||
|
||
2022-02-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/pdf.tmac: Add compatibility mode guards so that we can
|
||
run even if troff is given the -C option. Resurrect your
|
||
vintage 1975 Sixth Edition Unix manuals from '.deth' and format
|
||
them in PDF today!
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61995>.
|
||
|
||
2022-02-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/andoc.tmac: Prefix diagnostic with package file name
|
||
literally.
|
||
|
||
2022-02-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Trivially refactor.
|
||
|
||
* tmac/an.tmac (an*localize): Rename to...
|
||
(an*localize-strings): ...this.
|
||
(TH): Update call site.
|
||
|
||
2022-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Present several fundamental concepts.
|
||
|
||
* doc/groff.texi (Page Geometry):
|
||
* man/roff.7.man (Concepts): Add new node/section.
|
||
- page geometry
|
||
- basic units
|
||
- device resolution
|
||
- drawing position
|
||
- text baseline
|
||
- page offset
|
||
- vertical spacing
|
||
- page break
|
||
|
||
Fixes the remainder of <https://savannah.gnu.org/bugs/?58035>.
|
||
|
||
2022-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Add page length insufficiency check.
|
||
|
||
* tmac/e.tmac (@h): Port Keith Marshall's page length checker
|
||
from ms(7).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61034> and
|
||
<https://savannah.gnu.org/bugs/?61428>.
|
||
|
||
2022-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Add test for insufficient page length error.
|
||
|
||
* tmac/tests/e_rejects-too-short-page-lengths.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Slightly refactor.
|
||
|
||
* tmac/e.tmac (@h): Use groff default scaling operator in
|
||
conditional expression. Add `do` requests so that the logic for
|
||
checking the line length works in compatibility mode. Also move
|
||
misplaced parenthesis in conditional expression.
|
||
|
||
2022-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Refactor insufficient page length check.
|
||
|
||
* tmac/s.tmac (pg@top): Drop extraneous closing parenthesis from
|
||
numeric expression. Change operator from '>' to '>='; a page
|
||
length right at the boundary causes a spurious extra page break
|
||
when a paragraphing macro is used to initialize the document.
|
||
Condense diagnostic emission using the @error macro instead of
|
||
duplicating it. Change indentation to fit the style of the rest
|
||
of the file (use hard tabs). If aborting, truncate the page
|
||
length to the current vertical position so that we don't
|
||
uselessly output further vertical space.
|
||
|
||
2022-02-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Add test for insufficient page length error.
|
||
|
||
* tmac/tests/s_rejects-too-short-page-lengths.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-02-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Vertically space delayed text like other annotations.
|
||
|
||
* tmac/e.tmac ((d): Set vertical spacing using percentage in
|
||
`$V` register.
|
||
()d): Restore vertical spacing using percentage in `$v`
|
||
register.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61973>.
|
||
|
||
2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Expand '@PAGE@' when generating man pages.
|
||
|
||
* Makefile.am (.man): Substitute the './configure'd paper format
|
||
for @PAGE@.
|
||
* src/roff/groff/groff.1.man: Use it.
|
||
|
||
2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Trivially refactor an-ext.tmac.
|
||
|
||
* tmac/an-ext.tmac (EX, EE): Do a better job of keeping the
|
||
name space promise made in comments at the top of the file.
|
||
Rename `sP` register to `mP`. Problem introduced by me in
|
||
commit 69895ec20, 15 January 2020. Also rename `la` and `ra`
|
||
strings to `mL` and `mR`, respectively. These (undocumented)
|
||
string names date back to commit 259929625, 15 January 2007.
|
||
|
||
* tmac/groff_man.7.man.in (Files) <an-ext.tmac>: Document the
|
||
aforementioned promise.
|
||
|
||
2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Refactor PDF bookmark support.
|
||
|
||
* tmac/an.tmac (an*bookmark): New internal macro calls
|
||
`pdfbookmark` (only if the output device is 'pdf').
|
||
(initialization): Migrate macro appendments to appropriate
|
||
definitions. Two cases...
|
||
(SH, SS): ...were straightforward.
|
||
(initialization): Another (for the man page title) was poorly
|
||
placed when appended to the `TH` macro, skipping over the page
|
||
header. Move it instead...
|
||
(PT): ...here. But to keep this bookmark from being generated
|
||
on every page of a document, we need a new variable
|
||
`an*was-TH-bookmark-emitted` which is tested here and assigned
|
||
once one bookmark corresponding to a `TH` call has been written.
|
||
(TH): Initialize `an*was-TH-bookmark-emitted` to zero.
|
||
(SS): Write the bookmark _before_ the subsection heading text.
|
||
(initialization): Drop short-lived `BM` register. It seems
|
||
harmless to unconditionally include bookmarks in PDF output. A
|
||
PDF tool can strip them out if they're not desired, and viewers
|
||
seem capable of minimizing or reducing the navigation pane (if
|
||
they even offer one in the first place).
|
||
|
||
* tmac/an.tmac (initialization): Rename new `BN` register to
|
||
`BD`...
|
||
* tmac/groff_man.7.man.in (Options) <BD>: ...and document it.
|
||
Also document `PT`'s new bookmarking responsibility.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58949> and
|
||
<https://savannah.gnu.org/bugs/?58950>.
|
||
|
||
2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml,groff,nroff,troff]: Tweak usage message.
|
||
|
||
* src/devices/grohtml/post-html.cpp (usage):
|
||
* src/roff/groff/groff.cpp (synopsis):
|
||
* src/roff/nroff/nroff.sh:
|
||
* src/roff/troff/input.cpp (usage): Partly revert commit
|
||
06ae7b0b8, 16 January. Move an ellipsis back inside a bracketed
|
||
operand (that is, an optional one). On reflection, I think this
|
||
notation makes it clearer that the command can be meaningfully
|
||
run without operands.
|
||
|
||
2022-01-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/papersize.tmac: Slightly refactor. Use new `stringdown`
|
||
request instead of a combination of `tr`, `di`, `asciify`, and
|
||
`chop`.
|
||
|
||
2022-01-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Slightly refactor.
|
||
|
||
* tmac/an.tmac (an-prepare-page-title): Rename to...
|
||
(an*prepare-page-title): ...this. Also simplify numeric
|
||
expression. Add comment regarding necessity of correct
|
||
environment.
|
||
|
||
(an-header): Update call site of `an*prepare-page-title`.
|
||
|
||
(TH): Move planting of `an-header` trap from out of the midst of
|
||
footer trap management. Add comments.
|
||
|
||
(an-header): Move `pl` and `sp` requests from here...
|
||
(PT): ...to here. While it's conceptually nice to have these
|
||
macros consist solely of `tl` requests, it doesn't yield enough
|
||
power to those who want to redefine them. Add comment.
|
||
|
||
(an-footer, BT): ...simile.
|
||
|
||
2022-01-27 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
[man pages]: Add more references to pic(1)'s .PF.
|
||
|
||
* contrib/chem/chem.1.man:
|
||
* contrib/pic2graph/pic2graph.1.man:
|
||
* src/utils/grog/grog.1.man: Do it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61949>.
|
||
|
||
2022-01-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Implement PDF bookmark support for man pages. Limitation: A
|
||
{sub}section can only be bookmarked if it is specified in the
|
||
arguments to the `SH` or `SS` requests, not on the next line in
|
||
an input trap. Thanks to Deri James for providing the
|
||
fundamentals (blame me for any weird bits).
|
||
|
||
* tmac/an.tmac (an-prepare-page-title): Define a new string,
|
||
`an*page-ref-string`, which is the man page's own reference
|
||
{such as "groff(1)"} without any abbreviation, ellipsis, or font
|
||
selection or italic correction escape sequences.
|
||
(SS): Define a new string, `an*subsection-heading`, storing the
|
||
macro arguments (if any). These could contain font selection
|
||
escape sequences, for instance, a fact that becomes important
|
||
later.
|
||
(initialization):
|
||
- Recognize `BM` register to enable PDF bookmarks (only on the
|
||
'pdf' output device); defaults on. Recognize `BN` register to
|
||
set a base level/depth for the bookmarks; this is to ease
|
||
embedding of man pages in other PDF documents that already use
|
||
bookmarks. The default is 0. The registers are not yet
|
||
documented.
|
||
- If the output device is 'pdf' and bookmarks are enabled, set
|
||
`PDFOUTLINE.FOLDLEVEL` and `PDFHREF.VIEW.LEADING` registers
|
||
{recognized by 'pdf.tmac'}. Append to `TH`, `SH`, `SS` to get
|
||
the `an*page-ref-string`, `an-section-heading`, and
|
||
`an*subsection-heading` bookmarks in the document at the
|
||
applicable levels.
|
||
|
||
* tmac/mdoc/doc-common: Add straw-man implementation--it doesn't
|
||
support the `BM` and `BN` configuration parameters yet. (This
|
||
is enough to get bookmarks for the groff_mdoc(7) page to
|
||
correctly appear in the new 'groff-man-pages.pdf' document.)
|
||
(Dt, Sh, Ss): If the output device is 'pdf', place bookmarks in
|
||
the document at levels 1, 2, and 3.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58950>.
|
||
|
||
2022-01-26 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Allow multiline text in .pdfinfo
|
||
|
||
* src/devices/gropdf/gropdf.pl: Use either '\\\\\\\\n' or
|
||
'\[u000a]' as line separators in the string.
|
||
|
||
2022-01-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/trans.tmac: Further follow up commit c64fd60dff. If the
|
||
`andoc` wrapper is being used, perform man(7) localization (not
|
||
just when `an` is loaded).
|
||
|
||
2022-01-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man pages]: Fix options used to generate compilations.
|
||
|
||
* doc/doc.am (doc/groff-man-pages.pdf): Drop `-rU0` option (it's
|
||
unnecessary since we don't yet have PDF hyperlink support in
|
||
this document). Add `-rC1` option to enable continuous page
|
||
numbering.
|
||
(doc/groff-man-pages.utf8.txt): Drop `-rC1 -rU1`. Continuous
|
||
page numbering is superfluous since page numbers are not shown
|
||
in continuous rendering mode. Stop turning on OSC 8 defaults;
|
||
we don't know if the document will be viewed with a supporting
|
||
pager+terminal combination, and further we don't yet have a
|
||
mechanism for making `MR` man page cross references internal to
|
||
the document when they indicate groff man pages.
|
||
|
||
2022-01-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man pages]: Ship compilations in UTF-8 text and PDF.
|
||
|
||
Localization support and the resolution of Savannah #61266 have
|
||
made it practical to batch-render all of groff's man pages as a
|
||
single giant document. Provide PDF and UTF-8 text (with ECMA-48
|
||
escape sequences, but not the italic attribute or OSC 8
|
||
sequences).
|
||
|
||
Reasons for this addition include: {1} it is now possible,
|
||
whereas I don't believe it was in any previous groff release;
|
||
{2} many people still don't realize how much more pleasant
|
||
reading typeset man pages can be (while a subjective assessment,
|
||
I'm not alone[1]); {3} providing these forms permits full-text
|
||
searching of groff's entire man page corpus via the PDF viewer
|
||
or a pager like "less -R", the latter without sacrificing the
|
||
style variations of the text that aid the reader to comprehend
|
||
the material; {4} sentimentally, it honors the 50th anniversary
|
||
of the first Unix manual (dated 3 November 1971)
|
||
<https://www.bell-labs.com/usr/dmr/www/1stEdman.html>.
|
||
|
||
* doc/doc.am (PROCESSEDDOCFILES): Add
|
||
'doc/groff-man-pages.{pdf,utf8.txt}'.
|
||
(GROFF_MAN_PAGES{1,2,3}): Add new macro storing names of all man
|
||
pages generated in the build tree. Motivate the reason for 3
|
||
variables in a comment (it's due to groff locale switching).
|
||
(GROFF_MAN_PAGES_ALL): Add convenience macro for use in
|
||
dependency lists required by...
|
||
('doc/groff-man-pages.{pdf,utf8.txt}'): ...these targets.
|
||
Generate pages with the lint dial turned all the way up.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61900>.
|
||
|
||
[1] "The manual was intended to be typeset; some detail is
|
||
sacrificed on terminals." (man(1), _Unix Time-Sharing System
|
||
Programmer's Manual_, Eighth Edition, Volume 1, February 1985)
|
||
|
||
2022-01-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Commit c64fd60dff was not quite cooked. The localized
|
||
strings (in English) for the manual section titles need to be
|
||
set at every document load (i.e., when `TH` is called), but only
|
||
if the groff locale is "english". When switching locales, these
|
||
strings were getting "stuck" in their non-English translations
|
||
even when returning to an English page.
|
||
|
||
* tmac/an.tmac (an*localize): New macro initializes strings.
|
||
(TH): Call `an*localize` if the locale is "english".
|
||
(initialization): Drop initialization of section title strings.
|
||
|
||
Continues fixing <https://savannah.gnu.org/bugs/?61734>.
|
||
|
||
2022-01-24 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
[gropdf]: Fix Savannah #61908
|
||
|
||
* src/devices/gropdf/gropdf.pl: Adjust text position when
|
||
given landscape media (i.e -P-l).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61908>.
|
||
|
||
Thanks to KUBO Koichi for finding the problem and supplying a
|
||
patch.
|
||
|
||
2022-01-24 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
* src/devices/gropdf/gropdf.pl: A fix to importing pdf
|
||
versions > 1.4.
|
||
|
||
2022-01-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grotty]: Skip part of test if locale doesn't support UTF-8.
|
||
|
||
* src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh:
|
||
Skip test of 'utf8' output device if locale lacks UTF-8 support.
|
||
But if the 'ascii' or 'latin1' test cases have already failed,
|
||
report that instead.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61891>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2022-01-23 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
|
||
|
||
[man pages]: Fix typos.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61430>.
|
||
|
||
2022-01-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Fix style nits in test.
|
||
|
||
* tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh:
|
||
- Emit complaints about test environment to standard error.
|
||
- Replace lingering literal file name with variable expansion.
|
||
- Skip test if gs(1) fails, instead of reporting failure.
|
||
- Begin continued lines with operators, for visibility.
|
||
|
||
2022-01-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Fix misspelled member variable.
|
||
|
||
* src/devices/grohtml/post-html.cpp (class html_printer):
|
||
Rename `supress_sub_sup` to `suppress_sub_sup`.
|
||
|
||
2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pdfpic]: Fix Savannah #58206.
|
||
|
||
* tmac/pdfpic.tmac (PDFPIC): Scrub null bytes out of pdfinfo(1)
|
||
output. Thanks to an anonymous contributor for the patch (the
|
||
commentary about it is mine, if someone wants an argument).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58206>.
|
||
|
||
2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pdfpic]: Regression-test Savannah #58206.
|
||
|
||
* tmac/tests/pdfpic_does-not-choke-on-bad-pdfinfo-output.sh: Do
|
||
it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pdfpic]: Refactor.
|
||
|
||
Now that the package does not abort upon the first whiff of any
|
||
trouble, avoid littering groff's name spaces. Take this
|
||
opportunity to rename registers and strings to have obvious
|
||
meaning to even the casual reader.
|
||
|
||
* tmac/pdfpic.tmac: Do it.
|
||
(pdfpic@cleanup): New macro removes temporary strings and
|
||
registers.
|
||
(PDFPIC): Call the cleanup macro upon entry; this way, if we
|
||
errored out from a previous call, we avoid confusion. (We don't
|
||
clean up upon an error return because the leftover objects might
|
||
be useful for troubleshooting.) Rename registers and strings,
|
||
to get them under name space discipline and also to better
|
||
suggest their purpose.
|
||
- convert-pdf -> pdfpic*do-conversion
|
||
- pdf-offset-mode -> pdfpic*offset-mode
|
||
- pspic-args -> pdfpic*pspic-args
|
||
- pdf-offset -> pdfpic*indentation
|
||
- is-pdf -> pdfpic*file-extension
|
||
- img-file -> pdfpic*file-name
|
||
- pdf-wid -> pdfpic*width
|
||
- pdf-ht -> pdfpic*height
|
||
- pdf-deswid -> pdfpic*desired-width
|
||
- pdf-desht -> pdfpic*desired-height
|
||
Call cleanup macro before returning upon successful operation.
|
||
|
||
2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pdfpic]: Improve robustness.
|
||
|
||
* tmac/pdfpic.tmac (@abort): Rename to `pdfpic@error`. This is
|
||
an auxiliary package, and something else could very well step on
|
||
the former name (or worse, we break it if we're loaded later).
|
||
(pdfpic@error): Stop aborting; simply report an error. It's up
|
||
to the user how serious `PDFPIC` macro problems are. As noted
|
||
in a comment, the user can easily `am pdfpic@error` to tack an
|
||
`ab` request onto the end of its definition. Always report
|
||
input file name and line number. Replace "[PDFPIC]" prefix with
|
||
the name of the macro file complaining, to make it easier for
|
||
groff non-experts to find.
|
||
(PDFPIC): Return upon errors. Recast diagnostic messages. Stop
|
||
implying that we perform any sort of probing test of file type
|
||
{there's no telling what pdfinfo(1) will say}. Apply new
|
||
'stringdown' request so that we accept '.pdf' file name
|
||
extension in any lettercase. Test file argument for existence
|
||
before proceeding (acknowledge TOCTTOU exposure). Skip file if
|
||
pipeline returned a non-zero exit status or the registers into
|
||
which we extract the height and width are undefined (indicating
|
||
failure of a temporary file to be created or read). Reject
|
||
files with non-positive image width or height reported by
|
||
pdfinfo. Validate `width` and `height` arguments, if given,
|
||
rejecting non-positive values.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61892>.
|
||
|
||
2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mdoc]: Make `Pa` macro interpolate basic Latin tilde on all
|
||
output devices.
|
||
|
||
* tmac/doc.tmac (Pa): Do it.
|
||
|
||
2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix incorrect line numbers in diagnostics. Line numbers
|
||
for multiple format-time diagnostics emitted by tbl(1)-generated
|
||
groff input were off by +5 lines.
|
||
|
||
* src/preproc/tbl/table.cpp: Fix it.
|
||
(NOP_NAME): Add new preprocessor symbol to construct name of
|
||
"nop" macro to be used as end macro for `ig` requests inside
|
||
macro definitions.
|
||
(table::init_output, table::compute_expand_list,
|
||
table::compute_separation_factor):
|
||
- Move `entry_list->set_location()` calls to more auspicious
|
||
locations.
|
||
- Replace "around line X" language in diagnostic messages with a
|
||
more idiomatic, and less embarrassing, simple report of an
|
||
integer.
|
||
(table::init_output):
|
||
- Add `entry_list->set_location()` call right before emitting
|
||
diagnostic about a table row not fitting on a page.
|
||
- Turn off eqn(1) delimiters when emitting diagnostic about a
|
||
boxed table not fitting on a page (necessitating `.TS H`
|
||
support), using new NOP_NAME-based end macro to achieve this
|
||
inside a macro definition.
|
||
(table::compute_expand_list): Suppress issue of too-wide table
|
||
diagnostic when the `EXPAND` table flag is set (corresponding to
|
||
the `expand` region option), because other code already emits
|
||
diagnostics in this case.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60598>. Problem appears
|
||
to date back to commit 3bc4a53a45, 2013-01-07.
|
||
|
||
2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Add unit test for format-time diagnostics.
|
||
|
||
Ensure that the various format-time diagnostics that a
|
||
tbl-preprocessed document can generate (1) occur when they are
|
||
supposed to and (2) are appropriately suppressed by the
|
||
"nowarn" and/or "nokeep" region options. One of them is an
|
||
error and cannot be suppressed by the former, but _can_ be by
|
||
"nokeep", which is arguably a bug (Savannah #61878).
|
||
|
||
* src/preproc/tbl/tests/format-time-diagnostics-work.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TEST): Run test.
|
||
|
||
2022-01-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Trivially refactor.
|
||
|
||
* src/preproc/tbl/table.cpp (table::compute_expand_width):
|
||
Declare and initialize variables closer to use. Also, the width
|
||
computed is compared to the line length and indentation, so use
|
||
these well-established *roff terms in the diagnostic message.
|
||
|
||
2022-01-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix Savannah #61854.
|
||
|
||
* src/preproc/tbl/table.cpp (compute_expand_width): To properly
|
||
warn if a table is too wide to fit between the indentation and
|
||
the right margin, we need to compute its column widths including
|
||
those eligible for expansion via the 'x' column modifier; we
|
||
cannot use the same expression that we do to determine the
|
||
amount of space we have to distribute among the expanded
|
||
columns. Iterate through columns again (the function was
|
||
already doing so twice), once to potentially produce the
|
||
warning, and then as before to distribute any available width.
|
||
In other words, warnings were only being emitted for too-wide
|
||
tables where one or more columns used the 'x' modifier.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61854>.
|
||
|
||
2022-01-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Don't add leaders that don't lead anywhere.
|
||
|
||
* tmac/s.tmac (toc*end-entry): If no page number string
|
||
`toc*num` is defined, don't interpolate its emptiness prefixed
|
||
with a leader (and tab). This makes "no" as the first argument
|
||
to `XS` and `XA` work as documented, suppressing not only the
|
||
page number but the leader after the entry.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61853>.
|
||
|
||
2022-01-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Add regression test for Savannah #61853.
|
||
|
||
* tmac/tests/s_XA-literal-no-argument-suppresses-leader.sh: Do
|
||
it.
|
||
* tmac/tmac.am (tmac_TESTS): Run it.
|
||
|
||
2022-01-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Fix bad unit test.
|
||
|
||
* tmac/tests/e_chapter-titles-work.sh: Fix missing shell test at
|
||
end of script, which caused it to exit successfully regardless
|
||
of any test failures. Irritating. This is among the fruits of
|
||
the "never, ever use 'set -e'" tree. (This religion has a thick
|
||
bible: <https://mywiki.wooledge.org/BashFAQ/105>.) Fortunately,
|
||
all the tests pass legitimately.
|
||
|
||
2022-01-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[font]: For 'ascii' and 'latin1' devices, consistently define
|
||
glyphs for ordinary characters before their special character
|
||
aliases. This parallels existing usage for the 'cp1047' device,
|
||
and, I think, makes the file contents slightly more accessible.
|
||
|
||
* font/devascii/R.proto:
|
||
* font/devlatin1/R.proto: Do it.
|
||
|
||
2022-01-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Update diagnostic messages.
|
||
|
||
* src/devices/grohtml/post-html.cpp (assert_state::add)
|
||
(assert_state::compare, replace_negate_str)
|
||
(assert_state::check_value_error, make_val): Make format of
|
||
internal assertion system messages shorter and more mutually
|
||
parallel.
|
||
(html_printer::set_char, html_printer::set_numbered_char)
|
||
(html_printer::set_char_and_width): Parallelize diagnostic
|
||
messages with libdriver; see yesterday's commit.
|
||
(main): Put information in argument to `assert()`; see commit
|
||
11b43053, 24 November.
|
||
|
||
2022-01-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[nroff]: Emit usage message on usage errors.
|
||
|
||
* src/roff/nroff/nroff.sh: Store the usage message in a shell
|
||
variable instead of a here document, and sling it to the
|
||
standard output or standard error streams, as appropriate.
|
||
|
||
2022-01-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml,groff,nroff,troff]: Tweak usage message.
|
||
|
||
* src/devices/grohtml/post-html.cpp (usage):
|
||
* src/roff/groff/groff.cpp (synopsis):
|
||
* src/roff/nroff/nroff.sh:
|
||
* src/roff/troff/input.cpp (usage): Stop putting an ellipsis
|
||
inside a bracket expression (for file arguments); that suggests
|
||
misleading complexity.
|
||
|
||
* src/devices/grohtml/post-html.cpp (usage): Also don't set
|
||
metasyntactic variable names in screaming capitals when they are
|
||
separated from option letters by space and thus can't be
|
||
confused with them.
|
||
|
||
2022-01-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libdriver]: Update diagnostic messages.
|
||
|
||
* src/libs/libdriver/printer.cpp (printer::find_font): Describe
|
||
the problem encountered instead of saying lamely "sorry, I can't
|
||
continue".
|
||
(printer::set_char_and_width, printer::set_numbered_char):
|
||
Characterize input as "invalid", not "bad"; see commit bb7512b5,
|
||
17 September. When referring to font mounting position, say so.
|
||
(printer::set_char_and_width): Describe required input character
|
||
as "ordinary", not "ascii". Apart from the incorrect casing,
|
||
doing so better aligns with our terminology in groff_char(7),
|
||
groff_out(5), our Texinfo manual, and other diagnostic messages;
|
||
moreover, the use of "ascii" is potentially confusing to those
|
||
whose environments use another encoding, like UTF-8 or IBM code
|
||
page 1047.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61829>.
|
||
|
||
2022-01-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grotty]: Check basic Latin ("ASCII") glyph mappings.
|
||
|
||
* src/devices/grotty/tests/basic_latin_glyphs_map_correctly.sh:
|
||
Do it.
|
||
* src/devices/grotty/grotty.am (grotty_TESTS): Run test.
|
||
|
||
2022-01-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[font,tmac]: Simplify Unicode character mapping process.
|
||
|
||
* tmac/unicode.tmac: Drop. It was originally added in 2005 to
|
||
suppress horizontal spacing of glyphs in the range U+0483..9.
|
||
Its purpose has wandered over the years; most recently to map
|
||
the Basic Latin ("ASCII") hyphen-minus, apostrophe, and grave
|
||
accent to special characters (and thus ultimately to the General
|
||
Punctuation block). But this is unnecessary since the font
|
||
descriptions for devices with the `unicode` property can provide
|
||
this information, and anyone who wants to alter the mappings can
|
||
change either font description files, output device macro files,
|
||
or troffrc; or add `char` requests to their macro packages or
|
||
documents (in decreasing magnitude of ambition).
|
||
|
||
* tmac/html.tmac:
|
||
* tmac/tty.tmac: Stop sourcing unicode.tmac.
|
||
|
||
* tmac/tmac.am (TMACNORMALFILES): Stop shipping it.
|
||
|
||
* font/devutf8/NOTES: Drop remarks about mapping of \[a~],
|
||
\[a^], and Basic Latin circumflex accent and tilde. Not only do
|
||
I disagree with the reasoning (whether these glyphs are "too
|
||
small" depends on the font used by the terminal emulator, over
|
||
which we have no control), but this mapping happens in a
|
||
completely different part of the source tree,
|
||
src/libs/libgroff/glyphuni.cpp.
|
||
|
||
* font/devhtml/R.proto:
|
||
* font/devutf8/R.proto: Add mappings for the five Basic Latin
|
||
characters that map surprisingly (see groff_char(7)) and are not
|
||
syntactically significant to troff. Three of these are ported
|
||
from unicode.tmac.
|
||
(html): Don't migrate the hyphen-minus--yet.
|
||
|
||
2022-01-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tty-char.tmac: Drop redundant logic. We don't need to
|
||
source the `cp1047` or `latin1` files here; `troffrc` will
|
||
already have loaded `tty` for us, which loads whichever applies.
|
||
|
||
2022-01-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Separate concerns better; stop re-generating plain
|
||
text and HTML documents when the 'doc' target is updated; these
|
||
are already handled by the 'build_infodoc' target.
|
||
(build_infodoc): Use existing phony targets for plain text and
|
||
HTML output files instead of repeating filename literals.
|
||
(doc_all): Remove those same two phony targets from this one's
|
||
dependencies.
|
||
|
||
2022-01-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp: Rename `eoi_macro_name` to
|
||
`end_of_input_macro_name`. It's long, yes, but better parallels
|
||
`blank_line_macro_name` and `leading_spaces_macro_name`. It is
|
||
not used in lengthy expressions and furthermore clarifies the
|
||
meaning of the nearby function name `eoi_macro` in one use.
|
||
|
||
2022-01-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/preconv.1.man (Limitations): Add
|
||
subsection.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55035>.
|
||
|
||
2022-01-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Be more careful with control characters when they are
|
||
word-initial in filled text lines. The idea is to prevent
|
||
baffling surprises if a sentence is recast in a text editor, and
|
||
a word beginning with a dot or neutral apostrophe is reflowed
|
||
onto the beginning of the next input line--suddenly it is parsed
|
||
as a control character. Based on a patch by Bjarni Ingi
|
||
Gislason.
|
||
|
||
* contrib/hdtbl/groff_hdtbl.7.man:
|
||
* doc/automake.mom:
|
||
* doc/meintro.me.in:
|
||
* doc/meintro_fr.me.in:
|
||
* doc/pic.ms:
|
||
* doc/webpage.ms:
|
||
* src/devices/gropdf/gropdf.1.man: Do it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?51312>.
|
||
|
||
2022-01-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Font Description File Format):
|
||
* man/groff_font.5.man (Font description file format): Document
|
||
restriction of kerning adjustment to glyph pairs from within a
|
||
single font (since that is the scope of the font description).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?44715>.
|
||
|
||
2022-01-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* contrib/groff_filenames/groff_filenames.5.man: Remove
|
||
superfluous paragraphing macro.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55084>. Thanks to Bjarni
|
||
Ingi Gislason for the report and a suggested patch.
|
||
|
||
2022-01-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Operators in Conditionals): Update explanation
|
||
of output-comparison conditional operator.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60836>.
|
||
|
||
2022-01-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Use pnmtops(1)'s -quiet option if possible, to quieten
|
||
build.
|
||
|
||
* m4/groff.m4 (GROFF_PNMTOOLS_CAN_BE_QUIET): Add new macro to
|
||
test pnmtops for support for (undocumented) '-quiet' option.
|
||
|
||
* configure.ac: Perform the check.
|
||
|
||
* doc/doc.am: Alter check of shell variable `pnmtops_nosetpage`
|
||
{processed by AC_SUBST} to correctly match even if pnmtops
|
||
accepts the '-quiet' option.
|
||
|
||
2022-01-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Manage hyphenation mode more carefully in localization
|
||
packages.
|
||
|
||
* tmac/{cs,de,it,sv}.tmac: Localize the man(7) package's HY
|
||
register.
|
||
|
||
* tmac/{cs,de,fr,it,sv}.tmac: When localizing the ms(7) package,
|
||
use mode "2" instead of "3": the 'hy' request complains of
|
||
contradictory hyphenation modes if "3" is used (the semantics of
|
||
the hyphenation mode are complex and non-orthogonal; see
|
||
groff(7) or our Texinfo manual).
|
||
|
||
* tmac/{cs,de,en,fr,it,sv}.tmac: If the one language-independent
|
||
hyphenation bit (don't hyphenate just prior to a page location
|
||
trap) is set, preserve it; this way a system's troffrc or a
|
||
macro package can set it and it will not get turned off by the
|
||
localization package, which for best results should be loaded
|
||
after any full-service package (and any auxiliary package
|
||
requiring localized strings, though none are yet distributed
|
||
with groff).
|
||
|
||
2022-01-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Add unit test for localization macro files. Right now
|
||
this just covers the hyphenation mode.
|
||
|
||
* tmac/tests/localization-works.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2022-01-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[indxbib]: Document --version in usage message.
|
||
|
||
* src/utils/indxbib/indxbib.cpp (usage): Document --version
|
||
option. Use more informative metasyntactic variable names.
|
||
Organize usage message consistently with our others, and stop
|
||
wrapping the output lines: we know neither the width of the
|
||
terminal nor the length of the `program_name` string we're
|
||
interpolating. See commit b4de44f0, 19 July 2021.
|
||
|
||
2022-01-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libbib]: Refactor index header checking.
|
||
|
||
* src/libs/libbib/index.cpp: Move more header validity checks...
|
||
(index_search_item::load): ...from here...
|
||
|
||
(index_search_item::check_header): ...to here. Test all size
|
||
values in header for negative values (never valid) before
|
||
proceeding. (These data could be changed to unsigned integer
|
||
types in the file format, but that would require bumping the
|
||
file version. That in turn would make indexes generated with
|
||
groff 1.23 unusable on systems running older groffs and, perhaps
|
||
worse, would make groff 1.23 reject index files produced by
|
||
older groffs. On the other hand, the regeneration of index
|
||
files should be, for those who use them, a common activity, and
|
||
as long as the original database files are kept intact, it seems
|
||
likely that most people, given modern machines, won't even
|
||
notice a slowdown in document generation when refer(1) and
|
||
friends fail to open the indices and fall back to full-text
|
||
searches of the originals. So we could still consider revising
|
||
the file format before the groff 1.23 release.)
|
||
|
||
* src/libs/libbib/index.cpp (index_search_item::load):
|
||
Explicitly perform widening conversion from signed `off_t` value
|
||
{from a stat(2) buffer} to an unsigned integer; quietens
|
||
compiler warning about comparison between integers differing in
|
||
signedness.
|
||
|
||
2022-01-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac (AC_CHECK_HEADERS): Expect stdbool.h, since we
|
||
now use it in src/include/lib.h.
|
||
|
||
2022-01-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libbib, libgroff, indxbib]: Slightly refactor.
|
||
|
||
Also, it's silly to test even numbers > 2 for primality. Stop.
|
||
|
||
* src/include/lib.h: Include `stdbool.h` since this header file
|
||
is used for both C and C++ code.
|
||
|
||
* src/include/lib.h (is_prime):
|
||
* src/libs/libgroff/prime.cpp (is_prime): Boolify. Return
|
||
Boolean instead of integer literals and demote return type to
|
||
`bool`. Include `assert.h` and add assertion to reject
|
||
mathematically offensive input.
|
||
|
||
* src/libs/libbib/index.cpp
|
||
(index_search_item::read_common_words_file): Test only odd
|
||
numbers for primality.
|
||
* src/utils/indxbib/indxbib.cpp (main): Same. Since the number
|
||
comes from user input, make it (a potential hash table size) odd
|
||
first.
|
||
|
||
2022-01-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Internationalize and localize.
|
||
|
||
* tmac/an.tmac (TH): Indirect predefined manual section titles
|
||
through new strings `an*section[1-9]` so that they can be
|
||
localized.
|
||
(initialization): Give these strings English defaults.
|
||
(TH): Move `ss` request from here...
|
||
|
||
* tmac/en.tmac: ...to here. It's not the man(7) package's
|
||
business what the inter-word and inter-sentence spacing values
|
||
are. Also, having the correct[disputed] inter-sentence spacing
|
||
value for English in its localization file restores it for the
|
||
benefit of multi-lingual documents (mainly roff applications
|
||
other than man(7)).
|
||
|
||
* tmac/{cs,de,fr,it,sv}.tmac: Supply translations for the manual
|
||
section titles; these were done by a monoglot American employing
|
||
Google Translate, so those scandalized or running into howlingly
|
||
wrong locutions are warmly invited to submit corrections.
|
||
|
||
* tmac/trans.tmac: Load localized strings.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61734>.
|
||
|
||
2022-01-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Handle auxiliary macro package
|
||
arguments correctly.
|
||
(process_arguments): Don't append the argument to the '-m'
|
||
option to the command line; requested macro packages have
|
||
dedicated logic.
|
||
(construct_command): When iterating through requested package
|
||
list, assume each element is an auxiliary package unless it
|
||
matches an element in the list of main packages. If the
|
||
assumption holds, append the package name to a new list,
|
||
`auxiliary_package_argument` (prefixed with '-m'). Push this
|
||
list onto the command line after any main package.
|
||
|
||
Also rename `$selected_main_package` to `$main_package` for
|
||
brevity, and drop unused global lists `m` and
|
||
`supplemental_package`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61758>.
|
||
|
||
2022-01-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/tests/smoke-test.sh: Add test cases for user
|
||
specification of auxiliary macro packages.
|
||
|
||
2022-01-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Drop unnecessary code. Apart from being superfluous, it
|
||
prevented a user-defined value of the `sx` register from being
|
||
applied to the first footnote marker interpolated, a subtlety
|
||
that escaped my notice because the first footnotes in our
|
||
"meref" and "meintro" documents are not numeric, but symbolic,
|
||
and their markers occurred on lines with vertical space above
|
||
and below. (The bug was further masked by an otherwise
|
||
redundant redefinition of the `*` string inside the `)f` macro.)
|
||
|
||
* tmac/e.tmac ()f, +c): Stop redefining footnote marker string
|
||
`*` after updating the automatic footnote number; its
|
||
interpolation is already backslash-protected.
|
||
()d, pd): Stop redefining delayed text marker string `#` for an
|
||
analogous reason.
|
||
(initialization): Drop unneeded `_*` and `_#` strings.
|
||
|
||
Thanks to Robert Goulding for his feedback and patience. See
|
||
<https://savannah.gnu.org/bugs/?61025>.
|
||
|
||
2022-01-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/e_footnote-marks-work.sh: Enhance test. Confirm
|
||
that the automatic footnote number is reset to 1 by starting a
|
||
new chapter with the `+c` macro.
|
||
|
||
2022-01-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Revise `n1` and `n2` interface and behavior.
|
||
|
||
There were several bugs in the previous implementation.
|
||
|
||
* tmac/e.tmac (po): Issue diagnostic if an attempt is made to
|
||
set the page offset to a negative value.
|
||
|
||
(n1): Accept new optional "C" argument to behave more (but not
|
||
exactly) like roff(1), as the formerly-recognized "c" argument
|
||
to `n2` did. If present, the line length is reduced by the same
|
||
amount (in new interface register `no`) as the line number field
|
||
to preserve the overall line length. Save the previous line
|
||
length in internal register `_l` and set a flag, stored in `?N`,
|
||
indicating this reduction. Otherwise, the macro expects to be
|
||
able to reduce the page offset to accommodate the line number.
|
||
If it cannot (for example, with the zero page offset default
|
||
used by nroff output devices), see above re: the `po` macro.
|
||
|
||
(n2): Cache the last line number that may have been output,
|
||
instead of the current one, so that we can operate on it
|
||
consistently with user expectations. Do this earlier, and
|
||
rename this macro-local variable from `_ln` to `_n` so that we
|
||
don't need groff's `do` request to operate on it. Drop
|
||
recognition of "c" as an optional second argument. If turning
|
||
off line numbering: if the line length was shortened (`?N`)
|
||
restore the saved value and delete `_l` register; otherwise,
|
||
reverse the change to the page offset. Delete `_n` register.
|
||
|
||
(initialization): Assign `\w'0000'u` to `no` register; this was
|
||
previously hard-coded in `n1` and `n2`. Initialize `?N` with 0.
|
||
|
||
* doc/meref.me.in (roff Support): Update to reflect interface
|
||
changes and describe behavior more accurately.
|
||
|
||
* doc/meref.me.in (Summary):
|
||
* tmac/groff_me.7.in (Registers): Document new `no` register and
|
||
mark it as a groff extension.
|
||
|
||
* NEWS: Add item documenting interface changes.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61646>. See the comments
|
||
in the report for a lengthy enumeration of rendering problems
|
||
exhibited by the previous implementation.
|
||
|
||
2022-01-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Add unit test for line numbering feature.
|
||
|
||
* tmac/tests/e_line-numbering-works.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-12-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grohtml/post-html.cpp (style::style): Add
|
||
initializer to argumentless constructor to avoid later read from
|
||
uninitialized memory in `html_printer::do_font`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61748>.
|
||
|
||
2021-12-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[groff]: Add regression test for Savannah #61748.
|
||
|
||
* src/roff/groff/tests/html_works_with_grn_and_eqn.sh: Do it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run it.
|
||
|
||
2021-12-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grohtml/post-html.cpp
|
||
(html_printer::do_file_components): Emit fatal diagnostic if
|
||
we're unable to `freopen()` standard output. Quietens
|
||
`-Wunused-result` warning from GCC 8.3.
|
||
|
||
2021-12-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grohtml/html.h (INT_HEXDIGITS): Add new constant
|
||
to store the maximum possible quantity of digits in the
|
||
hexadecimal representation of an `int`.
|
||
|
||
* src/devices/grohtml/html-text.cpp (html_text::issue_tag):
|
||
* src/devices/grohtml/post-html.cpp (html_printer::do_body):
|
||
Guard against format string overflow by large integers in RGB
|
||
color channel specifications; in a *printf format string, the
|
||
precision (like the field width) is a _minimum_. Quietens
|
||
`-Wformat-overflow` warnings from GCC 8.3.
|
||
|
||
2021-12-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (get_image_generator): Clarify
|
||
complex conditional expression. Quietens `-Wparentheses`
|
||
warning from GCC 8.3.
|
||
|
||
2021-12-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Rename new `$x` register to `sx`. Since we expect the
|
||
user to set this register directly, it should not be named with
|
||
a leading '$' per the "me Reference Manual".
|
||
|
||
* tmac/e.tmac (initialization, {, }): Do it.
|
||
|
||
* tmac/groff_me.7.man:
|
||
* doc/meref.me.in:
|
||
* NEWS: Update documentation.
|
||
|
||
* doc/meintro.me.in:
|
||
* doc/meintro_fr.me.in:
|
||
* doc/meref.me.in: Sync with new register name.
|
||
|
||
See <https://savannah.gnu.org/bugs/?61025>. Thanks to Dave
|
||
Kemper for the discussion in
|
||
<https://savannah.gnu.org/bugs/?61710>.
|
||
|
||
2021-12-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Slightly refactor.
|
||
|
||
* src/roff/troff/div.cpp:
|
||
* src/roff/troff/div.h:
|
||
* src/roff/troff/input.cpp: Rename variables to reduce confusion
|
||
between "end macros" and "end-of-input macros". Call the latter
|
||
"eoi" macros for brevity.
|
||
|
||
2021-12-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Fix code style nits.
|
||
- Use new terminology in diagnostic. See commit 66ac1a8db9,
|
||
11 December.
|
||
- Drop unused '&&&' annotation for macro definitions. This
|
||
was a BSD me(7) implementation detail wherein parts of the
|
||
package were broken out into module files, loaded if/when
|
||
their macros were called. groff me(7) is monolithic, except
|
||
for devtag and refer(1) support.
|
||
- Remove '&&' end macro when we're done using it.
|
||
|
||
2021-12-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: (Re-)localize strings.
|
||
|
||
* tmac/{cs,de,fr,it,sv}.tmac: Update package localizations to
|
||
use new resources. As a happy side effect (and with the new
|
||
appendix string), the `+c` macro is now localized for Czech,
|
||
German, and Swedish.
|
||
|
||
* doc/meintro_fr.me.in (Les Parties du Document): Update example
|
||
to reflect mixed-case default string used in chapter headings.
|
||
|
||
* tmac/tests/e_ld-works.sh: Add tests for localization.
|
||
|
||
2021-12-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Internationalize strings.
|
||
|
||
* tmac/e.tmac (initialization): Introduce internal
|
||
`_mo1`..`_mo12`, `_dw1`..`_dw7`, and `_td_format` strings (with
|
||
English defaults). Define them outside of the new `ld` macro so
|
||
that they can be overridden by localization packages.
|
||
(ld) <dw, mo, td>: Populate via the above new strings.
|
||
* tmac/trans.tmac: Stop defining `mo` and `dw`. Instead, make
|
||
them aliases of the new strings above. Handle `wa` and `wc`
|
||
similarly.
|
||
|
||
2021-12-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Add `ld` macro to re-init date/l10n stuff.
|
||
|
||
* tmac/e.tmac (ld): New macro updates `y2` and `y4` registers
|
||
and `wa`, `wc`, `mo`, `dw`, and `td` strings.
|
||
|
||
* doc/meref.me.in (Miscellaneous, Predefined Strings):
|
||
* tmac/groff_me.7.man (Macros): Document it.
|
||
|
||
* tmac/tests/e_ld-works.sh: Add unit test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61670>.
|
||
|
||
2021-12-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/e_chapter-titles-work.sh: Add unit test for chapter
|
||
heading feature.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-12-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Ease localization and customization by exposing
|
||
strings for "Chapter" and "Appendix" instead of hard-coding
|
||
these words into the `$c` macro.
|
||
(initialization): Define new `wa` and `wc` strings. Separate
|
||
these and existing localization strings from `y2` and `y4`
|
||
initialization since the latter don't involve natural languages.
|
||
($c): Interpolate these strings in chapter and appendix headings
|
||
and in calls to `$C` hook macro. Set "Chapter" and "Appendix"
|
||
in mixed case instead of full capitals, and set one
|
||
adjustable nonbreaking word space `\~` between them and the
|
||
chapter number instead of two unadjustable nonbreaking spaces.
|
||
{These changes do slightly alter the default output of the
|
||
package when the `+c` macro is used.}
|
||
|
||
* doc/meref.me.in (Predefined Strings):
|
||
* tmac/groff_me.7.man (Strings): Document new strings.
|
||
|
||
* doc/meintro.me.in (Parts of the Basic Paper): Update example
|
||
to reflect mixed-case default string.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61661>.
|
||
|
||
2021-12-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (@p): Deactivate right alignment (the effect of
|
||
groff's `rj` request) when starting a new paragraph.
|
||
* doc/meref.me.in (Paragraphing) <lp>: Document this.
|
||
|
||
2021-12-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac ()c): Add bounds check to avoid attempting to set
|
||
a negative indentation, provoking a troff warning. Problem
|
||
exposed by formatting "meintro_fr.me" document with default
|
||
nroff mode line length.
|
||
|
||
2021-12-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Slightly refactor (boolify).
|
||
|
||
* src/roff/troff/div.cpp:
|
||
* src/roff/troff/div.h:
|
||
* src/roff/troff/env.cpp:
|
||
* src/roff/troff/input.cpp: Rename variables and demote from
|
||
`int` to `bool`. Initialize and assign them using Boolean
|
||
literals. The new names try harder to express a logical
|
||
predicate, and start with verbs to resist interpretation as
|
||
noun phrases.
|
||
- exit_started -> is_exit_underway
|
||
- done_end_macro -> is_end_macro_finished
|
||
- seen_last_page_ejector (demoted but not renamed)
|
||
- began_page_in_end_macro (demoted but not renamed)
|
||
|
||
2021-12-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Explain presence of undocumented `$r` and `$R`
|
||
registers.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61683>.
|
||
|
||
2021-12-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (bc): To get to the next column, space by the page
|
||
length `.p`, not by the distance to the next trap (or 24 inches,
|
||
as hard-coded in me(7) traditionally). It is up to any sprung
|
||
traps to issue further space requests or otherwise ensure a
|
||
transition to the next column.
|
||
|
||
See <https://savannah.gnu.org/bugs/?55081> for discussion.
|
||
|
||
2021-12-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac ({): Fix missing scaling unit in arithmetic
|
||
expression: broke footnotes in troff mode. Problem introduced
|
||
by me in commit 6eafd208, 16 December. Thanks to Robert
|
||
Goulding for the (informal) report.
|
||
|
||
2021-12-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/{pic,webpage}.html): Quieten build. Stop
|
||
passing `-p` (progress) option to postprocessor, which produces
|
||
TeX-like bracketed page numbers when images occur.
|
||
|
||
2021-12-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (.ms.html): Drop unused suffix rule.
|
||
|
||
2021-12-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am (tmac_XFAIL_TESTS): Mark test
|
||
"e_footnotes-work-with-columns.sh" as expected to fail (as it
|
||
does now, consequent to a reverted commit).
|
||
|
||
2021-12-16 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* man/groff_tmac.5.man: Fix minor errors.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61633>.
|
||
|
||
2021-12-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Parameterize line height adjustment when super/subscripting.
|
||
|
||
* tmac/e.tmac (initialization): Assign 0.2m to register `$x`.2m.
|
||
({, <}: Apply adjustment, multiplied by -1 for superscripts.
|
||
|
||
* doc/meref.me.in:
|
||
* tmac/groff_me.7.man: Document it.
|
||
|
||
* NEWS: Add item.
|
||
|
||
* doc/meintro.me.in:
|
||
* doc/meintro_fr.me.in:
|
||
* doc/meref.me.in: Forego extra line height for more attractive
|
||
typesetting.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61025>. Thanks to Robert
|
||
Goulding for the suggestion.
|
||
|
||
2021-12-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac ($c): Draw the footnote separator no wider than
|
||
the column width.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61675>.
|
||
|
||
2021-12-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (2c): Accept an empty first argument, permitting
|
||
the number of columns to be specified but preserving the default
|
||
column separation.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61671>.
|
||
|
||
2021-12-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (initialization): Initialize `$C` hook, preventing
|
||
`mac` warnings from troff(1) if chapter title feature is used.
|
||
|
||
2021-12-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (i, bi): Add italic corrections.
|
||
|
||
2021-12-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Fix groff warnings and correctness issue.
|
||
(n2): Prefix `ie` request with `do` because it uses the groff
|
||
`\B` escape sequence. Use braces to group multiple requests
|
||
after an `el` request: `ie` and `el` count as two requests, not
|
||
one. Add comment regarding the unfortunate choice of brace
|
||
style given *roff's syntactical constraints.
|
||
(n2, (c): Conceal bare tab in request argument list (exposed by
|
||
no longer stripping the macro file).
|
||
|
||
2021-12-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Revise diagnostic messages to follow GNU Coding Standards,
|
||
identifying what is emitting them.
|
||
|
||
* tmac/e.tmac (_e): New string holds "e.tmac".
|
||
(@err): New macro constructs and issues diagnostics. Add file
|
||
name to messages when available. Suppress line number when
|
||
unavailable.
|
||
(check_page_length, @z, @h, n2, sk, @p, @(, @), (c, )c, EQ, (f,
|
||
++, @U): Call `@err` instead of invoking `tm` request. Revise
|
||
wording of messages in an attempt at clarity.
|
||
|
||
Continues the long process of fixing Savannah #52463.
|
||
|
||
2021-12-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Slightly refactor footnote numbering.
|
||
()f): Tighten code style and end string definition with comment.
|
||
(+c, initialization): Drop unused auto-incrementation of
|
||
footnote number register `$f`. Add new string `_*` to use when
|
||
{re-}initializing `*` outside of a footnote diversion, and
|
||
interpolate the footnote number register instead of a literal.
|
||
|
||
2021-12-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/e_footnote-marks-work.sh: Add unit test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-12-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Fix automatic numbering of delayed text.
|
||
(initialization): Add `_#` string for use in multiple
|
||
assignments of `#` string.
|
||
(initialization, pd): Remove unused auto-incrementation from
|
||
`$d` delayed text number register.
|
||
()d): Increment `$d` register unconditionally, no longer
|
||
conditionally on whether the delayed text marker string `#` has
|
||
been interpolated.
|
||
()d, pd): Update `#` string using new `_#` string. Stop
|
||
initializing the string with `\k` mark-setting escape sequence.
|
||
|
||
* doc/meref.me (Annotations) <)d>: Document now-unconditional
|
||
incrementation of `$d` register.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61632>.
|
||
|
||
2021-12-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/e_delayed-text-marks-work.sh: Add test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-12-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Rename internal register out of user name space.
|
||
(@f): Rename `VL` to `__`; remove it immediately after using it.
|
||
|
||
2021-12-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/meref.me: Fix documentation error; the `$s` macro draws a
|
||
horizontal line of 2 inches' length, not 1.5 inches.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58682>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2021-12-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Generate me(7) manual sources as part of the build. We had been
|
||
shipping 'me' sources with the string '@VERSION@' in them and
|
||
only sed-replacing that to produce generated PostScript, but
|
||
this replacement was not occurring for users who processed the
|
||
documents themselves.
|
||
|
||
* doc/meintro.me:
|
||
* doc/meintro_fr.me:
|
||
* doc/meref.me: Rename these to...
|
||
* doc/meintro.me.in:
|
||
* doc/meintro_fr.me.in:
|
||
* doc/meref.me.in: ...these.
|
||
|
||
* doc/doc.am (DOCFILES): Add the new *.in files. Move the *.me
|
||
files from here...
|
||
(GENERATEDDOCFILES): ...to this new variable.
|
||
(dist_otherdoc_DATA, EXTRA_DIST): Add `$(GENERATEDDOCFILES)`.
|
||
(doc/me{intro{,_fr},ref}.me): Add new target rules.
|
||
|
||
* src/utils/grog/tests/smoke-test.sh: Update test to look for
|
||
the above source tree documents under their new names.
|
||
|
||
2021-12-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (.me.txt, .ms.txt): Drop unused suffix rules.
|
||
|
||
2021-12-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (DOC_SED): Add substitution of command prefix
|
||
{"@g@"} so we can make accurate reference to groff commands with
|
||
Unix counterparts in our documentation.
|
||
|
||
2021-12-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac: Add nroff mode string definitions for 4.4BSD
|
||
compatibility.
|
||
- Define '{' and '}' (superscripting) strings as '[' and ']'.
|
||
- Define '<' and '>' (subscripting) strings as '\(la and
|
||
'\(ra' if available on the device, otherwise '<' and '>'.
|
||
|
||
* tmac/tests/e_footnote-marks-work.sh: Update expected output.
|
||
|
||
* doc/meref.me: Document it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61619>.
|
||
|
||
2021-12-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (doc/meintro_fr.ps): Add target rule (overriding
|
||
suffix rule) to generate this file using `-mfr` (load the French
|
||
localization macro file).
|
||
|
||
2021-11-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Drop redundant `do_divert()` declaration.
|
||
|
||
* src/roff/troff/env.h: Do it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61433>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2021-11-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Remove `DEBUGGING` preprocessor cruft.
|
||
|
||
* src/roff/troff/input.cpp:
|
||
* src/roff/troff/mtsm.cpp: Stop defining `DEBUGGING`
|
||
preprocessor macro (as empty).
|
||
|
||
* src/roff/troff/input.cpp: Give `DEBUG_OPTION` an empty string
|
||
value if the former is undefined, so the `getopt_long()` call
|
||
will compile.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61436>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2021-11-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Slightly refactor table format column modifier `p` and
|
||
`v` validation.
|
||
|
||
* src/preproc/tbl/main.cpp (process_format): Make code terser by
|
||
introducing references to `list->point_size` and
|
||
`list->vertical_spacing`. Doing this requires a new scope
|
||
{because a switch case isn't one} so add it, without updating
|
||
indentation for this commit. When complaining of out-of-range
|
||
type size or vertical spacing, report the limit.
|
||
|
||
2021-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Improve diagnostic messages.
|
||
|
||
Revise diagnostic messages generally to use terminology
|
||
consistent with the recent rewrite of tbl(1), identify a
|
||
contextual token when possible, and communicate more helpfully.
|
||
|
||
* src/preproc/tbl/main.cpp (process_options): Tell the user
|
||
which region option is missing a closing parenthesis or cannot
|
||
accept an empty argument. Refer to region options as such, not
|
||
simply "options" (so they can't be confused with command-line
|
||
options). Say that input is "invalid" instead of "bad".
|
||
(process_format): Say "table format specification" instead of
|
||
just "format". Say "column classifier" instead of "format".
|
||
When a column modifier is missing an argument or a closing
|
||
parenthesis, identify it and refer to it as a "column modifier"
|
||
instead of omitting context. Inform user that arguments to `p`
|
||
and `v` column modifiers must be "(optionally signed) integer"s,
|
||
not "numbers", lower these diagnostics' levels from error to
|
||
warning, and indicate that the modifier is ignored. Clarify
|
||
diagnostic when extra characters trail `.` at the end of a table
|
||
format line.
|
||
(process_data): Say "table entry" instead of "data entry" when
|
||
discarding an excess one.
|
||
(process_table): Say we're giving up on "this table region", not
|
||
this "table", particularly since any table continuations (.T&)
|
||
are ignored.
|
||
|
||
2021-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix call to `getopt_long()`.
|
||
|
||
* src/preproc/tbl/main.cpp (main): Stop telling `getopt_long()`
|
||
to look for a `T` option. Continues b4bbf32e, 16 October 2020.
|
||
|
||
2021-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Tweak usage message.
|
||
|
||
* src/preproc/tbl/main.cpp (usage): Document `--version`. Give
|
||
version retrieval mode separate synopsis. Use more normative
|
||
synopsis syntax.
|
||
|
||
2021-11-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Fix code style nits.
|
||
|
||
* src/preproc/tbl/main.cpp (process_input_file)
|
||
(entry_format::debug_print, process_data, main): Replace
|
||
`assert(0)` calls with communicative predicates.
|
||
(struct input_entry_format, input_entry_format::debug_print,
|
||
process_format): Boolify. Demote and rename `int`s
|
||
`last_column` and `equal` to `bool`s named `is_last_column` and
|
||
`is_equal_width`. Assign them Boolean literals.
|
||
(process_format): Boolify. Demote `have_expand`, `got_format`,
|
||
and `got_period` from `int` to `bool`. Use Boolean literals in
|
||
assignments thereto.
|
||
(process_options): Swap order of null pointer comparison when a
|
||
typo or thinko could lead to lvalue assignment.
|
||
(process_data): Boolify. Demote `give_up` from `int` to `bool`.
|
||
Demote and rename `int` `row_comment` to `bool`
|
||
`seen_row_comment`. Use Boolean literals in assignments
|
||
thereto.
|
||
(main): Use standard C library symbols `EXIT_SUCCESS` and
|
||
`EXIT_FAILURE` with `exit()` calls instead of `0` and `1`.
|
||
|
||
2021-11-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Fix Savannah #61520.
|
||
|
||
* src/utils/grog/grog.pl: Move hash `preprocessor_for_macro` to
|
||
global scope since it is now mutable across `do_line` subroutine
|
||
calls.
|
||
(do_line): Adjust regex matching an end macro to work better.
|
||
Check names of macros being defined by the document; if they
|
||
start with '[' or ']', stop attempting to detect refer(1) usage,
|
||
by deleting its key from the `preprocessor_for_macro` hash.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61520>.
|
||
|
||
2021-11-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Add regression test for Savannah #61520.
|
||
|
||
* src/utils/grog/tests/avoid-refer-fakeout.sh: Do it.
|
||
* src/utils/grog/grog.am (grog_TESTS): Run test.
|
||
|
||
2021-11-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Page Motions):
|
||
* man/groff.7.man (Escape short reference): Fix error: the `\r`,
|
||
`\u`, and `\d` escape sequences move in ems, not vees, despite
|
||
being vertical motions. Add discussion and example. Thanks to
|
||
Bjarni Ingi Gislason for pointing out the problem in groff(7)
|
||
and Tadziu Hoffman for his lucid explanation.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61437>. Thanks to Bjarni
|
||
Ingi Gislason for the report and a suggested patch.
|
||
|
||
2021-11-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/include/error.h: Drop `extern` storage class from
|
||
diagnostic function prototypes. Drop parameter names from
|
||
prototypes, in keeping with the Stroustrup-style C++ used in
|
||
most of groff.
|
||
|
||
2021-11-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Update diagnostic
|
||
messages to say "kerning pair" instead of "kern pair".
|
||
|
||
2021-11-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (read_size): Update diagnostic
|
||
messages to use more normative language: say "type size" instead
|
||
of "point-size", and "escape sequence" instead of "escape".
|
||
* src/roff/groff/tests/\
|
||
use_point_size_escape_with_single_digit_arg.sh: Update expected
|
||
diagnostic wording in text.
|
||
|
||
2021-11-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (read_size): Boolify. Update
|
||
prototype. Demote return type from `int` to `bool`. Use
|
||
Boolean literals for return values. Similarly demote local
|
||
variable, rename it from `bad_digit` to
|
||
`contains_invalid_digit`, and use Boolean literals with it.
|
||
|
||
2021-11-16 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
* src/devices/gropdf/gropdf.pl: Fixes to importing pdf versions
|
||
> 1.4.
|
||
|
||
2021-11-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: If "nowarn", suppress table row warning.
|
||
|
||
* src/preproc/tbl/table.cpp (table::init_output): Bracket the
|
||
generated groff code that emits a warning if a table row
|
||
overruns a page location trap (usually, is too long to
|
||
vertically fit on the page) in a test for whether the "nowarn"
|
||
region option was given, so that this warning is suppressed as
|
||
well when that option is used.
|
||
* src/preproc/tbl/tbl.1.man (Region options): Document new
|
||
"nowarn" behavior.
|
||
|
||
{"nokeep" also suppresses this warning, for a different reason;
|
||
no diversion is created to hold the table row, so its vertical
|
||
size does not exist to be compared to the distance to the next
|
||
page trap.}
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61477>.
|
||
|
||
2021-11-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::do_vspan): Fix code style
|
||
nits. Swap order of null pointer and zero equality comparisons
|
||
when a typo or thinko could lead to lvalue assignment. Break a
|
||
series of 6 and-ed assertion predicates into separate `assert()`
|
||
calls--sure to be less maddening for anyone who has to debug
|
||
such a contingency. Clarify comment since C++98 didn't yet have
|
||
`nullptr`.
|
||
|
||
2021-11-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[m4]: Clean up shell variable quoting and bracing.
|
||
|
||
* m4/groff.m4 (GROFF_PROG_YACC, GROFF_MAKEINFO)
|
||
(GROFF_BROKEN_SPOOLER_FLAGS, GROFF_TARGET_PATH_SEPARATOR): Stop
|
||
bracing shell variable expansions that don't require it; the
|
||
shell is not make(1).
|
||
(GROFF_PROG_YACC, GROFF_MAKEINFO): Double-quote shell variable
|
||
expansions that might produce whitespace.
|
||
(GROFF_MAKEINFO): Drop unnecessary leading zeroes from version
|
||
number component construction. Drop unnecessary escaping of
|
||
plus sign in expr(1) input.
|
||
|
||
2021-11-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[m4]: Clean up test(1) usage.
|
||
|
||
Get rid of string (non-)nullity tests and comparisons involving
|
||
concatenation with garbage (usually "x"). Even the GNU Autoconf
|
||
manual's shell portability material doesn't recommend this. It
|
||
must be either a bodge cooked up by shell programmers who
|
||
couldn't remember to quote variable expansions, or a workaround
|
||
for shells of such poor quality that they defied the odds and
|
||
decayed out of usage or got fixed.
|
||
|
||
Instead, use double quotes (only where necessary). Test for
|
||
non-empty strings with "test -n" and empty strings with "test
|
||
-z". Stop quoting literal comparands that obviously have no
|
||
shell metacharacters in them.
|
||
|
||
* m4/groff.m4 (GROFF_PRINT, GROFF_PROG_YACC, GROFF_PERL)
|
||
(GROFF_DOC_CHECK, GROFF_MAKEINFO, GROFF_TEXI2DVI)
|
||
(GROFF_HTML_PROGRAMS, GROFF_PDFDOC_PROGRAMS, GROFF_PAGE)
|
||
(GROFF_TMAC, GROFF_WITH_COMPATIBILITY_WRAPPERS, GROFF_X11)
|
||
(GROFF_APPRESDIR_DEFAULT, GROFF_APPRESDIR_CHECK)
|
||
(GROFF_HAVE_TEST_EF_OPTION, GROFF_BASH, GROFF_UCHARDET)
|
||
(GROFF_UCHARDET_CHECK, GROFF_PDFTOOLS)
|
||
(GROFF_USE_GROFF_ALLOCATOR): Do it.
|
||
|
||
2021-11-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_TEXI2DVI): Add dependency on
|
||
`GROFF_MAKEINFO` macro. Rewrite to also test `MAKEINFO`
|
||
variable, which is empty if the `makeinfo` command is not
|
||
installed or too old. Consequently ignore `texi2dvi` if is too
|
||
old without having to do a version check (since it and
|
||
`makeinfo` are distributed together, both being part of GNU
|
||
Texinfo).
|
||
|
||
* doc/doc.am (.texi.dvi, .texi.pdf): Update error message to
|
||
indicate that `texi2dvi` is _either_ missing or too old.
|
||
|
||
2021-11-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_MAKEINFO): Stop throwing a warning if the
|
||
installed `makeinfo` is old but the distributed Info manual is
|
||
up to date. This is not a configure-time problem; the user will
|
||
be notified when they run 'make' if they modify doc/groff.texi,
|
||
or if they run 'make doc' (which has required a TeX installation
|
||
for years). Empty the `MAKEINFO` variable immediately if a
|
||
too-old version is detected. Drop needless `AC_SUBST`itution of
|
||
the detected `makeinfo` version.
|
||
|
||
2021-11-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_HTML_PROGRAMS): Clarify message; it is only
|
||
groff-generated HTML that is disabled by the absence of the
|
||
programs checked for. (`makeinfo` can still generate our
|
||
Texinfo manual in HTML format.)
|
||
|
||
2021-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[build]: Drop `BUILD_INFODOC` symbol. Ship manual in GNU Info,
|
||
text, and HTML forms in distribution archive.
|
||
|
||
* Makefile.am (MAINTAINERCLEANFILES): Initialize.
|
||
(MOSTLYCLEANADD): Drop unused variable.
|
||
* configure.ac: Drop `AM_CONDITIONAL([BUILD_INFODOC]...`.
|
||
* doc/doc.am (EXTRA_DIST): Rearrange shipment of our Texinfo
|
||
manual source files to precede all of the generated forms, for
|
||
clarity. Drop all `BUILD_INFODOC` conditionals. Make
|
||
`build_infodoc` phony target depend on plain text, GNU Info, and
|
||
HTML forms of Texinfo manual unconditionally. Also drop unused
|
||
variables `groffinfodir`, `groffpdfdir`, and `texi2dvi_missing`.
|
||
(EXTRA_DIST, MAINTAINERCLEANFILES): Add Info form of manual.
|
||
Drop glob pattern attempting to match the segments that
|
||
`makeinfo` breaks it into. It isn't necessary for
|
||
MAINTAINERCLEANFILES.
|
||
(EXTRA_DIST, MAINTAINERCLEANFILES): Add text form of manual.
|
||
(EXTRA_DIST, MAINTAINERCLEANFILES): Add HTML form of manual.
|
||
(dist-hook): Depend on new (phony) target `dist-info-bits`.
|
||
(dist-info-bits): Look for the info document in the build
|
||
directory, then the source directory. (It could be in either
|
||
place depending on whether the build from a Git working tree is
|
||
being done in or out of a separate build directory.) When
|
||
found, copy the segments to the assembly area for the
|
||
distribution archive.
|
||
(install_infodoc): Refactor. Remove any groff info files from
|
||
the destination info directory using a shell glob directly
|
||
instead of a partly redundant ls(1) command substitution.
|
||
Similarly, use a shell glob to cp(1) the info files (including
|
||
any matched segments) to the destination info directory before
|
||
running `install-info`. (In this process I learned that
|
||
`install-info` doesn't "install" anything; instead, it
|
||
{de-}registers info files with their top-level catalog.)
|
||
|
||
2021-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (.texi.txt, .texi.html): Reorder pattern rules to
|
||
make it clearer which formats require only `makeinfo` and which
|
||
require `texi2dvi`. The latter imposes more build dependencies,
|
||
including a full TeX installation.
|
||
|
||
2021-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[mom]: Build more quietly.
|
||
|
||
* contrib/mom/mom.am (penguin.{ps,.pdf}): Make targets quiet by
|
||
default; they are simple file copies.
|
||
|
||
2021-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Revise a test's setup.
|
||
|
||
* src/roff/groff/tests/fp_should_not_traverse_directories.sh:
|
||
Revise search for device/font description directory to work in
|
||
within-source-tree builds and (for now) with the approach used
|
||
by Automake's "distcheck" target.
|
||
|
||
2021-11-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Accept `\&` as an empty table entry.
|
||
|
||
* src/preproc/tbl/table.cpp (table::add_entry): Suppress
|
||
diagnostic about non-empty table entries classified as `_` or
|
||
`=` if the entry consists of exactly `\&`.
|
||
|
||
* src/preproc/tbl/tbl.1.man (Table data): Document this idiom.
|
||
|
||
2021-11-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Update diagnostic messages.
|
||
|
||
* src/preproc/tbl/main.cpp (process_options, process_format):
|
||
* src/preproc/tbl/table.cpp (table::add_entry): Align diagnostic
|
||
text with terminology now used in tbl(1) man page.
|
||
- "global option" -> "region option"
|
||
- "specifier" -> "column modifier"
|
||
- "format" -> "column classifier"
|
||
|
||
2021-11-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Fix missing colon in diagnostic messages.
|
||
|
||
* src/libs/libgroff/error.cpp (do_error_with_file_and_line):
|
||
Restore missing colon to diagnostic text. Problem introduced by
|
||
me in commit 9a038161, 8 November.
|
||
|
||
2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff,grops]: Slightly refactor.
|
||
|
||
* src/devices/grops/ps.cpp: Explicitly preprocessor-include
|
||
"lib.h" since we use the `PI` symbol it defines.
|
||
|
||
* src/include/lib.h: Add inclusion guard. Wrap only `extern "C"
|
||
and its braces in preprocessor conditionals, so that prototypes
|
||
are present in the header even for C language code that
|
||
#includes this header. Add `static` storage class to `PI`
|
||
symbol to avoid redefinition errors from the linker.
|
||
|
||
* src/libs/libgroff/iftoa.c (if_to_a):
|
||
* src/libs/libgroff/itoa.c (i_to_a, ui_to_a): Add `const` type
|
||
qualifier to function definitions for agreement with prototypes
|
||
in "lib.h". Drop local copies of prototypes.
|
||
|
||
2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Centralize definitions of {U,}INT_DIGITS.
|
||
|
||
* src/libs/libgroff/iftoa.c:
|
||
* src/libs/libgroff/itoa.c: Move definitions of `INT_DIGITS` and
|
||
`UINT_DIGITS` from here...
|
||
* src/include/lib.h: ...to here.
|
||
|
||
* src/libs/libgroff/iftoa.c:
|
||
* src/libs/libgroff/itoa.c: Preprocessor-include "lib.h". This
|
||
revealed missing guards around `extern "C"` declarations, so...
|
||
|
||
* src/include/lib.h: Add them where necessary.
|
||
|
||
2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (OP): Fix code style nits. Don't quote macro
|
||
arguments unnecessarily. Use consistent backslashing. Use
|
||
groff font escape sequence syntax. Use adjustable non-breaking
|
||
space escape sequence instead of a non-adjustable one.
|
||
Parenthesize numeric expression for better readability.
|
||
|
||
2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Make allocator replacement optional. Switch it
|
||
off by default, relying on C++ runtime new/delete support.
|
||
|
||
* configure.ac: Call new `GROFF_USE_GROFF_ALLOCATOR` m4 macro.
|
||
Use `AM_CONDITIONAL` to set Automake variable
|
||
`USE_GROFF_ALLOCATOR` if appropriate. Report whether the
|
||
allocator is used in configure script output summary.
|
||
* m4/groff.m4 (GROFF_USE_GROFF_ALLOCATOR): Define new macro to
|
||
collect user preference. The default is off.
|
||
* src/libs/libgroff/libgroff.am (libgroff_a_SOURCES): Build and
|
||
link new.cpp only if we are to `USE_GROFF_ALLOCATOR`.
|
||
|
||
* NEWS: Add item.
|
||
|
||
2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_TMAC): Report a human-readable message if
|
||
no system tmac prefix is found, instead of leaving the ellipsis
|
||
hanging.
|
||
|
||
2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_TMAC): Use separate shell variable for
|
||
`AC_MSG_RESULT()` content since the human-readable string we
|
||
populate it with in the empty case is not appropriate for later
|
||
`AC_SUBST()`-itution. Problem introduced by me in commit
|
||
19670348, 31 October.
|
||
|
||
2021-11-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am (MOSTLYCLEANFILES): Remove `$(TMACMDOCFILES)`.
|
||
This variable, formerly named `TMACMDOCSTRIPFILES`, should not
|
||
be used in a clean target because its contents are (no longer)
|
||
generated files. Problem introduced by me in commit 24602f42, 4
|
||
July (only noticeable in within-source-tree builds).
|
||
|
||
2021-11-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff,pic]: Check `strdup()` return value.
|
||
|
||
* src/libs/libgroff/font.cpp (struct text_file): Add `fatal()`
|
||
member function.
|
||
(text_file::fatal): Implement it.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load_desc):
|
||
* src/preproc/pic/troff.cpp (troff_output::set_location): Die if
|
||
`strdup()` returned a null pointer.
|
||
|
||
2021-11-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/error.cpp (do_error_with_file_and_line):
|
||
Revise to eliminate `fprintf()` calls, which might perform
|
||
dynamic memory allocation, rendering this function unsafe to
|
||
call after memory allocation failures. Since this function is
|
||
near the top of our diagnostic output call stack, that would be
|
||
unfortunate. `errprint()` does not use dynamic allocation, nor
|
||
do the `i_to_a()` and `ui_to_a()` functions it calls to format
|
||
integers.
|
||
|
||
2021-11-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* configure.ac: Add `strdup` to AC_CHECK_FUNCS since we are
|
||
using it and the whole point of libgroff's `strsave()` was to
|
||
get along without it. But `strdup` has been standardized in
|
||
POSIX for 20 years (SUSv3, POSIX:2001) and is on its way into
|
||
ISO standard C (N2353) and C++ (P2391R0) as well.
|
||
|
||
2021-11-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/strsave.cpp (strsave): Call `strcpy()` only
|
||
if `malloc()` did not return a null pointer. Problem noted by
|
||
Ingo Schwarze.
|
||
|
||
2021-11-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/fontfile.cpp (font::open_file): Don't open
|
||
user-specified font file names with slashes in them; i.e., don't
|
||
traverse directories outside the configured font path. Also
|
||
refuse to open the file if the `sprintf()` used to construct its
|
||
file name doesn't write the expected quantity of bytes to the
|
||
destination buffer.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61424>. Thanks to Ingo
|
||
Schwarze for feedback.
|
||
|
||
2021-11-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Regression-test Savannah #61424.
|
||
|
||
* src/roff/groff/tests/fp_should_not_traverse_directories.sh: Do
|
||
it.
|
||
* src/roff/groff/tests/artifacts/HONEYPOT: Add test artifact.
|
||
* src/roff/groff/tests/artifacts/devascii/README: ...and this;
|
||
we need a directory to make the test work but empty ones tend to
|
||
look unintentional.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
(EXTRA_DIST): Ship artifacts.
|
||
|
||
2021-11-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Fix diagnostic error wording.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Fix diagnostic
|
||
message; this is issued when an unrecognized directive is
|
||
encountered, so it necessarily occurs _before_ any `charset` or
|
||
`kernpairs` directive. Give the user a hint accordingly.
|
||
|
||
2021-11-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Fix paragraph tag regressions.
|
||
|
||
* tmac/an-ext.mac (UR, MR): Only create an environment and
|
||
diversion if we're not already in one of the latter. If we are
|
||
{in groff man, this occurs only when collecting a `TP` paragraph
|
||
tag}, then typeset the URI as part of the indented paragraph.
|
||
(UE, ME): Pop the diversion and environment stacks only if we
|
||
pushed them in the first place. Eliminate spurious space in
|
||
post-URI arguments by only typesetting excess macro parameters
|
||
if there were any.
|
||
|
||
2021-11-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Regression-test Savannah #61425.
|
||
|
||
* tmac/tests/an-ext_link-macros-work-in-paragraph-tags.sh: Do
|
||
it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-11-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (DS): Drop a redundant unconditional break; every
|
||
display macro we call in the event of a valid call already
|
||
breaks the line, and it's polite to not break if we're given an
|
||
invalid argument. Emit a diagnostic error if the argument we're
|
||
given is invalid, and immediately end the diversion we just
|
||
opened.
|
||
|
||
2021-11-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (environment::set_font): Clarify
|
||
diagnostic warning.
|
||
|
||
2021-11-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::add_entry): If we see a '\^'
|
||
entry on the first row of a table, it's invalid, but we need to
|
||
create an empty entry in its place. Otherwise, someone can put
|
||
another '\^' right below the one on the first row, creating a
|
||
reference to a nonexistent table entry and provoking a SEGV.
|
||
Issue an error diagnostic (distinct from the one in
|
||
`do_vspan()`), create the entry, and skip `do_vspan()` (given a
|
||
'^' in a first-row definition, it issues an error diagnostic and
|
||
returns early, which suffices). Problem appears to date back to
|
||
groff 1.02 (June 1991) at the latest.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61417>.
|
||
|
||
2021-11-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Regression-test Savannah #61417.
|
||
|
||
* src/preproc/tbl/tests/\
|
||
do-not-segv-on-invalid-vertical-span-entry.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
2021-11-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Fix Savannah #61408.
|
||
|
||
* tmac/an.tmac (an-prepare-inner-footer): Don't try to get a
|
||
substring of an empty string; the man page author might not have
|
||
specified a third argument to `TH` (or supplied an empty one).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61408>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2021-11-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add regression test for Savannah #61408.
|
||
|
||
* tmac/tests/an_inner-footer-abbreviation-works.sh: Do it.
|
||
|
||
2021-11-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Tweak computation in URI breaking.
|
||
|
||
* tmac/an-ext.tmac (UE, ME): Stop adding the page offset `.o`
|
||
when performing the available horizontal space computation for
|
||
the typeset URI string. This made no difference on nroff
|
||
devices (grotty; even with `.po 15n`), but it caused the
|
||
breaking decision to be too conservative on troff devices
|
||
{grops}, forcing some URIs that would fit on the current line to
|
||
the next one.
|
||
|
||
* tmac/tests/an-ext_UE-breaks-before-long-URIs.sh: Add test of
|
||
URI with no link text, which also has break points after every
|
||
character, so that we detect even slight alterations.
|
||
|
||
2021-11-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Do more device and font description file validation,
|
||
resolve an assertion failure arising from a negative declared
|
||
device resolution, and correct a documentation error.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Include more
|
||
information about invalid input in diagnostic messages.
|
||
- When a kern pair's amount is missing or invalid, report the
|
||
name of the kern pair.
|
||
- When someone tries to declare the first entry in the charset
|
||
section as an alias, report the glyph name.
|
||
- Identify the token for the unnamed character if an attempt
|
||
is made to alias it.
|
||
- When an out-of-range character type is applied to a glyph,
|
||
name the glyph.
|
||
(font::load_desc): Same.
|
||
- Drop redundant zero initialization of `res`.
|
||
- Check all directives that take basic units for positive
|
||
values, adding `res`, `unitwidth`, `paperwidth`, and
|
||
`paperlength`. Update this diagnostic to demand positive,
|
||
not nonnegative, values.
|
||
- When the font count is long in a `fonts` directive, report
|
||
how many font names were declared (and thus expected). (If
|
||
the count is short, the next line is read for a font name,
|
||
like 'tcommand' in our devutf8/DESC.)
|
||
- When interpreting a `papersize` directive, throw an error
|
||
and return false if `res` has not yet been encountered,
|
||
since it is used in subsequent computations.
|
||
- When a paper format cannot be determined, report the
|
||
original declared value from the DESC file. Use `strdup()`
|
||
to save it since it gets clobbered by the resolving process.
|
||
`free()` the saved string when we're done, regardless of
|
||
error condition.
|
||
|
||
* doc/groff.texi (Device and Font Files):
|
||
* man/groff_font.5.man (DESC file format): Document additional
|
||
exception to order-indifference of directives: (at least one)
|
||
`res` must precede `papersize`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61414>.
|
||
|
||
2021-11-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grohtml/post-html.cpp
|
||
(html_printer::do_file_components): Add assertion.
|
||
|
||
2021-11-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grops/ps.cpp (usage): Document -p and --version
|
||
options.
|
||
|
||
2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-nroff (doc-setup-page-layout): Set the title
|
||
length to the device line length (register `.l`) if register
|
||
`LT` is not defined. This keeps the title length from being set
|
||
to 78n when the line length is not, preventing the output from
|
||
looking silly.
|
||
|
||
2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (main): Emit groff code to define
|
||
macro `T&` as empty if it is not already defined. (All of our
|
||
full-service macro packages [except mdoc(7)] already do this, so
|
||
there's no change in semantics; mom(7) even defines it as an
|
||
empty _string_.)
|
||
|
||
2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/string_case_xform_requests.sh: Migrate
|
||
test to POSIX shell, dropping use of process substitution (a
|
||
Bashism). Also rewrite to stop using a here document within a
|
||
command substitution, mainly for paranoia.
|
||
|
||
* src/roff/groff/tests/string_case_xform_requests.sh:
|
||
* src/roff/groff/tests/on_latin1_device_oq_is_0x27.sh: Update
|
||
shebang lines to use /bin/sh as the interpreter.
|
||
|
||
2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grops/ps.cpp (encode_subfont): Update assertion to
|
||
check for `sub` parameter being a null pointer rather than
|
||
`sub->glyphs`; the latter is a member array of a `subencoding`
|
||
struct so it can't be a null pointer. (`glyphs` is an array of
|
||
pointers to `const char`; the _elements_ of the array can [and
|
||
are initialized to] be null pointers, but the address of the
|
||
array itself will never be in a C/C++ implementation.) Detected
|
||
by Clang 13's "-Wtautological-pointer-compare".
|
||
|
||
2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/new.cpp (delete): Declare `throw()` (no
|
||
exceptions thrown); quiets "-Wimplicit-exception-spec-mismatch"
|
||
from Clang 13.
|
||
|
||
2021-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4: Fix messaging nits.
|
||
(GROFF_MAKEINFO): Set `missing` to "missing 'makeinfo'" for
|
||
consistency with other assignments to `missing`.
|
||
(GROFF_TMAC): Utter an intelligible result in the configure
|
||
check when no system macro files requiring groff wrapping are
|
||
located.
|
||
|
||
2021-10-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Handle special character escape sequences that map to
|
||
basic Latin glyphs in device control escape sequences
|
||
consistently among output devices.
|
||
|
||
* src/roff/troff/input.cpp (encode_char): Rearrange
|
||
conditionals. This is the logic that puts the "whatever" within
|
||
a \X'whatever' escape sequence into GNU troff's intermediate
|
||
output. Handle adjustable and nonadjustable space escape
|
||
sequences ("\~" and \ ") first. Then, if the token is a special
|
||
character escape sequence, retrieve its "contents" (glyph name).
|
||
Move the basic Latin mapping for the seven glyph names '-',
|
||
'aq', 'dq', 'ga', 'ha', 'rs', and 'ti' here, before checking
|
||
whether the device description issued the
|
||
'use_charnames_in_special' directive. This way, the 'html' and
|
||
'xhtml' output devices can straightforwardly embed these basic
|
||
Latin characters in device control escapes (notably, "html:",
|
||
for which the present convention is to follow the this tag
|
||
immediately with a literal HTML URI, complete with `<a href>`
|
||
element syntax). If the special character is none of these and
|
||
we should 'use_charnames_in_special', proceed as groff 1.22.4
|
||
and earlier did. This is a behavior change, as was my addition
|
||
of this translation mechanism in the first place, so...
|
||
|
||
* doc/groff.texi (Postprocessor Access): Document it.
|
||
|
||
* src/roff/groff/tests/\
|
||
device_control_escapes_express_basic_latin.sh: Test it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61401>.
|
||
|
||
2021-10-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Map \[ti] correctly in device control escape sequences.
|
||
|
||
* src/roff/troff/input.cpp (encode_char): Fix copy-and-paste
|
||
error. \[ti] should put '~', not '^', into a device control
|
||
command.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61403>; problem introduced
|
||
by me in commit 9d61b3d1, 1 October.
|
||
|
||
2021-10-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Handle degenerate input quietly.
|
||
|
||
* tmac/an.tmac (TH): Define new register `an-TH-was-called`.
|
||
(an-end): Return immediately if that register is not defined;
|
||
to format the default page footer we must have the information
|
||
declared in a valid `TH` call. (`TH` also initializes the type
|
||
size and baseline spacing registers we use to prepare the page
|
||
footer environment.) If the register _is_ defined, remove it
|
||
just prior to the end of this macro definition, in preparation
|
||
for next page to be rendered.
|
||
|
||
* tmac/tests/an_handle-degenerate-input-quietly.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/61402>, a regression from
|
||
groff 1.22.4 (problem introduced by me in the course of many
|
||
changes to trap management and header/footer handling to work
|
||
nicely in batch rendering with -mandoc and mdoc(7) documents).
|
||
|
||
2021-10-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Warn if `TE` table macro called but `TW` register (set by
|
||
tbl(1)) undefined. Arrange it so that we warn only once per
|
||
man(7) document, not per table region.
|
||
|
||
* tmac/an.tmac (TH): Remove `TW` register when processing new
|
||
document and clear `an-was-tbl-failure-reported` register.
|
||
(TE): Check `TW` and `an-was-tbl-failure-reported` registers; if
|
||
the former is undefined and the latter false, emit the message
|
||
and set `an-was-tbl-failure-reported`.
|
||
|
||
Addresses part of <https://savannah.gnu.org/bugs/?61379>.
|
||
Thanks to Bjarni Ingi Gislason for the suggestion.
|
||
|
||
2021-10-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Improve portability.
|
||
|
||
* src/devices/grotty/tests/osc8_works.sh: Fix typo in test.
|
||
Multiple regex quantifiers after an atom were not flagged with a
|
||
diagnostic by GNU grep 3.3, but were by BSD grep 2.5.1-FreeBSD.
|
||
|
||
* src/roff/groff/tests/smoke-test_html_device.sh: Stop trying to
|
||
set $LC_CTYPE to "C.UTF-8"; some systems don't support this
|
||
expediency. Skip the test if the tester hasn't configured the
|
||
environment adequately.
|
||
|
||
* tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Fix
|
||
portability problems exposed by FreeBSD sed (which version is
|
||
unclear). {1} Use POSIX BREs, dropping use of '+' quantifier.
|
||
{2} Add semicolons to terminate commands before braces on the
|
||
same line. Simplify surrounding test structure.
|
||
* tmac/tests/e_footnotes-work-with-columns.sh: Fix same two sed
|
||
problems.
|
||
* tmac/tests/andoc_flush-between-packages.sh:
|
||
* tmac/tests/doc_accept-mixed-case-section-headings.sh:
|
||
* tmac/tests/an_TS-do-not-keep-tables-when-cR-set.sh: Fix same
|
||
sed semicolon problem.
|
||
|
||
* src/roff/groff/tests/on_latin1_device_oq_is_0x27.sh: Rewrite
|
||
test to stop using a here document (containing an unpaired
|
||
single quote) inside a command substitution, which is broken in
|
||
GNU Bash 3.2 and some other versions. Instead construct the
|
||
input with printf(1). Also gets rid of a Bashism (process
|
||
substitution) that Ingo pointed out years ago.
|
||
* src/utils/grog/tests/recognize-perl-pod.sh: Same problem,
|
||
different solution. The Perl POD output is far too large to
|
||
construct programmatically, so move it into an external file...
|
||
* src/utils/grog/tests/foo.man: ...here.
|
||
* src/utils/grog/grog.am (EXTRA_DIST): Ship new test artifact.
|
||
|
||
2021-10-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Make sed-based insertion of `lf` requests more
|
||
portable: a dance is required to embed a literal newline inside
|
||
a sed expression inside a shell command executed as part of a
|
||
Make target rule. We assume that neither the POSIX shell $''
|
||
operator nor a working printf(1) is available.
|
||
(DOC_GROFF): Define a shell variable containing a literal
|
||
newline, evading make(1) and echo(1)'s valiant attempts to
|
||
consume it.
|
||
(doc/pic.html, doc/webpage.html): Repeat trick, slightly
|
||
modified since the dependency needs to be manually identified.
|
||
|
||
Solution adapted from the GNU Autoconf manual, "Newlines in Make
|
||
Rules".
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61265>. Thanks to John
|
||
Gardner for the report.
|
||
|
||
2021-10-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (TH): Stop populating `an-extra3` (the default
|
||
center header) if the section argument is "3p". "3p" does not
|
||
always mean a Perl-related man page; Debian- and Arch
|
||
Linux-based systems[1][2] (at least) have long used a "3perl"
|
||
suffix, while OpenBSD appears to still use "3p" for Perl[3],
|
||
which is also used by the POSIX man page distribution[4].
|
||
Fortunately, Perl and POSIX are reliable at providing a fifth
|
||
argument to `TH` anyway, so our fallback is as unnecessary as it
|
||
is non-impartial.
|
||
* tmac/groff_man.7.man.in (Document structure macros) <TH>:
|
||
De-document the above behavior.
|
||
|
||
[1] https://manpages.debian.org/bullseye/perl-doc/\
|
||
Pod::Man.3perl.en.html
|
||
[2] https://man.archlinux.org/man/Pod::Man.3perl
|
||
[3] https://man.openbsd.org/man3p/Pod::Man.3p
|
||
[4] https://man7.org/linux/man-pages/man3/system.3p.html
|
||
|
||
2021-10-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Abbreviate the inside footer if necessary.
|
||
|
||
* tmac/an.tmac (an-prepare-inner-footer): Prevent the inside
|
||
footer from overrunning the center footer.
|
||
(BT): Use new string `an-ifoot` instead of `an-extra2` in page
|
||
footers.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61386>.
|
||
|
||
2021-10-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #61386.
|
||
|
||
* tmac/tests/an_inner-footer-abbreviation-works.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-10-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff_char.7.man (Description, Special character escape
|
||
forms): Document the `\C` escape sequence. Fix error: \[a] is
|
||
_not_ "translated to \a, the uninterpreted leader escape
|
||
sequence," but requests a glyph _named_ '\a' internally--it
|
||
appears thus in diagnostic messages and, importantly, in the
|
||
font description files defining special character glyph names.
|
||
|
||
2021-10-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac: Refactor to reduce repetition.
|
||
(an-break-paragraph): New macro handles paragraph-breaking tasks
|
||
previously duplicated.
|
||
(SH, SS, P, TP, IP, HP): Call it rather than issuing its
|
||
constituent requests.
|
||
|
||
2021-10-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (TP): Reset type size, vertical spacing, and font
|
||
to defaults before setting the new paragraph.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61380>.
|
||
|
||
2021-10-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Auto-increment): Fix error; the `\R` escape
|
||
sequence does _not_ support an auto-incrementation amount.
|
||
* man/groff_out.5.man (Command reference/Simple commands): Fix
|
||
erroneous claim: 'N' is not a GNU roff extension; it appears on
|
||
page 27 of CSTR#54 (1992).
|
||
|
||
2021-10-24 Keith Marshall <keith.d.marshall@ntlworld.com>
|
||
|
||
[ms]: Provide global default XH and XN implementations.
|
||
|
||
cf. <https://savannah.gnu.org/bugs/?58946#comment13>
|
||
|
||
* tmac/s.tmac (XH-INIT, XN-INIT, XH-UPDATE-TOC)
|
||
(XH, XN, XH-REPLACEMENT, XN-REPLACEMENT): Implement them, and...
|
||
* tmac/groff_ms.7.man: ...document them.
|
||
|
||
2021-10-24 Keith Marshall <keith.d.marshall@ntlworld.com>
|
||
|
||
[ms]: Fix misleading NH macro indentation.
|
||
|
||
* tmac/s.tmac (@NH) [.T is html]: .if statement should exhibit
|
||
same indentation as preceding .DEVTAG-NH statement, but is
|
||
overindented; fix it.
|
||
|
||
2021-10-23 Keith Marshall <keith.d.marshall@ntlworld.com>
|
||
|
||
[ms]: Defend against uncontrolled page trap recursion.
|
||
|
||
* tmac/s.tmac (pg@top) [HM+FM+.V>.p]: Diagnose insufficient page
|
||
length, and abort; cf. <https://savannah.gnu.org/bugs/?61294>
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[groff]: Fix code style nits.
|
||
|
||
* src/roff/groff/groff.cpp (main, help): Use standard C library
|
||
preprocessor symbols `EXIT_SUCCESS` and `EXIT_FAILURE` instead
|
||
of 0 and 1 literals, respectively. See commit fa4c27e9, 7
|
||
September.
|
||
(main): Replace `assert(0)` with a communicative predicate.
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grotty/tty.cpp (tty_printer::special_link):
|
||
Eliminate casts by retyping `uri` and `pair` to pointers to
|
||
`const char`s.
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am: Build more quietly.
|
||
(tmac/stamp-wrap): Prefix all rule commands with `$(AM_V_at)`;
|
||
since this target is a stamp file instead of a useful artifact
|
||
to be distributed, make its creation completely silent by
|
||
default.
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/troff.am: Build more robustly.
|
||
(src/roff/troff/majorminor.cpp): Drop progress-reporting `echo`
|
||
in favor of prefixing final rule command with `$(AM_V_GEN)`.
|
||
Prefix earlier rule commands with `$(AM_V_at)`. Use `printf`
|
||
instead of `echo` to build the file, and create a temporary file
|
||
at first so that we don't race with the compiler on parallelized
|
||
builds.
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/eqn.am (neqn): Simplify: drop removal of
|
||
target prior to overwriting it; any system we can build groff on
|
||
should have a shell that implements the clobbering semantics of
|
||
the POSIX shell '>' operator. (If this isn't true, we have
|
||
_many_ other target rules in our build to which we must add
|
||
prefatory `$(RM)`s, or I miss my guess.)
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/libgroff.am: Build more quietly and
|
||
robustly.
|
||
(src/libs/libgroff/version.cpp): Drop progress-reporting `echo`
|
||
in favor of prefixing final rule command with `$(AM_V_GEN)`.
|
||
Prefix earlier rule commands with `$(AM_V_at)`. Use `printf`
|
||
instead of `echo` to build the file, and create a temporary file
|
||
at first so that we don't race with the compiler on parallelized
|
||
builds. Drop nilpotent sed transformation; this looks like a
|
||
relic of past times when we'd drop a trailing ".0" from the
|
||
version number stored in the C symbol `Version_string`.
|
||
(charset.alias, ref-del.sed, ref-add.sed): Prefix rule command
|
||
with `$(AM_V_GEN)`.
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/xditview/xditview.am: Build more quietly.
|
||
(src/devices/xditview/GXditview-ad.h): Drop progress-reporting
|
||
`echo` in favor of prefixing rule command with `$(AM_V_GEN)`.
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/devpdf.am: Build more quietly.
|
||
(font/devpdf/enc/text.enc, font/devpdf/map/symbolmap,
|
||
$(DEVPDFFONTMAP_1)): Prefix all rule commands with
|
||
`$(AM_V_at)`; since these are all `mkdir`s and `cp`s, I reason
|
||
that little can go wrong with them that won't be disclosed by
|
||
these tools' own diagnostic messages, so they are insignificant
|
||
from a perspective of build progress.
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Build more quietly.
|
||
(doc/examples.stamp): Prefix all rule commands with
|
||
`$(AM_V_at)`; since this target is a stamp file instead of
|
||
a useful artifact to be distributed, make its creation
|
||
completely silent by default.
|
||
(doc/groff.info, .texi.txt): Prefix directory creation with
|
||
`$(AM_V_at)` and `makeinfo` command with `$(AM_V_GEN)`.
|
||
(.texi.dvi, .texi.pdf): Prefix directory creation with
|
||
`$(AM_V_at)` and `makeinfo` command with `$(AM_V_GEN)`. Send
|
||
diagnostic message to standard error if `texi2dvi` is
|
||
unavailable.
|
||
(.texi.html): Prefix directory creation with
|
||
`$(AM_V_at)`. Two HTML versions are produced, in split and
|
||
unsplit versions; prefix one `makeinfo` command with
|
||
`$(AM_V_GEN)` and the other with `$(AM_V_at)` so that only one
|
||
message is produced.
|
||
(gnu.eps): Drop useless/noisy `echo` command. Prefix copy
|
||
operation with `$(AM_V_at)`. Send diagnostic messages to
|
||
standard error if there are problems with the Netpbm tools.
|
||
|
||
(MOSTLYCLEANFILES): The `mostlyclean` target was leaving a file,
|
||
`groff.info-3`, behind in the build tree. At some point our
|
||
Texinfo manual grew beyond earlier expectations. Use a glob
|
||
`[0-9]` instead (giving a hostage to fortune that `makeinfo`
|
||
will never split our manual into more than nine chunks).
|
||
|
||
2021-10-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* arch/misc/misc.am:
|
||
(arch_shdeps_sh): Pull file name into a new variable.
|
||
(EXTRA_DIST, shdeps.sed): Use it.
|
||
(shdeps.sed): Build more quietly; prefix with `$(AM_GEN_V)`.
|
||
|
||
2021-10-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[nroff]: Support groff's -R flag to run refer(1).
|
||
|
||
There's no reason not to support calling `refer` with nroff-mode
|
||
documents; typographically, it's less demanding than tbl(1).
|
||
GNU troff(1) supports an incompatible `-R` flag to suppress the
|
||
reading of troffrc{,-end} files, but this is likely not the `-R`
|
||
that users will want--it is most useful for troubleshooting
|
||
troff, and nroff already unconditionally loads a macro file
|
||
{tty-char.tmac}.
|
||
|
||
* src/roff/nroff/nroff.sh: Do it.
|
||
|
||
* src/roff/nroff/nroff.1.man:
|
||
* NEWS: Document it.
|
||
|
||
2021-10-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am (tmac/groff_man.7.man)
|
||
(tmac/groff_man_style.7.man): Be quieter by default; use
|
||
$(AM_V_GEN) more consistently with the rest of the build.
|
||
|
||
2021-10-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_error): Format diagnostic
|
||
messages in closer alignment with GNU Coding Standards: don't
|
||
introduce a space between the program name and the input file
|
||
name.
|
||
|
||
* src/roff/groff/tests/string_case_xform_errors.sh: Update
|
||
expected output.
|
||
|
||
2021-10-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (distribute_space): Revert an
|
||
`assert()` I added in commit b93eacd8d7 (5 September); we can
|
||
indeed reach this code with a negative amount of desired space,
|
||
and in fact the "show hyphenation points" trick
|
||
<https://froude.eu/groff/examples/hyphenation-points.html>
|
||
relies upon it. Add explanatory comment.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61348>.
|
||
|
||
2021-10-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* test-groff.in: Add support for sboxes.tmac.
|
||
|
||
2021-10-11 Paul Eggert <eggert@cs.ucla.edu>
|
||
|
||
Include <config.h> before any standard headers.
|
||
|
||
Gnulib requires that files that might use Gnulib features (which
|
||
pretty much means every C or C++ source file) must include
|
||
<config.h> first. Arrange for that. This will be needed once
|
||
Groff updates to the latest Gnulib; see Bjarni Ingi Gislason's
|
||
problem report in:
|
||
<https://lists.gnu.org/r/bug-gnulib/2021-10/msg00008.html>
|
||
|
||
The only exception I can see is src/utils/addftinfo/guess.cpp,
|
||
which does not include any standard include file either directly
|
||
or indirectly, and so need not include <config.h>.
|
||
|
||
* src/devices/xditview/Dvi.c:
|
||
* src/devices/xditview/font.c:
|
||
* src/devices/xditview/lex.c:
|
||
* src/devices/xditview/page.c:
|
||
* src/devices/xditview/parse.c:
|
||
* src/libs/libbib/map.c:
|
||
* src/libs/libgroff/change_lf.cpp:
|
||
* src/libs/libgroff/cmap.cpp:
|
||
* src/libs/libgroff/cset.cpp:
|
||
* src/libs/libgroff/fmod.c:
|
||
* src/libs/libgroff/getcwd.c:
|
||
* src/libs/libgroff/lf.cpp:
|
||
* src/libs/libgroff/ptable.cpp:
|
||
* src/libs/libgroff/quotearg.c:
|
||
* src/libs/libxutil/DviChar.c:
|
||
* src/libs/libxutil/XFontName.c:
|
||
* src/libs/libxutil/xmalloc.c:
|
||
* src/utils/indxbib/signal.c: Do it.
|
||
|
||
[Fixes <https://savannah.gnu.org/bugs/?61315>. --GBR]
|
||
|
||
2021-10-10 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Handle pdfs > v1.4 loaded by \X'pdf: pdfpic'.
|
||
|
||
* src/devices/gropdf/gropdf.pl: Improve loading of pdfs above
|
||
version 1.4, i.e. handle compressed nodes in /ObjStm. Also
|
||
improve code in \X'pdf: import'.
|
||
|
||
2021-10-10 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Add new background boxes to gropdf.
|
||
|
||
* src/devices/gropdf/gropdf.pl: New \X'pdf: background' command.
|
||
* tmac/pdf.tmac: Covenience command .pdfbackground added.
|
||
* contrib/sboxes/: Files which demonstrate use of background
|
||
boxes using -ms macros.
|
||
|
||
2021-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Fix portability problems in 2 tests.
|
||
|
||
* src/roff/groff/tests/break_zero-length_output_line_sanely.sh:
|
||
* tmac/tests/s_PN-works.sh: Migrate from `echo` to `printf` for
|
||
test inputs containing backslashes to be interpreted literally.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?61302>. Thanks to
|
||
Deri James for identifying the problem.
|
||
|
||
2021-10-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grotty]: Slightly refactor.
|
||
|
||
* src/devices/grotty/tty.cpp: Boolify. Demote numerous
|
||
variables (and one return type) from `int` to `bool`, use
|
||
Boolean instead of integer literals with them, and give the
|
||
variables names resembling logical predicates.
|
||
- horizontal_tab_flag -> want_horizontal_tabs
|
||
- form_feed_flag -> want_form_feeds
|
||
- bold_flag_option -> want_emboldening_by_overstriking
|
||
- bold_flag -> do_bold
|
||
- underline_flag_option -> want_italics_by_underlining
|
||
- underline_flag -> do_underline
|
||
- overstrike_flag -> want_glyph_composition_by_overstriking
|
||
- draw_flag -> allow_drawing_commands
|
||
- italic_flag_option -> want_sgr_italics
|
||
- italic_flag -> do_sgr_italics
|
||
- reverse_flag_option -> want_reverse_video_for_italics
|
||
- reverse_flag -> do_reverse_video
|
||
- old_drawing_scheme -> use_overstriking_drawing_scheme
|
||
(class tty_printer:printer): Similarly.
|
||
- is_underline -> is_underlining
|
||
- is_bold -> is_boldfacing
|
||
- cu_flag -> is_continuously_underlining
|
||
(tty_printer::tty_color): Demote return type as above. Invert
|
||
its sense; rename `unknown_color` to `is_known_color`.
|
||
(tty_printer::color_to_idx): Invert sense of test at
|
||
`tty_color()` call site.
|
||
|
||
2021-10-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Finish documenting new `TC-MARGIN` register and
|
||
`TC-LEADER` special character.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61157>.
|
||
|
||
2021-10-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grotty]: Slightly refactor.
|
||
|
||
* src/devices/grotty/tty.cpp (tty_printer::special_link): Use
|
||
consistent loop styles and drop unnecessary arithmetic.
|
||
|
||
2021-10-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Fix oversight and improve `MR` test.
|
||
|
||
* tmac/an-ext.tmac (initialization): Enable `mY` register to
|
||
indicate use of grotty(1) (and therefore OSC 8 support) if the
|
||
"ascii", "cp1047", or "latin1" output devices are used, not just
|
||
"utf8".
|
||
|
||
* tmac/tests/an_MR-works.sh: Drop copy-and-paste cruft from a
|
||
different test. Update expected output and check for the
|
||
presence of "link" device control subcommands, not just correct
|
||
font selections.
|
||
|
||
2021-10-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add `MR` macro for man page cross references.
|
||
|
||
* tmac/an.tmac (an-prepare-page-title): After a possibly
|
||
abbreviated man page title is determined, redefine `an-pageref`
|
||
to set the title portion in the font stored in the `MF` string
|
||
and bracket it with italic corrections if that font is thought
|
||
to be oblique.
|
||
(MR): Add macro to format the text of a man page cross
|
||
reference, and hyperlink it on HTML and terminal output devices
|
||
if permitted by the `U` register.
|
||
(initialization): Define `MF` string as `I` if not already set.
|
||
Define `an-lic` and `an-ic` strings as either empty or as
|
||
containing italic corrections.
|
||
|
||
* tmac/an-ext.tmac (MR): If the formatter is not GNU troff,
|
||
define macro to format the text of a man page cross reference.
|
||
|
||
* tmac/groff_man.7.man.in: Document it.
|
||
(Description): Add macro to summary table.
|
||
(Description/Hyperlink macros): Document new feature. Note
|
||
origin in Plan 9 troff. [style] Add examples of use.
|
||
(Description/Font style macros): Drop man page cross references
|
||
from list of items whose typeface conventions are disputed,
|
||
since we have a semantic macro now and a configurable means of
|
||
resolving the problem.
|
||
(History): Add `MR` item.
|
||
(Options) <MF>: Document new string.
|
||
(Files) <an-ext.tmac>: Revise discussion to accommodate `MR`.
|
||
(Authors): Add myself an author of extension macros.
|
||
|
||
* tmac/tests/an_MR-works.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
* NEWS: Add item.
|
||
|
||
2021-10-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (SH, SS): Invoke `ne` request _before_ performing
|
||
font remapping: any page-breaking decision will be taken before
|
||
the remapping happens, and so won't be in effect across a page
|
||
boundary, undesirably impacting header and footer text.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61279>.
|
||
|
||
2021-10-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Regression-test Savannah #61279.
|
||
|
||
* tmac/tests/an_font-remapping-does-not-affect-titles.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-10-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (an-abbreviate-title): Rename to...
|
||
(an-prepare-page-title): ...this.
|
||
|
||
2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Correct erroneous claim: the ".NH S" extension to ms(7)
|
||
comes from 4.2BSD, not GNU.
|
||
|
||
2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/ms.ms (Creating a table of contents): Sync with recent
|
||
additions to groff_ms(7), expand, and heavily revise.
|
||
|
||
2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[andoc,man,mdoc]: Fix Savannah #61266. Resolve problems in
|
||
batch rendering of man pages to PDF arising from entanglement
|
||
of end-of-input traps, page location traps, continuous rendering
|
||
mode, and andoc's reloading of the (m)an and (m)doc packages.
|
||
|
||
* tmac/andoc.tmac (reload-doc, reload-man): Remove end-of-input
|
||
traps alongside others.
|
||
|
||
* tmac/an.tmac (an-end): Only perform flush and "manual" page
|
||
footer placement if in continuous rendering mode, since this
|
||
macro is not only called by a trap placed only in continuous
|
||
rendering mode, but also by andoc when changing macro packages.
|
||
Unconditionally remove the `an-header` trap since the next
|
||
document might be using a different macro package.
|
||
|
||
* tmac/mdoc/doc-common: In initialization, set flag indicating
|
||
that manual header placement will be required.
|
||
(Dt): Call `doc-setup-header` (which sets up several types of
|
||
trap) unconditionally, and break the page if the vertical
|
||
drawing position is anywhere but at the top.
|
||
(Os): If the package has just been initialized, call
|
||
`doc-header` to force the page header to be written.
|
||
(doc-end-macro): Remove `doc-header` trap since the next
|
||
document might be using a different macro package. Break the
|
||
page. Set flag indicating that manual header placement will be
|
||
required for the next document.
|
||
|
||
* tmac/mdoc/doc-ditroff (doc-setup-header): Only set page
|
||
location traps for the header and footer if not continuously
|
||
rendering.
|
||
* tmac/mdoc/doc-nroff (doc-setup-header): Stop calling
|
||
`doc-header` here if continuously rendering. Emit an
|
||
unconditional break. Except for the location of the footer
|
||
trap, the `doc-setup-header` implementations are now identical.
|
||
|
||
Refactoring is needed: some macros and registers have misleading
|
||
names, there is some code duplication in mdoc, and some of the
|
||
trap management problems are solved in slightly different ways
|
||
in man(7) and mdoc(7), perhaps unnecessarily. We also need some
|
||
test scripts to protect us from regressions. But this fixes the
|
||
rendering problems.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61266>.
|
||
|
||
2021-10-02 Keith Marshall <keith.d.marshall@ntlworld.com>
|
||
|
||
Correct manpage typo/inconsistency.
|
||
|
||
* tmac/groff_ms.7.man (TC_LEADER, TC_MARGIN): Correct; should
|
||
be...
|
||
(TC\-LEADER, TC\-MARGIN): ...respectively, for consistency
|
||
with...
|
||
* tmac/s.tmac (TC-LEADER, TC-MARGIN): ...these.
|
||
|
||
2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (encode_char): Update diagnostic
|
||
messages to not presume the identity of the escape character;
|
||
continues 9be3f8e3 (4 June).
|
||
|
||
2021-10-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grotty/tty.cpp (tty_printer:special_link): Tighten
|
||
code slightly by taking advantage of preprocessor string literal
|
||
concatenation.
|
||
|
||
2021-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Fix `U` enablement override so it actually works the way
|
||
I had in mind.
|
||
- The package proper enables it by default, but
|
||
- the sample site configuration file switches it off, on the
|
||
assumption that distributors and users will know better than
|
||
we do when they get a capable pager in place, and
|
||
- a register setting at the command line (or otherwise prior to
|
||
the loading of the macro package) is dispositive.
|
||
|
||
* tmac/an-ext.tmac: Rename URI output device capability register
|
||
from `U` to `mU`.
|
||
(UR, UE, MT, ME): Test both `U` and `mU` before handling
|
||
hyperlinks specially.
|
||
* tmac/an.tmac: If `man.local` did not initialize `U`, switch it
|
||
on. The hope is that we can drop the stuff in `man.local`
|
||
completely at some point.
|
||
* tman/man.local: Only initialize `U` if it is not already
|
||
defined.
|
||
|
||
2021-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Use OSC 8 hyperlinks.
|
||
|
||
* tmac/an-ext.tmac: Add registers `mY` (output driver is
|
||
"grotty") and `U` (generate hyperlinks). `U` is intended to
|
||
apply to hyperlinking support in general, not just grotty's OSC
|
||
8 feature. If the output driver is either grohtml or grotty,
|
||
make `U` true (`man.local` is read subsequently and can override
|
||
it).
|
||
(UR, MT): Conditionalize diversion production on hyperlink
|
||
support, not grohtml use per se.
|
||
(UE, ME): Generate device control commands for `tty` device to
|
||
emit hyperlinks.
|
||
|
||
* tmac/groff_man.7.man.in (Options): Document -rU.
|
||
(Files) [style]: Add example of `U` register enablement.
|
||
|
||
* tmac/man.local: Disable `U` register by default, except on the
|
||
`html` device.
|
||
|
||
* NEWS: Add item.
|
||
|
||
2021-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grotty]: Add OSC 8 hyperlink support.
|
||
|
||
* src/devices/grotty/tty.cpp: Do it. Define `OSC` (Operating
|
||
System Command) and `ST` (String Terminator) preprocessor
|
||
symbols for these ECMA-48 (ISO 6429) character sequences.
|
||
(tty_printer::simple_add_char): Add stripped-down alternative to
|
||
`add_char()` member function for cases where we want to use many
|
||
defaults because we're writing a terminal escape sequence, not
|
||
rendering a glyph. (A function like `add_char()` that takes 8
|
||
arguments of varying types is a code smell--phew!)
|
||
(tty_printer::special): Call `special_link()` member function if
|
||
the device control command is `link`.
|
||
(tty_printer::special_link): Add new member function to generate
|
||
OSC 8 hyperlinks.
|
||
|
||
* src/devices/grotty/grotty.1.man: Document it. Observe in
|
||
multiple places that disablement of SGR escape sequences
|
||
disables OSC 8 too.
|
||
|
||
* src/devices/grotty/tests/osc8_works.sh: Test it.
|
||
* src/devices/grotty/grotty.am (TESTS, grotty_TESTS): Run test.
|
||
(EXTRA_DIST): Ship test.
|
||
|
||
* NEWS: Add item.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60666>. Thanks to Steffen
|
||
Nurpmeso for supplying a proof-of-concept. (I went with my own
|
||
implementation, though, so blame me if it breaks.)
|
||
|
||
2021-10-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Convert special character glyphs corresponding to
|
||
Unicode Basic Latin ("ASCII") code points to those code points
|
||
when they occur in device escapes. (They should be correct for
|
||
IBM code page 1047 as well, but this is untested.) This is
|
||
necessary for encoding URLs in device control commands. Special
|
||
character identifiers are presumed to be the defaults documented
|
||
in groff_char(7); this is a design gap that we should consider
|
||
addressing. (We don't have a way to ask "is this the special
|
||
character corresponding to Unicode basic Latin code point X?")
|
||
|
||
* src/roff/troff/input.cpp (encode_char): Do it.
|
||
|
||
2021-09-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man, mdoc]: Draw line after each page more consistently in
|
||
continuous rendering mode.
|
||
|
||
* tmac/an.tmac (an-bp): Move responsibility for line-drawing
|
||
after each document from here...
|
||
(an-end): ...to here. Refactor; drop
|
||
`an-do-draw-line-after-document` register in favor of testing
|
||
`\n[.F]` for nullity; if it is not null, then another document
|
||
is due to be processed (in fact, `.F` already contains its file
|
||
name), and we need to draw a separating line. If it is null, we
|
||
have reached the end of input and none is necessary.
|
||
|
||
* tmac/mdoc/doc-ditroff.tmac (doc-setup-page-layout):
|
||
* tmac/mdoc/doc-nroff.tmac (doc-setup-page-layout): Save
|
||
configured line length in new register `doc-line-length`.
|
||
* tmac/mdoc/doc-common.tmac (doc-end-macro): Port the above
|
||
man(7) feature to mdoc(7); draw a line of this length after each
|
||
document if continuously rendering.
|
||
|
||
2021-10-01 Keith Marshall <keith.d.marshall@ntlworld.com>
|
||
|
||
[ms]: Update footnote handling documentation.
|
||
|
||
* tmac/groff_ms.7.man: Make some linguistic style adjustments.
|
||
(FP): Document it; see <https://savannah.gnu.org/bugs/?61022>.
|
||
(FS-MARK): Likewise, document this recently added feature.
|
||
|
||
2021-10-01 Keith Marshall <keith.d.marshall@ntlworld.com>
|
||
|
||
[ms]: Support user-defined TOC leader style.
|
||
|
||
* tmac/s.tmac (toc*leader-char): Rename it as...
|
||
(TC-LEADER): ...this; within PX, leave it unchanged, if
|
||
predefined.
|
||
(TC-MARGIN): New numeric register; if predefined, leave it
|
||
unchanged, otherwise define as \w'000'; use it instead of
|
||
hard-wired definition, within PX; see
|
||
<https://savannah.gnu.org/bugs/?61157>.
|
||
|
||
* tmac/groff_ms.7.man (TC-LEADER, TC-MARGIN): Document them.
|
||
|
||
2021-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[pic]: Update input file name correctly.
|
||
|
||
* src/preproc/pic/troff.cpp (troff_output::set_location): Copy
|
||
the inbound file name argument with `strdup()` and store pointer
|
||
to this copy in `last_filename` instead of aliasing argument.
|
||
(troff_output::~troff_output): `free()` the memory allocated by
|
||
`strdup()` in destructor.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61206>. Pointer
|
||
assignment instead of a string copy was being performed, which
|
||
means that after its initial assignment, `last_filename` always
|
||
shared its value ultimately with the `current_filename` pointer
|
||
{a libgroff symbol}, so `strcmp()` was always being performed on
|
||
identical pointers. Problem appears to date back 30+ years, to
|
||
the dawn of our repo history.
|
||
|
||
2021-09-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devlj4/S: Make font name consistent with file name.
|
||
|
||
2021-09-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Throw error if a font
|
||
description file is missing a `spacewidth` directive, since it
|
||
is now re-documented as mandatory. Atypically, we don't return
|
||
false in this scenario; instead we proceed with the existing
|
||
logic to compute a space width for the font based on typical
|
||
practices for Western alphabetic fonts (see, e.g.,
|
||
<https://type.today/en/journal/spaces>.
|
||
|
||
* font/devdvi/EX:
|
||
* font/devdvi/MI:
|
||
* font/devdvi/S:
|
||
* font/devdvi/SA:
|
||
* font/devps/EURO: Add `spacewidth` directive to font
|
||
description files we ship that were missing it. We use the same
|
||
values that libgroff would have computed, so there should be no
|
||
visible difference.
|
||
|
||
2021-09-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* Makefile.am: Mark `$(TEST_SUITE_LOG)` as `.PRECIOUS`. This
|
||
prevents the test suite log from being deleted if there are any
|
||
failures.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61213>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl (do_line): Move first-macro-call test
|
||
for `TH` to a more appropriate location.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Refactor to make it easier to generalize a per-package
|
||
scoring mechanism.
|
||
|
||
* src/utils/grog/grog.pl: Convert `inferred_main_package` from
|
||
scalar to list. Add scalar `selected_main_package` to store a
|
||
"winner" from the list of main packages inferred.
|
||
(push_main_package): Add subroutine to populate
|
||
`inferred_main_package`.
|
||
(do_line, infer_man_or_ms_package): Update to use
|
||
`push_main_package`.
|
||
(construct_command): Rewrite to select a main package from the
|
||
list `inferred_main_package`, taking user-supplied arguments
|
||
into account as an overriding factor. Drop now-unused `msupp`
|
||
list.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp (main): If the `-I` option is given,
|
||
run the grn preprocessor and pass it an `-M` option with `-I`'s
|
||
argument.
|
||
|
||
* NEWS:
|
||
* src/roff/groff/groff.1.man (Options): Document it. Also
|
||
document that `-I` options are passed to the output driver.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl (do_line): Don't strip groff-style
|
||
comments \# if AT&T compatibility mode is enabled.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Perform more font description file validation. Our
|
||
documentation said that the `name` directive was mandatory but
|
||
we didn't actually enforce this. Also be more specific in our
|
||
complaints of ill-formedness.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Add local Boolean
|
||
variable `saw_name_directive`. Rename `had_charset` to
|
||
`saw_charset_directive` for symmetry. Emit distinct diagnostics
|
||
for `spacewidth` and `slant` directives having a missing,
|
||
non-numeric, or out-of-range argument. Emit diagnostic if the
|
||
file lacks a `name` directive.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Slightly refactor.
|
||
|
||
* src/libs/libgroff/font.cpp (struct text_file): Rename member
|
||
variable `size` to `linebufsize` for clarity (it's certainly not
|
||
the size of the text file).
|
||
(text_file::text_file): Initialize `linebufsize` in constructor.
|
||
(text_file::next_line): Allocate new `buf` using `linebufsize`
|
||
instead of magic number (which was also stored to `size`, making
|
||
it only semi-magic, I guess). Rename local variable `i` to
|
||
`length` since it is in fact the length (in `char`s) of the
|
||
string stored in `buf`.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Revisit fix for Savannah #61173.
|
||
|
||
* src/libs/libgroff/font.cpp (text_file::text_file): Restore
|
||
setting of `lineno` member variable to `0` in constructor
|
||
initializer list, but...
|
||
(text_file::next_line): ...unconditionally increment it every
|
||
time through this member function's outer loop.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Align diagnostic message format with libgroff.
|
||
|
||
* src/roff/troff/input.cpp (fatal_with_file_and_line): Report
|
||
the program name if one is defined.
|
||
(fatal_with_file_and_line, error_with_file_and_line,
|
||
debug_with_file_and_line): Report the line number of the input
|
||
file only if it is positive, so that other values can be used
|
||
for "whole file" complaints. See commit cd0457b6, 17 September.
|
||
|
||
2021-09-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Drop redundant diagnostic.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Drop redundant
|
||
diagnostic; a missing `charset` directive is already checked for
|
||
later, circa line 998.
|
||
|
||
2021-09-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Fix code style nits.
|
||
|
||
* src/libs/libgroff/font.cpp (font::font): Use initializer list
|
||
as much as possible in constructor.
|
||
(font::unit_scale, font::get_width, font::get_height,
|
||
font::get_depth, font::get_italic_correction,
|
||
font::get_left_italic_correction,
|
||
font::get_subscript_correction, font::get_character_type,
|
||
font::get_code, font::get_special_device_encoding): These member
|
||
functions rely on the font being either indexed or associated
|
||
with an output device that uses the `unicode` directive in its
|
||
`DESC` file. The compiler doesn't know this, so annotate the
|
||
`abort()` calls that conclude them. Add an `assert()` before
|
||
each one to more usefully describe the violated invariant in the
|
||
event this unreachable code is somehow reached.
|
||
(font::get_width): Annotate special meaning of zero zoom factor.
|
||
|
||
2021-09-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/include/font.h (UNDEFINED_GLYPH): Use idiomatic C++98 null
|
||
pointer constant.
|
||
|
||
2021-09-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Fix compiler warning and dead store.
|
||
|
||
* src/devices/grohtml/post-html.cpp (html_printer::special):
|
||
Update call of `font::load_font()` to stop passing obsolete
|
||
parameter (deleted by me in 2dff87d3, 17 September). The value
|
||
stored to the parameter by that function was never read anyway,
|
||
so also get rid of the variable that contained it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61187>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2021-09-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Slightly refactor.
|
||
|
||
* src/include/font.h (font::scan_papersize): Demote return type
|
||
from `int` to `bool`.
|
||
* src/libs/libgroff/font.cpp (font::scan_papersize): As above.
|
||
Use Boolean instead of integer literals. Also rename `FILE`
|
||
stream pointer from `f` to `fp` and perform an explicit
|
||
comparison against the idiomatic C++98 null pointer constant.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff, troff]: Slightly refactor device and font description
|
||
file loading. Remove dead code.
|
||
|
||
* src/include/font.h (font::load_font): Drop second parameter.
|
||
It was never used for its intended purpose.
|
||
(load): Drop first parameter; likewise.
|
||
* src/libs/libgroff/font.cpp (font::load, load): As above.
|
||
|
||
* src/libs/libgroff/font.cpp (struct text_file): Rename
|
||
`skip_comments` to `recognize_comments`. Demote that and
|
||
`silent` from `int` to `bool`.
|
||
(text_file::text_file): Use Boolean rather than integer literals
|
||
in constructor.
|
||
(text_file::next_line, font::load): Apply above renaming.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Rename parameter from
|
||
`head_only` to `load_header_only` to be more communicative.
|
||
Drop test of font description file name being `DESC`; this code
|
||
was not being reached. Stop throwing errors from this function
|
||
on failure to open the file; the caller will handle this when it
|
||
sees our false return value. Rename local variable `command` to
|
||
`directive` for alignment with our documentation. Replace "I
|
||
dont think this should happen" test and comment with `assert()`.
|
||
(struct table): Rename member from `command` to
|
||
`numeric_directive` to indicate its specificity, tracking only a
|
||
subset of valid `DESC` file directives.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load, font::load_desc):
|
||
Remove redundant assignments to the member variable formerly
|
||
known as `skip_comments`.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load_desc): Rename local
|
||
variable `directive_found` to `numeric_directive_found` to
|
||
clarify logic.
|
||
|
||
* src/roff/troff/node.cpp (mount_font_no_translate): Simplify
|
||
call of `font::load_font`. The `not_found` in-out parameter
|
||
which was so agonizingly passed up through layers of library
|
||
calls was never actually read. Drop code that has been `#if
|
||
0`-ed out since 1993.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/font.cpp (font::load_desc): Clear line
|
||
number before emitting whole-file validity diagnostics.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/font.cpp (font::load_desc): Emit correct
|
||
line numbers when complaining of invalid `sizescale`, `hor`, or
|
||
`vert` values in device description files.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61174>.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Increase validation of device and font description
|
||
files.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Validate the syntax
|
||
and value of the `name` directive.
|
||
(font::load_desc): Issue distinct diagnostics for a `fonts`
|
||
directive that is missing arguments and for a first argument
|
||
that can't be interpreted as a valid number.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Make error reporting more flexible.
|
||
|
||
* src/libs/libgroff/error.cpp (do_error_with_file_and_line):
|
||
Interpret a nonpositive line number specially: treat the
|
||
diagnostic as applying to the entire file, and omit the line
|
||
number.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Add information to diagnostics.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Drop unused argument
|
||
from `error()` call.
|
||
(font::load_desc): In another, add name of numeric directive
|
||
that is given an unparsable number.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Tweak code style.
|
||
|
||
* src/libs/libgroff/font.cpp (trim_args, font::load)
|
||
(font::load_desc): Compare pointer explicitly to null pointer
|
||
literal `0` instead of using logical complementation.
|
||
(font::load, font::load_desc): Swap order of null pointer
|
||
equality comparisons when a typo or thinko could lead to lvalue
|
||
assignment.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Use idiomatic C++98 null pointer constant.
|
||
|
||
* src/libs/libgroff/font.cpp (text_file::error)
|
||
(glyph_to_unicode, font::get_special_device_encoding)
|
||
(font::load):
|
||
* src/libs/libgroff/fontfile.cpp (font::image_generator):
|
||
* src/libs/libgroff/nametoindex.cpp (class charinfo)
|
||
(character_indexer::named_char_glyph)
|
||
(character_indexer::numbered_char_glyph):
|
||
* src/libs/libgroff/string.cpp (string::clear):
|
||
* src/libs/libgroff/tmpfile.cpp (temp_init::temp_init):
|
||
* src/libs/libgroff/tmpname.cpp (gen_tempname): Use `0` literal
|
||
instead of `NULL` to represent a null pointer; this was
|
||
idiomatic in C++98 and is mostly the practice elsewhere in
|
||
groff. Also swap order of null pointer equality comparisons
|
||
when a typo or thinko could lead to lvalue assignment.
|
||
|
||
* src/roff/troff/input.cpp (input_stack::diversion_state)
|
||
(input_stack::get_diversion_state, charinfo::contains)
|
||
(glyph_to_name): Similar.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Slightly refactor.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load): Use same loop style
|
||
as `font::load_desc()`.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Fix off-by-one error in font and device description
|
||
file reader diagnostics.
|
||
|
||
* src/libs/libgroff/font.cpp (text_file::text_file): All text
|
||
files begin with line 1, not line 0.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61173>.
|
||
|
||
2021-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Boolify more interfaces.
|
||
|
||
* src/include/font.h (font::unit_scale):
|
||
* src/libs/libgroff/font.cpp (font::unit_scale): Demote return
|
||
type from `int` to `bool`. Use Boolean literals instead of
|
||
integers.
|
||
|
||
* src/libs/libgroff/font.cpp (struct text_file): Rename `next`
|
||
member function to `next_line`. Demote its return type from
|
||
`int` to `bool`. Use Boolean literals instead of integers.
|
||
|
||
2021-09-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Boolify local variables.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load, font::load_desc):
|
||
Demote local variables used as Booleans from `int` to `bool` and
|
||
update literals used with them from integer to Boolean.
|
||
|
||
2021-09-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grn, groff, troff]: Communicate better when device DESC file
|
||
can't be loaded.
|
||
|
||
* src/libs/libgroff/font.cpp (font::load_desc): Stop writing
|
||
diagnostic to standard error.
|
||
* src/preproc/grn/main.cpp (getres):
|
||
* src/roff/troff/troff.cpp (main): Replace "sorry, I can't
|
||
continue" fatal diagnostic with a more informative message.
|
||
Instead say which device's DESC file the program was trying to
|
||
open, which might reveal a user's logic error or typo.
|
||
* src/roff/groff/groff.cpp (main): Replace "invalid device" text
|
||
of fatal diagnostic similarly. I think it is more helpful to
|
||
indicate the operation that failed rather than saying the device
|
||
was invalid, particularly since there are other ways for a
|
||
device description to be invalid even if a DESC file is found
|
||
and loaded.
|
||
|
||
2021-09-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Throw warning diagnostic if device DESC file attempts
|
||
to load unavailable fonts.
|
||
|
||
* src/roff/troff/input.cpp (main): Take advantage of new Boolean
|
||
return values of `mount_style()` and `mount_font()` to produce
|
||
warning diagnostics if mounting a style or font as directed by
|
||
the DESC file fails. Explain in a comment why, at present, this
|
||
style mount warning will never actually trip.
|
||
|
||
2021-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Lift font mounting diagnostic messages to be closer to
|
||
their user-controlled contexts to provide more information. In
|
||
many cases no diagnostic was being thrown at all when an
|
||
unavailable font was requested by name, which is the method most
|
||
users prefer, and which meant that failures resulting from typos
|
||
in font names for many requests (`uf`, `fschar`, `rfschar`,
|
||
`special`, `fspecial`, `fzoom`, `bd`, `tkf`, `cs`) were going
|
||
unreported. Further, promote these font warnings to errors
|
||
because the request will utterly fail to do what was requested
|
||
with no reasonable fallback. Possibly, they were formerly
|
||
warnings because at the low level they were being emitted, they
|
||
could also have originated from unavailable fonts encountered in
|
||
device description files, and while that's bad news, it results
|
||
in no formatting problems if it doesn't affect fonts that an
|
||
input document actually uses.
|
||
|
||
* src/roff/troff/node.cpp (struct font_lookup_info): New struct
|
||
keeps the font name or position requested, and the position of
|
||
successful font lookup.
|
||
(font_lookup_info::font_lookup_info): Add constructor.
|
||
(font_lookup_error): New function builds error message using a
|
||
`font_lookup_info` struct and a message argument.
|
||
(get_fontno): Rename to...
|
||
(has_font): ...this. Add argument to take a pointer to a
|
||
`font_lookup_info` struct. Return a `bool` indicating whether
|
||
the lookup succeeded. Place former `int` return value into the
|
||
struct instead. Populate the other struct members with the
|
||
requested font name or position, as appropriate.
|
||
(mount_font_no_translate): Stop throwing warning diagnostic here
|
||
if a font cannot be loaded. Instead, throw them...
|
||
(font_position): ...here, and...
|
||
(underline_font, define_font_special_character,
|
||
remove_font_special_character, read_special_fonts,
|
||
font_special_request, font_zoom_request, bold_font, track_kern,
|
||
constant_space): ...here, using `font_lookup_info` structs and
|
||
`has_font()`.
|
||
(remove_font_special_character): Stop returning early if font
|
||
lookup fails; it's gratuitously inconsistent with other similar
|
||
functions (save one, which has a reason to be different).
|
||
(define_font_special_character): Return early if font lookup
|
||
fails and say why in a comment (we can't `skip_line()`).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59522>.
|
||
|
||
2021-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* [libgroff, troff]: Further boolify.
|
||
|
||
* src/include/font.h (load_font, font): Demote parameters from
|
||
{pointer to} `int` to `bool` and update default literal from
|
||
integer to Boolean (except for the pointer). Update comment.
|
||
* src/libs/libgroff/font.cpp (load_font, load): Similarly.
|
||
|
||
* src/roff/troff/node.h (mount_font):
|
||
* src/roff/troff/node.cpp (mount_font): Demote return type from
|
||
`int` to `bool`.
|
||
|
||
* src/roff/troff/node.h (mount_style):
|
||
* src/roff/troff/node.cpp (mount_style): Promote return type
|
||
from `void` to `bool`.
|
||
|
||
* src/roff/troff/node.cpp (mount_font_no_translate): Demote
|
||
return type and `check_only` parameter from `int` to `bool` and
|
||
use Boolean rather than integer literals with them.
|
||
(check_font): Update call site of `mount_font_no_translate` to
|
||
use Boolean literal.
|
||
(font_position): Indicate that "error" is ignored by casting
|
||
return value of `mount_font` to void instead of using a comment.
|
||
(style): Cast return value of `mount_style` to `void`.
|
||
|
||
2021-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* Makefile.am: Add `.DELETE_ON_ERROR` special target; both GNU
|
||
and FreeBSD make(1)s support it so maybe it will be portable
|
||
enough. This avoids, among other problems, a target appearing
|
||
falsely up-to-date (often as an empty file) when the troff
|
||
process generating it experiences an assertion failure.
|
||
|
||
2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Since June 1991 if not earlier, groff (technically, the refer,
|
||
lookbib, and lkbib programs) has trusted the header contents of
|
||
binary bibliographic index files (canonically generated with
|
||
indxbib(1)) regarding the sizes of the data structures that
|
||
follow in the file, a notorious class of security problem. In
|
||
July 2013, the Mayhem Team at Carnegie Mellon University
|
||
reported to the Debian Bug Tracking System a problem with
|
||
groff's refer(1) implementation dumping core when reading an
|
||
index file prepared by a fuzzer.
|
||
|
||
* src/libs/libbib/index.cpp (index_search_item::check_header):
|
||
Add new member function to validate the header of an indexed
|
||
bibliography file, returning a string describing in detail the
|
||
first validity problem encountered.
|
||
(index_search_item::load): Perform the foregoing check before
|
||
using any of the size values taken from the header; they are
|
||
relied upon for pointer arithmetic. If in verification mode
|
||
{using the undocumented `-V` flag to refer(1), lkbib(1), or
|
||
lookbib(1)}, report the details of the problem encountered.
|
||
Regardless of that mode, if there is a validity problem, report
|
||
corruption of the index file and abandon it, forcing fallback to
|
||
the text version of the corresponding bibliography file.
|
||
|
||
Fixes <https://bugs.debian.org/716109>.
|
||
|
||
2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libbib/index.cpp
|
||
(index_search_item::get_invalidity_reason): Don't complain about
|
||
a last list element being nonnegative if the list size was zero
|
||
in the first place, as can happen with an empty index. More
|
||
seriously from a language standpoint, avoid reading through a
|
||
negative array index (this can escape a compiler's attention
|
||
because we're reading from the midst of a heap-allocated or
|
||
`mmap()`ed region, but it's still a code smell).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61144>.
|
||
|
||
2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libbib/index.cpp (index_search_item::load)
|
||
(index_search_item::get_invalidity_reason)
|
||
(index_search_item::add_out_of_date_file): Clarify diagnostic
|
||
messages. Make it more obvious when we're complaining of a
|
||
problem in an indexed bibliographic database file (rather than a
|
||
plain text one). Dial down the amount of Unix jargon a little.
|
||
|
||
2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libbib]: Partially boolify.
|
||
|
||
* src/include/search.h:
|
||
* src/libs/libbib/index.cpp:
|
||
* src/preproc/refer/refer.cpp:
|
||
* src/utils/lkbib/lkbib.cpp:
|
||
* src/utils/lookbib/lookbib.cpp: Demote `verify_flag` from an
|
||
`int` to a `bool`, rename it to `do_verify`, use Boolean
|
||
instead of integer literals with it, and update call sites.
|
||
|
||
* src/libs/libbib/index.cpp: Rename `do_verify()` member
|
||
function to `get_invalidity_reason()` (it returns a string).
|
||
Demote `load()` from `int` to `bool`; do the same for `verify()`
|
||
and rename it to `is_valid()` as well. Use Boolean instead of
|
||
integer literals with them.
|
||
(index_search_item::is_valid, make_index_search_item): Update
|
||
call sites of renamed member functions.
|
||
|
||
2021-09-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libbib/map.c (mapread): Compare return value of
|
||
`mmap()` to `MAP_FAILED` instead of `(char *)-1`. `MAP_FAILED`
|
||
is documented in POSIX Issue 5 a.k.a. SUSv2
|
||
<https://pubs.opengroup.org/onlinepubs/007908799/xsh/mmap.html>
|
||
{1997} and should be portable enough by now.
|
||
|
||
2021-09-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Clamp negative tab stop positions to zero instead of
|
||
throwing an assertion failure.
|
||
|
||
* src/roff/troff/env.cpp (tab_stops::distance_to_next_tab):
|
||
Replace `assert` with clamping logic, ensuring that `lastpos`
|
||
can never be negative. While negative tab stop positions don't
|
||
make much sense (they result in zero horizontal motion), user
|
||
input like `.ta T -5` should never provoke an assertion failure.
|
||
|
||
(set_tabs): Throw range warning in additional scenario, viz., if
|
||
a repeating tab offset is negative.
|
||
|
||
Fixes <https://bugs.debian.org/990406>. Thanks to наб for the
|
||
report.
|
||
|
||
2021-09-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Boolify `set_tabs` function.
|
||
|
||
* src/roff/troff/env.cpp (set_tabs): Demote local variables from
|
||
`int` to `bool` and give them predicate-like names.
|
||
- `first` -> `is_first_stop`
|
||
- `repeated` -> `is_repeating_stop`
|
||
Use Boolean instead of integer literals in assignments to them.
|
||
|
||
2021-09-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Deprecate `OP` macro.
|
||
|
||
* tmac/an-ext.tmac (OP): Move implementation from here...
|
||
* tmac/an.tmac (OP): ...to here. Throw deprecation warning.
|
||
Throw style warning if wrong number of arguments given.
|
||
|
||
* tmac/groff_man.7.man.in (Description): Drop from introductory
|
||
macro summary.
|
||
(Description/Command synopsis macros): Move discussion from
|
||
here...
|
||
(Description/Deprecated features): ...to here. Explain why it's
|
||
deprecated.
|
||
|
||
2021-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Make `ab` request quiet if given no arguments. The
|
||
`tm`, `tm1`, and `tmc` requests provide ample flexibility for
|
||
constructing diagnostic messages prior to an error exit, and
|
||
it's convenient to make `ab` itself quiet instead of saying
|
||
"User Abort." as Unix Version 7 troff did. Further, there is no
|
||
standardization across troffs regarding what `ab` should emit if
|
||
arguments are absent.
|
||
|
||
* src/roff/troff/input.cpp (abort_request): Do it.
|
||
|
||
* src/roff/groff/tests/ab_works.sh:
|
||
* src/roff/groff/groff.am (groff_TESTS): Test it.
|
||
|
||
* doc/groff.texi (Debugging, Implementation Differences):
|
||
* man/groff.7.man (Requests/Request short reference):
|
||
* man/groff_diff.7.man (Implementation differences): Document
|
||
it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61070>. Thanks to Dave
|
||
Kemper for the discussion.
|
||
|
||
2021-09-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Update exit status literals.
|
||
|
||
* src/roff/troff/div.cpp (top_level_diversion::begin_page):
|
||
* src/roff/troff/input.cpp (exit_troff, abort_request, do_error)
|
||
(fatal_with_file_and_line): Use standard C library preprocessor
|
||
symbols `EXIT_SUCCESS` and `EXIT_FAILURE` instead of 0 and 1
|
||
literals, respectively.
|
||
|
||
2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Drop unused member function.
|
||
|
||
* src/roff/troff/token.h (class token): Drop unused `title`
|
||
member function. Its implementation was apparently removed in
|
||
the prehistory of our Git repository: see James Clark's
|
||
ChangeLog entry of 1990-09-06.
|
||
|
||
2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Remove workaround for Cfront 1.2 bug.
|
||
|
||
* src/roff/troff/input.cpp (do_define_macro): Move `dot_symbol`
|
||
from to file to function local scope as originally intended.
|
||
|
||
2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Rename parameter.
|
||
|
||
* src/roff/troff/input.cpp (token::usable_as_delimiter): Rename
|
||
parameter from `err` to `report_error` to be more communicative.
|
||
|
||
2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Boolify members of `token` class.
|
||
|
||
* src/roff/troff/token.h (class token): Demote return type of
|
||
several member functions from `int` to `bool` and rename them.
|
||
- `backspace` -> `is_backspace`
|
||
- `delimiter` -> `usable_as_delimiter`
|
||
- `dummy` -> `is_dummy`
|
||
- `eof` -> `is_eof`
|
||
- `horizontal_space` -> `is_horizontal_space`
|
||
- `hyphen_indicator` -> `is_hyphen_indicator`
|
||
- `leader` -> `is_leader`
|
||
- `left_brace` -> `is_left_brace`
|
||
- `newline` -> `is_newline`
|
||
- `page_ejector` -> `is_page_ejector`
|
||
- `right_brace` -> `is_right_brace`
|
||
- `space` -> `is_space`
|
||
- `special` -> `is_special`
|
||
- `stretchable_space` -> `is_stretchable_space`
|
||
- `tab` -> `is_tab`
|
||
- `transparent_dummy` -> `is_transparent_dummy`
|
||
- `transparent` -> `is_transparent`
|
||
- `unstretchable_space` -> `is_unstretchable_space`
|
||
- `white_space` -> `is_white_space`
|
||
- `zero_width_break` -> `is_zero_width_break`
|
||
(class token): Drop 1991 comment anticipating that member
|
||
function `nspaces` could return "2" for a "double space"; this
|
||
was apparently never implemented.
|
||
(class token): Drop parameter names from declarations; the
|
||
prevailing style (familiar from Stroustrup) is not to use them.
|
||
(token::is_special): Simplify implementation.
|
||
|
||
* src/roff/troff/input.cpp (has_arg)
|
||
(token::usable_as_delimiter): Update definitions of above member
|
||
functions not defined in token.h.
|
||
|
||
* src/roff/troff/div.cpp (begin_page, space_request, need_space)
|
||
(output_saved_vertical_space, flush_output):
|
||
* src/roff/troff/env.cpp (fill, no_fill, center)
|
||
(right_justify, indent, temporary_indent, margin_character)
|
||
(number_lines, do_break_request, hyphen_word):
|
||
* src/roff/troff/input.cpp (next_file, do_overstrike)
|
||
(do_bracket, do_name_test, do_expr_test, do_zero_width)
|
||
(token::skip, has_arg, skip_line, empty_name_warning)
|
||
(non_empty_name_warning, do_get_long_name, process_input_stack)
|
||
(flush_pending_lines, decode_args, read_request)
|
||
(do_define_string, do_define_character, remove_character)
|
||
(do_define_macro, length_request, get_delim_number)
|
||
(get_line_arg, read_size, get_delim_name, do_register, do_width)
|
||
(read_title_parts, encode_char, do_special, device_request)
|
||
(output_request, skip_alternative, begin_alternative)
|
||
(nop_request, do_if_request, do_source, pipe_source)
|
||
(ps_bbox_request, tag, taga, do_terminal, do_translate)
|
||
(hyphenation_code, hyphenation_patterns_file_code, define_class)
|
||
(get_optional_char, check_missing_character, abort_request)
|
||
(copy_file, transparent_file, do_macro_source)
|
||
(charinfo_to_node_list, read_draw_node, read_color_draw_node):
|
||
* src/roff/troff/node.cpp (get_fontno)
|
||
(remove_font_special_character, bold_font):
|
||
* src/roff/troff/number.cpp (start_number, parse_term):
|
||
* src/roff/troff/reg.cpp (define_number_reg, alter_format):
|
||
Update call sites to use new names.
|
||
|
||
* src/roff/troff/input.cpp (token::usable_as_delimiter)
|
||
(read_draw_node): Return Boolean, not integer, literals.
|
||
|
||
2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Clamp line and title lengths to device horizontal
|
||
resolution.
|
||
|
||
* src/roff/troff/env.cpp (line_length, title_length): Do it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61116>.
|
||
|
||
2021-09-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (do_hyphenation_patterns_file):
|
||
Refactor slightly. Demote `append` from `int` to `bool`.
|
||
(hyphenation_patterns_file, hyphenation_patterns_file_append):
|
||
Update call sites to use Boolean, not integer, literals.
|
||
|
||
2021-09-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/hvunits.h:
|
||
* src/roff/groff/number.cpp: Mark `H0`, `V0` objects as `const`.
|
||
|
||
2021-09-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (do_underline_special): Refactor
|
||
slightly.
|
||
- Rename `underline_spaces` -> `do_underline_spaces`.
|
||
- Demote it from an `int` to a `bool`.
|
||
- Use ternary operator and explicit character literals when
|
||
writing device control command instead of doing arithmetic
|
||
on a character literal.
|
||
- Update call sites to use Boolean literals.
|
||
- Relocate function to avoid forward reference.
|
||
- Mark function as static to eliminate external linkage.
|
||
Remove now-unnecessary prototype.
|
||
|
||
2021-09-04 Keith Marshall <keith.d.marshall@ntlworld.com>
|
||
|
||
Add "ms" footnote marker placement hook.
|
||
|
||
* tmac/s.tmac (FS-MARK): New macro; define as no-op, by default.
|
||
(@FS): Invoke FS-MARK as first action, allowing caller to "hook" it.
|
||
|
||
2021-09-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (distribute_space): Refactor slightly.
|
||
- Rename `force_reverse` to `force_reverse_node_list`.
|
||
- Rename `reverse` to `do_reverse`.
|
||
- Demote both of the above from `int` to `bool`.
|
||
- Use Boolean literals with them.
|
||
- Add assertions to enforce positive values of `nspaces` and
|
||
`desired_space`.
|
||
- Remove now-redundant test for `nspaces` being positive.
|
||
- Add explanatory comments.
|
||
(environment::wrap_up_field): Update call sites of
|
||
`distribute_space` when non-default value of
|
||
`force_reverse_node_list` is supplied.
|
||
|
||
2021-09-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Don't adjust nonadjustable lines. This means that the
|
||
direction from which an output line in adjustment mode "b" (or
|
||
its "n" synonym) is filled with supplemental space is not
|
||
changed if that output line does not require adjustment. This
|
||
will result in whitespace changes to documents using that
|
||
adjustment mode, and these changes will be plainly visible on
|
||
low-resolution output devices like terminals.
|
||
|
||
To illustrate, in the following "A" means an output line
|
||
requiring adjustment; "F" a line that is "full" and does not;
|
||
and "L" and "R" indicate distribution of adjustment spaces from
|
||
the left and right, respectively.
|
||
|
||
groff 1.22.4 groff 1.23.0
|
||
------------ ------------
|
||
A L A L
|
||
A R A R
|
||
F L F R
|
||
A R A L
|
||
|
||
* src/roff/troff/env.cpp (distribute_space): Return early if
|
||
either the amount of desired space to be distributed or the
|
||
count of space nodes in the output line to distribute it among
|
||
is zero.
|
||
|
||
* tmac/tests/an_TH-repairs-ad-damage.sh: Update test to expect
|
||
space to be distributed differently.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61089> and
|
||
<https://savannah.gnu.org/bugs/?60673>.
|
||
|
||
2021-09-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Skip core-dump-checking test if a core file already exists.
|
||
|
||
* src/roff/groff/tests/regression_savannah_59202.sh: Skip test
|
||
if a core dump is already present.
|
||
|
||
2021-09-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #60189.
|
||
|
||
* src/roff/groff/tests/break_zero-length_output_line_sanely.sh:
|
||
Do it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2021-08-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Tweak diagnostic message.
|
||
|
||
* src/roff/troff/env.cpp (environment::environment): Use
|
||
terminology more rigorously in diagnostic.
|
||
|
||
2021-08-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Fix code style nit.
|
||
|
||
* src/libs/libgroff/errarg.cpp (errprint): Replace `assert(0)`
|
||
with a meaningful predicate.
|
||
|
||
2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Demote `need_space` to Boolean.
|
||
|
||
* src/libs/libgroff/error.cpp (do_error_with_file_and_line):
|
||
Demote local integer `need_space` and its assignments to `bool`.
|
||
|
||
2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Boolify `font::load()` and `font::load_desc()`
|
||
return values.
|
||
|
||
* src/include/font.h (font::load, font::load_desc):
|
||
* src/libs/libgroff/font.cpp (font::load, font::load_desc): Do
|
||
it.
|
||
|
||
2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (TRADITIONAL_CPP): Update `AC_MSG_CHECKING`
|
||
argument to refer to "pre-ISO C90 syntax" instead of a
|
||
"traditional" preprocessor. Call `AC_MSG_ERROR` (aborting
|
||
configuration) if the check (for pre-C90 transformation)
|
||
succeeds. We thus withdraw support for such superannuated
|
||
{"Reiser"} C preprocessors.
|
||
|
||
2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Un-indirect token concatenation through macro.
|
||
|
||
* src/include/itable.h:
|
||
* src/include/ptable.h: Do it.
|
||
|
||
2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Drop support for `TRADITIONAL_CPP`. This means a C
|
||
preprocessor that does not support the ANSI C89/ISO C90
|
||
token concatenation operator "##".
|
||
|
||
* src/include/itable.h:
|
||
* src/include/ptable.h: Do it.
|
||
|
||
* Makefile.am: Undocument preprocessor symbol.
|
||
|
||
2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Drop `a_delete` preprocessor wrapper for the
|
||
`delete` operator. It has been rendered unnecessary by the
|
||
removal of support for ancient C++ compilers.
|
||
|
||
* src/include/lib.h (a_delete): Drop symbol definition.
|
||
|
||
* src/devices/grohtml/output.cpp (word::~word):
|
||
* src/devices/grohtml/post-html.cpp (char_block::char_block)
|
||
(assert_state::~assert_state, assert_state::add)
|
||
(assert_state::close, replace_negate_str):
|
||
* src/devices/grops/ps.cpp (ps_font::ps_font)
|
||
(subencoding::subencoding, ps_printer::define_encoding)
|
||
(ps_printer::encode_fonts):
|
||
* src/devices/grops/psrm.cpp (resource_manager::document_setup)
|
||
(resource_manager::supply_resource):
|
||
* src/devices/grotty/tty.cpp (tty_printer::tty_color)
|
||
(tty_printer::tty_printer, tty_printer::color_to_idx)
|
||
(tty_printer::add_char):
|
||
* src/include/itable.h (ITABLE(T)::~ITABLE(T))
|
||
(ITABLE(T)::define):
|
||
* src/include/ptable.h (PTABLE(T)::~PTABLE(T))
|
||
(PTABLE(T)::define):
|
||
* src/libs/libbib/index.cpp
|
||
(index_search_item::~index_search_item, make_index_search_item,
|
||
index_search_item_iterator::index_search_item_iterator,
|
||
index_search_item::get_tag, index_search_item::munge_filename,
|
||
index_search_item::search):
|
||
* src/libs/libbib/linear.cpp (bmpattern::~bmpattern)
|
||
(file_buffer::file_buffer, file_buffer::load)
|
||
(linear_searcher::linear_searcher)
|
||
(linear_searcher::~linear_searcher):
|
||
* src/libs/libbib/search.cpp
|
||
(search_list_iterator::search_list_iterator)
|
||
(search_item::search_item):
|
||
* src/libs/libdriver/input.cpp (IntArray::~IntArray)
|
||
(IntArray::append, StringBuf::~StringBuf, StringBuf::append)
|
||
(get_integer_arg, parse_x_command, do_file):
|
||
* src/libs/libdriver/printer.cpp (printer::printer)
|
||
(printer::load_font, text_file::~text_file, text_file::next)
|
||
(font::~font, font_widths_cache::~font_widths_cache)
|
||
(font:alloc_ch_index, font::extend_ch, font::compact)
|
||
(font::load_desc):
|
||
* src/libs/libgroff/fontfile.cpp (font::open_file):
|
||
* src/libs/libgroff/relocate.cpp (searchpath, searchpathext)
|
||
(set_current_prefix):
|
||
* src/libs/libgroff/searchpath.cpp (search_path::search_path)
|
||
(search_path::command_line_dir, search_path::open_file)
|
||
(search_path::open_file_cautious):
|
||
* src/libs/libgroff/string.cpp (sfree, srealloc)
|
||
(string::remove_spaces):
|
||
* src/libs/libgroff/symbol.cpp (symbol::symbol, concat):
|
||
* src/libs/libgroff/tmpfile.cpp (temp_init::temp_init)
|
||
(xtmpfile_list_init::~xtmpfile_list_init, xtmpfile):
|
||
* src/preproc/eqn/box.cpp (set_gfont, set_grfont, set_gbfont)
|
||
(box_list::append, box_list::~box_list):
|
||
* src/preproc/eqn/delim.cpp (make_delim_box)
|
||
(delim_box::~delim_box):
|
||
* src/preproc/eqn/eqn.ypp (number):
|
||
* src/preproc/eqn/lex.ypp (file_input::~file_input)
|
||
(argument_macro_input::~argument_macro_input):
|
||
* src/preproc/eqn/pile.ypp (matrix_box::~matrix_box)
|
||
(matrix_box::append):
|
||
* src/preproc/eqn/special.cpp (special_box::~special_box):
|
||
* src/preproc/eqn/text.ypp (set_char_type):
|
||
* src/preproc/html/pre-html.cpp (get_line, scanArguments):
|
||
* src/preproc/pic/object.cpp (output::~output)
|
||
(output::set_args, text_item::~text_item)
|
||
(object_spec::~object_spec, command_object::~command_object)
|
||
(line_object::~line_object):
|
||
* src/preproc/pic/pic.ypp (placeless_element, reset_variables)
|
||
(print_args, text_expr, object_spec, text, sprintf_args, path):
|
||
* src/preproc/refer/command.cpp (input_item::~input_item)
|
||
(input_item::peek_char):
|
||
* src/preproc/refer/label.ypp (lookup_label):
|
||
* src/preproc/refer/refer.cpp (store_citation, store_reference):
|
||
* src/preproc/tbl/main.cpp (format::add_rows, format::~format):
|
||
* src/preproc/tbl/table.cpp (block_entry::~block_entry)
|
||
(table::~table, table::allocate):
|
||
* src/roff/groff/groff.cpp (possible_command::~possible_command)
|
||
(possible_command::clear_name):
|
||
* src/roff/troff/column.cpp
|
||
((justification_spec::~justification_spec)
|
||
(justification_spec::append):
|
||
* src/roff/troff/dictionary.cpp (dictionary::lookup):
|
||
* src/roff/troff/env.cpp (override_sizes, tab_stops::to_string)
|
||
(hyphen_word, hyphen_trie::insert_hyphenation):
|
||
* src/roff/troff/input.cpp (read_long_escape_name, token::next)
|
||
(do_get_long_name, temp_iterator::~temp_iterator)
|
||
(get_delim_name, pipe_source, read_string, pipe_output)
|
||
(system_request, open_mac_file, do_macro_source)
|
||
(do_register_assignment, do_string_assignment, read_draw_node)
|
||
(copy_mode_error):
|
||
* src/roff/troff/node.cpp (troff_output_file::set_font)
|
||
(troff_output_file::~troff_output_file, draw_node::is_tag)
|
||
(grow_font_table, font_family::~font_family)
|
||
(font_family::make_definite):
|
||
* src/utils/hpftodit/hpftodit.cpp (name_list::~name_list)
|
||
(read_map):
|
||
* src/utils/indxbib/indxbib.cpp (main, get_cwd):
|
||
* src/utils/tfmtodit/tfmtodit.cpp (tfm::~tfm, tfm::load): Port
|
||
uses of `a_delete` to `delete[]`.
|
||
|
||
2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Drop `ad_delete` preprocessor wrapper for the
|
||
`delete` operator. It has been rendered unnecessary by the
|
||
removal of support for ancient C++ compilers.
|
||
|
||
* src/include/lib.h (ad_delete): Drop symbol definition.
|
||
|
||
* src/preproc/pic/object.cpp (graphic_object::print_text):
|
||
* src/preproc/refer/ref.cpp (reference::reference)
|
||
(reference::merge, reference::insert_field)
|
||
(reference::delete_field):
|
||
* src/preproc/tbl/main.cpp (format::add_rows): Port uses of
|
||
`ad_delete` to `delete[]`.
|
||
|
||
2021-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_ARRAY_DELETE): Update `AC_MSG_CHECKING`
|
||
argument to refer to "ISO C++98" instead of "ANSI". Call
|
||
`AC_MSG_ERROR` (aborting configuration) if the check fails.
|
||
|
||
2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Drop support for `ARRAY_DELETE_NEEDS_SIZE`.
|
||
|
||
* src/include/lib.h [ARRAY_DELETE_NEEDS_SIZE]: Drop preprocessor
|
||
conditional branch. This abandons support for certain pre-ISO
|
||
C++98 compilers. (According to a now-removed comment, unsized
|
||
array deletion was documented in "ARM", meaning _The C++
|
||
Annotated Reference Manual_, published in 1989.)
|
||
|
||
* Makefile.am: Undocument preprocessor symbol.
|
||
|
||
2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Drop redefinition of `INT_MIN`.
|
||
|
||
* src/include/lib.h: Drop redefinition of `INT_MIN`. It was
|
||
motivated by a bug in the AT&T C++ compiler (cfront), version
|
||
2.0, released in June 1989. Implementations have had 30 years
|
||
to get this right; assume that they have.
|
||
|
||
* PROBLEMS: Drop corresponding item.
|
||
|
||
2021-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Drop long-dead `COOKIE_BUG` logic.
|
||
|
||
* src/libs/libgroff/new.cpp (operator new, operator delete):
|
||
Drop preprocessor conditional branches on the `COOKIE_BUG`
|
||
symbol. This was de-documented, and an autoconf check for its
|
||
necessity removed, way back in groff 1.10 (November 1995). It
|
||
was relevant only to GCC from versions 2.0 to 2.2.2 (all 1992).
|
||
|
||
2021-08-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Refactor `font::scan_papersize()`.
|
||
|
||
* src/libs/libgroff/font.cpp (font::scan_papersize): Ensure
|
||
successful return value of `fgets()` before attempting to parse
|
||
string for paper format. Convert `test_file` to Boolean and
|
||
rename to `attempt_file_open`. Quiets GCC `-Wunused-result`
|
||
warning.
|
||
|
||
2021-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Apply naming convention.
|
||
|
||
* tmac/tests/e_footnotes_work_with_columns.sh: Rename from...
|
||
* tmac/tests/e_footnotes-work-with-columns.sh: ...to this.
|
||
* tmac/tmac.am (tmac_TESTS): Update.
|
||
|
||
2021-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an.tmac (IP): Make code more accessible by using a
|
||
Boolean operator rather than an arithmetic one (assembly
|
||
language programmers are comfortable with the interchangeability
|
||
of subtraction and comparison, but not everyone is).
|
||
|
||
2021-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
groff(7): Document more escapes.
|
||
|
||
* man/groff.7.man (Escape short reference): Document
|
||
`\[charNNN]`, `\[uNNNN]`, `\[uNNNN_NNNN...]` escape sequences.
|
||
Revise descriptions of `\O0` and `\O1` escape sequences.
|
||
Document `\O2`, `\O3`, `\O4`, and `\O5` escape sequences.
|
||
|
||
2021-08-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
groff(7): Fix bug in `\?` escape rendering.
|
||
|
||
* man/groff.7.man (ESC?): Fix bug in page-private macro: the
|
||
question mark that ends this uniquely-syntaxed escape sequence
|
||
was not shown with the mandatory escape character before it.
|
||
Problem dates back at least to commit 41b0e794, 19 February
|
||
2007, but possiby to f790bc7a9, 6 January 2002.
|
||
|
||
2021-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[docs]: Elaborate macro definition discussion.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?57944>. Thanks to Dave
|
||
Kemper for the report.
|
||
|
||
2021-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tests]: Make robust against $GROFF_TYPESETTER settings.
|
||
|
||
* src/roff/groff/tests/\
|
||
use_point_size_escape_with_single_digit_arg.sh:
|
||
* src/roff/nroff/tests/verbose_option_works.sh:
|
||
* tmac/tests/s_IP-indents-using-paragraph-type-size.sh: Export
|
||
an empty $GROFF_TYPESETTER to the environment.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60140>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2021-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Treat an empty $GROFF_TYPESETTER as unset.
|
||
|
||
* src/libs/libgroff/device.cpp (device_init::device_init): Test
|
||
both returned pointer from `getenv()` and, if that's not null,
|
||
the first character of the string for nullity before assigning
|
||
it to `device`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61068>.
|
||
|
||
2021-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff]: Rename font class member variable.
|
||
|
||
* src/include/font.h (font class): Rename `unscaled_charwidths`
|
||
member variable to `use_unscaled_charwidths`: since it is a
|
||
Boolean, make it read more like a logical predicate.
|
||
|
||
* src/libs/libgroff/font.cpp (font::get_width, font::load_desc):
|
||
* src/libs/libgroff/fontfile.cpp (font class): Update
|
||
initialization and assignments.
|
||
|
||
2021-08-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (get_copy): Demote integer arguments
|
||
to Booleans and use Boolean literals for default values. Rename
|
||
`defining` to `is_defining`.
|
||
(get_char_for_escape_name, do_define_macro): Update call sites
|
||
that use non-default arguments to use Boolean literals and
|
||
comments to document what's being requested.
|
||
|
||
2021-08-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (DOC_GROFF_ONLY): Stop running groff in unsafe
|
||
mode; no documents (in _this_ directory) appear to require it.
|
||
|
||
2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grn]: Fix code style issues.
|
||
|
||
* src/preproc/grn/hgraph.cpp:
|
||
* src/preproc/grn/hpoint.cpp:
|
||
* src/preproc/grn/main.cpp:
|
||
* src/preproc/grn/hdb.cpp: Drop use of `register` storage class.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?57733>. Thanks to Bjarni
|
||
Ingi Gislason for the report and a suggested patch.
|
||
|
||
* src/preproc/grn/hgraph.cpp (len, HGPrintElt, picurve):
|
||
* src/preproc/grn/hdb.cpp (DBRead): Wrap long lines.
|
||
|
||
* src/preproc/grn/hgraph.cpp: Rename function from
|
||
`Paramaterize` to `Parameterize`.
|
||
(HGCurve): Update call site.
|
||
|
||
* src/preproc/grn/main.cpp (add_file): Drop redundant cast in
|
||
`realloc()` call.
|
||
(conv, interpret): Use standard English in diagnostic messages.
|
||
|
||
2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/grn/hdb.cpp: Perform more input validation.
|
||
Improve diagnostics by taking advantage of libgroff
|
||
infrastructure and tracking the line number of the input file.
|
||
Add global `lineno`.
|
||
(DBRead): Increment `lineno` after reading newlines from input.
|
||
Call `error_with_file_and_line()` instead of `error()`. If
|
||
input reports a negative length for the text (string) to follow
|
||
in the file, exit with a fatal diagnostic. Check for EOF while
|
||
reading text string.
|
||
(DBGetType): Convert `fprintf()` call for warning diagnostic to
|
||
`warning_with_file_and_line()`.
|
||
(DBRead, DBGetType): Add contextual information to diagnostic
|
||
messages.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61043>. Thanks to
|
||
Savannah user eqkws for the report.
|
||
|
||
2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/grn/main.cpp (usage): Update usage message.
|
||
|
||
2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grn]: Add and use `malloc()` wrapper.
|
||
|
||
* /src/preproc/grn/main.cpp (grnmalloc): New function takes
|
||
argument of `size_t` type and constant string argument to
|
||
describe what is being allocated. Return non-null pointer from
|
||
`malloc()`, otherwise call `fatal()`, describing what was being
|
||
allocated and the problem reported by the system.
|
||
|
||
* src/preproc/grn/hdb.cpp (DBCreateElt):
|
||
* src/preproc/grn/hpoint.cpp (PTMakePoint):
|
||
* /src/preproc/grn/main.cpp (main, interpret): Migrate
|
||
`malloc()` callers to `grnmalloc()`.
|
||
|
||
2021-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/grn/hdb.cpp (DBRead): Check return value of
|
||
`sscanf()` and call `fatal()` if no conversions succeeded. The
|
||
blithe discard of a useful return value is bad enough, but this
|
||
one took place inside a do-while such that it could loop
|
||
forever trying fruitlessly to parse two doubles out of strings
|
||
that didn't contain them (the loop never checked the EOF status
|
||
of the file stream from which it was reading, and relied on
|
||
`fgets()` to keep advancing the stream pointer). Discovered
|
||
while root-causing Savannah #61043.
|
||
|
||
2021-08-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Resolve compiler warnings relating to format string security and
|
||
ISO C++98 conformance.
|
||
|
||
* src/preproc/eqn/delim.cpp (define_extensible_string):
|
||
* src/preproc/pic/pic.ypp (do_sprintf): Use #pragma to silence
|
||
GCC "format-nonliteral" warning and explain why our usage is
|
||
safe in a comment.
|
||
|
||
* src/preproc/preconv/preconv.cpp (detect_file_encoding): Use
|
||
`l` modifier to `%u` `fprintf()` conversion instead of `z`, and
|
||
cast return values of `size_t` to unsigned long; "ISO C++98
|
||
does not support the ‘z’ gnu_printf length modifier" (it doesn't
|
||
support `ll` either). N.B. this is debugging output only.
|
||
|
||
* src/roff/groff/groff.cpp (synopsis):
|
||
* src/roff/troff/input.cpp (usage): Repeat variadic argument for
|
||
`%s` conversion in `fprintf()` call because "ISO C++98 does not
|
||
support %n$ operand number formats".
|
||
|
||
* src/roff/troff/env.cpp: Initialize adjustment and hyphenation
|
||
mode enums without commas at the end of the enumeration lists.
|
||
|
||
2021-08-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Clean up the interface between `an-footer` and `BT`, and
|
||
HTML header and footer suppression generally. Move
|
||
responsibility for checking the `ps4html` register from the
|
||
latter to the former. This is not something a `BT` redefiner
|
||
{see groff_man(7)} should have to worry about.
|
||
|
||
* tmac/an.tmac (BT): Drop test of `ps4html` register and early
|
||
return.
|
||
(an-header, an-footer): Return immediately if
|
||
`an-suppress-header-and-footer` is true. Remove conditional on
|
||
`an-is-output-html`.
|
||
(initialization): Define `an-suppress-header-and-footer`
|
||
register; true if `an-is-output-html` is true, or if `ps4html`
|
||
is defined.
|
||
|
||
2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (get_resolution): Unbrace a
|
||
single-statement `while` loop per prevailing coding style. Add
|
||
comments noting how we aren't parsing DESC files _precisely_ as
|
||
our documentation specifies.
|
||
|
||
2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Convert font class `int` members to `bool` where appropriate.
|
||
|
||
* src/include/font.h (font class): Demote integers to Booleans
|
||
and use Boolean literals where possible. Rename some member
|
||
variables to look like logical predicates.
|
||
- contains()
|
||
- is_special()
|
||
- has_ligature()
|
||
- tcommand -> has_tcommand
|
||
- unscaled_charwidths
|
||
- pass_filenames
|
||
- use_charnames_in_special
|
||
- is_unicode
|
||
- special (private)
|
||
* src/libs/libgroff/font.cpp (font::font): Construct object
|
||
using Boolean literal.
|
||
(font::contains):
|
||
(font::is_special):
|
||
(font::has_ligature): Convert return type to `bool`.
|
||
(font::load):
|
||
(font::load_desc): Assign to member variables using Boolean
|
||
literals.
|
||
* src/libs/libgroff/fontfile.cpp: Initialize appropriate globals
|
||
using `bool` type and Boolean literals.
|
||
* src/roff/troff/troff.h:
|
||
* src/roff/troff/input.cpp (main):
|
||
* src/roff/troff/node.cpp (troff_output_file::put_char_width):
|
||
Rename `tcommand_flag` to `device_has_tcommand` to suggest a
|
||
logical predicate, and to emphasize the formatter's concern with
|
||
what the output device can accept in the intermediate output
|
||
language.
|
||
* src/roff/troff/input.cpp: Initialize `device_has_tcommand`
|
||
global using `bool` type and Boolean literal.
|
||
|
||
2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Clarify breadth of application of `ll` macro.
|
||
|
||
* doc/meref.me: Document application of .ll macro only to the 3
|
||
environments that me(7) uses, not any the user might create.
|
||
* tmac/e.tmac (@C, xl, ll): Update comments.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55060>.
|
||
|
||
2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #58736.
|
||
|
||
* tmac/tests/e_footnotes_work_with_columns.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (bc): Fix problem with multiple columns on long
|
||
pages. Space to the next page location trap, not 24 inches.
|
||
Thanks to Dave Kemper and Bjarni Ingi Gislason for help tracking
|
||
this bug down.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55081>.
|
||
|
||
2021-08-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #55081.
|
||
|
||
* tmac/tests/e_columns-work-on-long-pages.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-08-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Localization): Add section.
|
||
|
||
2021-08-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/cs.tmac:
|
||
* tmac/de.tmac:
|
||
* tmac/fr.tmac:
|
||
* tmac/it.tmac:
|
||
* tmac/sv.tmac: Update ms package localization to use an
|
||
appropriate hyphenation mode for the `HY` register (the
|
||
mode for the pattern files, plus 2 as is traditional in ms).
|
||
|
||
2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac (1c): Place comment escape sequence immediately
|
||
after macro argument. (When redefining a request, one needs to
|
||
remember that request arguments are not parsed exactly as macro
|
||
arguments are.) Quiets "-w tab" warning.
|
||
|
||
2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Fix misleading documentation claim; gremlin(1) pictures
|
||
cannot be included directly; they must be preprocessed with
|
||
grn(1).
|
||
|
||
* doc/meref.me:
|
||
* tmac/groff_me.7.man: Replace "gremlin" with "grn".
|
||
|
||
2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_me.7.man: Document `n1` and `n2` macros.
|
||
|
||
2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[me]: Fix PS/n1 combination diagnostic spew and apparent logic
|
||
error.
|
||
|
||
* tmac/e.tmac (@h): Place comment escape sequence immediately
|
||
after macro argument. (When redefining a request, one needs to
|
||
remember that request arguments are not parsed exactly as macro
|
||
arguments are.)
|
||
(n2): Prefix with `do` requests using long register names.
|
||
(n2): Add macro-local register `|l` to store length of first
|
||
argument. Don't attempt to extract a substring beyond the
|
||
bounds of its source, which produces a warning diagnostic.
|
||
(&&): Define no-op macro for use as end macro in nested macro
|
||
definition.
|
||
(PS): Fix unbalanced-else diagnostic by changing `if` to `ie`.
|
||
(PS): Initialize `PS_nm_cnt` register to 0 instead of relying on
|
||
implicit definition.
|
||
(PS): Prefix with `do` definition of long macro name.
|
||
(PS): Indent call of end macro.
|
||
(PS): Add comment after escaped space.
|
||
(PS, PF): Prefix with `do` call of long macro name.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?61019>.
|
||
|
||
2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl (do_line): Recognize `n1` and `n2` as
|
||
characteristic me(7) macros.
|
||
|
||
2021-08-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_me.7.man: Document GF, IE, IF, IS, and PF macros.
|
||
|
||
2021-08-08 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* tmac/e.tmac: Rename `PE` to `PF` but remove vertical spacing.
|
||
(PE): New `PE` calls `PF` and then spaces as old `PE` did.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60479>.
|
||
|
||
2021-08-06 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* doc/meref.me: Improve documentation of image-inclusion macros.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60478>.
|
||
|
||
2021-08-06 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
GNU pic recognizes two possible endings of a pic block: .PE or
|
||
.PF. This fact was documented in doc/pic.ms but not in the pic
|
||
man page. The minimal pic implementation provided by pic.tmac
|
||
also did not include a .PF definition.
|
||
|
||
* src/preproc/pic/main.cpp (main): Add dummy definition of `PF`
|
||
macro.
|
||
* tmac/pic.tmac (PF): Add macro that performs indentation only.
|
||
(PE): Call PF for indentation.
|
||
|
||
* doc/pic.ms (Interface to [gt]roff/How Scaling is Handled):
|
||
* src/preproc/pic/pic.1.man (Description, Options): Mention `PF`
|
||
in addition to `PS` and `PE`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60504>.
|
||
|
||
2021-08-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/refer-ms.tmac:
|
||
* tmac/s.tmac (fn@init, @PP): Rename strings
|
||
`fn@sup-{start,end}` to `fn@mark-{start,end}`. This makes it
|
||
more clear that the strings are brackets for the footnote
|
||
marker, and not so much to do with the note text. Further, in
|
||
nroff mode, they aren't superscripts at all, but bracket glyphs.
|
||
|
||
2021-08-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/refer.1.man (Examples): Add section.
|
||
|
||
Addresses part of <https://savannah.gnu.org/bugs/?57667>.
|
||
|
||
2021-08-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/refer-ms.tmac: Use `fn@sup-{start,end}` instead of
|
||
`par@sup-{start,end}` when setting refer(1) citation labels.
|
||
This improves the appearance of the default labels on nroff
|
||
devices. Continues commit caeede07, 1 May.
|
||
|
||
2021-08-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tman/an-ext.tmac (EX, EE): Stop manipulating hyphenation.
|
||
It's redundant since disabling fill mode already prevents
|
||
automatic breaking, and therefore automatic hyphenation.
|
||
* tmac/groff_man.7.man.in (Description/Document structure
|
||
macros) <EX, EE>: Update documentation.
|
||
|
||
2021-08-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Update authorship credits. I appear
|
||
to have removed or refactored all of the "device" (recte: macro
|
||
package) inference logic adapted from Ralph Corderoy's grog.sh;
|
||
see commit 3617f42048f54cc3f0adc282ee3b9e481c75ebd5, 13 June
|
||
2014.
|
||
|
||
2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Refactor through relocation and
|
||
renaming. Move several global objects into subroutines.
|
||
- `@request` -> `&do_line`
|
||
- `@macro_ms`, `@macro_man`, `@macro_man_or_ms` ->
|
||
`&infer_man_or_ms_package`
|
||
- `@main_package` -> `&construct_command`
|
||
Rename some objects for clarity.
|
||
- `%Groff` -> `%score`
|
||
- `@filespec` -> `$input_file`
|
||
Delete unused object.
|
||
- `@standard_macro`
|
||
Add comments.
|
||
|
||
2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl (do_line): When matching macro/request
|
||
names, accept any non-whitespace character (Perl: \S) instead of
|
||
just a word-constituent character (Perl: \w), since roff
|
||
identifiers can contain unusual characters (refer(1) and
|
||
groff_me(7) illustrate some real-world cases).
|
||
|
||
2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Refactor macro package inference.
|
||
- Stop manually populating `Groff` hash. (It's itching for a
|
||
rename.)
|
||
- Stop calling now-dead subroutine `infer_macro_packages`.
|
||
(do_line): Always store the names of all macros called to the
|
||
`Groff` hash, incrementing it. Now it's a proper scoreboard.
|
||
Populate `inferred_main_package` from here upon encountering
|
||
characteristic (i.e., uniquely named) macros of each package.
|
||
Bug fix: drop "SP" from list of characteristic mom(7) macros;
|
||
it's shared with mm(7).
|
||
(infer_man_or_ms_package): Update comment. Return 0 (false) if
|
||
document appears to be "raw", using no full-service macro
|
||
package.
|
||
(infer_macro_packages): Delete; do_line() does this work.
|
||
|
||
2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Refactor preprocessor inference.
|
||
- Add new list, `inferred_preprocessor`.
|
||
- Drop preprocessor-related keys from `Groff` hash.
|
||
- Drop scalar `inside_tbl_table`.
|
||
(do_line): Set up hash `preprocessor_for_macro`. Detect
|
||
preprocessor macros the way the preprocessors do, explained in a
|
||
comment. Respect AT&T compatibility mode when doing so. Build
|
||
list of inferred preprocessors. This replaces the extensive and
|
||
gaseous series of `if` statements that manipulated the `Groff`
|
||
hash.
|
||
(infer_preprocessors): Completely replace. Set up a hash
|
||
`option_for_preprocessor` mapping preprocessor names to groff
|
||
options (where applicable). Append to `command` and
|
||
`preprocessor` lists as appropriate. Sort the preprocessor
|
||
options so they don't move around in the argument list depending
|
||
on the order of their macros' appearance in the input.
|
||
|
||
* src/utils/grog/tests/smoke-test.sh: Update test cases to
|
||
expect preprocessor options to show up in sorted order.
|
||
|
||
2021-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Drop dead code. Delete global
|
||
hash `preprocs_tmacs`, unused since commit b0de53c9, 30 June.
|
||
|
||
2021-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Fix code nit.
|
||
|
||
* src/preproc/html/pre-html.cpp (get_image_generator):
|
||
Type-qualify `keyword_len` as `const` to encourage the compiler
|
||
to compute this value (the length of a string literal) at build
|
||
time.
|
||
|
||
2021-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Slightly refactor.
|
||
|
||
* src/roff/troff/node.cpp: Add static `image_filename_len` to
|
||
store length of cached image file name, so we don't wastefully
|
||
recompute its length every time one is re-used.
|
||
(suppress_node::tprint): Compute image file name length only
|
||
when saving a new image file name. Use saved length in later
|
||
expressions.
|
||
(min): Drop unused inline function.
|
||
|
||
2021-07-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Fix regression (breaking important pdfmark/pdfroff
|
||
features) caused by my commit
|
||
e876d4bfd193abb9a7d1fb6e76519349bded482a, 27 July. An empty
|
||
image file name is in fact semantically valid when writing a
|
||
bounding box; pdfmark uses such boxes to frame hyperlinks.
|
||
Avoid null pointer dereference by initializing `image_filename`
|
||
to an empty string literal. Thanks to Tadziu Hoffman and Keith
|
||
Marshall for their patient explanations.
|
||
|
||
2021-07-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Refactor some internal functions.
|
||
|
||
* src/roff/troff/node.cpp: Rename two functions that have only
|
||
one caller.
|
||
- get_reg_int -> get_register
|
||
- get_reg_str -> get_string
|
||
We now have:
|
||
(get_register, get_string): Use `assert()` aggressively because
|
||
these are deeply internal and validation is imperative. Get rid
|
||
of diagnostic messages (one of which perpetuated the dubious
|
||
"number register" nomenclature) accordingly.
|
||
(fetch_register): Also rename `prev_value`, misleadingly
|
||
specific and seemingly copy-and-pasted out of a context where an
|
||
auto-increment or -decrement might have been applied. It's just
|
||
the `value`.
|
||
(suppress_node::tprint): Update call site.
|
||
|
||
2021-07-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Refactor `get_value` member functions. Given their
|
||
names and popular "getter/setter" paradigms from many OO
|
||
languages, the return type is misleading. Change it from `int`
|
||
to `bool` since it returns only a success/failure status and
|
||
modifies an argument (passed by reference) to deliver the
|
||
requested data.
|
||
|
||
* src/roff/troff/reg.h (reg, variable_reg):
|
||
* src/roff/troff/div.cpp (page_offset_reg, page_length_reg)
|
||
(vertical_position_reg, high_water_mark_reg)
|
||
(distance_to_next_trap_reg, page_number_reg, no_space_mode_reg):
|
||
* src/roff/troff/env.cpp (int_env_reg, vunits_env_reg)
|
||
(hunits_env_reg, horizontal_place_reg):
|
||
* src/roff/troff/input.cpp (writable_lineno_reg):
|
||
* src/roff/troff/reg.cpp (reg, number_reg, variable_reg): Update
|
||
class and member function definitions to reflect the new type.
|
||
Update member function definitions to return appropriate Boolean
|
||
literals instead of 0 and 1.
|
||
|
||
2021-07-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Fix Savannah #60981. Refactor device description
|
||
file handling and make it more robust. Make pre-grohtml's
|
||
-F option work as documented and honor device description file
|
||
semantics documented in groff_font(5).
|
||
|
||
* src/preproc/html/pre-html.cpp: Store partial filespecs of HTML
|
||
and PostScript device files in constant strings.
|
||
(get_resolution): Initialize `res` to zero. Only `free()` the
|
||
pointer `pathp` if `open_file()` succeeded (populating it).
|
||
Stop checking for valid `sscanf()` conversions of an integer to
|
||
store in `res`, and don't return early. Instead process the
|
||
whole DESC file; per our Texinfo manual and groff_font(5),
|
||
"Later entries in the file ... override previous values."
|
||
(get_image_generator): Add new function, paralleling
|
||
`get_resolution()`, replacing open-coded logic in `main()`.
|
||
Only the body of the `while` loop significantly differs.
|
||
Instead of using `sscanf`, process the input character by
|
||
character matching the keyword and {1,} spaces or tabs
|
||
after it. Whatever follows in `linebuf` must be the program
|
||
name.
|
||
(imageList::createPage): Add `assert()` to cause failure if an
|
||
empty image generator program gets this far, because it creates
|
||
repeated messes if it does. (Something isn't checking exit
|
||
statuses.)
|
||
(main): Condense `image_gen` collection to a function call, a
|
||
null pointer check, and a fatal diagnostic. Add a sanity check
|
||
and a fatal diagnostic if the PostScript resolution is garbage.
|
||
{It's initialized to -1 and `get_resolution()` will return 0 if
|
||
it doesn't find one.}
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60981>.
|
||
|
||
2021-07-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Delete or rename `debug` symbols to avoid clash with
|
||
new `debug` function in libgroff.
|
||
|
||
* src/preproc/html/pre-html.cpp: Update a comment to refer to
|
||
"debugging" mode. Rename static global from `debug` to
|
||
`debugging`.
|
||
(html_system, imageList::createPage, imageList::createImage,
|
||
print_args, char_buffer::do_html, char_buffer::do_image,
|
||
scanArguments): Update uses of static global.
|
||
|
||
* src/preproc/html/pushback.cpp:
|
||
* src/preproc/html/pushback.h: Delete unused `debug` member
|
||
variable.
|
||
|
||
2021-07-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/nroff/nroff.sh: Fix straggling use of `$1`, which
|
||
might not have a clear meaning in some shells after being
|
||
shifted (what if we just shifted the last argument?). Also
|
||
`continue` after processing a (groff) option argument, as we
|
||
should make no attempt to parse it.
|
||
|
||
2021-07-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_suppress): Recast diagnostic
|
||
messages for clarity, to communicate in terms of what the
|
||
escape sequence _is_, and to quote literals expected as input.
|
||
* src/roff/troff/node.cpp (suppress_node::tprint): Recast
|
||
diagnostic to prevent misinterpretation of image "description"
|
||
as being HTML IMG tag alt text or something like that.
|
||
Unfortunately, the new language speaks in terms of internal
|
||
implementation details ("grohtml-info"), but at least that way
|
||
it's easier for a user to decide if they care about it.
|
||
|
||
2021-07-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Avoid using sprintf() with user-controlled format
|
||
string.
|
||
|
||
* src/preproc/html/pre-html.cpp (makeFileName): Add comment
|
||
noting need for implementation synchrony between this function,
|
||
which generates \O5 escape sequences, and troff's
|
||
suppress_node::tprint member function, which interprets them.
|
||
* src/roff/troff/node.cpp: Rename 2 static globals for clarity.
|
||
- `last_image_filename` -> `image_filename`
|
||
- `last_image_id` -> `subimage_counter`
|
||
(suppress_node::tprint): Set up the buffer for image file name
|
||
to be written using a constant rather than an embedded literal.
|
||
Unconditionally initialize the buffer with a string terminator,
|
||
so there is no chance of a read from uninitialized storage.
|
||
Drop unused code involving `tem`. Drop stale comments. Clarify
|
||
comment: an `image_filename` doesn't _always_ contain a format
|
||
string, only sometimes. Replace use of `sprintf` with manual
|
||
construction of a new image filename string. There are two
|
||
cases, one where a format string {presently "%d"} is present,
|
||
and one where it is not. If it is present, locate it
|
||
{`percent`}. This means a limited/bounded image ("subimage") is
|
||
being processed; increment the subimage counter. Write a new
|
||
image file name preserving the parts before and after "%d" (the
|
||
"prefix" and "suffix", and replacing only the middle, using
|
||
`sprintf` with the subimage counter and the (string literal)
|
||
format. Be mindful of string bounds and memory allocation,
|
||
issuing diagnostics or aborting as necessary. If the image file
|
||
name does _not_ contain a format string, but needs only to be
|
||
copied, do that (`strcpy`), again instead of using `sprintf`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60977>.
|
||
|
||
2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Fix Savannah #60971.
|
||
|
||
* src/preproc/html/pre-html.cpp (makeFileName): Consistently put
|
||
a dash at the end of `macroset_template` whether the image file
|
||
name stem is user-supplied or the default. Stop adding the dash
|
||
before the image number in `image_template` instead. This makes
|
||
the image file name format reliable whether the image needs to
|
||
be subdivided (eqn) or not (tbl).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60971>.
|
||
|
||
2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Reduce noise to standard error stream.
|
||
|
||
* src/preproc/html/pre-html.cpp (imageList::createImage): Fix
|
||
apparent oversight: `EXE_EXT` was not being applied to the
|
||
second of three commands being run in a pipeline (did Windows
|
||
users notice?). Also issue (undocumented!) `-quiet` option to
|
||
`pnmtopng` to shut up its commentary about counting colors.
|
||
|
||
2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Stop discarding standard error output.
|
||
|
||
* src/preproc/html/pre-html.cpp (html_system): Stop sending the
|
||
standard error stream to /dev/null; this just makes debugging
|
||
harder, and doesn't produce much more output for well-formed
|
||
input documents. Rename `save_stdout` to `saved_stdout`.
|
||
|
||
2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Fix misspelled variable.
|
||
|
||
* src/preproc/html/pre-html.cpp: Rename `IMAGE_BOARDER_PIXELS`
|
||
to `IMAGE_BORDER_PIXELS`.
|
||
|
||
2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[libgroff, troff]: Add debug diagnostic level.
|
||
|
||
* src/include/error.h: Declare functions
|
||
`debug_with_file_and_line` and `debug`.
|
||
* src/libs/libgroff/error.cpp: Add `DEBUG` to enum `error_type`.
|
||
(do_error_with_file_and_line): Add case for `DEBUG` in switch.
|
||
(debug, debug_with_file_and_line): Add new functions.
|
||
|
||
Do the same for troff since it has a private implementation of
|
||
the diagnostic functions (thanks to `output_warning()`).
|
||
|
||
* src/roff/troff/input.cpp: Add `DEBUG` to enum `error_type`.
|
||
(do_error_with_file_and_line): Add case for `DEBUG` in switch.
|
||
(debug, debug_with_file_and_line): Add new functions.
|
||
|
||
2021-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/hpftodit/hpftodit.cpp (hp_msl_to_ucode_name)
|
||
(unicode_to_ucode_name): Hush "format nonliteral" compiler
|
||
warnings by using a preprocessor-defined string literal as an
|
||
sprintf() format string instead of a C++ variable that just
|
||
compared identically to the same thing.
|
||
|
||
2021-07-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/hpftodit/hpftodit.cpp (show_symset): Prevent
|
||
sprintf() from overunning a static buffer. Thanks to Bjarni
|
||
Ingi Gislason for the report. Resize buffer to be large enough
|
||
to accommodate a 64-bit unsigned int type formatted as decimal.
|
||
Also add assert() before the sprintf() to abort if the int type
|
||
is even larger than that. Use "%u" conversion instead of "%d"
|
||
since the quantity is unsigned.
|
||
(hp_msl_to_ucode_name): Similar, but for a signed int.
|
||
(unicode_to_ucode_name): Similar, but for a signed int formatted
|
||
as (unsigned) hexadecimal.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60964>.
|
||
|
||
2021-07-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/nroff/nroff.sh: Refactor, mostly by relocation. Move
|
||
locale character set inference logic so that we only run it if
|
||
we have to (`-T` option was invalid or not given and
|
||
`GROFF_TYPESETTER` was not set in the environment or invalid).
|
||
Initialize `T` variable as empty.
|
||
|
||
2021-07-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/nroff/nroff.sh: Use Version 7 Unix sh-compatible form
|
||
of parameter expansion; per the GNU Autoconf manual[1], "[o]ld
|
||
BSD shells, including the Ultrix sh, don't accept the colon for
|
||
any shell substitution, and complain and die." This is also the
|
||
form of such substitutions used elsewhere in the script, so they
|
||
should be mutually consistent.
|
||
|
||
[1] https://www.gnu.org/software/autoconf/manual/autoconf-2.60/\
|
||
html_node/Shell-Substitutions.html
|
||
|
||
2021-07-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/nroff/nroff.sh: Slightly refactor. Rename formerly
|
||
unused loop index variable from `i` to `arg` to leverage it in a
|
||
later diagnostic message without a separate definition. Inside
|
||
the loop, expand `arg` instead of positional parameter 1, the
|
||
meaning of which is less obvious after the parameter list is
|
||
shifted by the new `is_option_argument_pending` logic (commit
|
||
2b955c57, 20 July).
|
||
|
||
2021-07-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.1.man (Options) <-S>: Fix error: `-S`
|
||
sets safer mode (redundantly) but is not passed to pic and troff
|
||
as was claimed.
|
||
|
||
2021-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/number.cpp (parse_term): Tweak diagnostic
|
||
messages. When a left operand to a binary operator is empty,
|
||
report the operator in question (helpful for string
|
||
interpolations in complex expressions). When handling input
|
||
scaling indicators, drop word "this" from "this context", since
|
||
the parser's context might not be clear from a file name and
|
||
line number. Say "scaling indicator" instead of "scale
|
||
indicator".
|
||
(parse_expr, parse_term): Rename function parameter from
|
||
`scale_indicator` to `scaling_indicator`.
|
||
|
||
2021-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (define_color): Tweak warning
|
||
diagnostics for clarity. Only one value is expected when
|
||
defining a color in the `gray` color space. Quote recognized
|
||
color space names when complaining of an unknown one.
|
||
|
||
2021-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[nroff]: Pass a supplied `-c` option to groff. While at present
|
||
this does little more than `-P-c` already achieves, that might
|
||
not be true forever. Further, there is a distinction between
|
||
ignoring color-related requests in groff input documents and
|
||
ignoring color-related commands in device-independent output.
|
||
This distinction would make it unwise to adapt `-c` to any other
|
||
purpose in nroff in the future.
|
||
|
||
* NEWS: Update item from commit dd725dce, 10 February 2020.
|
||
* src/roff/nroff/nroff.sh: Pass `-c` option to groff in addition
|
||
to synthesizing a `-P-c` option (for grotty) when it is seen.
|
||
* src/roff/nroff/nroff.1.man (Options): Document `-c` as an
|
||
option recognized by troff(1).
|
||
|
||
2021-07-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[nroff]: Support space between option flags and their arguments.
|
||
|
||
* src/roff/nroff/nroff.sh: Add new `is_option_argument_pending`
|
||
flag to add an additional state to the option parser. Set it if
|
||
an argument-requiring option is encountered with no abutting
|
||
argument. If it is set when a new argument is encountered,
|
||
absorb the argument into the groff option list and clear the
|
||
flag. Modernize script in a couple of other ways.
|
||
- Exit with status 2 upon usage errors so that this condition
|
||
is easily distinguished from a groff abort (which exits with
|
||
status 1).
|
||
- Test shell variables for non-nullity with test(1) -n
|
||
operator instead of a string comparison.
|
||
* src/roff/nroff/tests/verbose_option_works.sh: Test correct
|
||
construction of groff command using this input form.
|
||
* src/roff/nroff/nroff.1.man (Options): Add spaces between
|
||
option flags and option arguments. Sync metasyntactic variable
|
||
names with groff(1) while we're at it.
|
||
(Description): Drop sentence warning of whitespace prohibition.
|
||
(Exit status): Add new section.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60943>.
|
||
|
||
2021-07-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (main): Emit error diagnostic if `-d`
|
||
or `-r` option is given a malformed argument. This prevents a
|
||
string or register with an empty name from being created.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60935>.
|
||
|
||
2021-07-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/nroff/nroff.sh:
|
||
* src/roff/troff/input.cpp (usage): Use "dev" as metasyntactic
|
||
variable name for -T option argument to achieve consistency with
|
||
our other documentation.
|
||
|
||
2021-07-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[groff]: Comment out vestiges of gideal support. It would be
|
||
lovely to have, but no free (and GPL-compatible) implementation
|
||
has showed up after decades of waiting. Production of the
|
||
original was a Ph.D. thesis. Excited by de Moivre's theorem?
|
||
Take a stab at it.
|
||
|
||
* src/roff/groff/groff.cpp (main): Comment out effect of `-J`
|
||
option. It remains recognized, but silently ignored (instead of
|
||
attempting to execute a nonexistent preprocessor).
|
||
(synopsis): Add comment reminding us to document the option if
|
||
we ever get the support.
|
||
(help): Comment out documentation of option.
|
||
|
||
2021-07-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[[gnt]roff]: Make usage messages more accurate.
|
||
|
||
* src/roff/groff/groff.cpp (synopsis): Drop `-h` and `-v` from
|
||
normal operation synopsis. Sort options in en_US lexicographic
|
||
order. Tighten presentation of alternate usage forms.
|
||
(help): Document longer forms of `-d` and `-r`.
|
||
* src/roff/nroff/nroff.sh: Report `$prog` instead of "nroff"
|
||
literal. Refer to `-P` option argument as "arg" instead of
|
||
"opt", for consistency with groff usage message. Use opposite
|
||
case from option letter for option argument.
|
||
* src/roff/troff/input.cpp (usage): Put brackets around options.
|
||
Sort options in en_US lexicographic order. Drop `-v` from
|
||
normal operation synopsis. Use opposite case from option letter
|
||
for option argument. Put operand name in capitals. Set valid
|
||
usage forms on one physical line each (see 89648fb4, 5 June).
|
||
Add synopsis line for alternate usage forms.
|
||
|
||
2021-07-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Refactor environment initialization, switching, and
|
||
copying.
|
||
|
||
* src/roff/troff/env.cpp: Rename struct `env_list` to
|
||
`env_list_node` since it describes a node of a singly-linked
|
||
list. Remove constant `NENVIRONMENTS` and array `env_table`.
|
||
Add static symbol `default_environment_name` to replace string
|
||
literal.
|
||
(init_environments): Stop initializing `curenv` through
|
||
`env_table`. Use `default_environment_name` for that
|
||
initialization and add the default environment to
|
||
`env_dictionary`.
|
||
(environment_switch): Simplify. Shorten "dummy environment"
|
||
diagnostic message. Stop creating an integer-named
|
||
environment inside the `env_table` array, only falling through
|
||
to use the `env_dictionary` if the named environment is not a
|
||
valid integer or if the array is full. Instead use
|
||
`env_dictionary` always. Drop no longer needed `pop`
|
||
quasi-Boolean integer with extra state to suppress environment
|
||
stack underflow errors. Instead report the error if underflow
|
||
occurs, regardless of any other circumstance.
|
||
(environment_copy): Simplify. Stop searching the `env_table`
|
||
array for an environment to copy from, only falling through to
|
||
use the `env_dictionary` if the named environment is not a valid
|
||
integer or if the array is full. Instead search
|
||
`env_dictionary` always. Emit "no environment specified to copy
|
||
from" diagnostic only if the `evc` request is given no argument.
|
||
If the source environment to copy from is given but not found,
|
||
emit a new diagnostic naming the nonexistent environment. Fix
|
||
bug: stop returning early if no copying could be done; instead
|
||
fall through to the end of the function, which calls
|
||
`skip_line()` and prevents anything on the remainder of the
|
||
{invalid} control line from being interpreted. Problem dates
|
||
back to commit da3b7137, 6 March 2000 (groff 1.16).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60913>.
|
||
|
||
2021-07-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/evc_produces_no_output_if_invalid.sh:
|
||
Regression-test Savannah #60913.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2021-07-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Update English hyphenation patterns.
|
||
|
||
* NEWS: Add item.
|
||
* tmac/hyphen.en: Update file using `hyph-en-us.tex` patterns
|
||
file from the TeX hyph-utf8 project.
|
||
* tmac/hyphenex.en: Remove explicit hyphenations for words that
|
||
no longer require them when using the new patterns. Add one
|
||
item scraped from an erratum comment in hyphen.en
|
||
{"dem-o-crat"}.
|
||
|
||
The new patterns likely _will_ change the automatic hyphenation
|
||
break points of your English documents. Here is a sample of
|
||
affected words found within groff's own documentary corpus.
|
||
|
||
OLD NEW
|
||
=== ===
|
||
ar‐range‐ment arrange‐ment
|
||
col‐umns columns
|
||
con‐struc‐ted con‐structed
|
||
cus‐tom‐ized cus‐tomized
|
||
def‐i‐ni‐tions de‐f‐i‐n‐i‐tions
|
||
der‐i‐va‐tions de‐riva‐tions
|
||
hy‐phen‐a‐tion hy‐phen‐ation
|
||
ma‐te‐rial ma‐te‐r‐ial
|
||
Mi‐cro‐soft Mi‐crosoft
|
||
pipe‐lines pipelines
|
||
post‐pro‐ces‐sors post‐proces‐sors
|
||
pro‐cessed processed
|
||
pro‐cesses processes
|
||
spa‐ces spaces
|
||
Wer‐ner Werner
|
||
|
||
2021-07-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Add unit test for `substring` request.
|
||
|
||
* src/roff/groff/tests/substring_works.sh: Do it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2021-07-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Remove compatibility mode save registers after using
|
||
them.
|
||
|
||
* tmac/an.tmac:
|
||
* tmac/andoc.tmac:
|
||
* tmac/cp1047.tmac:
|
||
* tmac/devtag.tmac:
|
||
* tmac/ec.tmac:
|
||
* tmac/fallbacks.tmac:
|
||
* tmac/latin1.tmac:
|
||
* tmac/latin2.tmac:
|
||
* tmac/latin5.tmac:
|
||
* tmac/latin9.tmac:
|
||
* tmac/papersize.tmac:
|
||
* tmac/pdfpic.tmac:
|
||
* tmac/psold.tmac:
|
||
* tmac/pspic.tmac:
|
||
* tmac/trace.tmac:
|
||
* tmac/unicode.tmac: Do it.
|
||
|
||
* doc/groff.texi (Implementation Differences):
|
||
* man/groff_diff.7.man (Implementation Differences): Illustrate
|
||
doing so in relevant examples.
|
||
|
||
2021-07-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/troffrc: Load the English localization file `en.tmac` by
|
||
default, instead of dealing with hyphenation language and
|
||
patterns directly in this file. (This also replaces a
|
||
localization-determination mechanism that was never part of a
|
||
groff release.)
|
||
|
||
* src/roff/groff/tests/initialization_is_quiet.sh:
|
||
* src/roff/groff/tests/localization_works.sh: Rewrite to use
|
||
explicit macro file loading localization mechanism.
|
||
|
||
2021-07-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Move core man(7) implementation to an.tmac.
|
||
|
||
* tmac/an.tmac: Delete andoc-sourcing wrapper.
|
||
|
||
* tmac/an-old.tmac: Rename...
|
||
* tmac/an.tmac: ...to this.
|
||
|
||
* tmac/tests/an-old_AT-and-UC-footer-saved-and-restored.sh:
|
||
* tmac/tests/an-old_CS-register-off.sh:
|
||
* tmac/tests/an-old_CS-register-on.sh:
|
||
* tmac/tests/an-old_CS-register-unspecified.sh:
|
||
* tmac/tests/an-old_CT-register-off.sh:
|
||
* tmac/tests/an-old_CT-register-on.sh:
|
||
* tmac/tests/an-old_CT-register-unspecified.sh:
|
||
* tmac/tests/an-old_FT-bad-value-should-not-trash-titles.sh:
|
||
* tmac/tests/an-old_LL-init-sanely.sh:
|
||
* tmac/tests/an-old_TH-repairs-ad-damage.sh:
|
||
* tmac/tests/an-old_TH-repairs-hy-damage.sh:
|
||
* tmac/tests/an-old_TS-do-not-keep-tables-when-cR-set.sh:
|
||
* tmac/tests/an-old_X-register-works.sh:
|
||
* tmac/tests/an-old_avoid-two-font-denial-of-service.sh:
|
||
* tmac/tests/an-old_no-break-after-short-paragraph-tags.sh:
|
||
* tmac/tests/an-old_page-footers-present.sh:
|
||
* tmac/tests/an-old_page-header-has-current-data.sh:
|
||
* tmac/tests/an-old_title-abbreviation-works.sh: Rename...
|
||
|
||
* tmac/tests/an_AT-and-UC-footer-saved-and-restored.sh:
|
||
* tmac/tests/an_CS-register-off.sh:
|
||
* tmac/tests/an_CS-register-on.sh:
|
||
* tmac/tests/an_CS-register-unspecified.sh:
|
||
* tmac/tests/an_CT-register-off.sh:
|
||
* tmac/tests/an_CT-register-on.sh:
|
||
* tmac/tests/an_CT-register-unspecified.sh:
|
||
* tmac/tests/an_FT-bad-value-should-not-trash-titles.sh:
|
||
* tmac/tests/an_LL-init-sanely.sh:
|
||
* tmac/tests/an_TH-repairs-ad-damage.sh:
|
||
* tmac/tests/an_TH-repairs-hy-damage.sh:
|
||
* tmac/tests/an_TS-do-not-keep-tables-when-cR-set.sh:
|
||
* tmac/tests/an_X-register-works.sh:
|
||
* tmac/tests/an_avoid-two-font-denial-of-service.sh:
|
||
* tmac/tests/an_no-break-after-short-paragraph-tags.sh:
|
||
* tmac/tests/an_page-footers-present.sh:
|
||
* tmac/tests/an_page-header-has-current-data.sh:
|
||
* tmac/tests/an_title-abbreviation-works.sh: ...to these.
|
||
|
||
* tmac/tmac.am (TMACNORMALFILES): Remove an-old.tmac.
|
||
(tmac_TESTS): Reflect renames of test files above.
|
||
(tmac/stamp-wrap): Macro-source `an.tmac` in the man wrapper.
|
||
|
||
* tmac/andoc.tmac: Refer to (and macro-source) an.tmac.
|
||
* tmac/man.tmac: Macro-source `an.tmac`, not `andoc.tmac`.
|
||
* tmac/tests/andoc_flush-between-packages.sh: Call groff with
|
||
`-mandoc` option instead of `-man`. Henceforth, if you want the
|
||
andoc wrapper, you have to ask for it.
|
||
|
||
* tmac/an.tmac: Drop "-old" nomenclature.
|
||
|
||
* PROBLEMS:
|
||
* doc/groff.texi (man):
|
||
* tmac/man.local: Update documentation appropriately.
|
||
|
||
* NEWS: Add item.
|
||
|
||
* man/groff_tmac.5.man (Macro packages/man pages):
|
||
* src/roff/groff/groff.1.man (Usage/Macro packages): Update
|
||
discussion of an, doc, and andoc.
|
||
* tmac/groff_man.7.man.in (Files): Update descriptions of
|
||
an.tmac, andoc.tmac, man.tmac, and mandoc.tmac.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60789>.
|
||
|
||
2021-07-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Slightly refactor. Make the source code slightly more
|
||
accessible by using a `bool` type for a function's default
|
||
parameter used as a Boolean, and comment it at call sites where
|
||
the default is overridden.
|
||
|
||
* src/roff/troff/token.h (get_name, get_long_name): Change type
|
||
of parameter from `int` to `bool` and default from 0 to `false`.
|
||
* src/roff/troff/input.cpp (do_get_long_name)
|
||
(empty_name_warning, get_name, get_long_name): Change type of
|
||
parameter from `int` to `bool` in declarations and definitions.
|
||
* src/roff/troff/column.cpp (column_justify):
|
||
* src/roff/troff/div.cpp (diversion_trap):
|
||
* src/roff/troff/env.cpp (environment_switch, environment_copy)
|
||
(do_input_trap, set_hyphenation_language)
|
||
(do_hyphenation_patterns_file):
|
||
* src/roff/troff/input.cpp (define_color, composite_request)
|
||
(do_define_string, do_define_macro, rename_macro, alias_macro)
|
||
(chop_macro, do_string_case_transform, substring_request)
|
||
(length_request, asciify_macro, unformat_macro, do_register)
|
||
(device_macro_request, do_if_request, do_source)
|
||
(ps_bbox_request, do_open, close_request, do_write_request)
|
||
(write_macro_request, define_class, copy_file, vjustify)
|
||
(transparent_file, do_macro_source):
|
||
* src/roff/troff/node.cpp (font_translate, font_position, style)
|
||
(get_fontno):
|
||
* src/roff/troff/reg.cpp (define_number_reg, inline_define_reg)
|
||
(alter_format, alias_reg, rename_reg): Update call sites. Add
|
||
(comment indicating meaning of parameter.
|
||
|
||
Do similarly for token::delimiter() member function.
|
||
|
||
* src/roff/troff/token.h (token::delimiter): Change type of
|
||
parameter from `int` to `bool`, name from `warn` to `err` (to
|
||
match definition and behavior in input.cpp) and default from 0
|
||
to `false`.
|
||
* src/roff/troff/input.cpp (token::delimiter): Change type of
|
||
parameter from `int` to `bool` in definition.
|
||
* src/roff/troff/input.cpp (do_expr_test, get_delim_number)
|
||
(get_line_arg, read_size, do_register, read_draw_node):
|
||
* src/roff/troff/reg.cpp (inline_define_reg): Update call sites.
|
||
Add comment indicating meaning of parameter.
|
||
|
||
2021-07-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-footer): Remove string
|
||
`an-outer-footer-text` after we're done with it.
|
||
|
||
2021-07-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Remove the stripper script and its vestiges.
|
||
|
||
* contrib/hdtbl/hdmisc.tmac:
|
||
* contrib/hdtbl/hdtbl.tmac:
|
||
* contrib/mom/om.tmac:
|
||
* tmac/doc.tmac:
|
||
* tmac/e.tmac:
|
||
* tmac/mdoc/doc-common:
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff:
|
||
* tmac/mdoc/doc-syms: Remove `%beginstrip` comment.
|
||
|
||
* tmac/strip.sed: Delete.
|
||
|
||
* tmac/tmac.am (EXTRA_DIST): Stop shipping `strip.sed`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55091>.
|
||
|
||
2021-07-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Skip the stripper, part 3/3 (mdoc).
|
||
|
||
* tmac/doc-old.tmac-u:
|
||
* tmac/doc.tmac-u:
|
||
* tmac/mdoc/doc-common-u:
|
||
* tmac/mdoc/doc-ditroff-u:
|
||
* tmac/mdoc/doc-nroff-u:
|
||
* tmac/mdoc/doc-syms-u: Rename these...
|
||
|
||
* tmac/doc-old.tmac:
|
||
* tmac/doc.tmac:
|
||
* tmac/mdoc/doc-common:
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff:
|
||
* tmac/mdoc/doc-syms: ...to these.
|
||
|
||
* tmac/tmac.am (TMACNORMALFILES): Add `doc-old.tmac` and
|
||
`doc.tmac`.
|
||
(TMACUNSTRIPFILES, TMACSTRIPFILES): Delete variables.
|
||
(dist_tmac_DATA): Drop `$(TMACUNSTRIPFILES)`.
|
||
(nodist_tmac_DATA): Drop `$(TMACSTRIPFILES)`.
|
||
(TMACMDOCSTRIPFILES): Rename...
|
||
(TMACMDOCFILES): ...to this.
|
||
(nodist_mdoc_DATA, MOSTLYCLEANFILES): Reflect above rename.
|
||
(nodist_mdoc_DATA): Rename...
|
||
(dist_mdoc_DATA): ...to this.
|
||
(TMACMDOCUNSTRIPFILES): Delete variable.
|
||
(EXTRA_DIST): Drop `$(TMACMDOCUNSTRIPFILES)`.
|
||
($(TMACSTRIPFILES), $(TMACMDOCSTRIPFILES)): Drop targets.
|
||
|
||
The portions above are based on a patch by Ingo Schwarze.
|
||
|
||
* tmac/doc.tmac:
|
||
* tmac/mdoc/doc-common:
|
||
* tmac/mdoc/doc-ditroff:
|
||
* tmac/mdoc/doc-nroff:
|
||
* tmac/mdoc/doc-syms: Bracket macro definitions tightly with
|
||
`eo` and `ec` requests since they were written under this
|
||
assumption. The files in general were also drafted under the
|
||
assumption that they'd be stripped, so `eo` was in effect for
|
||
broad swaths of the file including portions outside of any macro
|
||
definition where comments were used. But comments are expressed
|
||
using the escape character! So we got warnings about an
|
||
undefined '\"' macro, and that was just the beginning of a
|
||
wrecking ball of trouble that smashed through the
|
||
implementation. Some--but not all--string definitions (and
|
||
appendments) needed to be bracketed with `eo` and `ec` as well,
|
||
to delay interpolation of embedded string names that are not
|
||
defined until macros interpolate them later. I did what
|
||
appeared necessary to pass our tests and keep -Tutf8 and -Tps
|
||
renderings of tmac/groff_mdoc.7 from changing from their
|
||
strip-influenced output. Subtle bugs might linger, but some
|
||
won't be the fault of the unstripping process. (For instance,
|
||
try provoking a usage message on the `Hf` macro.)
|
||
|
||
2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man pages]: Remove compatibility save register.
|
||
|
||
* **/*.man*: Remove page-local compatibility save register after
|
||
using it.
|
||
|
||
2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Simplify `mso` requests.
|
||
|
||
* tmac/X.tmac:
|
||
* tmac/Xps.tmac:
|
||
* tmac/dvi.tmac:
|
||
* tmac/html.tmac:
|
||
* tmac/lbp.tmac:
|
||
* tmac/lj4.tmac:
|
||
* tmac/ps.tmac:
|
||
* tmac/tty-char.tmac:
|
||
* tmac/tty.tmac:
|
||
* tmac/www.tmac.in: Move `mso` requests to be inside regions
|
||
where compatibility mode is turned off. I believe they were
|
||
placed where they were because things didn't work when the
|
||
compatibility mode register being saved was .C, rather than the
|
||
.cp register introduced in commit 6a37bb5f, 17 April 2020. Now
|
||
the logic is less mysterious. Also, remove the register used to
|
||
save compatibility mode after we're done with it, to reduce name
|
||
space clutter.
|
||
|
||
2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/it.tmac: Drop sourcing of `latin1.tmac` and set up of
|
||
hyphenation codes; since the `hyphen.it` file is pure ASCII, we
|
||
don't need to expect Latin-1-encoded code points in it.
|
||
|
||
2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Make localization files work in compatibility mode.
|
||
|
||
* tmac/cs.tmac:
|
||
* tmac/de.tmac:
|
||
* tmac/en.tmac:
|
||
* tmac/fr.tmac:
|
||
* tmac/it.tmac:
|
||
* tmac/ja.tmac:
|
||
* tmac/sv.tmac:
|
||
* tmac/zh.tmac: Save and restore compatibility mode.
|
||
|
||
* tmac/den.tmac: Invoke requests with `do`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60874>. Thanks to Bjarni
|
||
Ingi Gislason for the report.
|
||
|
||
2021-07-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #60874.
|
||
|
||
* src/roff/groff/tests/initialization_is_quiet.sh: Test it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2021-07-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Integrate Italian localization.
|
||
|
||
* NEWS: Add item. Update an existing list of localization macro
|
||
files.
|
||
* doc/groff.texi (Manipulating Hyphenation): Update table of
|
||
hyphenation pattern left and right minimums and list of
|
||
available localization files to include Italian.
|
||
* man/groff_tmac.5.man: Update list of available localization
|
||
files to include Italian.
|
||
* src/roff/groff/tests/localization_works.sh: Test it.
|
||
* tmac/tmac.am (TMACNORMALFILES): Add `it.tmac` and `hyphen.it`.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60828>.
|
||
|
||
2021-07-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Flesh out Italian localization.
|
||
|
||
* tmac/hyphen.it: Add hyphenation patterns from TeX hyph-utf8
|
||
project.
|
||
* tmac/it.tmac:
|
||
- Revise copyright date to just this year (it had been copied
|
||
from fr.tmac).
|
||
- Use grave accents instead of acute ones to indicate stress
|
||
on word-final vowels. Per the University of Wikipedia and a
|
||
sampling of apparently well-typeset Italian language
|
||
documents online, this appears to be correct. Yell at me if
|
||
I'm wrong.
|
||
- Source latin1.tmac instead of latin9.tmac; Italian doesn't
|
||
require any letter code points from Latin-9, unlike the
|
||
French file upon which this one was based, and Latin-1 is
|
||
less of a pain to work with.
|
||
- Set the hyphenation mode to 1 instead of 4 for congruence
|
||
with the requirements of the hyphenation patterns.
|
||
- Set up hyphenation codes. This (and sourcing latin1.tmac)
|
||
might not be necessary as the hyphenation pattern file, of a
|
||
more recent vintage than the others we're using, is pure
|
||
ASCII. However I don't understand these issues perfectly so
|
||
I am making the conservative choice. Again per the
|
||
University of Wikipedia, Italian requires only acute and
|
||
grave accents, in contrast to the rich French diacritical
|
||
bouillabaisse.
|
||
- Set the hyphenation language and load the pattern file.
|
||
- Add comments in parallel with other localization files and
|
||
to supply text editors with hints.
|
||
|
||
2021-07-02 Edmond Orignac <edmond.orignac@wanadoo.fr>
|
||
|
||
* tmac/it.tmac: Add Italian localization.
|
||
|
||
2021-07-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Skip the stripper, part 1/3 ("me").
|
||
|
||
* tmac/e.tmac-u: Rename to...
|
||
* tmac/e.tmac: ...this.
|
||
|
||
* tmac/tmac.am (TMACNORMALFILES): Add tmac/e.tmac.
|
||
(TMACUNSTRIPFILES): Remove tmac/e.tmac-u.
|
||
(TMACSTRIPFILES): Remove tmac/e.tmac.
|
||
|
||
Fixes one third of <https://savannah.gnu.org/bugs/?55091>.
|
||
|
||
2021-07-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl: Simplify parsing. Dave Kemper pointed
|
||
out that preprocessors like pic(1) use pretty unsophisticated
|
||
*roff parsing to determine where to perform their textual
|
||
replacements. My enhancements to support input line
|
||
continuation and cope with brace escapes were thus
|
||
overengineered. Remove them.
|
||
- Drop scalars `is_continued_line` and `logical_line`.
|
||
(do_line): Stop performing logical line concatenation and
|
||
detecting input line continuation. Perform operations on
|
||
`line` instead of `logical_line`. Stop removing brace
|
||
escapes.
|
||
* src/utils/grog/grog.1.man (Limitations): Update discussion.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60862>. Thanks, Dave!
|
||
|
||
2021-06-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/reg.cpp (lookup_number_reg, alias_reg): In
|
||
diagnostic messages, say simply "register" instead of "number
|
||
register" (there is no other kind).
|
||
|
||
2021-06-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Refactor input parsing.
|
||
|
||
* src/utils/grog/grog.pl:
|
||
- Add scalar `use_compatibility_mode` (see below).
|
||
- Add list `request` to store the names of all requests
|
||
recognized by groff so that they aren't confused with macro
|
||
names.
|
||
- Add scalars `have_seen_first_macro_call` (replaces
|
||
`before_first_command`, but at global scope),
|
||
`is_continued_line` and `logical_line`. The latter two
|
||
enable us to handle *roff input line continuation correctly.
|
||
(process_arguments): Set `use_compatibility_mode` if `-C`
|
||
option specified.
|
||
(process_input): Refactor to greatly simplify, to not attempt
|
||
to read the first line of an input file as a special case, and
|
||
to avoid sending `do_line` an undefined argument (when EOF is
|
||
reached).
|
||
(do_first_line): Delete.
|
||
(do_line): Rewrite the early stages of input parsing.
|
||
- Concatenate continued input lines, setting
|
||
`is_continued_line` and returning early as each one is seen,
|
||
storing the accumulating input in `logical_line`.
|
||
- Check the input line for the form of comment deposited by
|
||
Perl's Pod::Man, which uses a highly accented dialect of
|
||
man(7); if it's present, inflate `man_score` to compensate
|
||
for the page-private `IX` macro it defines but which
|
||
duplicates the name and function of a 4.2BSD-era ms(7)
|
||
extension that would otherwise deceive our scoring
|
||
mechanism, because Pod::Man produces `IX` calls to
|
||
metastatic excess. (An alternative to this kludge is
|
||
documented in comments: if a "standard" macro is redefined,
|
||
we could delete it from the relevant lists and hashes.)
|
||
- Strip *roff comments from input.
|
||
- Normalize control lines; convert the no-break control
|
||
character to the regular one and remove unnecessary
|
||
white space.
|
||
- Remove brace escapes.
|
||
- Recognize two-character macro calls when not followed by
|
||
white space in compatibility mode.
|
||
- Drop logic that erroneously attempted to infer soelim(1) use
|
||
from macro calls and request invocations. The grog(1) and
|
||
soelim(1) man pages now both explain why such an effort was
|
||
misguided.
|
||
- Recognize macro definitions created by .am and .am1 requests
|
||
{not just .de and .de1}.
|
||
- Ignore all other *roff requests.
|
||
- What remains must be a ("standard") macro call, so set
|
||
`have_seen_first_macro_call`.
|
||
|
||
* src/utils/grog/grog.1.man (Limitations): Document a further
|
||
restriction: don't change the escape character, either.
|
||
|
||
* src/utils/grog/tests/smoke-test.sh: Comment out pic-detection
|
||
test on soelim(1). The pic macro calls are guarded by roff
|
||
control structures and only worked previously by accident
|
||
because grog did not recognize *roff input line continuation,
|
||
now it does and the illusion is dispelled. (A reliable way to
|
||
fool grog before and after my refactoring is now documented in
|
||
its man page.)
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59622>.
|
||
|
||
2021-06-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #59622.
|
||
|
||
* src/utils/grog/tests/recognize-perl-pod.sh: Test it.
|
||
* src/utils/grog/grog.am (grog_TESTS): Run test.
|
||
|
||
2021-06-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.1.man (Limitations): Document further
|
||
restrictions (no changing of control characters, control
|
||
structures not interpreted).
|
||
|
||
2021-06-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Refactor command-line argument handling.
|
||
|
||
* src/utils/grog/grog.pl:
|
||
- Drop scalars `groff_opts`, `device`, and `with_warnings`.
|
||
- Move scalar `pdf_with_ligatures`...
|
||
(process_arguments): ...here. Recognize all groff options
|
||
that take an optionally whitespace-separated option argument
|
||
and apply the existing "delayed option" handling to them.
|
||
Push any groff option except `-m` as-is onto the constructed
|
||
groff command's argument list (`-m` handling is unchanged).
|
||
Match long option names exactly, not sloppily. Stop
|
||
recognizing `--warnings` option. Emit error diagnostic if
|
||
unrecognized long option encountered.
|
||
(infer_device): Delete subroutine and its top-level call site.
|
||
(help): Undocument `--warnings`.
|
||
|
||
* src/utils/grog/grog.1.man:
|
||
(Synopsis): Use font style macros instead of .OP. Undocument
|
||
`--warnings`.
|
||
(Options): Note that the groff arguments produced by the grog
|
||
`--ligatures` option are supported only by the `pdf` device.
|
||
Undocument `--warnings`. Undocument groff-incompatible
|
||
restriction on whitespace before option arguments; grog is
|
||
compatible now. Simplify discussion in light of simplified
|
||
grog logic.
|
||
(Details): Undocument scenario where grog infers multiple
|
||
main/major/full-service macro packages; this no longer
|
||
happens.
|
||
(Examples): Update to no longer illustrate inclusion of `-T
|
||
ps` option; this no longer happens by default.
|
||
|
||
* NEWS: Document removal of grog's `--warnings` option.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?57873>; groff options are
|
||
no longer "mangled".
|
||
|
||
2021-06-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #57873.
|
||
|
||
* src/utils/grog/tests/preserve-groff-options.sh: Test it.
|
||
* src/utils/grog/grog.am (grog_TESTS): Run test.
|
||
|
||
2021-06-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Refactor device (`-T` option) handling.
|
||
|
||
* src/utils/grog/grog.pl: Redeclare `device` as a scalar instead
|
||
of a list.
|
||
(process_arguments): Generalize handling of `-T` and `-m`
|
||
options to permit optional whitespace. Rename scalar `was_T` to
|
||
`delayed_option`.
|
||
(infer_device): Stop unconditionally adding a `-T ps` argument
|
||
to the generated groff command. Remove logic that validates any
|
||
given `-T` option argument; instead, let groff fail if a bad one
|
||
is supplied (its own diagnostics in this scenario were improved
|
||
in commit 5a721a30, 27 May). This makes grog agnostic about any
|
||
differently configured default device in groff itself, and about
|
||
the GROFF_TYPESETTER environment variable.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55301> by getting out of
|
||
the way.
|
||
|
||
* src/utils/grog/tests/PF-does-not-start-pic-region.sh:
|
||
* src/utils/grog/tests/smoke-test.sh: Update expected output.
|
||
|
||
2021-06-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.am (grog): Drop sed replacement of unused
|
||
configuration variables @g@, @BINDIR@, @libdir@, and @EGREP@.
|
||
* src/utils/grog/grog.pl (process_arguments, construct_command):
|
||
Tweak warning diagnostics to use a style where an empty argument
|
||
will be easy to spot.
|
||
(do_first_line): Stop emitting pseudo-diagnostic (to standard
|
||
output!) if we see a "groff options line" [it's not] of
|
||
incorrect form. The preprocessor encoding hint convention of
|
||
concern here is particular to man pages, disregarded by at least
|
||
one major implementation thereof (man-db man), and not used by
|
||
other types of roff documents; at this point, we don't yet know
|
||
if the document we're processing is a man page.
|
||
(construct_command): Correct comment and related logic error.
|
||
Clear the inferred main macro package if _any_ `-m` argument
|
||
matching any main macro package is given. Warn only if what is
|
||
specified doesn't match the inference.
|
||
|
||
2021-06-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Heavily refactor.
|
||
|
||
* src/utils/grog/grog.pl:
|
||
- Drop import of unused module `Data::Dumper`.
|
||
- Drop unused scalars `Sp` and `correct_tmac`.
|
||
- Simplify determination of version number. Drop hash `at_at`
|
||
which only stored one key, `GROFF_VERSION`. Initialize
|
||
scalar `groff_version` to "DEVELOPMENT". Rename scalar
|
||
`before_make` to `in_source_tree` and initialize to zero.
|
||
Update `groff_version` with Automake-determined version
|
||
variable if it is defined (i.e., grog is not running outside
|
||
of, or in an unbuilt, groff source or binary distribution).
|
||
- Drop unused `Mparams` list. Replace it with new list
|
||
`requested_package`, which stores the arguments to any grog
|
||
`-m` options specified by the user.
|
||
- Rename many objects so that I, and others, can better
|
||
comprehend their purpose, and for consistent letter casing.
|
||
. @Command -> @command
|
||
. @devices -> @device
|
||
. $Prog -> $program_name
|
||
. %macros -> %user_macro
|
||
. $have_any_valid_args -> $have_any_valid_arguments
|
||
. &handle_args -> &process_arguments
|
||
. &handle_whole_files -> &process_input
|
||
. @preprograms -> @preprocessor
|
||
. &make_groff_device -> &infer_device
|
||
. &make_groff_preproc -> &infer_preprocessors
|
||
. &make_groff_tmac_others -> &infer_macro_packages
|
||
. &make_groff_tmac_man_ms -> &infer_man_or_ms_package
|
||
. &make_groff_line_rest -> &construct_command
|
||
- Drop many unused keys in `Groff` hash.
|
||
- Add new lists, `macro_ms`, `macro_man`, and
|
||
`macro_man_or_ms` to support new scoring technique to
|
||
disambiguate input documents between these two packages.
|
||
- Append the foregoing 3 lists to new list `standard_macro`,
|
||
and add these as keys to the `Groff` hash.
|
||
- Add new list `main_package` to keep track of full-service
|
||
package names.
|
||
- Add new scalars `man_score`, `ms_score`, and
|
||
`inside_tbl_table` to aid disambiguation of .TH macro calls
|
||
and the many macro names shared between man(7) and ms(7).
|
||
(process_arguments): Strip '-m' off of argument before storing
|
||
the remainder in `@requested_package`.
|
||
(do_line): Detect .TH macro call even if white space occurs
|
||
between the control character and the macro name.
|
||
(do_line): Inflate `$man_score` by 100 if .TH is the first
|
||
macro call seen in a document.
|
||
(do_line): Fix bug; clear `$before_first_command` in correct
|
||
scope--after any macro call, not just if we saw a .TH as the
|
||
first macro call.
|
||
(do_line): Set `$inside_tbl_table` when we see a .TS call.
|
||
(do_line): Clear `$inside_tbl_table` when we see a .TE call.
|
||
Also increment `$Groff{'tbl')' again, increasing the "score"
|
||
of tbl(1) usage evidence.
|
||
(do_line): Drop a lot of code that manually increments %Groff
|
||
keys corresponding to man and ms macros. This is now done
|
||
differently and elsewhere.
|
||
(do_line): Drop "P" from list of characteristic mm(7) macros.
|
||
(do_line): Simplify matching of mom(7) macros (match $command,
|
||
not $line). Extend list of characteristic mom(7) macros.
|
||
(do_line): Increment $Groff{$key} if $key is in
|
||
@standard_macro.
|
||
(infer_man_or_ms_package): Rewrite. Compute a score for each
|
||
package by counting occurrences of their characteristic
|
||
macros. If both have a score of zero, assume that the input
|
||
is a raw roff document. If the scores are equal
|
||
{doc/webpage.ms, startlingly, comes within 1 point of a tied
|
||
score}, infer ms(7) if 'TH' was never called, and if it was,
|
||
issue a diagnostic advising user to supply a disambiguating
|
||
`-m` option. Otherwise, the scores are unequal: infer the
|
||
package of the winner. Set scalar `inferred_main_package`
|
||
instead of pushing `-m` options onto `@m`.
|
||
(infer_macro_packages): Set scalar `inferred_main_package`
|
||
instead of pushing `-m` options onto `@m`. Explicitly return
|
||
0 if we fall off the end of the function.
|
||
(construct_command): Rewrite handling of -m options. Add new
|
||
list `msupp` to store supplementary (non-main) macro package
|
||
arguments. If a full-service package was explicitly
|
||
requested, it had better not clash with what we inferred. If
|
||
it does, explicitly unset `inferred_main_package` so that the
|
||
-m arguments are placed in the same order that the user gave
|
||
them; caveat dictator. If `--run` option was given, just
|
||
print the command; don't preface it with __FILE__ and __LINE__
|
||
noise.
|
||
- Remove comments documenting shared variables used by
|
||
subroutines. These are far from useless but too tedious to
|
||
keep up to date while the code is in flux.
|
||
- Note several places for further code review or refactoring
|
||
with "XXX" comments.
|
||
- Add Vim modeline.
|
||
|
||
grog now passes all its tests and correctly infers arguments for
|
||
all in-tree groff documents (except for a known, and already
|
||
documented in grog(1), false positive detection of soelim in
|
||
soelim(1)). This refactor also obviates or resolves several
|
||
outstanding Savannah tickets.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?44707> by obviating it;
|
||
grog no longer cares about file name extensions on man pages (or
|
||
any other input).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55302>; same. The quality
|
||
of diagnostic messages has been improved as well.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59753>; same.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59664>. The attached
|
||
patch was a less aggressive refactor of &do_line and %Groff.
|
||
Its author made the following claim for it: "With this patch,
|
||
all 'man', 'me', 'mom, and 'ms' files in the repository are
|
||
correctly identified. The only example of a 'mm'-file is
|
||
"letter.mm", which is not recognized correctly." As noted
|
||
above, the present refactor achieves correct recognition of all
|
||
of the files, including letter.mm.
|
||
|
||
2021-06-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/tests/smoke-test.sh: Perform whole-line
|
||
matches. Apply DRY principle to expected output. In
|
||
anticipation of pending changes to grog.pl, uncomment and add
|
||
tests for several in-tree documents.
|
||
doc/meref.me
|
||
contrib/mom/examples/copyright-chapter.mom
|
||
contrib/mom/examples/copyright-default.mom
|
||
contrib/mom/examples/letter.mom
|
||
contrib/mom/examples/mom-pdf.mom
|
||
contrib/mom/examples/mon_premier_doc.mom
|
||
contrib/mom/examples/sample_docs.mom
|
||
contrib/mom/examples/slide-demo.mom
|
||
contrib/mom/examples/typesetting.mom
|
||
doc/webpage.ms
|
||
|
||
2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Refactor. Discard filename extension-based inference.
|
||
|
||
* src/utils/grog/grog.pl (do_line): Stop saving the control
|
||
character in the matched scalar `command` (the request or macro
|
||
name). We don't need it, and it simplifies much later matching.
|
||
(handle_file_ext): Delete.
|
||
(top level): Drop call site.
|
||
|
||
* src/utils/grog/grog.pl: Rename `tmac_ext` scalar to
|
||
`inferred_main_package`.
|
||
|
||
2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.pl (handle_args): Complain less noisily
|
||
and more comprehensibly when given unrecognized groff options.
|
||
|
||
2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Handle "--" argument as documented.
|
||
|
||
* src/utils/grog/grog.pl (handle_args): Rename scalar
|
||
`double_minus` to `no_more_options` so it actually communicates
|
||
something. Drop openability check of operand encountered after
|
||
"--"; since it's on the operand list, it will be checked later
|
||
{in `handle_whole_files`}. Stop pushing "--" itself onto the
|
||
`filespec` list.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60834>.
|
||
|
||
2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Revise operand handling, diagnostics, and exit status.
|
||
|
||
* src/utils/grog/grog.pl: Track more state so that we can
|
||
process the argument list more intelligently and exit with a
|
||
meaningful status. Add `had_inference_problem`,
|
||
`had_processing_problem`, and `have_any_valid_args` Boolean
|
||
scalars.
|
||
(fail): Add diagnostic subroutine for serious problems; sets
|
||
`had_processing_problem`.
|
||
(handle_args, handle_file_ext): Stop complaining here about
|
||
unopenable file operands.
|
||
(handle_whole_files): Complain only here, with `fail` if a file
|
||
operand cannot be opened.
|
||
(make_groff_line_rest): Don't exit immediately if there is a
|
||
macro package inference clash, because there might be more
|
||
operands to process. Instead, set `had_inference_problem`.
|
||
Stop exiting from this subroutine.
|
||
(top level): Only call the inference subroutines if we had a
|
||
valid operand to work with (including an implicit read from
|
||
stdin). Exit with a status corresponding to the Booleans
|
||
declared above.
|
||
|
||
* src/utils/grog/grog.1.man (Exit status): Add section; describe
|
||
semantics of exit status values.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60833>.
|
||
|
||
2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Revise diagnostic messages.
|
||
|
||
* src/utils/grog/grog.1.man (err): Rename from this...
|
||
(warn): ...to this. Prefix diagnostic with command name and
|
||
diagnostic severity level. The subroutine didn't change the
|
||
exit status and was not used to report serious trouble, so
|
||
"warning" seems appropriate.
|
||
(make_groff_tmac_man_ms): Update call sites. Modify diagnostic
|
||
wording to stop calling macros "requests".
|
||
|
||
2021-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/grog.1.man (Limitations): Add subsection
|
||
covering the problem grog has with soelim inference. Undocument
|
||
groff's -s option as one that can be inferred, because at
|
||
present it cannot be.
|
||
|
||
Prompted by Savannah #60421.
|
||
|
||
2021-06-26 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
[grog]: Fix erroneous detection of pic(1) usage.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60772>.
|
||
|
||
2021-06-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/grog/tests/PF-does-not-start-pic-region.sh:
|
||
Regression-test Savannah #60772.
|
||
* src/utils/grog/grog.am (grog_TESTS): Run test.
|
||
|
||
2021-06-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Add smoke test.
|
||
|
||
* src/utils/grog/tests/smoke-test.sh: Add test.
|
||
* src/utils/grog/grog.am (grog_TESTS): Run it.
|
||
(TESTS): Add `grog_TESTS`.
|
||
(EXTRA_DIST): Ship test.
|
||
|
||
2021-06-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grog]: Relocate in source tree.
|
||
|
||
* src/roff/grog: Move from here...
|
||
* src/utils/grog: ...to here.
|
||
|
||
* MANIFEST:
|
||
* Makefile.am:
|
||
* src/utils/grog/grog.am: Reflect move.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60788>.
|
||
|
||
2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Assigning Formats): Revise discussion.
|
||
Clarify that a format never causes truncation of an interpolated
|
||
magnitude. Note that non-Arabic number formats cannot be used
|
||
as operands to arithmetic expressions. Add example of how to
|
||
work around this.
|
||
|
||
2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Clarify diagnostics.
|
||
|
||
* src/roff/troff/reg.cpp (reg::set_increment): Update diagnostic
|
||
to unabbreviate "auto".
|
||
(reg::alter_format): Update diagnostic to say "assign" instead
|
||
of "alter", since the documentation consistently uses the former
|
||
term.
|
||
|
||
2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[troff]: Slightly refactor. Make the source code slightly more
|
||
accessible by using a `bool` type for a member function's
|
||
default parameter used as a Boolean, and comment it at call
|
||
sites where the default is overridden.
|
||
|
||
* src/roff/troff/token.h (token::get_char): Change type of
|
||
parameter from `int` to `bool` and default from 0 to `false`.
|
||
* src/roff/troff/input.cpp (token::get_char): Update definition.
|
||
* src/roff/troff/env.cpp (hyphen_word):
|
||
* src/roff/troff/node.cpp (remove_font_special_character):
|
||
* src/roff/troff/input.cpp (do_overstrike, do_bracket, next)
|
||
(do_define_character, remove_character, get_line_arg)
|
||
(encode_char, do_if_request, do_translate, char_flags)
|
||
(hyphenation_code, define_class): Update call sites. Add
|
||
comment indicating meaning of parameter.
|
||
|
||
2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): When outputting HTML, write the
|
||
possibly case-transformed (but not yet abbreviated) page title
|
||
as the `title` element instead of the unaltered first argument
|
||
to `TH`.
|
||
|
||
2021-06-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-abbreviate-title): Define with `de`, not
|
||
`de1`, since it is not intended for call by traps or users.
|
||
|
||
2021-06-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Tab Stops): Fix erroneous claim; tab stops are
|
||
not set "every half inch across the page". This is only true in
|
||
"line tabs mode", which is not enabled by default. The default
|
||
behavior, to keep compatibility with AT&T troff, measures tab
|
||
stops relative to the current position on the input line.
|
||
|
||
2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-nroff-u: Set the usekeeps register used by tbl
|
||
to the logical complement of the cR (continuous rendering)
|
||
register. This prevents blank lines from creeping into tables
|
||
in that mode.
|
||
|
||
2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-blank-line-trap, an-leading-space-trap):
|
||
We say in a comment, "Macros ... that are called by traps of any
|
||
kind must be defined with `de1` because they might be called
|
||
from a context where compatibility mode is enabled." So do it.
|
||
|
||
2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-header): Lightly refactor; tighten.
|
||
|
||
2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-write-paragraph-tag): Lightly refactor
|
||
for clarity and to reduce code duplicated in both branches of an
|
||
`ie`/`el` structure.
|
||
|
||
2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Rename `an-HF-remap-I-style` register to
|
||
`an-remap-I-style-in-headings` for greater clarity.
|
||
|
||
2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common-u (doc-header, doc-end-macro): Partially
|
||
revert bf4b3dde (from 20 May); per Ingo Schwarze, continuous
|
||
rendering in mdoc(7) documents has always used only one vee
|
||
between headers, footers, and man page body text.
|
||
|
||
2021-06-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/en.tmac: Stop using `do` request; it's unnecessary since
|
||
the file is already loaded with compatibility mode off.
|
||
|
||
2021-06-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Fix doc omission; .ID can take an argument.
|
||
|
||
* doc/groff.texi (ms Document Control Settings) <DI>:
|
||
Characterize register setting as a _default_.
|
||
(ms Displays and Keeps): Add optional variable "indent" argument
|
||
to syntax summary of ".DS I" and ".ID". Note that the given
|
||
indentation is used if present, and \n[DI] otherwise.
|
||
* doc/ms.ms (Displays and keeps): Add optional variable "indent"
|
||
argument to syntax summary of ".ID". Switch fonts more
|
||
carefully and apply italic corrections.
|
||
* tmac/groff_ms.7.man (Displays and keeps): Sync with doc/ms.ms.
|
||
|
||
2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Properly situate devtag flag-related register
|
||
names in the package name space. Rename `need_eo_h` to
|
||
`s@devtag-needs-end-of-heading'. Rename `need_eo_tl` to
|
||
`s@devtag-needs-end-of-title`.
|
||
((initialization), par@reset, @SH, par@finish, @NH): Do it.
|
||
(par@reset): Test their values more idiomatically.
|
||
|
||
Fixes last third of <https://savannah.gnu.org/bugs/?42515>.
|
||
|
||
2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac-u (@h): Migrate SCCS revision 2.37 to be idiomatic
|
||
for groff (and not throw warnings of type 'mac').
|
||
|
||
2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Improve diagnostics during documentation
|
||
generation; none should occur normally, but when they do, seeing
|
||
troff complain about "<standard input>" is disheartening.
|
||
(DOC_GROFF_ONLY): Add -b option so we get backtraces (also kill
|
||
off trailing whitespace).
|
||
(DOC_GROFF):
|
||
(doc/pic.html):
|
||
(doc/webpage.html): Add sed expression to inject `lf` request
|
||
into the stream to identify the file being processed.
|
||
|
||
2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/me-revisions: Supplement history with subsequent BSD work
|
||
from versions 2.29 (1988-04-22) to 8.1 (1993-06-05).
|
||
|
||
2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/me-revisions: Add 'me' macro package revision log, scraped
|
||
from <https://svnweb.freebsd.org/csrg/share/me/revisions>.
|
||
* doc/doc.am (DOCFILES): Ship it.
|
||
|
||
2021-06-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac-u: Rename registers for clarity. Unlike other
|
||
macro packages supplied by groff, "me" mostly remains within the
|
||
AT&T 2-character name space, accessing extended names
|
||
selectively through `do` and `de1` requests. The package
|
||
therefore has no characteristic name prefix.
|
||
need_eo_h -> devtag-needs-end-of-heading
|
||
need_eo_tl -> devtag-needs-end-of-title
|
||
need_tl -> devtag-needs-title
|
||
(@html_check_need_title, sh, EQ): The foregoing registers are
|
||
effectively Booleans, so perform Boolean-style tests on their
|
||
interpolations.
|
||
|
||
Fixes a second third of <https://savannah.gnu.org/bugs/?42515>.
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/e.tmac-u: Work in compatibility mode. It seems this was
|
||
the intention (reasonable, since "me" originates in pre-groff
|
||
BSD Unix), but there were several problems.
|
||
(@R): Prefix register existence test with `do`.
|
||
(@html_check_need_title): Define with `do` since the macro name
|
||
is long, and also with `de1` so that we can freely use groff
|
||
extensions within. Drop many `do` requests from macro
|
||
definition.
|
||
(@check_need_title): Define with `do`, as above. Add comment
|
||
explaining why `de1` is not needed for this macro definition.
|
||
(@S): Prefix macro/string existence test with `do`. Remove
|
||
spurious space so that the argument string name is truly defined
|
||
as empty.
|
||
(nm, n1, n2): Prefix handling of long register names `_#p` and
|
||
`_#f` with `do` request.
|
||
(top level): Prefix `mso` request with `do`.
|
||
((x-html): Define with `do` and `de1` instead of `de`. Drop
|
||
now-unnecessary `do` requests from macro body.
|
||
()x-html): Define with `do` and `de1` instead of `de` for
|
||
symmetry.
|
||
(xp-html): Define with `do` and `de1` instead of `de`. Drop
|
||
now-unnecessary `do` requests from macro body.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60785>.
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/devtag.tmac: Work in compatibility mode; define macros
|
||
with the `de1` instead of the `de` request.
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/refer-me.tmac:
|
||
* tmac/refer.tmac: Add include guards.
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/refer-me.tmac: Handle being loaded in compatibility mode.
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Properly situate devtag flag-related
|
||
register names in the package name space. Rename `need_eo_h` to
|
||
`an-devtag-needs-end-of-heading'. Rename `need_col2` to
|
||
`an-devtag-needs-second-column`.
|
||
(an-input-trap, SH, SS, HP, (initialization)): Do it.
|
||
(an-input-trap): Test their values more idiomatically.
|
||
|
||
Fixes one third of <https://savannah.gnu.org/bugs/?42515>.
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_if_request): Improve diagnostic
|
||
message; say "conditional operator", not just "conditional".
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-end, an-header): In continuous rendering
|
||
mode, use same spacing amount after header and before footer as
|
||
mdoc in its own continuous rendering mode. Thanks to Ingo
|
||
Schwarze for the suggestion.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60653>.
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (P): Define this as the "canonical"
|
||
paragraphing macro.
|
||
(LP, PP): Make these aliases of P.
|
||
|
||
2021-06-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (spring_trap): Tighten lexical
|
||
discipline; describe macro as "trap-called" rather than
|
||
"trap-invoked".
|
||
|
||
2021-06-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Don't spuriously break a page after a paragraph tag when
|
||
the tag is short enough to fit within the paragraph's
|
||
indentation.
|
||
|
||
* tmac/an-old.tmac (an-write-paragraph-tag): Reserve ("need") 2
|
||
vees plus 1 basic unit of vertical space regardless of the width
|
||
of the tag. In the short tag case, we reverse space by one vee
|
||
after outputting the diversion in which the tag is stored, but
|
||
it will always contain a break, and by the time we reverse, we
|
||
might have already hit a page location trap
|
||
{an-break-body-text}, and by then it's too late to back up.
|
||
|
||
* tmac/tests/an-old_no-break-after-short-paragraph-tags.sh: Test
|
||
it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60624>.
|
||
|
||
2021-06-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Rename environments to be more descriptive.
|
||
an-env -> an-env-header-or-footer
|
||
an-2 -> an-env-paragraph-tag
|
||
(an-header, an-footer, an-write-paragraph-tag): Do it.
|
||
|
||
2021-06-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Add diagnostic error if .EQ used within .TS/.TE.
|
||
Introduce register `tbl@within-table` to track whether we're
|
||
inside a table.
|
||
(@EQ): Check register and issue error if it is true.
|
||
(@TS): Set register.
|
||
(@TE): Clear register.
|
||
|
||
Prompted by Savannah #55754.
|
||
|
||
2021-06-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Permit document to start with .PS.
|
||
(cov*ab-init): Alias PS to @PS.
|
||
(PS): Call LP, then re-execute (aliased) self as TS does.
|
||
(TS): Update comment to parallel the one in PS.
|
||
|
||
2021-06-11 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
|
||
|
||
Indent an IP paragraph based on the type size of the paragraph
|
||
text, not a preceding heading. We have to delay evaluating IP's
|
||
argument until the font size has been reset, which I've
|
||
attempted to do by simply passing the argument unevaluated down
|
||
the call hierarchy, instead of saving it in a number register
|
||
right away, as appears customary in this ms implementation.
|
||
|
||
However, par@reset is called from a great number of places, and
|
||
these usually set the indent registers beforehand. I've left
|
||
this as it is, so now two ways of setting the indents exist: via
|
||
register and optionally via argument.
|
||
|
||
* tmac/s.tmac (par@reset): Move font-size setting stuff before
|
||
indent-setting stuff; set registers from optional arguments with
|
||
default "n" scaling indicator before setting indents.
|
||
(par*start, par@finish): Don't set registers, but instead pass
|
||
arguments to par@reset.
|
||
(@IP): Pass argument unevaluated to par*start.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59604>.
|
||
|
||
2021-06-11 Tadziu Hoffmann <hoffmann@usm.uni-muenchen.de>
|
||
|
||
* tmac/s.tmac (@QP, @XP): Be more scrupulous about using "u"
|
||
scaling indicator.
|
||
|
||
2021-06-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #59604.
|
||
|
||
* tmac/tests/s_IP-indents-using-paragraph-type-size.sh: Add it.
|
||
* tmac/tmac.am (tmac_TEST): Run it.
|
||
|
||
2021-06-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Refactor grog even more aggressively. Make the tedious search
|
||
for subs.pl unnecessary by inlining it into grog.pl directly.
|
||
This makes the script stand alone and much more convenient to
|
||
work with, and doesn't contribute to bloat, in my
|
||
opinion--subs.pl was 10 times the size of grog.pl, and most of
|
||
the code in the latter was dedicated to trying to locate
|
||
subs.pl.
|
||
|
||
* Makefile.am: Delete references to $(grog_dir).
|
||
* configure.ac: Delete call of `GROFF_GROGDIR_DEFAULT` macro.
|
||
* m4/groff.m4: Delete definition of same.
|
||
* src/roff/grog/grog.am (GROG, dist_grog_DATA, grogdir): Drop
|
||
variables.
|
||
(grog): Remove target's dependency on `$(GROG)`. Remove sed
|
||
expression replacing `@grog_dir@` with `$(grog_dir)` in grog.pl.
|
||
* src/roff/grog/grog.pl: Inline most of subs.pl (except for
|
||
author/license comment banner). Delete sub-hunting logic.
|
||
* src/roff/grog/subs.pl: Delete.
|
||
|
||
2021-06-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/pic.ms (Basic PIC Concepts, Decorating Objects/Filled
|
||
Objects, PIC Reference/Semi-Formal Grammar): Fix error: the
|
||
keyword "solid" sets a line style, not a fill for a closed
|
||
figure. Thanks to Dave Kemper and Wim Stockman for reporting
|
||
and researching this issue.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60470>.
|
||
|
||
2021-06-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* NEWS:
|
||
* doc/webpage.ms:
|
||
* man/groff.7.man (Registers/Read-only registers) <.U>:
|
||
* man/groff_diff.7.man (Language/New number registers) <.U>: Fix
|
||
error; the sense of this Boolean variable was backwardly
|
||
documented {perhaps due to an implementation detail from 2004
|
||
that was reversed in commit 7a0e2f15, 26 February 2008}.
|
||
|
||
2021-06-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.cpp: Revise usage message.
|
||
(synopsis): Set primary synopsis on a single output line, for
|
||
convenience of parsing and also because we have no control over
|
||
the width of the program name in character cells; it comes from
|
||
argv[0] and is under user control. There is thus no point in
|
||
trying to get pretty formatting. Also include separate synopsis
|
||
lines for short and long help options. Use opposite case from
|
||
option flags for option arguments.
|
||
(help): Collate option flags in English lexicographic order.
|
||
Include space after flag letters for options that take
|
||
arguments. Consistently use capitals for option arguments
|
||
because they are space-separated here. Illustrate longer forms
|
||
of -d and -r options. Update language (some, like "tmac.name",
|
||
was very old). Add reference to groff(1) man page at end.
|
||
(usage): Drop appendnment of notice regarding -h option; this is
|
||
now covered in `synopsis()` unconditionally.
|
||
|
||
2021-06-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Eliminate "groff_opts_no_arg.txt" and "groff_opts_with_arg.txt"
|
||
files from distribution. They are not needed by any live code
|
||
in the tree; possibly only groffer ever used them.
|
||
|
||
* src/roff/groff/groff.am (GROFF_OPTS_OUTPUT, groffoptsdir)
|
||
(groffopts_DATA): Delete variables.
|
||
(MOSTLYCLEANFILES): Stop adding to target.
|
||
(groff_opts.tmp, groff_opts_no_arg.txt,
|
||
groff_opts_with_arg.txt): Delete targets.
|
||
|
||
2021-06-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/grog/subs.pl (version): Report version information in
|
||
a format consistent with our other programs.
|
||
|
||
2021-06-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/grog/grog.pl: Refactor initialization so that the
|
||
program can be run from a build tree--and tested. Drop much
|
||
cruft from before Bertrand Garrigues's 2018 work to adopt
|
||
`git-version-gen`.
|
||
|
||
2021-06-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_title-abbreviation-works.sh: Log more
|
||
accurate messages in test failures.
|
||
|
||
2021-06-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-abbreviate-title): Add new internal macro
|
||
to reduce the length of a man page title (i.e., the "ls" in
|
||
"ls(1)", if it is too wide to fit in the page header (and would
|
||
overwrite the center header material, usually the title of the
|
||
manual section). Since the beginning and end of the title might
|
||
be important for disambiguation, truncation at either end would
|
||
be unwise; replace the middle of the title with an ellipsis.
|
||
Define new an-pageref and an-title-abbv strings for use by other
|
||
macros and user-defined PT and BT traps.
|
||
(PT, an-footer): Use new an-pageref string for economy.
|
||
(an-header): Call an-abbreviate-title after setting the title
|
||
length.
|
||
|
||
* tmac/tests/an-old_title-abbreviation-works.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?43532>.
|
||
|
||
2021-06-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Copy mode): Add new section.
|
||
|
||
2021-06-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (else_request, while_request)
|
||
(pipe_source, open_request, opena_request, pipe_output)
|
||
(system_request): Update diagnostic messages to not presume the
|
||
identities of the control or escape characters.
|
||
|
||
2021-06-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Conventions Used in This Manual): Add node.
|
||
|
||
2021-05-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.1.man: Expand to aid beginners.
|
||
(initialization): Define `TeX` string.
|
||
(Usage): Rewrite.
|
||
(Usage/Getting started): Add "Hello, world!" example using
|
||
multiple output devices (formats).
|
||
(Usage/Using groff as a REPL): Add example of likely interest to
|
||
programmers. Or so I hope. It illustrates the Turing
|
||
fundamentals; we read, store, test, and branch.
|
||
|
||
2021-05-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/papersize.tmac: Improve diagnostic message; when
|
||
complaining about unrecognized input, report back the input we
|
||
actually received, not what it looks like after we transform it.
|
||
Also add name of macro package to diagnostic so the user knows
|
||
who is speaking, continuing the long process of fixing Savannah
|
||
#52463.
|
||
|
||
2021-05-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_ms.7.man (Usage/Paragraphs) <QP>: Fix error: .QP
|
||
paragraphs are indented by \n[QI], not \n[PI].
|
||
|
||
2021-05-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libdriver/input.cpp (do_file): Make fatal diagnostic
|
||
from output driver when the device description file "DESC" can't
|
||
be found more informative by including the name of the device
|
||
for which the input was prepared. Also makes malformed input of
|
||
intermediate format more obvious.
|
||
|
||
2021-05-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/tbl.1.man (Miscellaneous): Add paragraph
|
||
cautioning users against making tbl(1) tables conditional
|
||
document content.
|
||
|
||
2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add style warnings for documents with input lines that
|
||
are blank or have leading spaces, since they can cause
|
||
surprising rendering; enabled if the CHECKSTYLE register is
|
||
greater than 2.
|
||
|
||
* tmac/an-old.tmac (an-blank-line-trap, an-leading-space-trap):
|
||
Issue style warning if enabled (and only if fill mode enabled in
|
||
leading space trap); in any event, recreate the default *roff
|
||
behavior.
|
||
(TH): Install traps.
|
||
|
||
* doc/andoc.tmac (reload-doc): Remove man(7) traps before
|
||
loading doc.tmac.
|
||
|
||
2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/andoc.tmac (reload-doc): Fix spurious blank line.
|
||
|
||
2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Operators in Conditionals):
|
||
* man/groff.7.man (Control structures/Conditional expressions):
|
||
Fix omission; the conditional operators "F", "m", and "S" also
|
||
accept optional spaces and/or tabs between themselves and their
|
||
arguments.
|
||
|
||
2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Requests/Request short reference) <.ta>:
|
||
Describe the request as tersely as possible without omitting its
|
||
essential syntax and semantics. (The AT&T troff "+" relative
|
||
prefix for normally absolute positions ".ta 1i +1i +1i" and
|
||
alignment-specifying suffixes "L", "R", and "C" had both been
|
||
omitted.)
|
||
|
||
2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Registers/Writable registers): Fix error:
|
||
\n[nl] interpolates the current vertical position, not the
|
||
vertical position of the "last printed text baseline"; the
|
||
latter is \n[.h].
|
||
|
||
2021-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Manipulating Filling and Adjustment): Update
|
||
inter-sentence space example to be more illustrative. Thanks to
|
||
Dave Kemper and Doug McIlroy for the discussion.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60404>.
|
||
|
||
2021-05-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common-u: Add comment warning source divers that
|
||
\n[doc-header-space] is re-used for a purpose for which it is
|
||
not documented.
|
||
* tmac/mdoc/doc-nroff-u: Initialize doc-{header,footer}-space
|
||
registers, which define the vertical spacing between body text
|
||
and the relevant titles (not between the titles and the page
|
||
margins) to 1v instead of 0.5i. This is what mdoc(7) has always
|
||
done in practice, per Ingo Schwarze.
|
||
|
||
2021-05-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grohtml/post-html.cpp (assert_state::add): Avoid
|
||
potential deallocation of statically-allocated strings. Use
|
||
strsave() to duplicate them so that they can be safely handed to
|
||
a_delete(). Also update diagnostic message to report name of
|
||
complaining program (continuing the long process of fixing
|
||
Savannah #52463).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55693>. Thanks to
|
||
Petru-Florin Mihancea for the report.
|
||
|
||
2021-05-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/troffrc-end: Fix transposition error (in commit a248aa33
|
||
on 15 January) that broke most table image generation in HTML
|
||
output.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60656>.
|
||
|
||
2021-05-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac (UE, ME): Replace calls to HTML-NS macro for
|
||
emissions of HTML 'A' tags with direct usage of \X device
|
||
control escapes. Replace .nop requests with text lines since
|
||
this file is supposed to be maximally portable to other *roffs.
|
||
|
||
2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (main): Call `scanArguments()`
|
||
earlier, before trying to load a font description, so that -v,
|
||
--version, and --help work.
|
||
|
||
2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[grohtml]: Add -C and -G options to postprocessor, to suppress
|
||
output of CreationDate and Creator HTML comments, respectively.
|
||
These can inject unwanted noise into build artifacts.
|
||
|
||
* src/devices/grohtml/post-html.cpp: Add static globals
|
||
`do_write_creator_comment` and `do_write_date_comment`.
|
||
(html_printer::{do_file_components,~html_printer}): Write
|
||
comments per corresponding global variables.
|
||
(main): Add to `getopt_long()` call parameter and set as needed.
|
||
(usage): Document them.
|
||
|
||
* src/preproc/html/pre-html.cpp (scanArguments): Add to
|
||
`getopt_long()` parameter, but ignore.
|
||
|
||
* src/devices/grohtml/grohtml.1.man (Synopsis, Options):
|
||
Document them.
|
||
|
||
* src/roff/groff/tests/output_driver_C_and_G_options_work.sh:
|
||
Test them.
|
||
* tmac/tmac.am (groff_TESTS): Run test.
|
||
|
||
Fixes 1/3rd of <https://savannah.gnu.org/bugs/?60655>.
|
||
|
||
2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (usage):
|
||
* src/devices/grohtml/post-html.cpp (usage): Fix inaccuracies in
|
||
supported option summary.
|
||
|
||
2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/html/pre-html.cpp (scanArguments):
|
||
* src/devices/grohtml/post-html.cpp (main): Use libgroff's
|
||
warning() instead of printf() to emit diagnostic about
|
||
unrecognized parameter to `-x` option. This sends the
|
||
diagnostic to the standard error stream and continues the long
|
||
process of fixing Savannah #52463.
|
||
|
||
2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_www.7.man: Stop using the "www" macro package. The
|
||
macros it exposes are not part of the quasi-standardized man(7)
|
||
language, and thus should not be used in man(7) documents. See
|
||
groff_man_style(7) for portability advice. Besides, the
|
||
extension macros in the permissively-licensed an-ext.tmac are
|
||
sufficient to support URL and email hyperlinks, and our SH and
|
||
SS macro implementations already support anchor placement
|
||
without requiring explicit effort from page authors.
|
||
(initialization): Stop sourcing www.tmac. Stop calling .LK and
|
||
.HR; the page-internal navigation links were being placed after
|
||
the apropos line instead of at the beginning of the page,
|
||
contradicting the comment that was there (possibly a bug).
|
||
(Requests) <URL, LK>: Stop calling .TAG.
|
||
<LK>: Drop paragraph advising reader to format page for groff's
|
||
HTML output device to observe the navigation links at that point
|
||
in the test.
|
||
|
||
2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Comments): Fix error in description of parser
|
||
operation; '.\"' is an effective whole-line comment not because
|
||
it is a call of an undefined macro named '\"' (no 'mac' warning
|
||
is emitted when that warning type is enabled), but because the
|
||
comment escape is recognized normally and what remains is
|
||
handled as the empty request. Clarify that the optional
|
||
argument to the .ig request is the name of a macro (which will
|
||
be called normally _and_ end the ignored region; this is
|
||
analogous to ".de foo bar").
|
||
|
||
2021-05-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac (UR, UE, MT, ME): Rename environment and
|
||
diversion for clarity; they apply to the link text, not the URL
|
||
{or email address}. The latter might not visibly appear,
|
||
depending on the output driver.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): Remove extraneous right-brace escape.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60651>. Thanks to Bjarni
|
||
Ingi Gislason for catching it.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Copy Mode): Fix omissions from list of escape
|
||
sequences interpreted even in copy mode. Add \g, \V, "\.",
|
||
'\"', \#, \a, \e and \E (with caveat), and \t. Parallels
|
||
groff(7) now. Add cross reference to "Character Translations"
|
||
node.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Escape Sequences): Fix omission; the escape
|
||
character in an unrecognized escape sequence is not merely
|
||
ignored; the sequence produces a warning diagnostic, albeit of a
|
||
type that is disabled by default.
|
||
(Escape Sequences/Escape short reference): Fix omissions; \# and
|
||
\V are interpreted even in copy mode.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-header): Fix missing brace escape.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Slightly refactor footer spacing management when
|
||
continuously rendering.
|
||
|
||
* tmac/an-old.tmac (an-end): Increase the page length _after_
|
||
flushing a pending output line. Do so only by the amount of
|
||
spacing we actually perform next. Make the scaling indicator on
|
||
the .sp request explicit. The amount seemed magical because it
|
||
was accounting for the one line to be consumed by output of the
|
||
footer title line. Instead, move that further increase of the
|
||
page length from here...
|
||
(an-footer): ...to here (~250 lines away), before calling BT.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common-u (doc-end-macro): When continuously
|
||
rendering and after flushing the last line of the body text of a
|
||
page, vertically space by 3 vees instead of 1, for consistency
|
||
with our man(7) implementation. Also increase page length by
|
||
same amount _after_ flushing a pending output line, for symmetry
|
||
with other spacing requests (and to prevent nasty surprises
|
||
analogous to those in Savannah #60611).
|
||
(doc-header): Put 3 vees of space after the header in continuous
|
||
rendering mode, not 1 (and increase page length accordingly).
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Add warnings for macros deprecated in groff_man(7),
|
||
emitted if the CHECKSTYLE register is greater than 1.
|
||
|
||
* tmac/an-old.tmac (an-deprecation-warn): New macro emits
|
||
diagnostic.
|
||
(DT, PD): Call the foregoing, re-using arguments.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Refactor to move bodies of DT and PD into
|
||
private macros.
|
||
(an-reset-tab-stops, an-reset-paragraph-spacing): New names for
|
||
the former DT and PT.
|
||
(TH): Call these new macro names.
|
||
(DT, PD): Wrap the corresponding private macros.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-bp): In continuous rendering mode, draw
|
||
a horizontal line between a page footer of one man page document
|
||
and the header of the next, but only if multiple documents are
|
||
being rendered.
|
||
(initialization): Use variable to ensure we don't draw this line
|
||
after finishing the only document we render.
|
||
|
||
Fixes other half of <https://savannah.gnu.org/bugs/?60611>.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Fix stochastic vertical space loss problems in continuous
|
||
rendering mode by being more scrupulous about extending the page
|
||
length. As noted in Savannah #60611, sometimes the vertical
|
||
space between a header line and the first section heading
|
||
{"Name"} would be reduced or removed altogether, in a way that
|
||
was highly sensitive to circumstances. As far as I can tell,
|
||
the problem is that this vertical space disappeared only when we
|
||
were in double-secret probation no-space mode; this is the
|
||
special non-spacing mode {not apparent with inspection of
|
||
\n[.ns]} that happens when the stealth internal page location
|
||
trap is sprung. This trap does not appear in .ptr output but
|
||
can be disabled with ".vpt 0", which is an alternative fix for
|
||
this problem {because continuous rendering mode does not use
|
||
vertical position traps at all}. Another fix might have been to
|
||
simply call the moral equivalent of ".pl MAXINT" as soon as
|
||
continuous rendering mode was decided upon.
|
||
|
||
* tmac/an-old.tmac (an-header): In continuous rendering mode,
|
||
extend the page length by one line before calling PT to output
|
||
the page header, and afterwards, extend the page length by 3
|
||
vees and space by that amount (instead of half an inch).
|
||
|
||
Fixes half of <https://savannah.gnu.org/bugs/?60611>.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-header, an-footer): Drop no-op .tl
|
||
requests.
|
||
|
||
2021-05-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-footer): Improve symmetry with an-header.
|
||
If rendering to HTML, don't bother setting the
|
||
an-outer-footer-text, an-extra1, and an-extra2 strings to empty
|
||
values; instead don't call BT, just as we don't call PT in
|
||
an-header.
|
||
|
||
2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-end): Drop needless .nr % assignment.
|
||
Call our (wrapped) bp instead of the .pl request directly.
|
||
(an-bp): Drop needless .br and (aliased) real .bp request.
|
||
|
||
2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-footer): Refactor complex conditional.
|
||
|
||
2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_X-register-works.sh: Add test for footer
|
||
creeping into page content.
|
||
|
||
2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (initialization): Ignore P and X rendering
|
||
parameter registers if specified with continuous rendering
|
||
enabled (the default in the nroff mode used for terminals), and
|
||
emit diagnostic.
|
||
|
||
2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_X-register-works.sh: Rewrite. Increase test
|
||
coverage and stop assuming that -rcR=1 and -rX=anything is a
|
||
supported combination. (Continuous rendering is supposed to
|
||
suppress the printing of page numbers anyway.)
|
||
|
||
2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (initialization): Refactor handling of P and
|
||
X rendering parameter register validation in preparation for
|
||
disabling them in continuous rendering mode, where they don't
|
||
make any sense.
|
||
|
||
2021-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_TH-repairs-ad-damage.sh: Tweak test
|
||
internals to make troubleshooting easier.
|
||
|
||
2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): Relocate some initialization logic to
|
||
be adjacent to (most of) the rest of it.
|
||
|
||
2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): Remove useless .if. Its condition is
|
||
always true now in the wake of the fix for Savannah #60609.
|
||
|
||
2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Rename many package macros, strings, and
|
||
registers (and the lone named environment) to be more expressive
|
||
of their function. "an-footer" is now the proper complement of
|
||
"an-header" (setting up an environment and calling a
|
||
user-redefinable trap macro).
|
||
an-first -> an-is-first-page-of-document
|
||
an-html -> an-is-output-html
|
||
an-footer -> an-break-body-text
|
||
an-p-footer -> an-footer
|
||
an-set-margin -> an-reset-margin-and-inset-level
|
||
an-level -> an-inset-level
|
||
an-tag-sep -> an-tag-separation
|
||
an-no-space-flag -> an-need-no-space-mode
|
||
an-break-flag -> an-need-break
|
||
an-div? -> an-is-in-diversion
|
||
an-page-string -> an-outer-footer-text
|
||
an-trap -> an-input-trap
|
||
an-do-tag -> an-write-paragraph-tag
|
||
an-1 -> an-env
|
||
|
||
* tmac/andoc.tmac (reload-doc): ...as above for the exposed
|
||
parts of the interface.
|
||
an-footer -> an-break-body-text
|
||
an-p-footer -> an-footer
|
||
|
||
2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Rearrange alternating font macros to be in
|
||
alphabetical order (and the order documented in groff_man(7).
|
||
|
||
2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Refactor alternating font macros. These
|
||
macros are hard enough to understand without adding gratuitous
|
||
structural differences to the reader's burden. Make their
|
||
implementations rigidly parallel. Update comments.
|
||
(RI, IR, IB, BI, RB, BR): Always define the `an-result` string
|
||
as empty except for a dummy character '\&' for the sake of
|
||
compatibility mode.
|
||
(RI, IR, IB, BI): Defer interpolation of the first argument to
|
||
the while loop if there are at least two (like the existing RB,
|
||
BR). This way the style name arguments to the font selection
|
||
escape sequences in the appendment to `an-result` match the
|
||
order of the letters in the macro name (useful to make sense of
|
||
diffs).
|
||
(RI, IR, IB, BI, RB, BR): Always remove the `an-result` string
|
||
after interpolating it.
|
||
(RB, BR): Only do work if there are any arguments.
|
||
|
||
2021-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Apply italic corrections more consistently.
|
||
|
||
* tmac/an-old.tmac (BI, IB, IR, RI): Apply italic corrections
|
||
more consistently. Add lengthy comment rationalizing approach.
|
||
(RI, BI): An italic correction is now applied after the last
|
||
argument if it is of even parity (i.e., the 2nd, 4th, 6th, ...).
|
||
|
||
* tmac/groff_man.7.man.in (Description/Font style macros): Note
|
||
that italic corrections are applied.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?53541>.
|
||
|
||
Thanks to Bjarni Ingi Gislason for the report and a suggested
|
||
patch.
|
||
|
||
2021-05-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Ignore FT register when appropriate.
|
||
|
||
* tmac/an-old.tmac (initialization): Validate user-specified
|
||
value of \n[FT]. Continuous rendering ignores FT (page location
|
||
traps are not used for footers in that mode). Measuring a
|
||
footer distance from the page top isn't done. A footer distance
|
||
of over half the page length is unlikely. A footer distance of
|
||
less than one line height is too. Issue diagnostics in all of
|
||
these cases.
|
||
|
||
* tmac/tests/tmac/tests/\
|
||
an-old_FT-bad-value-should-not-trash-titles.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60612>.
|
||
|
||
2021-05-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): Plant the an-footer trap (where we
|
||
schedule a break in the page text prior to spacing down to the
|
||
footer) at twice the value of \n[FT], not a hard-coded -1i.
|
||
This way, the user can't make the an-p-footer trap (planted at
|
||
\n[FT]) spring before the an-footer trap that should precede it.
|
||
|
||
* tmac/groff_man.7.man.in (Options) <-rFT>: Document this.
|
||
|
||
2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_GHOSTSCRIPT_VERSION_CHECK): Add new
|
||
autoconf macro to check Ghostscript version. Versions 9.00 <= x
|
||
< 9.54 suffer from a rendering glitch that affects the AT&T
|
||
troff (and groff) special character \(lh; see
|
||
<https://bugs.ghostscript.com/show_bug.cgi?id=703187>. Store
|
||
the result of the check.
|
||
(GROFF_GHOSTSCRIPT_VERSION_NOTICE): Add new macro to report the
|
||
problem detected by GROFF_GHOSTSCRIPT_VERSION_CHECK to the user.
|
||
|
||
* configure.ac: Call the macros in appropriate places.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59531>.
|
||
|
||
2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/andoc.tmac (reload-man): Remove removal of RI macro, made
|
||
unnecessary by commit 551f138 (15 May).
|
||
|
||
2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_HTML_PROGRAMS, GROFF_PDFDOC_PROGRAMS):
|
||
Tweak autoconf warning messages when Ghostscript (gs) command
|
||
missing to be more mutually congruent.
|
||
(GROFF_URW_FONTS_CHECK): Tweak to note that gs is only run to
|
||
locate the URW fonts if gs is available.
|
||
|
||
2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_AT-and-UC-footer-saved-and-restored.sh:
|
||
Tweak to be more helpful when troubleshooting exasperating
|
||
header/footer problems as in Savannah #60609.
|
||
|
||
2021-05-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Fix missing page footers when continuously rendering
|
||
multiple documents. Resolving this uncovered entangled header
|
||
and footer management bugs with batch processing even when _not_
|
||
continuously rendering.
|
||
|
||
* tmac/an-old.tmac (an-start-new-document): New macro clears
|
||
header trap so it doesn't get called with stale information.
|
||
{The TH macro already replants a header trap with every man
|
||
page if not continuously rendering.} This macro also absorbs
|
||
the break-page and page number incrementation logic from TH.
|
||
(TH): Adapt semantics of "an-first" register to mean not "first
|
||
page rendered" (apparently) but "first page of new document".
|
||
If we are _not_ on the first page of a new document and the TH
|
||
macro is called, we must be batch processing: force the previous
|
||
man page to end (call an-end if continuously rendering, or
|
||
an-start-new-document if not). After all the header and footer
|
||
strings have been configured for the man page, call an-header if
|
||
we're on the first page of the document, not (just) if we're
|
||
continuously rendering. Zero an-first register at end of macro
|
||
here unconditionally instead of conditionally in .an-header.
|
||
(an-header): Drop conditional on continuous rendering.
|
||
|
||
When I batch-render our 62 man pages to the terminal, I do note
|
||
one cosmetic regression: the lj4_font(5) page, when continuously
|
||
rendered in batch processing, has no space between its header
|
||
line and first section heading ("Name"). Another cosmetic issue
|
||
in this scenario is that the footers for every rendered page but
|
||
the last, which had (wrongly) been absent entirely, are set with
|
||
no space after them and the header of the next.
|
||
|
||
* tmac/tests/an-old_page-footers-present.sh:
|
||
* tmac/tests/an-old_page-header-has-current-data.sh: Add man
|
||
page header/footer regression tests.
|
||
* tmac/tmac.am (tmac_TESTS): Run the tests.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60609>.
|
||
|
||
2021-05-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (initialization): Key the reprocessing guard
|
||
{like a C language #include guard} on the existence of the TH
|
||
macro instead of RI. The latter seemed kind of random and TH
|
||
is even more guaranteed to exist; it is the macro name most
|
||
characteristic of the man(7) language and the andoc.tmac
|
||
superstructure relies on it. (TH may have been avoided because
|
||
of its use with tbl(1); however, neither man(7) nor mdoc(7)
|
||
support tbl's TH feature, and GNU tbl does not supply its own
|
||
empty fallback definition as it does for TS and TE. If we ever
|
||
want TH-like functionality in future man pages, I suggest we
|
||
pick a new, non-colliding name for it.)
|
||
(initialization): Relocate load of devtag package; we don't
|
||
need it before entering compatibility mode. Move assignment of
|
||
format of an-page-letter register from a "loose declaration"
|
||
amid macro definitions to within existence test of X register.
|
||
Stop initializing an-extra[123] strings outside of any macro;
|
||
they need to be reinitialized at every TH call when batch
|
||
rendering.
|
||
(TH): Call DT in a less surprising place.
|
||
(TH): Initialize all header/footer-related strings before
|
||
calling header macros, even those not needed for the default
|
||
header configuration.
|
||
(TH): Add style warnings for underspecified arguments.
|
||
(an-ne): Rename register from "an-need", which is pretty
|
||
confusing in context, to "an-amount", since (1) a (vertical)
|
||
amount is what it is, and (2) it's only used within this macro.
|
||
Also due to factor (2), remove the register after using it.
|
||
|
||
2021-05-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* m4/groff.m4 (GROFF_URW_FONTS): Update configure script check
|
||
for URW fonts to recognize recent releases of the URW Base 35
|
||
fonts from Artifex Software. Look for the AR (Arial roman
|
||
equivalent) font under all of the names recognized by
|
||
fonts/devpdf/Foundry.in.
|
||
* m4/groff.m4 (GROFF_URW_FONTS_CHECK): Update wording of notice
|
||
when URW fonts are not found. Replace dead URL with working
|
||
one. Try to hedge against the future, but the Web is an
|
||
ephemeral place, as are the file names Artifex gives to its
|
||
fonts. Thanks to T. Kurt Bond and Thomas Dupond for reporting
|
||
and investigating the problem.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60604>.
|
||
|
||
2021-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (ms Document Control Settings) <DI>:
|
||
* doc/ms.ms (Document control settings, Displays and keeps)
|
||
<DI>:
|
||
* tmac/groff_ms.7.man (Document control settings, Displays and
|
||
keeps) <DI>: Document this register; it had been mentioned only
|
||
in passing.
|
||
|
||
2021-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (ms Document Control Settings) <DD>:
|
||
* doc/ms.ms (Document control settings) <DD>:
|
||
* tmac/groff_ms.7.man (Document control settings) <DD>: Fix
|
||
error; changes to \n[DD] take effect at the next display
|
||
boundary (including the end of the active one), not the next
|
||
"paragraph" (paragraph macros cannot be called inside a display
|
||
anyway).
|
||
|
||
2021-05-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/andoc.tmac (reload-man): Delete no-op line that attempts
|
||
to restore compatibility mode. Individual pages have to do
|
||
this, and ".do cp \n(.C" is not effective for the reason
|
||
discussed in the 2020-04-16 ChangeLog entry.
|
||
|
||
2021-05-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (@RT): Delete definition; make it an alias for
|
||
par@finish. Until commit 021ba0e7 (1 May), they had identical
|
||
definitions. I find it difficult to imagine what use it would
|
||
be to have an undocumented reset macro that resets everything
|
||
_except_ the deeply internal \n[.ev]:ai.
|
||
|
||
2021-05-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: Handle HF strings with an embedded font family when
|
||
applying italic-to-bold-italic remapping; the feature now works
|
||
on troff devices as well.
|
||
|
||
* tmac/an-old.tmac (initialization): Do more validity checking.
|
||
Store heading family in new string \*[an-heading-family]. Clean
|
||
up after self.
|
||
(SH, SS): Include the heading family in the remapping target.
|
||
|
||
* tmac/groff_man.7.man.in (Description/Document structure
|
||
macros) <.SH, .SS>: Document it.
|
||
|
||
2021-05-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff_char.7.man (Glyph tables/Mathematical symbols): Fix
|
||
errors in special character descriptions; \[sqrt] is a "special"
|
||
glyph (that is, it uses mathematical metrics on typesetter
|
||
devices), and \[radicalex) is not (and is thus a "text" glyph).
|
||
See Werner Lemberg's ChangeLog entry of 2003-01-05. Problem
|
||
dates to 07a6233ad, 27 May 2014.
|
||
|
||
The overloaded use of the word "special" really pinches here.
|
||
|
||
2021-05-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tty.tmac: Replace fallback glyphs for radical extension
|
||
and square root extension; use \[rn] instead, which works fine.
|
||
|
||
Now the only glyph in the page that doesn't render on a UTF-8
|
||
terminal (if one's font has adequate coverage) is the Bell
|
||
System logo.
|
||
|
||
2021-05-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tty.char: Add fallback characters for \[fm] and \[sd].
|
||
|
||
2021-05-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[man]: If \*[HF] is a bold style, substitute bold italics for
|
||
italics in section and subsection headings, keeping the font
|
||
weight consistent.
|
||
|
||
* tmac/an-old.tmac (initialization): Set a flag for this based
|
||
on the interpolation of \*[HF] matching "B" as its last
|
||
character.
|
||
(SH, SS): Apply and reverse font remapping based on this flag.
|
||
|
||
2021-05-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac (EX): Work around Savannah #59522 by changing
|
||
fonts differently on DVI output, avoiding a font warning.
|
||
|
||
2021-05-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac: If in nroff mode, remap font CBI to BI.
|
||
* tmac/dvi.tmac: Remap font CBI to CWI. (Computer Modern
|
||
Constant Width has no bold styles.)
|
||
|
||
2021-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (NL, SM, LG): Issue warning diagnostic if macro
|
||
called with arguments.
|
||
(par*define-font-macro): Construct font macro with diagnostic to
|
||
warn if called with excess arguments.
|
||
(UL, BX): Issue warning diagnostic if macro called with excess
|
||
arguments.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60522>.
|
||
|
||
2021-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi: Delete redefinition of \putwordAppendix
|
||
Texinfo macro. This restores the word "Appendix" to the names
|
||
of all appendices and fixes two bad internal links to Appendix
|
||
E, the Register Index, in the DVI and PDF output formats. Per
|
||
consultation with Texinfo maintainer Gavin Smith, it's difficult
|
||
to get the behavior we want, so give up trying for now.
|
||
|
||
2021-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (@MC): Actually diagnose and recover when user
|
||
tries to .MC inside a diversion.
|
||
|
||
2021-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Differences from AT&T ms):
|
||
* doc/ms.ms (Differences from AT&T ms):
|
||
* tmac/groff_ms.7.man (Differences from AT&T ms): Document our
|
||
different default (empty) for the center footer in nroff mode;
|
||
this behavior appears to date back to June 1991 or earlier,
|
||
drawing few complaints.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59826>.
|
||
|
||
2021-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/*: Rename files to use consistent scheme; one
|
||
underscore to separate the package name from the test objective,
|
||
dashes to otherwise separate words.
|
||
* tmac/tmac.am (tmac_TESTS): Use new names.
|
||
|
||
2021-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Restore support for AT&T ms PN register.
|
||
|
||
* tmac/s.tmac (pg): Make register PN an alias of %.
|
||
|
||
* doc/groff.texi (Differences from AT&T ms):
|
||
* doc/ms.ms (Differences from AT&T ms):
|
||
* tmac/groff_ms.7.man (Differences from troff ms): We don't need
|
||
PN, and it was removed in commit 08291b40 (25 October 2020), but
|
||
since it is documented in Lesk 1978 we're stuck with it. Advise
|
||
users to stick with %. Also warn them of the hoop they must
|
||
jump through if they redefine the page trap macro PT, which Lesk
|
||
1978 also encourages.
|
||
|
||
* tmac/tests/s_PN-works.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59823>.
|
||
|
||
2021-05-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Restore default IP paragraph indentation after an SH call.
|
||
|
||
* tmac/s.tmac (par@finish): Set "ai" register for the current
|
||
environment to the paragraph indent (PI) setting for the current
|
||
environment.
|
||
|
||
* doc/groff.texi (Highlighting in ms) <IP>:
|
||
* doc/ms.ms (Highlighting) <IP>:
|
||
* tmac/groff_ms.7.man (Usage/Highlighting) <IP>: Update
|
||
documentation.
|
||
|
||
* tmac/tests/s_SH_resets_IP_indentation_amount: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60222>.
|
||
|
||
2021-05-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (DS): Issue diagnostic and attempt recovery if
|
||
document attempts to start a display within another display.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55136>.
|
||
|
||
2021-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Implement alternative rendering for automatic
|
||
footnote numbers in nroff mode, inspired by Heirloom Doctools
|
||
ms; since superscripting is not universally available on
|
||
terminals, surround number with square brackets instead.
|
||
(fn@init): New macro finishes initializing footnote module,
|
||
setting up aliases to par@sup-{start,end} strings in troff mode
|
||
and otherwise defining fn@sup-{start,end} as brackets. Define *
|
||
string here, using new strings.
|
||
(par): Call fn@init after par@sup-{start,end} are defined, and
|
||
prior to other footnote integration material.
|
||
(par*fp!0): Migrate from par@sup-{start,end} to
|
||
fn@sup-{start,end}.
|
||
|
||
* doc/groff.texi (ms Document Control Settings) <FF>:
|
||
* doc/ms.ms (Footnotes) <FF>:
|
||
* tmac/groff_ms.7.man (Usage/Footnotes) <FF>: Document it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60228>.
|
||
|
||
2021-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* test-groff.in: Stop passing the built groff executable -b and
|
||
-ww options by default. This reverses a change from 2017. Dave
|
||
Kemper has convincingly argued that there's no way to override
|
||
-b and turn backtraces on warnings/errors back off, and that the
|
||
built groff should behave as much like a "normal" one as
|
||
possible. The latter factor is of added importance now that we
|
||
are using test-groff for generation of documents.
|
||
|
||
* src/roff/groff/tests/regression_savannah_58153.sh: Adapt.
|
||
|
||
2021-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (BX): Add alternative implementation for terminal
|
||
{nroff} devices. Store width of boxed text, adding .4m only on
|
||
troff devices (to make room for the vertical box lines). Break
|
||
long input line in troff implementation. If not in troff mode,
|
||
use ISO 6429 color escapes to render boxed text in black on
|
||
white. Use the \Z escape to match breaking semantics of macro
|
||
in troff mode.
|
||
|
||
* doc/groff.texi (Highlighting in ms) <BX>:
|
||
* doc/ms.ms (Highlighting) <BX>:
|
||
* tmac/groff_ms.7.man (Usage/Highlighting) <BX>: Document it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60477>.
|
||
|
||
2021-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am: Make $(PROCESSEDDOCFILES) depend on all the same
|
||
targets as $(PROCESSEDEXAMPLEFILES); this way the me, ms, and
|
||
pic.ms manuals are all regenerated upon changes to their
|
||
underlying macro packages.
|
||
|
||
2021-04-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* INSTALL.extra: Update.
|
||
(Evaluation): New section updates material on "test-groff"
|
||
script. Also tell people how to preview our Texinfo manual (in
|
||
info, text, DVI, PDF, and HTML formats).
|
||
(In Case of Trouble): New section updates bug reporting URL.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?57863>.
|
||
|
||
2021-04-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Make the FAM string work more sensibly; it now
|
||
applies to headers, footers, and footnotes only if set
|
||
before the first call of a sectioning, paragraphing, or
|
||
{non-date} document description macro.
|
||
(PT, BT): Set the font family to that saved for titles.
|
||
(fn*do-FS): Set the font family to that saved for footnotes.
|
||
(par@init): Copy the document font family to independent strings
|
||
for titles and footnotes.
|
||
(par@reset): If in a footnote environment, set the font family
|
||
to that saved for footnotes; otherwise use \*[FAM].
|
||
|
||
* tmac/groff_ms.7.man (Differences from troff ms/Text settings):
|
||
Describe placement-dependent effect of FAM string setting.
|
||
|
||
* doc/groff.texi (Highlighting in ms):
|
||
* doc/ms.ms (Highlighting): As above, and suggest different
|
||
occasions in which ".ds FAM C" and "CW" are convenient.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60422>.
|
||
|
||
2021-04-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (source, source_quietly)
|
||
(macro_source, macro_source_quietly): Use idiomatic Boolean
|
||
literals.
|
||
|
||
2021-04-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi: Drop workarounds for Texinfo pre-5.0 versions;
|
||
our local macros produced many warnings during generation of our
|
||
Texinfo manual.
|
||
(Langlemacro):
|
||
(Ranglemacro):
|
||
(Lparenmacro):
|
||
(Rparenmacro):
|
||
(Lbrackmacro):
|
||
(Rbrackmacro): Delete. Replace call sites with literals.
|
||
(Lbracemacro):
|
||
(Rbracemacro): Delete. Replace call sites with @lbracechar{}
|
||
and @rbracechar{}.
|
||
(angles): Reimplement in terms of @guilsinglleft{} and
|
||
@guilsinglright{}. Flesh out comment.
|
||
|
||
Fixes remainder of <https://savannah.gnu.org/bugs/?59524>.
|
||
|
||
2021-04-17 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* doc/meintro.me:
|
||
* doc/meref.me: Correct and make consistent usage of the term
|
||
"point size".
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60403>.
|
||
|
||
2021-04-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (SS): Add devtags support. Set a subsection
|
||
title as a second-level heading and add it to a table of
|
||
contents, if any. Prompted by a query from Hans Unzner to the
|
||
groff mailing list. Thanks, Hans!
|
||
|
||
2021-04-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (SH): Fix apparent thinko. Pass the devtags
|
||
macro a literal "1" argument. Passing it \n[an-level] wasn't
|
||
correct (it stores the relative inset level, not a sectioning
|
||
level), and was useless anyway: SH has already called
|
||
.an-set-margin by this point, which resets \n[an-level] to 1.
|
||
man(7) does not support nesting of SH macros. Also call
|
||
.DEVTAG-NH by its alias .DEVTAG-SH since section headings are
|
||
not numbered in man(7).
|
||
|
||
2021-04-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tmac]: Adjust editor file encoding hints.
|
||
|
||
* tmac/cs.tmac: Tell Vim the file is "iso-8859-2" (ISO Latin-2).
|
||
* tmac/en.tmac: Stop telling Emacs the file is "latin-1"; it's
|
||
ASCII.
|
||
* tmac/fr.tmac: Tell Vim file is "iso-8859-15" (ISO Latin-9).
|
||
|
||
Vim users may need to use ":e ++enc=iso-8859-2", for instance,
|
||
to see correct glyphs.
|
||
|
||
2021-04-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
The first-order determinant of hyphenation points is language,
|
||
not territory. Use ISO 639 2-letter language codes for
|
||
hyphenation and exception patterns instead of ISO 3166 2-letter
|
||
territory codes.
|
||
|
||
* tmac/*.us: Rename *.us files to *.en.
|
||
* tmac/troffrc: Change hyphenation language "us" to "en".
|
||
* tmac/en.tmac: Add English localization file. Set hyphenation
|
||
mode to 4.
|
||
* tmac/troffrc: Derive groff locale from system.
|
||
|
||
* doc/groff.texi (Manipulating Hyphenation):
|
||
* man/groff.7.man (Hyphenation):
|
||
* man/groff_diff.7.man (Implementation differences): Refer to
|
||
"U.S. English" hyphenation patterns as simply "English"; they
|
||
will be mostly correct for Commonwealth English as well, and no
|
||
alternative English hyphenation patterns for other territories
|
||
are available.
|
||
|
||
* doc/groff.texi (Manipulating Hyphenation):
|
||
* man/groff_diff.7.man (New requests): Note that default
|
||
hyphenation mode depends on the language used on the system.
|
||
Add concept index entry for localization. Add file index
|
||
entries for the locale macro files (cs.tmac, etc.). Update to
|
||
reflect rename of English hyphenation patterns and .hla
|
||
identifier from "us" to "en".
|
||
|
||
* src/roff/groff/tests/localization_works.sh: Add 10 test cases.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
* tmac/LOCALIZATION: Rewrite.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59814>.
|
||
|
||
2021-04-12 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* doc/meref.me: Correct various small issues.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60379>.
|
||
|
||
2021-04-12 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* man/groff.7.man (Registers/Writable registers) <year, yr>:
|
||
Drop discussion of Y2K issues.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60372>.
|
||
|
||
2021-04-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Setting Registers) <rnn>: Fix error: the
|
||
request is not ignored if the second argument (the new name)
|
||
does not exist. Problem dates back to 52a6d12a (11 May 2000).
|
||
|
||
2021-04-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Implement new .soquiet and .msoquiet requests.
|
||
|
||
Needed for two planned developments: {1} the i18n patch in
|
||
Savannah #59814 can use this to quietly attempt to open a
|
||
localization file. groff only supports a few locales, so people
|
||
with LANG=es_ES, for instance, would ordinarily see warning
|
||
diagnostics on every groff startup; and {2} system- or
|
||
site-configurable support of per-user {.,}troffrc or man.local
|
||
files, gracefully failing if they don't exist.
|
||
|
||
* src/roff/troff/input.cpp:
|
||
(do_source): Add new function, taking boolean "quietly"
|
||
parameter and absorbing function of source(), with added
|
||
conditional.
|
||
(source): Convert into a wrapper to call do_source() unquietly.
|
||
(source_quietly): Wrap do_source(), quietly.
|
||
(do_macro_source, macro_source, macro_source_quietly): Analogous
|
||
to the foregoing.
|
||
(init_requests): Hook "msoquiet" to macro_source_quietly() and
|
||
"soquiet" to "source_quietly().
|
||
|
||
* doc/groff.texi (I/O):
|
||
* man/groff.7.man (Requests/Request short reference):
|
||
* man/groff_diff.7.man (Language/New requests): Document them.
|
||
|
||
* src/roff/groff/tests/msoquiet_works.sh:
|
||
* src/roff/groff/tests/soquiet_works.sh: Test them.
|
||
|
||
* src/roff/groff/groff.am (groff_TESTS): Add tests.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59973>.
|
||
|
||
2021-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (ms Document Control Settings) <FF>: Update
|
||
description to cover application of footnote format to footnote
|
||
markers in general, not just numbers. Clarify different
|
||
behavior of format 1 with respect to automatic numbers and other
|
||
markers.
|
||
(ms Footnotes) <*>: Describe string operation in more detail.
|
||
<FS>: Describe more precisely how the optional argument is
|
||
handled.
|
||
|
||
* doc/ms.ms (Footnotes): Synchronize with doc/groff.texi. Add
|
||
example using document's own text as a model.
|
||
|
||
* tmac/groff_ms.7.man (Usage/Footnotes): Resync relevant
|
||
portions with doc/ms.ms.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60227>.
|
||
|
||
2021-04-06 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* src/roff/nroff/nroff.sh: Recognize -k and -K options and pass
|
||
them through to troff. Document them in usage message.
|
||
* src/roff/nroff/nroff.1.man: Document new -k and -K options.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60349>.
|
||
|
||
2021-04-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Manipulating Hyphenation):
|
||
Recast introductory paragraph to better distinguish the
|
||
automatic breaking of words and placement of hyphens at
|
||
user-specified hyphenation points (done with the \% escape) and
|
||
automatic determination of hyphenation points within words (what
|
||
the pattern files and most of the hyphenation mode parameters
|
||
are for). Clarify that what our manual calls "automatic
|
||
hyphenation" pertains only to the latter.
|
||
<hw> Correct over-general claim; hyphenation exceptions defined
|
||
with the .hw request _do_ honor .hy value 2 (don't break a word
|
||
at the bottom of a page), but none of the others.
|
||
<\%> Recast description of escape to emphasize independence of
|
||
its two uses (e.g., "\%pseudo\%unununium" is hyphenated only
|
||
after "pseudo-", if at all).
|
||
<\:> Clarify that escape is an input word boundary.
|
||
<shc> Clarify that the soft hyphen glyph is applied to manual as
|
||
well as automatically-determined hyphenation points.
|
||
<hy> Recharacterize as setting the _automatic_ hyphenation mode.
|
||
Note that restrictions apart from value 2 are not applied to
|
||
words with manually-assigned hyphenation points.
|
||
<nh> Note that request affects only automatic hyphenation.
|
||
|
||
* man/groff.7.man (Requests/Request short reference) <.hy,.nh>:
|
||
Clarify that requests deal with _automatic_ hyphenation.
|
||
(Registers/Read-only registers) <.hy>:
|
||
Clarify that register applies to _automatic_ hyphenation.
|
||
(Hyphenation): Add new introductory paragraph summarizing manual
|
||
hyphenation support and features, including notice that breaking
|
||
at explicit hyphens is performed in fill mode, i.e., even if
|
||
_automatic_ hyphenation is disabled.
|
||
|
||
Thanks to Peter Schaffter for the report.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60332>.
|
||
|
||
2021-03-27 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Changes to the ghostscript fontnames (9.53.3).
|
||
|
||
* font/devpdf/Foundry.in: HI and HBI switch to using
|
||
Italic rather than Oblique.
|
||
|
||
2021-03-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Manipulating Filling and Adjustment):
|
||
* man/groff_diff.7.man (Language/Extended requests): Fix
|
||
incorrect claim that additional inter-sentence space is applied
|
||
only in fill mode. Drop word "parameter" from description of
|
||
unit used in .ss request arguments; it is a needlessly specific
|
||
reference to the font file format. Tighten wording.
|
||
|
||
* man/groff.7.man (Control Characters): Fix incorrect claim that
|
||
end-of-sentence detection is attempted only in fill mode. Note
|
||
that .ss request also affects inter-word spacing.
|
||
|
||
* man/groff_diff.7.man (Language/Extended requests):
|
||
- Drop example.
|
||
- Move discussion of AT&T vs. GNU troff difference in .ss
|
||
handling from here...
|
||
(Implementation Differences): ...to here.
|
||
|
||
Thanks to Dave Kemper for his continued scrutiny!
|
||
|
||
2021-03-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (ms Cover Page Macros):
|
||
* doc/ms.ms (Cover page macros):
|
||
* tmac/groff_ms.7.man (Usage/Cover page macros): Revise and
|
||
rename (sub)sections to "Document description macros".
|
||
|
||
2021-03-15 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* Makefile.am: Fix typos. Thanks to Bjarni Ingi Gislason for
|
||
the report.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59457>.
|
||
|
||
2021-03-14 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
* man/groff_tmac.5.man: Correct erroneous reference to PSPIC
|
||
where PDFPIC was intended. Fix numerous smaller style and
|
||
content problems.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60229>.
|
||
|
||
2021-03-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Optional man extensions) <CW, EX, PN, Pn>:
|
||
(Highlighting in ms) <CW>:
|
||
(Additional ms macros) <CW>: Use "monospaced" to refer to font
|
||
selected, retaining "constant-width" term only where it explains
|
||
the macro mnemonic. Thanks to Dave Kemper for pointing out the
|
||
issue. Also fix error: .CW in the ms package seems to have
|
||
originated with Research Unix, not Berkeley.
|
||
|
||
* doc/ms.ms (Highlighting) <CW>: Sync with our Texinfo manual.
|
||
* tmac/groff_ms.7.man: Sync with ms.ms, omitting FAM advice.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60037>.
|
||
|
||
2021-03-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Identifiers, Strings, Writing Macros)
|
||
(Diversions): Improve cross-linkage of documentation regarding
|
||
shared name space of macros, strings, diversions, and boxes.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58995>.
|
||
|
||
2021-03-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Improve diagnostic messages.
|
||
(@diag): New macro wraps .tm request, always prefixing it with
|
||
the name of the macro package, as well as file and line
|
||
indicators only if these are set to non-empty or non-zero
|
||
values, respectively.
|
||
(@error, @warning): Call @diag instead of .tm directly.
|
||
(@fatal): Retire; it had only one call site and it would have
|
||
greatly complicated @diag to support calling .ab instead of .tm.
|
||
An ugly alternative would have been to call .ab with a redundant
|
||
message after calling @diag.
|
||
(@divert): New macro wraps .di request, remembering the name of
|
||
the current file (\n[.F]) when a diversion is started.
|
||
(@error-recover): Call .ab instead of (deleted) @fatal.
|
||
(pg@super-eject): Tell user what the last file name seen was
|
||
when recovering from an unfinished diversion when processing
|
||
ends.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55099>.
|
||
|
||
2021-02-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Fix bug where having line numbering off but the output line
|
||
number register \n[ln] set to a positive value would cause
|
||
tbl(1) table rows to spontaneously become numbered. Use new
|
||
\n[.nm] register to determine whether line numbering is enabled.
|
||
|
||
* src/preproc/tbl/table.cpp (table::init_output, table::do_row)
|
||
(table::do_bottom): Predicate all conditions on \n[ln]
|
||
additionally on \n[.nm].
|
||
|
||
Thanks to Olle Lögdahl for the report. Problem appears to date
|
||
back to commit b69062693d3360efce9d4d63fac337be21e07db7, 20 July
|
||
2011.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59812>.
|
||
|
||
2021-02-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #59812.
|
||
|
||
* src/preproc/tbl/tests/cooperate-with-nm-request.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TEST): Run test.
|
||
|
||
2021-02-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Implement new read-only register ".nm". It reports the
|
||
enablement status of output line numbering (caused by the .nm
|
||
request) irrespective of the temporary suspension of numbering
|
||
with the .nn request. Needed because there was no way to
|
||
introspect its state, tbl(1) needs to do so, and the writable
|
||
line number register \n[ln] is not a reliable proxy for it.
|
||
|
||
* src/roff/troff/env.h: Add get_numbering_nodes(), returning
|
||
`int`, to public interface of `environment` class.
|
||
* src/roff/troff/env.cpp: Implement get_numbering_nodes().
|
||
|
||
* src/roff/groff/tests/dot-nm_register_works.sh: Test it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
* doc/groff.texi (Miscellaneous):
|
||
* man/groff_diff.7.man (Language/New number registers):
|
||
* man/groff.7.man (Registers/Read-only registers): Document it.
|
||
|
||
* NEWS: Add item.
|
||
|
||
2021-02-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Emit warning diagnostic when using a multi-page
|
||
table with a repeating header (".TS H").
|
||
(KS): Rename diversion from "kp*div" to "kp@div" since the name
|
||
is now referenced outside the keep module.
|
||
(KF): ...similarly for kp@fdiv.
|
||
(generally): Update diversion dereference sites and derived
|
||
names.
|
||
(@TS): When handling "H" argument, check identity of current
|
||
diversion and emit appropriately worded warning.
|
||
|
||
2021-02-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* FOR-RELEASE: Add more procedures and information related to
|
||
incrementing groff's version number.
|
||
|
||
2021-02-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/searchpath.cpp (search_path::open_file)
|
||
(search_path::open_file_cautious): Save errno before calling
|
||
free() and restore it afterwards. A future version of POSIX
|
||
will require that free() not change errno if it succeeds[1];
|
||
some C library implementations, including recent versions of
|
||
glibc[2], lack this property. free() is called in these
|
||
libgroff functions to clean up after an unsuccessful fopen() of
|
||
a heap-allocated file name string, and because the errno from
|
||
fopen() may be passed to strerror() in a diagnostic message, it
|
||
needs to be accurate. I checked the rest of groff's codebase
|
||
and found no other instances of free() being used to clean up
|
||
after fopen() failure.
|
||
|
||
[1] https://www.austingroupbugs.net/view.php?id=385
|
||
[2] https://sourceware.org/bugzilla/attachment.cgi?id=13073
|
||
|
||
2021-02-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Address build failure on macOS.
|
||
|
||
Follow the advice of the gnulib manual ("Changing your source
|
||
for use with gnulib") more scrupulously; include config.h in
|
||
more files.
|
||
|
||
* src/libs/libgroff/curtime.cpp [HAVE_CONFIG_H]:
|
||
* src/libs/libgroff/device.cpp [HAVE_CONFIG_H]:
|
||
* src/libs/libgroff/fatal.cpp [HAVE_CONFIG_H]:
|
||
* src/libs/libgroff/string.cpp [HAVE_CONFIG_H]:
|
||
* src/libs/libgroff/strsave.cpp [HAVE_CONFIG_H]:
|
||
* src/preproc/eqn/other.cpp [HAVE_CONFIG_H]:
|
||
* src/preproc/eqn/text.cpp [HAVE_CONFIG_H]:
|
||
* src/preproc/pic/object.cpp [HAVE_CONFIG_H]: Do it.
|
||
|
||
* src/libs/libgroff/assert.cpp [HAVE_CONFIG_H]:
|
||
* src/libs/libgroff/errarg.cpp [HAVE_CONFIG_H]:
|
||
* src/libs/libgroff/error.cpp [HAVE_CONFIG_H]: #include
|
||
config.h using angle brackets instead of quotation marks.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?60035>.
|
||
|
||
2021-02-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #60025.
|
||
|
||
* tmac/tests/doc_Mt-works.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2021-02-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Demote definition of \[yogh] special character escape from
|
||
unconditional availability to be defined only if the output
|
||
device defines it or if .AM macro is called to enable support
|
||
for Berkeley-style accent marks.
|
||
|
||
See
|
||
https://lists.gnu.org/archive/html/groff/2021-01/msg00000.html
|
||
and follow-ups for discussion.
|
||
|
||
* tmac/s.tmac (initialization): Move definition of \[yogh] (only
|
||
if the output device doesn't already define it) from here...
|
||
(AM): ...to here.
|
||
|
||
2021-02-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/ms.ms: Use \[ps] special character instead of local
|
||
character definition using numeric code point escape, which is
|
||
less portable.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59528>. Thanks to Bjarni
|
||
Ingi Gislason for the report and a suggested patch.
|
||
|
||
2021-02-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (initialization): Call par*define-font-macro with
|
||
arguments "CW" and "R" in nroff mode to silence font warnings
|
||
from documents using .CW macro in nroff mode.
|
||
|
||
2021-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::init_output): Save value of
|
||
hyphenation maximum consecutive line count register (\n[.hlm])
|
||
more carefully to keep it from being incorrectly parsed as a
|
||
decrement, because negative values of \n[.hlm] are valid (in
|
||
fact, "-1" is the default). In documents with a large number of
|
||
tables, this can lead to a Persian chessboard problem and an
|
||
integer overflow (at the groff language level, caught and
|
||
handled by src/roff/troff/number.cpp:parse_term()).
|
||
|
||
It is wise to wrap a non-literal second argument to the .nr
|
||
request in parentheses if assignment is desired and its value
|
||
can be negative. See section 5.6.1 ("Setting Registers") of the
|
||
groff Texinfo manual.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59993>.
|
||
|
||
2021-02-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* test-groff.in: Add support for rfc1345.tmac.
|
||
|
||
2021-02-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Integrate rfc1345.tmac into build system.
|
||
|
||
* contrib/rfc1345/rfc1345.am: Do it.
|
||
* Makefile.am: Include contrib/rfc1345/rfc1345.am.
|
||
|
||
2021-02-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (open_mac_file): Report problem when
|
||
attempting to open macro files (-m arguments) and the error is
|
||
something other than ENOENT.
|
||
(process_macro_file): Update diagnostic to be more precise; the
|
||
file couldn't be _opened_, not necessarily _found_, and clarify
|
||
that the string being reported back to the user is the argument
|
||
to the -m option, not a file name.
|
||
(macro_source): Update diagnostic to report that the file
|
||
couldn't be _opened_, not necessarily _found_, and include the
|
||
nature of the problem.
|
||
|
||
2021-01-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[tbl]: Save and restore hyphenation parameters.
|
||
|
||
* src/preproc/tbl/table.cpp (table::init_output): When starting
|
||
a table, save the hyphenation parameters (\n[.hy], \n[.hla],
|
||
\n[.hlm], \n[.hym], \n[.hys]). Restore them in the table reset
|
||
macro (confusingly called "3init"), which is called before
|
||
performing each diversion and before exiting a table.
|
||
|
||
This enables people to, e.g., turn off hyphenation in a table
|
||
text block with .nh, just as they can turn off adjustment with
|
||
.na, without having to manually reset it. The next text block,
|
||
and the material after the table, will not be affected.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59971>.
|
||
|
||
2021-01-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #59971.
|
||
|
||
* src/preproc/tbl/tests/\
|
||
save-and-restore-hyphenation-parameters.sh: Do it.
|
||
* src/preproc/tbl/tbl.am (tbl_TEST): Run test.
|
||
|
||
2021-01-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am ($(TMACSTRIPFILES)):
|
||
($(TMACMDOCSTRIPFILES)): Remove unidiomatic for loop which
|
||
frustrated parallel make operation.
|
||
|
||
Thanks to an anonymous contributor for the report and patch.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59958>.
|
||
|
||
2021-01-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/ms.ms (Document control settings): Document old FAM string
|
||
and new FR string.
|
||
|
||
2021-01-29 T. Kurt Bond <tkurtbond@gmail.com>
|
||
|
||
[ms]: Add new string FR to hold an expression for computing the
|
||
footnote length relative to the line length, consistently for
|
||
single- and multi-column modes, which \n[FL] has never done.
|
||
|
||
* tmac/s.tmac: Initialize FR string to "11/12".
|
||
(@MC): Compute footnote column width using \*[FR] instead of a
|
||
hard-coded "11/12" expression.
|
||
(par@init): Compute default \n[FL] using \*[FR] instead of a
|
||
hard-coded "11/12" expression.
|
||
|
||
* doc/groff.texi (Macro Packages/ms/Document control settings):
|
||
* tmac/groff_ms.7.man (Usage/Document control registers):
|
||
Document it.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59605>.
|
||
|
||
2021-01-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp: Add ADJUST_MAX enumeration constant to
|
||
record maximum valid numerical adjustment mode.
|
||
(adjust): Verify numeric argument against ADJUST_MAX instead of
|
||
a numeric literal. Ignore excessively large values instead of
|
||
setting adjustment mode to "right". Update warning diagnostic.
|
||
|
||
2021-01-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for .ad and .na requests.
|
||
|
||
* src/roff/groff/tests/adjustment_works.sh: Do it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2021-01-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Manipulating Filling and Adjustment):
|
||
* man/groff.7 (Requests/Request short reference): Clarify
|
||
behavior of ".na" and ".ad l".
|
||
|
||
Thanks to Bjarni Ingi Gislason for pointing out the potential
|
||
for confusion and for his careful review of the new text.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59795>.
|
||
|
||
2021-01-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/grog/grog.pl: Report program name in fatal error
|
||
diagnostics. Also drop sentence-ending punctuation since Perl
|
||
supplies additional information.
|
||
|
||
Continues the long process of fixing Savannah #52463.
|
||
|
||
2021-01-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (RE): Style-warn if macro arguments are out
|
||
of range or redundant.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55320>.
|
||
|
||
2021-01-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Improve style of troffrc{,-end} files. Follow established
|
||
idioms and make them consistent with each other.
|
||
|
||
* tmac/troffrc:
|
||
* tmac/troffrc-end:
|
||
- Identify files in header comments as part of GNU troff.
|
||
|
||
* tmac/troffrc:
|
||
- Clarify purpose of .do request.
|
||
- Identify .X (set by groff -X) as a register, not a string.
|
||
- Remove temporary registers one per line to make
|
||
synchronization with foregoing logic easier. Fixes name
|
||
space management nits: an undefined string troffrc!Xps was
|
||
being removed, and troffrc!{ascii,latin1,utf8,cp1047} were
|
||
not being removed despite being defined.
|
||
|
||
* tmac/troffrc-end:
|
||
- Clarify that file is read after -m file arguments (not "all
|
||
macro sets", which can be loaded with .mso after this file
|
||
is processed).
|
||
- Advise usage of .do for groff extensions.
|
||
- Line-break one-off conditionals as troffrc does.
|
||
- Add empty string comment to empty string definitions.
|
||
|
||
2021-01-14 Dave Kemper <saint.snit@gmail.com>
|
||
|
||
Commit 87edb525, from 2003, added character U+2026 (HORIZONTAL
|
||
ELLIPSIS) to most base groff fonts, but there has been no
|
||
kerning information for this character. To produce consistent
|
||
typography, it should be kerned the same way as the period,
|
||
which is in 818 kern pairs across all the devps fonts.
|
||
|
||
Apply the following shell command to the groff description files
|
||
of the PostScript fonts.
|
||
|
||
for file in font/devps/*[A-Z]
|
||
do sed -Ei\~ 's/(.*)(^| )\. (.*)/&\n\1\2u2026 \3/' $file
|
||
done
|
||
|
||
* font/devps/AB:
|
||
* font/devps/ABI:
|
||
* font/devps/AI:
|
||
* font/devps/AR:
|
||
* font/devps/BMB:
|
||
* font/devps/BMBI:
|
||
* font/devps/BMI:
|
||
* font/devps/BMR:
|
||
* font/devps/HB:
|
||
* font/devps/HBI:
|
||
* font/devps/HI:
|
||
* font/devps/HNB:
|
||
* font/devps/HNBI:
|
||
* font/devps/HNI:
|
||
* font/devps/HNR:
|
||
* font/devps/HR:
|
||
* font/devps/NB:
|
||
* font/devps/NBI:
|
||
* font/devps/NI:
|
||
* font/devps/NR:
|
||
* font/devps/PB:
|
||
* font/devps/PBI:
|
||
* font/devps/PI:
|
||
* font/devps/PR:
|
||
* font/devps/TB:
|
||
* font/devps/TBI:
|
||
* font/devps/TI:
|
||
* font/devps/TR:
|
||
* font/devps/ZCMI: Apply above script.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58897>. However, this
|
||
will need to be done again if afmtodit is used to regenerate the
|
||
above files, or afmtodit will need to be modified to add this
|
||
kerning information itself.
|
||
|
||
2021-01-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/relocate.cpp (set_current_prefix) [_WIN32]:
|
||
Move declaration of `pathextstr` to lie within preprocessor
|
||
conditional, since it is dereferenced only there.
|
||
|
||
2021-01-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add support for strsignal().
|
||
|
||
POSIX.1-2008 added strsignal() to the C library and recommended
|
||
its use over sys_siglist[], but groff's pipeline management
|
||
hadn't been updated in that respect since that time.
|
||
|
||
* configure.ac: Check for strsignal().
|
||
* src/roff/groff/pipeline.c (xstrsignal): Return strsignal() if
|
||
it is defined.
|
||
|
||
Thanks to an anonymous contributor for the report and the patch.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59835>.
|
||
|
||
2021-01-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/libs/libgroff/relocate.cpp (relocatep): Add assertion to
|
||
identify logic error if `curr_prefix` is unexpectedly a null
|
||
pointer.
|
||
(set_current_prefix) [_WIN32]: Allocate memory from heap for
|
||
`curr_prefix` only on Windows; on other systems, this file's
|
||
searchpath() is used to populate `curr_prefix`, and that
|
||
function (except on Windows) performs its own allocation. Fixes
|
||
memory leak noted by Ingo Schwarze.
|
||
(set_current_prefix) [!_WIN32]: Move logic attempting to set
|
||
`curr_prefix` by calling searchpathext() from here...
|
||
[WIN32]: ...to here. The PATHEXT environment variable has
|
||
semantics only under Windows, not POSIX systems, so the
|
||
placement of this code seemed erroneous.
|
||
|
||
See <https://savannah.gnu.org/bugs/?55475>.
|
||
|
||
2021-01-06 Colin Watson <cjwatson@debian.org>
|
||
|
||
* contrib/glilypond/glilypond.pl:
|
||
* contrib/gperl/gperl.pl:
|
||
* contrib/gpinyin/gpinyin.pl:
|
||
* tmac/hyphenex.pl: Avoid Perl's unsafe "<>" operator.
|
||
|
||
The "<>" operator is implemented using the two-argument form of
|
||
"open", which interprets magic such as pipe characters, allowing
|
||
execution of arbitrary commands which is unlikely to be
|
||
expected. Perl >= 5.22 has a "<<>>" operator which avoids this,
|
||
but also forbids the use of "-" to mean the standard input,
|
||
which is a facility that the affected groff programs document.
|
||
|
||
ARGV::readonly would probably also fix this, but I fundamentally
|
||
dislike the approach of escaping data in preparation for a
|
||
language facility to unescape it, especially when the required
|
||
escaping is as non-obvious as it is here. (For the same reason,
|
||
I prefer to use subprocess invocation facilities that allow
|
||
passing the argument list as a list rather than as a string to
|
||
be interpreted by the shell.) So I've abandoned this dubious
|
||
convenience and changed the affected programs to iterate over
|
||
command-line arguments manually using the three-argument form of
|
||
open.
|
||
|
||
glilypond doesn't need the initial unshift since that's already
|
||
handled in contrib/glilypond/args.pl.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55557>.
|
||
|
||
2021-01-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Set footnote line length in multi-column
|
||
environments to 11/12ths of the text line length for consistency
|
||
with earlier change to FL register default.
|
||
|
||
Thanks to T. Kurt Bond for bringing this issue to my attention.
|
||
|
||
2021-01-04 John Gardner <gardnerjohng@gmail.com>
|
||
|
||
* tmac/strip.sed: Escape '.' wildcard when matching lines using
|
||
.as and .ds requests.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59498>.
|
||
|
||
2021-01-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Document use of SOURCE_DATE_EPOCH and TZ.
|
||
|
||
The semantics of SOURCE_DATE_EPOCH to groff were not established
|
||
with respect to time zone selection, prompting divergent
|
||
interpretations; Debian and distributions derived from it have
|
||
for several years patched groff to implicitly use UTC as the
|
||
time zone when interpreting the current time (or
|
||
SOURCE_DATE_EPOCH) as a local time. While a convenient and
|
||
defensible choice for reproducible build efforts[1], it runs
|
||
against the grain of user expectations. Systems programmers
|
||
like monotonically increasing clocks; the broader user base
|
||
usually prefers a clock that follows an applicable civil
|
||
calendar. To the latter audience, a difference between
|
||
$ date "+%Y-%M-%d %H:%m:%S"
|
||
and
|
||
$ groff <<EOF
|
||
.af year 0000
|
||
.af mo 00
|
||
.af dy 00
|
||
.af hours 00
|
||
.af minutes 00
|
||
.af seconds 00
|
||
.tm \n[year]-\n[mo]-\n[dy] \n[hours]:\n[minutes]:\n[seconds]
|
||
EOF
|
||
is difficult to explain.
|
||
|
||
* doc/groff.texi (Environment):
|
||
* src/devices/grohtml/grohtml.1.man (Environment):
|
||
* src/devices/gropdf/gropdf.1.man (Environment):
|
||
* src/devices/grops/grops.1.man (Environment):
|
||
* src/roff/groff/groff.1.man (Environment):
|
||
* src/roff/troff/troff.1.man (Environment): Expand description
|
||
of use of SOURCE_DATE_EPOCH to note that it converts the time
|
||
{as seconds since the Epoch} to local time, which motivates
|
||
documentation of the TZ environment variable. Explain what the
|
||
time stamps are used for: troff merely stores the human-readable
|
||
time components in registers; the grohtml, gropdf, and grops
|
||
output drivers write the information to the output in comments.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?57218>.
|
||
|
||
[1] https://reproducible-builds.org/docs/source-date-epoch/
|
||
|
||
2020-12-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/doc.am (.texi.dvi): Call texi2dvi with FORCE_SOURCE_DATE=1
|
||
in the environment, avoiding an embedded timestamp in the
|
||
generated groff.dvi file, which frustrated reproducible builds.
|
||
Thanks to Werner Lemberg for the suggestion.
|
||
|
||
* src/roff/groff/tests/string_case_xform_unicode_escape.sh: Fix
|
||
test to no longer use Bash process substitution, resulting in
|
||
nondeterministic file descriptor numbers appearing in test logs,
|
||
frustrating reproducible builds.
|
||
|
||
* contrib/pdfmark/pdfmark.am (PDFROFF): Call pdfroff without
|
||
`--keep-temporary-files` option. Temporary directories are
|
||
created with mktemp(1) and files with an embedded process
|
||
identifier, which frustrates reproducible builds.
|
||
|
||
See <https://savannah.gnu.org/bugs/?57218>.
|
||
|
||
2020-12-21 Dorai Sitaram <ds26gte@yahoo.com>
|
||
|
||
* tmac/s.tmac (@IP): Handle inter-sentence space correctly in
|
||
paragraph tags by copying \n[.sss] from the enclosing
|
||
environment to that used to format the paragraph tag.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59742>.
|
||
|
||
2020-12-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #59742.
|
||
|
||
* tmac/tests/s_IP_respects_inter-sentence_space_in_tags.sh: Do
|
||
it.
|
||
* tmac/tmac.am (tmac_TESTS): Run it.
|
||
|
||
2020-12-21 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
|
||
|
||
* src/utils/addftinfo/addftinfo.cpp (usage): Use size_t for loop
|
||
index when iterating over a count of size_t items. Quiets
|
||
signedness mismatch compiler warning.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59583>.
|
||
|
||
2020-12-20 Colin Watson <cjwatson@debian.org>
|
||
|
||
* src/devices/gropdf/gropdf.pl:
|
||
* src/utils/afmtodit/afmtodit.pl: Sort Perl hash keys. Hash
|
||
iteration order may differ between runs, which makes builds
|
||
harder to reproduce. Sort hash keys in gropdf and afmtodit
|
||
output to avoid this.
|
||
|
||
2020-12-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/ms.ms (Basic Information): Tweak unit definitions. groff
|
||
defines a typesetter's point as precisely 1/72 inches. Also use
|
||
the correct symbol for inch units--strictly, it's the same as
|
||
that for "seconds" as in subdivisions of the degree, and not a
|
||
typographical quote of any sort.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59463>.
|
||
|
||
2020-12-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
[ms]: Set footnote line length to AT&T default.
|
||
|
||
groff ms has since its initial implementation used a default
|
||
footnote line length of 5/6ths of the text line length; this may
|
||
correspond to an early AT&T ms default (perhaps documented in
|
||
the 1974 version of the M. E. Lesk paper, "Typing Documents on
|
||
the UNIX System"[1]). However, as early as V6 Unix (1975), AT&T
|
||
ms actually used a footnote line length of 11/12ths of the text
|
||
line length instead[2].
|
||
|
||
Heirloom Doctools and neatroff ms also use this default.
|
||
|
||
* tmac/s.tmac: Set default footnote line length to 11/12ths of
|
||
the text line length.
|
||
|
||
* doc/groff.texi (ms Document Control Settings):
|
||
* doc/ms.ms (Document control registers): Document new default.
|
||
|
||
[1] https://www.troff.org/using-ms.pdf
|
||
[2] https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6/usr/lib/tmac.s
|
||
|
||
2020-12-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Lower new unplanted trap error to 'mac' warning.
|
||
|
||
* src/roff/troff/div.cpp (top_level_diversion::change_trap):
|
||
Change error upon invalid attempt to move an unplanted trap into
|
||
a warning of type 'mac'.
|
||
|
||
* doc/groff.texi (Warnings):
|
||
* src/roff/troff/troff.1.man (Warnings): Recast description of
|
||
'mac' warning type to include the above scenario.
|
||
|
||
Thanks to Bjarni Ingi Gislason for reporting the diagnostic
|
||
arising in real life, and to Peter Schaffter for the discussion
|
||
and recommendation. Some bike sheds get painted quickly!
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59573>.
|
||
|
||
2020-12-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_mdoc.7.man: Tweak mandatory macro explanations.
|
||
|
||
Update descriptions and template of .Dd, .Dt, .Os usage to
|
||
reflect recent changes and recommended conventions.
|
||
|
||
Thanks to Ingo Schwarze, Colin Watson, and Alan D. Salewski for
|
||
the discussion, and Florent Rougon and Robert Bihlmeyer (many
|
||
years ago) for the original report.
|
||
|
||
Fixes <https://bugs.debian.org/284002>.
|
||
|
||
2020-12-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/xtotroff/xtotroff.c (MapFont): Avoid writing past
|
||
the end of a static buffer. Problem found and patch supplied by
|
||
Bjarni Ingi Gislason. I tweaked it to comment it differently
|
||
{in case the buffer ever needs to grow, but the prospects of
|
||
future X11 server-side font rendering development seem dim} and
|
||
use snprintf() instead of retaining the existing sprintf().
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55257>.
|
||
|
||
2020-12-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/xtotroff/xtotroff.c (CanonicalizeFontName)
|
||
(FontNamesAmbiguous, MapFont, main): Format diagnostic messages
|
||
more consistently with GNU Coding Standards. Prefix with name
|
||
of complaining command. Put argument literals in quotation
|
||
marks. Put each message on one line only.
|
||
|
||
2020-11-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Parameters): Fix error in example. Arguments
|
||
to .als were in the wrong order (.als is not ln(1)). Also mark
|
||
output to the standard error stream using the @error Texinfo
|
||
command instead of @result.
|
||
|
||
Thanks to Dorai Sitaram for finding this error.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59566>.
|
||
|
||
2020-11-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Debugging): Update with a more helpful
|
||
introduction, summarizing available procedures. Mention
|
||
backtracing since it is much more useful now (post-groff
|
||
1.22.4.)
|
||
|
||
* man/groff.7 (Debugging): Add new section summarizing
|
||
material added to our Texinfo manual.
|
||
|
||
* man/groff_diff.7.man (Debugging): Add new section describing
|
||
groff extensions.
|
||
|
||
2020-11-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Traps): Update. Organize subsubsections "Page
|
||
Location Traps" and "Diversion Traps" under new subsection node
|
||
"Vertical Position Traps" to make the conceptual organization
|
||
more clear. Define and discuss trap visibility earlier.
|
||
Document unit used for page location trap reporting. Introduce
|
||
analogy of .wh and .ch requests as queue operations. Document
|
||
what happens when the same macro is planted as a trap in
|
||
multiple locations; supply example. Supply example of .itc
|
||
usage. Consistently refer to an end-of-input macro as such, to
|
||
contrast it with the "end macro" that can be used with, e.g.,
|
||
.de and .ig requests.
|
||
|
||
* man/groff.7 (Traps): Add new section summarizing
|
||
language feature.
|
||
|
||
2020-11-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common-u (doc-footer): When performing
|
||
double-sided page layout, set page number on outside of _recto_
|
||
{odd-numbered} pages, as is conventional and for consistency
|
||
with man(7).
|
||
|
||
* tmac/groff_mdoc.7.man
|
||
(Formatting with groff, troff, and nroff): Document what
|
||
double-sided layout (not "printing") means. Also correct
|
||
description of continuous rendering, which implied that page
|
||
headers and footers were not written at all, and used an
|
||
incorrect groff driver name.
|
||
|
||
Fixes <https://bugs.debian.org/919890>. Also see:
|
||
https://lists.gnu.org/archive/html/groff/2019-01/msg00021.html
|
||
Thanks to Ralph Corderoy for the discussion.
|
||
|
||
* tmac/tests/doc-D_places_page_numbers_correctly.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2020-11-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common-u (doc-header): Fix infinite loop when
|
||
attempting to trim header string (like "FTP(1)") to fit when the
|
||
available title length won't allow even extreme shortening.
|
||
Measure the string before and after calling .substring on it,
|
||
and break out of loop if it didn't get shorter.
|
||
|
||
Problem dates back to at least
|
||
ed63b0ae76a611b581601a1afc192f6a7367be6f (7 July 2002), possibly
|
||
as far as the Great Mdoc Rewrite of
|
||
058f72af832fc68488d33cd09ec819e5c560fa09 (23 March 2001).
|
||
|
||
One can never check loop invariants too many times...
|
||
|
||
Fixes <https://bugs.debian.org/411227>.
|
||
|
||
* tmac/tests/\
|
||
doc-do_not_loop_infinitely_when_shortening_headers.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2020-11-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/nroff/nroff.sh: Recognize -b and -z options and pass
|
||
them through to troff. Document them in usage message.
|
||
* src/roff/nroff/nroff.1.man: Document new -b and -z options.
|
||
|
||
2020-11-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/div.cpp (top_level_diversion::change_trap):
|
||
Emit error diagnostic if an attempt is made to move an unplanted
|
||
macro. This could have been a warning, as it's pretty harmless
|
||
{though possibly a big surprise to anyone who was wondering why
|
||
their .ch was a no-op}, but there's no good warning category for
|
||
this kind of problem and I am not about to start a bike shed
|
||
discussion about it right now.
|
||
|
||
2020-11-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi: Update. Add introductory material. Rewrite
|
||
the first section of the "gtroff Reference" chapter of our
|
||
Texinfo manual. It is written as an introduction for readers
|
||
who want to go straight to "raw" troff without knowing much or
|
||
anything about existing macro packages. Thanks to Dave Kemper
|
||
and John Gardner for feedback and support.
|
||
|
||
Clarify whitespace usage. "Whitespace" is defined in this
|
||
manual as "spaces, tabs, and newlines". Say only "spaces and
|
||
tabs" when newlines should not be included.
|
||
|
||
Rename "Font Files" to "Device and Font Files".
|
||
|
||
Rename "Manipulating Filling and Adjusting" to "Manipulating
|
||
Filling and Adjustment".
|
||
|
||
Update discussion of "copy mode". Rename from "copy-in mode",
|
||
which I don't think eludicdated anything; is there a "copy-out
|
||
mode"? Rename nodes accordingly. Attempt to explain more
|
||
clearly. Recast to shift emphasis to what _isn't_ merely copied
|
||
in copy mode, since that is what seems to cause confusion among
|
||
the inexperienced.
|
||
|
||
Update "Conditionals and Loops". Add introductory paragraph.
|
||
Add nodes/subsections "if-then" and "Conditional Blocks". Add
|
||
subsection "Conditional Blocks" to explain the behavior of the
|
||
\{ and \} escapes much more precisely. I don't think this
|
||
syntactical area is well understood. Supply examples.
|
||
|
||
2020-11-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add style checks to man(7) macro package.
|
||
|
||
Not otherwise documented yet; experimental--subject to change.
|
||
|
||
* tmac/an-old.tmac: Initialize CHECKSTYLE to false if not
|
||
already set.
|
||
(an-style-warn): New macro emits diagnostic of type "style" when
|
||
called if CHECKSTYLE register is true.
|
||
(TH): Call an-style-warn if fewer than two or more than five
|
||
arguments are seen.
|
||
(RI, IR, IB, BI, RB, BR): Call an-style-warn if fewer than two
|
||
arguments are seen.
|
||
|
||
2020-11-11 Bertrand Garrigues <bertrand.garrigues@laposte.net>
|
||
|
||
Update copyright.
|
||
|
||
* update-copyright.sh: use gnulib's 'update-copyright' script.
|
||
Pass this script in directories 'arch', 'contrib', 'font',
|
||
'man', 'tmac', 'src' and on a list of extra files.
|
||
|
||
* FOR-RELEASE: mention this point.
|
||
|
||
2020-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/preconv.1.man (Description): Fix error:
|
||
groff's -K option, not -k, specifies a character econding (and
|
||
overrides GROFF_ENCODING in the environment). Also explain how
|
||
valid encoding strings are determined.
|
||
|
||
Thanks to Bjarni Ingi Gislason for the report.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59445>.
|
||
|
||
2020-11-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::compute_separation_factor):
|
||
Add word "table" to diagnostic message to better cue the user
|
||
that it is produced by roff that has been injected into the
|
||
document by the tbl(1) preprocessor. The other 3 such possible
|
||
diagnostic messages already do this. Thanks to Bjarni Ingi
|
||
Gislason for bringing the inconsistency to light.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59443>.
|
||
|
||
2020-11-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_mdoc.7.man (Predefined strings): Ensure the table
|
||
fits even on ASCII and Latin-1 terminals. Thanks to Bjarni Ingi
|
||
Gislason for the report.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59424>.
|
||
|
||
2020-11-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_mdoc.7.man (General text domain/Enclosure and
|
||
Quoting Macros): Fix errors in macro descriptions.
|
||
<.Dq>: Encloses its arguments in directional double quotes where
|
||
available.
|
||
<.Eq>: Misrendered example; say "XstringY" rather than
|
||
"XXstring".
|
||
<.Sq>: Encloses its arguments in directional single quotes where
|
||
available.
|
||
|
||
2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add support for CS and CT registers to mdoc(7), just like in
|
||
man(7), from a year ago.
|
||
|
||
* tmac/doc.tmac-u (doc-print-recursive): Call .stringup on each
|
||
argument if register doc-do-capitalize is true.
|
||
* tmac/mdoc/doc-common-u (Dt): Call .stringup on
|
||
doc-document-title if \n[CT] is true.
|
||
(Sh): Set doc-do-capitalize to value of \n[CS]. Set
|
||
doc-do-capitalize false before returning.
|
||
* tmac/mdoc/doc-ditroff-u:
|
||
* tmac/mdoc/doc-nroff-u: Set CS and CT registers to 0 (false)
|
||
if the user has not defined them.
|
||
|
||
* tmac/groff_mdoc.7.man \
|
||
(Formatting with groff, troff, and nroff): Document it.
|
||
|
||
* tmac/tests/doc-CS_works.sh:
|
||
* tmac/tests/doc-CT_works.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run tests.
|
||
|
||
2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_overstrike, do_bracket)
|
||
(do_name_test, do_expr_test, do_zero_width, do_width)
|
||
(do_special, do_if_request, read_color_draw_node): Improve
|
||
diagnostic messages for missing closing delimiters by describing
|
||
the incomplete structure and the problem token.
|
||
(read_rgb, read_cmy, read_cmyk, read_gray): Improve English
|
||
syntax of diagnostic message when color definition missing.
|
||
|
||
2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-ditroff-u:
|
||
* tmac/mdoc/doc-nroff-u: Recognize but ignore the groff_man(7)
|
||
string HF and registers FT, IN, P, SN, and X (by initializing
|
||
them empty or zero if they are not set). This reserves them so
|
||
that they don't become used for divergent purposes. man(1)
|
||
programs set these and other parameters already handled (like
|
||
LL) to configure page rendering, and it would break the
|
||
macro-package agnosticism afforded by andoc.tmac to expose
|
||
different externally-programmable registers and strings.
|
||
* tmac/groff_mdoc.7.man \
|
||
(Formatting with groff, troff, and nroff): Document this.
|
||
|
||
2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Implement \*< and \*> strings for subscripting.
|
||
groff ms has had (extension) strings for superscripting since
|
||
1991 at the latest, and the asymmetry possessed me of a madness.
|
||
Both pairs of string names follow similar usage in Eric Allman's
|
||
"me" macros.
|
||
|
||
* NEWS:
|
||
* doc/groff.texi:
|
||
* tmac/groff_ms.7.man: Document it.
|
||
|
||
2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_mdoc.7.man (Predefined strings): Fix error: the
|
||
\*[Lq] and \*[Rq] strings degrade to neutral double quotes (")
|
||
on "nroff" devices (-Tascii and -Tlatin1), not "``" and "''".
|
||
|
||
2020-10-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac (ds*end!0): Improve diagnostic to mention .RD.
|
||
|
||
2020-10-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/s.tmac: Revise diagnostic messages. Define a common
|
||
prefix string, starting all such messages with "s.tmac".
|
||
Continues the long process of fixing Savannah #52463. Drop the
|
||
word "macro" from diagnostic since this will now be clear from
|
||
the prefix. Prefix every macro name in a diagnostic message
|
||
with a leading dot; this was already done in four cases.
|
||
(cov*first-page-init): Use temporary string to avoid multi-line
|
||
diagnostic message.
|
||
(@NH): Use temporary string to prevent overlength line.
|
||
|
||
A further benefit of this revision is that index information
|
||
produced by ms's .IX macro (which writes to the standard error
|
||
stream) will now be trivially easy to extract even for documents
|
||
that cause diagnostic messages. One can simply filter them with
|
||
grep -v '^s\.tmac:'
|
||
or similar.
|
||
|
||
2020-10-28 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
* man/roff.7.man, tmac/groff_man.7.man.in: Correct man(7)
|
||
history.
|
||
|
||
2020-10-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Fix ms .R macro to work as documented, by handling its arguments
|
||
instead of ignoring them.
|
||
|
||
* tmac/s.tmac (R): Delete. During set up, call
|
||
par*define-font-macro for R font just as we do for B, I, and BI.
|
||
|
||
Problem dates back at least to groff 1.02, June 1991.
|
||
|
||
* tmac/tests/s_R-handles-its-arguments.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59348>.
|
||
|
||
2020-10-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Fix ms .TC macro by allowing it to actually use lowercase Roman
|
||
numerals for the page(s) of the table of contents when a custom
|
||
title (header or footer) is defined containing '%'.
|
||
|
||
As a side effect, eliminate the PN register, which was
|
||
apparently misused because it was undocumented and had a name
|
||
just long enough to be both suggestive and ambiguous. Another
|
||
pin goes into my Ken Thompson voodoo doll.
|
||
|
||
* tmac/s.tmac (IX): Write out page number of index term(s) using
|
||
the % register (instead of PN), obtaining whatever format is
|
||
assigned to the register at that time.
|
||
(CH): Similarly, output %, not PN, in the center of the default
|
||
heading.
|
||
(PT): Save the format of %, set it to decimal, copy its value to
|
||
a new register, pg*page-number-in-decimal, then restore %'s
|
||
previous format. Compare the new register, not %, to 1 to
|
||
determine whether special page one behavior should be used.
|
||
(pg*end-page): Assign pg*next-format to %, not PN.
|
||
(XA): Define toc*num with the interpolation of %, not PN.
|
||
|
||
* tmac/tests/s_TC-works-with-percent-in-custom-titles.sh: Test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Problem appears to be very old; as I read it, Larry Kollar was
|
||
complaining of it in his ms.ms document over 20 years ago.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59345>.
|
||
|
||
2020-10-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7 (Requests/Request short reference) <.af>: Fix
|
||
error; "l" is not a valid register format. Explain what the
|
||
request does, and the default format, as tersely as possible.
|
||
|
||
2020-10-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Use only `malloc()` and `free()` to manage memory of paths
|
||
opened by the parser instead of mixing in C++ new/delete
|
||
management under some runtime-dependent circumstances.
|
||
|
||
* src/libs/libgroff/relocate.cpp (relocatep): Use `malloc()`,
|
||
not new.
|
||
* src/roff/troff/input.cpp (process_macro_file)
|
||
(process_startup_file, macro_source): Use `free()`, not
|
||
`{a_,}delete()`.
|
||
|
||
Thanks to an anonymous contributor for the report and patch.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?56694>.
|
||
|
||
2020-10-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff_char.7.man (Description/Special character escape
|
||
forms): Clarify discussion of Unicode Normalization Form D and
|
||
its applicability to code points acceptable in Unicode numeric
|
||
special character escapes. Also document that these escapes
|
||
must use uppercase hexadecimal digits.
|
||
|
||
Attempts once again to slay the unkillable beast that is
|
||
<https://savannah.gnu.org/bugs/?57618>.
|
||
|
||
2020-10-21 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
On systems without NAME_MAX, use FILENAME_MAX as a last resort.
|
||
|
||
Problem reported by Eli Zaretskii <eliz at gnu dot org>
|
||
on MS Windows in https://savannah.gnu.org/bugs/?55449
|
||
|
||
2020-10-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (environment::possibly_break_line):
|
||
Emit break warning and return if the output width is not
|
||
positive. The code assumes that it will be and loops infinitely
|
||
if it isn't. I _think_ this is because we're not able to get
|
||
width data for (some?) CJK glyphs. Based on a patch by Osamu
|
||
Sayama.
|
||
|
||
* src/roff/groff/tests/\
|
||
do_not_loop_infinitely_when_breaking_cjk.sh: Test it.
|
||
* src/roff/groff/groff.am: Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?44018>.
|
||
|
||
2020-10-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::init_output): Save the value
|
||
of \n[.tabs] when starting a table. In the reset macro, restore
|
||
the saved value.
|
||
|
||
Based on a patch by Bjarni Ingi Gislason (tweaked to use a more
|
||
normative preprocessor symbol; "REG"s aren't "NAME"s).
|
||
|
||
* src/preproc/tbl/tests/save-and-restore-tab-stops.sh: Test it.
|
||
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?42978>.
|
||
|
||
2020-10-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/nroff/nroff.sh: Recognize -E option and pass it
|
||
through to troff. Document it in usage message.
|
||
* src/roff/nroff/nroff.1.man: Document new -E option.
|
||
|
||
Based on a patch by Ingo Schwarze.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?44289>.
|
||
|
||
2020-10-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Stop remapping ` and '. Our own pages now
|
||
appear to be clear of wrong-quote problems, so let's make them
|
||
visible if they recur. Those who don't want to fix bad man
|
||
pages (distributors, site admins) can restore the mappings in
|
||
their man.local files.
|
||
|
||
2020-10-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-warn): New; emits warning diagnostic.
|
||
(R): Use new macro instead of .tm* requests directly.
|
||
|
||
2020-10-18 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
#include "config.h" before <stdio.h>
|
||
|
||
Required with e.g. gcc 4.2.1 because gnulib/lib/stdio.in.h
|
||
uses the "restrict" keyword since this gnulib commit:
|
||
commit 182afcba2635cbff91240656c7fb3742dd23ab6f
|
||
Author: Bruno Haible <bruno@clisp.org>
|
||
Date: Sat Feb 22 20:57:30 2020 +0100
|
||
|
||
Otherwise, the build may die from the declaration of
|
||
various printf-like functions with messages like:
|
||
./lib/stdio.h:851: error: expected ',' or '...' before 'fp'
|
||
|
||
* src/libs/libgroff/assert.cpp, src/libs/libgroff/errarg.cpp,
|
||
src/libs/libgroff/error.cpp, src/preproc/eqn/eqn.ypp:
|
||
#include "config.h".
|
||
|
||
2020-10-18 Bertrand Garrigues <bertrand.garrigues@laposte.net>
|
||
|
||
hpftodit: incorrect 'delete' after new[]
|
||
|
||
* src/utils/hpftodit/hpftodit.cpp (output_font_name): use
|
||
'delete[]'.
|
||
|
||
Fixes bug #55331. Found by David Binderman, fixed by Ingo
|
||
Schwarze.
|
||
|
||
2020-10-18 Bertrand Garrigues <bertrand.garrigues@laposte.net>
|
||
|
||
preconv: don't use libuchardet if input is stdin
|
||
|
||
* src/preproc/preconv/preconv.cpp (do_file): don't call
|
||
detect_file_encoding if input file is "-"
|
||
|
||
This fixes the failure on MS-Windows described #55334, however
|
||
this does not fix the encoding detection with uchardet if the
|
||
input is stdin (the user would have to pass with -D the correct
|
||
encoding as explained in the man page).
|
||
|
||
2020-10-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/lex.cpp (troff_defs): Set the "..." token on
|
||
the baseline, not vertically centered, aligning the actual
|
||
behavior with what our eqn(1) man page has claimed since 2007.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59285>.
|
||
|
||
2020-10-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grops/grops.1.man
|
||
(Usage/TrueType and other font formats): Remove dead URL to
|
||
ttftot42 utility. Update URL to fontforge tool. Replace much
|
||
of the discussion with an example, motivated by Jordan Torbiak's
|
||
"groff-install-font" script on GitHub Gist, of how to add the
|
||
Roboto Slab Regular font to a user-local groff font directory
|
||
{and how to test it, too}.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58077>.
|
||
|
||
2020-10-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Report program name in warning
|
||
diagnostics.
|
||
|
||
Continues the long process of fixing Savannah #52463.
|
||
|
||
2020-10-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Add fallback for lq, rq strings.
|
||
|
||
Define \*(lq and \*(rq as '"' if the output device has no \(lq
|
||
or \(rq special character escapes defined (respectively).
|
||
|
||
This is a bit belt-and-suspenders for groff since our output
|
||
devices all guarantee availability of these glyphs, but if this
|
||
macro file gets used with other implementations (and if they
|
||
support the 'c' conditional), it should prevent the strings from
|
||
producing empty output.
|
||
|
||
Man page writers should simply use \(lq and \(rq unless they are
|
||
aiming for pathological levels of portability (e.g., composing
|
||
man pages today for consumption on simulators of 1980s Unix
|
||
systems).
|
||
|
||
2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Define an-end with .de1. We need to define
|
||
an-end with de1 (execute macro with compatibility mode off)
|
||
because, as of 37b4180a27a6eeaea429e40ec278abefcda7f3a7 (11
|
||
October), it can now be called from a trap executing in a
|
||
context whence compatibility mode might be on (namely,
|
||
"reload-doc" in andoc.tmac).
|
||
|
||
2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/eqn/main.cpp (main):
|
||
* src/preproc/pic/main.cpp (main):
|
||
* src/preproc/tbl/main.cpp (main):
|
||
* tmac/eqnrc:
|
||
* tmac/troffrc: Perform checks of register and macro definitions
|
||
with a .do request, since we might be in compatibility mode.
|
||
|
||
2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (do_if_request): Emit warning of type
|
||
"syntax" if a groff conditional expression extension is used
|
||
when compatibility mode is active.
|
||
|
||
* doc/groff.texi:
|
||
* src/roff/troff/troff.1.man: Update description of "syntax"
|
||
warning type to be more general. It was inaccurate, referring
|
||
only to "dubious syntax in numeric expressions", which was not
|
||
the case. Instead it was being used only for poor construction
|
||
of character classes with the .class request.
|
||
|
||
2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (main): Stop ignoring -T. GNU tbl
|
||
was undocumentedly ignoring the -T option; apparently IRIX tbl
|
||
implemented it, something on the system called tbl with that
|
||
option (I'm guessing IRIX's man(1)) and its users spammed James
|
||
Clark with bug reports. We can probably weather the volume of
|
||
such spurious reports from IRIX users today.
|
||
|
||
2020-10-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/main.cpp (main): Clarify fatal diagnostic in
|
||
generated document by informing the user that the program is
|
||
aborting, and also that it is groff extensions that are required
|
||
rather than GNU troff per se (since Heirloom Doctools troff
|
||
claims groff extension support via the .g register).
|
||
|
||
2020-10-14 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
In groff(1), fix the combination of -v with -k, -j, and -J.
|
||
|
||
* src/roff/groff/groff.cpp: Pass the -v option through to the
|
||
preconv, chem, and ideal preprocessors, just like for all
|
||
other preprocessors, to print the version of the preprocessor
|
||
and to avoid garbage output.
|
||
|
||
Bugfix patch from Eli Zaretskii <eliz at gnu dot org>
|
||
submitted in: https://savannah.gnu.org/bugs/?55297
|
||
|
||
2020-10-12 Bertrand Garrigues <bertrand.garrigues@laposte.net>
|
||
|
||
Update 'gnulib' submodule.
|
||
|
||
* gnulib: now points on d60a35e94c4f5b8f09f15828242418f5073d46e7
|
||
from 'gnulib' repository.
|
||
|
||
* configure.ac: minimum autoconf version is now 2.64 due to
|
||
gnulib upgrade.
|
||
|
||
* FOR-RELEASE: add the gnulib update to the checklist.
|
||
|
||
2020-10-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/andoc.tmac: When switching between macro packages in
|
||
andoc and using continuous-rendering mode, flush any partially
|
||
collected output line and write page footer.
|
||
(reload-doc): Call an-end if it is defined.
|
||
(reload-man): Call doc-end-macro if it is defined.
|
||
* tmac/tests/andoc-flush-between-packages.sh: Add regression
|
||
test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59106>.
|
||
|
||
2020-10-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/andoc.tmac: Remove traps set by mdoc package by the names
|
||
they actually use.
|
||
* tmac/tests/andoc-clear-doc-traps.sh: Add regression test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59246>.
|
||
|
||
2020-10-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::init_output): In the release
|
||
macro written to the output, reword the warning diagnostic that
|
||
is emitted when a table row is to be output without enough room
|
||
before the next page location trap. The former wording said
|
||
that a "text block" would not fit on the page, and that is
|
||
normally how table rows grow longer than one line in the first
|
||
place. However, there are other ways the conditional can be
|
||
satisfied, as witnessed in Savannah #57665, so simply say what
|
||
is known; that the table _row_ overruns the space to the next
|
||
trap (we say the row won't "fit on [the] page").
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59233>.
|
||
|
||
2020-10-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp
|
||
(double_line_entry::double_line_entry):
|
||
(double_line_entry::simple_print): Remove garbage lines
|
||
inadvertently added in previous commit.
|
||
|
||
2020-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Stop tbl from injecting spurious blank lines (and emitting
|
||
spurious warnings about tables and "text blocks" not "fitting on
|
||
a page") into long tables in man pages when continuous rendering
|
||
is used (the default for nroff output devices).
|
||
|
||
* src/preproc/tbl/table.cpp (USE_KEEPS_REG): New preprocessor
|
||
symbol stores name of groff register for dynamic determination
|
||
of keep usage.
|
||
(table::init_output): If the NOKEEP flag is not set, then in
|
||
generated groff output, see if the usekeeps register is defined;
|
||
if not, define it and enable usage of keeps.
|
||
(table::do_row): In groff output, check usekeeps register before
|
||
calling keep and release macros.
|
||
(table::do_bottom): In groff output, check usekeeps register
|
||
before calling release macro.
|
||
|
||
* tmac/an-old.tmac (TS): Set the usekeeps register used by tbl
|
||
to the logical complement of the man(7) cR (continuous
|
||
rendering) register.
|
||
|
||
* tmac/tests/an-old_TS_do_not_keep_tables_when_cR_set.sh: Add
|
||
regression test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
Problem appears to date back to the introduction of continuous
|
||
rendering in groff 1.17 (3 May 2001).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?57665>.
|
||
|
||
2020-10-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (simple_entry::position_vertically):
|
||
(block_entry::position_vertically):
|
||
(table::determine_row_type):
|
||
(printfs): Update assertions to indicate what actually went
|
||
wrong.
|
||
|
||
2020-10-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/node.cpp: Make diagnostics slightly more
|
||
informative in unusual error cases.
|
||
(real_output_file::~real_output_file): If ferror() reports error
|
||
status on a stream say that, instead of "error writing". If it
|
||
does not, but fflush() fails on the stream, describe the flush
|
||
as failing, and use strerror() since fflush() sets errno. If
|
||
pclose() fails, say that we were unable to close a pipe instead
|
||
of repeating the name of the C library function to the user, who
|
||
might not be a C programmer. Report strerror() in this case and
|
||
for a failing fclose().
|
||
(real_output_file::flush): Repeat updated fflush() logic from
|
||
previous function.
|
||
|
||
2020-09-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (register setup): Make interaction of \n[C]
|
||
register and HTML output more clear in code and comments.
|
||
|
||
2020-09-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/regression_savannah_59202.sh: Reduce test
|
||
case.
|
||
|
||
2020-09-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Fix SEGV arising from recursing destructor.
|
||
|
||
* src/roff/troff/node.h (output_file): Add class member
|
||
`is_dying` to track whether destructor has already been entered;
|
||
initialize false.
|
||
* src/roff/troff/node.cpp (real_output_file::~real_output_file):
|
||
Set `is_dying` true when destructor entered.
|
||
* src/roff/troff/div.cpp (cleanup_and_exit): Only delete
|
||
`the_output` object if it is not already being destroyed.
|
||
* src/roff/groff/tests/regression_savannah_59202.sh: Add test.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
Thanks to "hackerb9" for reporting the problem. Problem appears
|
||
to date back to groff 1.02 (June 1991) or earlier.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59202>.
|
||
|
||
2020-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (register setup): Condition decisions on
|
||
\n[an-html] rather than a string comparison using \*[.T]; that
|
||
is what the register is there for.
|
||
|
||
2020-09-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/andoc.tmac: Save alias to .ne request.
|
||
(reload-doc): Restore .ne request, which an-old.tmac meddles
|
||
with if continuous rendering is used. (The meddling ultimately
|
||
dates back to 777e2d262862621966c18d685a000cc88f432bc6, 26
|
||
January 2002, which simply redefined .ne as empty on nroff
|
||
devices.)
|
||
|
||
2020-09-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Ship tests in distribution archive.
|
||
|
||
* src/preproc/preconv/preconv.am (EXTRA_DIST):
|
||
* src/roff/groff/groff.am (EXTRA_DIST):
|
||
* src/roff/nroff/nroff.am (EXTRA_DIST):
|
||
* tmac/tmac.am (EXTRA_DIST): Add
|
||
$({preconv,groff,nroff,tmac}_TESTS), as appropriate.
|
||
|
||
* src/roff/nroff/nroff.am (MOSTLYCLEANFILES): Stop adding
|
||
$(nroff_TESTS), which can only have unhappy consequences.
|
||
|
||
2020-09-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am: Fix problem with recently-relocated mdoc macro
|
||
files not ending up in the right place in the distribution
|
||
archive.
|
||
(dist_tmac_DATA): Also include $(TMACUNSTRIPFILES).
|
||
(TMACMDOCSTRIPFILES): Rename from $(TMACMDOCFILES). Update
|
||
interpolation sites.
|
||
(TMACMDOCUNSTRIPFILES): New variable holds mdoc macro files in
|
||
the tmac/mdoc subdirectory. Stop adding these files to
|
||
$(TMACUNSTRIPFILES) since those reside in tmac/ directly.
|
||
(EXTRA_DIST): Add $(TMACMDOCUNSTRIPFILES).
|
||
($(TMACSTRIPFILES)): Depend only on $(TMACUNSTRIPFILES).
|
||
($(TMACMDOCSTRIPFILES)): Add new rule, much like the foregoing.
|
||
Depend on $(TMACMDOCUNSTRIPFILES) and copy files into tmac/mdoc.
|
||
(dist-hook, tmac-dist-hook): Remove; they no longer do any
|
||
distinct work.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59186>.
|
||
|
||
2020-09-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/tbl/table.cpp (table::init_output):
|
||
(table::compute_expand_width):
|
||
(table::compute_separation_factor): Use consistent format for
|
||
diagnostic messages.
|
||
- Do not spread a single diagnostic across multiple lines.
|
||
- Report messages in GNU Coding Standards format, that is:
|
||
- Report the name of the file the problem is in...
|
||
- ...then the line number...
|
||
- ...then the diagnostic severity level...
|
||
- ...then the specific problem.
|
||
|
||
2020-09-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Emit warnings when configuration registers
|
||
are ignored when producing output for HTML.
|
||
|
||
2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (an-p-footer): Define \*[an-page-string] if
|
||
(1) the output device is not HTML; (2) \n[X] has been defined;
|
||
and (3) the page number has not yet reached the threshold
|
||
defined by \n[X].
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59179>.
|
||
|
||
2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for Savannah #59179.
|
||
|
||
* tmac/tests/an-old_X_register_works.sh: Do it.
|
||
* tmac/tmac.am (tmac_TESTS): Run it.
|
||
|
||
2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac:
|
||
* tmac/doc.tmac-u: Emit more informative fatal diagnostic when
|
||
installed version of groff is too old. Report the version found
|
||
and explicitly note consequent abort.
|
||
|
||
2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am: Regenerate stripped macro files upon changes to
|
||
any of their unstripped counterparts. This is crude, but they
|
||
weren't being regenerated at _all_. Defeating a central
|
||
function of Make is bad.
|
||
(TMACUNSTRIPFILES): New variable. Populate with -u files.
|
||
($(TMACMDOCFILES) $(TMACSTRIPFILES)): Depend on
|
||
$(TMACUNSTRIPFILES).
|
||
|
||
2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac:
|
||
* tmac/andoc.tmac:
|
||
* tmac/doc.tmac-u:
|
||
* tmac/s.tmac: Clarify fatal diagnostics by informing the user
|
||
that the program is aborting.
|
||
|
||
2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/www.tmac.in: Revise diagnostic message handling.
|
||
(www:fatal): New macro handles fatal macro usage errors.
|
||
(www:lenstr): Use www:fatal instead of writing to standard error
|
||
with .tm (rather than www:error) and then calling .ab without
|
||
arguments, which produces an unsightly "User Abort." message.
|
||
(www:lenstr):
|
||
(www:splitstr):
|
||
(www:url_breaks):
|
||
(www:url_breaks_split):
|
||
(LINKSTYLE): Report expected number of arguments in diagnostics.
|
||
(www:fontstyle): Shorten diagnostic message.
|
||
|
||
2020-09-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/div.cpp
|
||
(top_level_diversion::clear_diversion_trap): Fix copy and paste
|
||
error in diagnostic, which wrongly reported that a top-level
|
||
diversion trap couldn't be "set" when "clear"ed was meant.
|
||
|
||
2020-09-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/grn/main.cpp (conv):
|
||
* src/roff/troff/node.cpp (suppress_node::tprint): Remove
|
||
embedded newlines from diagnostic messages.
|
||
|
||
2020-09-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Move setup of remaining rendering option
|
||
parameters (registers C, D, P, and X) to end of file.
|
||
|
||
2020-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): Move setup of rendering parameter
|
||
registers IN and SN from here to the end of the file. Update
|
||
comments.
|
||
|
||
2020-09-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Drop \*[an-empty] string. This string is
|
||
documented as preventing "looping" (presumably infinitely) if
|
||
someone calls a two-font macro with an inconvenient parameter;
|
||
the example shown is ".RB ( \\ )". This string was being
|
||
interpolated at the end of each argument pair to the two-font
|
||
macros BI, BR, IB, RB, and RI. This code dates back to groff
|
||
1.10 (dc5351364982f78f8c630f1e856d692d4a82666f, 26 November
|
||
1995). Did you notice a two-font macro missing? It was: IR.
|
||
Using it with the proscribed input fails to cause a problem; the
|
||
others similarly operate just fine when the empty string
|
||
interpolation is removed. Presumably at some point in the past
|
||
25 years, this workaround became unnecessary.
|
||
(BI, BR, IB, RB, RI): Remove interpolations of string.
|
||
|
||
* tmac/tests/an-old_avoid_two-font_denial_of_service.sh: Add
|
||
regression test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2020-09-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Refactor continuous rendering handling.
|
||
Relocate set up of \n[cR] to end of file in parallel with other
|
||
rendering parameter management. Instead of conditionally
|
||
defining the an-ne and an-bp macros, define them
|
||
unconditionally. Also define them with .de instead of .de1,
|
||
since they will only be called within the contexts of macros
|
||
that are already running with compatibility mode off (i.e., the
|
||
public interface macros). Relocate definition of an-end to sit
|
||
alongside these other continuous-rendering-mode specific macros
|
||
and avoid a forward reference and scattering of \n[cR]
|
||
conditionals around the file.
|
||
(an-set-up-continuous-rendering): Define new macro to move
|
||
macros (and end macro) into place. Call it at the end of the
|
||
file only if cR eventually winds up being true.
|
||
|
||
2020-09-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Improve name space management. Rename .ne
|
||
request to .an-ne instead of outright clobbering it (and in
|
||
parallel with .an-bp). Rename 'an-ne' register to 'an-need' to
|
||
prevent confusion with renamed request.
|
||
|
||
2020-09-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Drop .ll hack for LL register.
|
||
|
||
Drop the .ll hack for setting the line length on nroff devices.
|
||
|
||
Once upon a time, the only way to get man pages to render on a
|
||
terminal at any width other than the nroff default of 65n was to
|
||
put an .ll request into the page--a mortal sin against
|
||
portability--or your man(1) program could sneak such a request
|
||
into nroff's input stream.
|
||
|
||
Also, long ago, John Eaton of UT Austin wrote a man(1) program.
|
||
In a few years this implementation branched into two lines of
|
||
development, which I'll call man-db man (Wilford/Polacco/Watson)
|
||
and another, Brouwer/Lucifredi man, which as of this writing saw
|
||
its last release in 2011 (1.6g).
|
||
|
||
The man and mdoc macros of groff 1.18 (July 2002) introduced an
|
||
LL register to configure the line length, respecting an -rLL
|
||
command-line option. The source change was made by Werner
|
||
Lemberg on 3 May 2002 and Colin Watson updated man-db man(1)--on
|
||
the same day!--to synthesize the option when calling groff.
|
||
|
||
Later, in August 2005, Keith Marshall, a user of version 1.5m of
|
||
Brouwer/Lucifredi man(1), which did not set the LL register,
|
||
suggested that the existing .ll setting (technically, the value
|
||
of \n[.l], the only way the result of an .ll request could be
|
||
introspected) be honored in the absence of the LL register.
|
||
However, it is impossible to distinguish a user-supplied ".ll
|
||
65n" request from nroff's default setting, which was in that
|
||
case overridden to the modern default of 78n.
|
||
|
||
And so, in what is now git commit
|
||
f9d5df4aebd3d834b4084ffefa52a115e00dce38 (1 September 2005), it
|
||
was done.
|
||
|
||
This led to (1) surprising behavior for users accustomed to old
|
||
methods and desirous of the nroff default and (2) lengthy
|
||
apologia in groff source code comments and the groff_man(7) man
|
||
page.
|
||
|
||
Ironically, Brouwer/Lucifredi man(1) had already added support
|
||
for the LL register by the time of its 1.6 release two months
|
||
earlier (20 June 2005). (Curiously, it did so similarly to the
|
||
old .ll hack, by injecting an '.nr LL' request into groff's
|
||
input stream, rather than using the -r command-line option.)
|
||
Moreover, Marshall and the groff list were already aware of
|
||
this, but the change was accepted anyway because version 1.6
|
||
was "too new"! (Distributions are slow sometimes, true...)
|
||
|
||
Let us survey the field in 2020. man-db man(1) has supported
|
||
the LL register for eighteen years, and Brouwer/Lucifredi man(1)
|
||
for fifteen. Heirloom Doctools's man macros set the line length
|
||
to 78n on nroff devices unconditionally. mandoc(1) similarly
|
||
also always formats for 78 columns on terminals. groff's
|
||
mdoc(7) macros grew support for LL in parallel with man(7) in
|
||
2002 and never added the \n[.l] introspection at all.
|
||
|
||
There no longer seems to be any reason to preserve this hack.
|
||
|
||
* tmac/an-old.tmac (initialization): Drop complex setup of LL
|
||
register.
|
||
(TH): Relocate line length reset; no behavior change.
|
||
(after .mso man.local): Initialize LL only if the user hasn't;
|
||
use device default in troff mode, and 78n in nroff mode.
|
||
|
||
* tmac/groff_man.7.man.in (Options) <-rLL>: Stop documenting .ll
|
||
hack.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58992>.
|
||
|
||
2020-09-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_LL_init_sanely.sh: Add test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2020-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/xditview/GXditview.ad: Widen the default geometry
|
||
to accommodate the width of a page rendered using the X100-12
|
||
device. Display devices these days have much greater horizontal
|
||
resolution than they did 20 years ago.
|
||
|
||
2020-09-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Use correct point size default for
|
||
X{75,100}-12 devices.
|
||
|
||
2020-09-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/mdoc/doc-common-u (doc-prepare-section-heading): New
|
||
macro defines new string doc-sec-head to enable recognition of
|
||
mixed-case section headings in mdoc man pages. For example,
|
||
"Name" and "Description" are now recognized in addition to
|
||
"NAME" and "DESCRIPTION".
|
||
(doc-section-{name,synopsis,library,description,see-also,files,
|
||
authors}): Redefine strings to be mixed-case. Add trailing
|
||
comment guard per recommended best practice.
|
||
(Sh): Call doc-prepare-section-heading instead of
|
||
doc-first-parameter, and compare predefined section strings to
|
||
doc-sec-head instead of doc-str-dfp.
|
||
|
||
* tmac/tests/doc-accept-mixed-case-section-headings.sh: Test it.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
* tmac/tests/doc-smoke-test.sh: Use mixed-case section headings.
|
||
|
||
2020-09-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* makevarescape.sed: Use \[] form of special character escapes.
|
||
|
||
The only man page we have that doesn't turn compatibility mode
|
||
off (neqn) also doesn't use any sed-substituted patterns where
|
||
characters replaced by a \[] special character escape form are
|
||
likely to be used.
|
||
|
||
The @g@ command prefix is the main avenue for intrusion of such
|
||
escapes, but I think it improbable that many people are going to
|
||
include apostrophes, double quotes, carets, grave accents, or
|
||
tildes in the command prefix; some or all of these will pick
|
||
fights with the shell and require quoting that we don't
|
||
represent in man page text anyway.
|
||
|
||
On top of that, neqn is largely a stub page.
|
||
|
||
If it's a problem, a better fix than reverting this is to make
|
||
neqn switch out of compatibility mode like our other man pages.
|
||
|
||
2020-09-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* FOR-RELEASE: Start a release checklist. We probably should
|
||
have done the afmtodit.tables update for 1.22.4. There were no
|
||
AGL changes and the Unicode decomposition changes were limited
|
||
to additions for Balinese (11), CJK compatibility ideographs
|
||
(5), and 13 code points outside the Basic Multilingual Plane.
|
||
|
||
2020-09-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.tables: Regenerate using Unicode
|
||
13.0.0.
|
||
|
||
2020-09-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
make-afmtodit-tables: Automate AGL reassignments.
|
||
|
||
Automate the procedure done manually in
|
||
b72b91e85e80a69304e6569db535bcca0e0ecab5 (9 April 2007), so that
|
||
it doesn't regress when we regenerate afmtodit.tables.
|
||
|
||
* src/utils/afmtodit/make-afmtodit-tables: Do it.
|
||
* src/utils/afmtodit/afmtodit.tables: Regenerate it.
|
||
|
||
2020-09-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/groff.1.man (Options) <-E>:
|
||
* src/roff/troff/troff.1.man (Options) <-E>: Document that -E
|
||
implies -Ww.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59030>.
|
||
|
||
2020-09-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff_char.7.man: Revise glyph descriptions.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?59031>.
|
||
|
||
2020-09-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tty.tmac: Define fallback glyphs for Bell System logo
|
||
{non-breaking adjustable space} and radical extension and square
|
||
root extension (both dummy characters '\&') to suppress warnings
|
||
from groff_char(7). As none of these are encoded in Unicode it
|
||
seems unlikely they will become supported soon.
|
||
|
||
2020-08-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/troff.1.man (Options) <-I>: The current working
|
||
directory is searched _last_, not first, unless the order is
|
||
altered with "-I .".
|
||
|
||
* src/roff/groff/groff.1.man (Options) <-I>: Rearrange
|
||
description.
|
||
|
||
2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Update mdoc package to honor HY register as man does now, per
|
||
suggestion from Colin Watson. Recognize but ignore AD string
|
||
for man package compatibility (essentially "reserving" it),
|
||
though mdoc intentionally does not permit configuration of
|
||
adjustment.
|
||
|
||
* tmac/mdoc/doc-ditroff-u:
|
||
* tmac/mdoc/doc-nroff-u: Do it.
|
||
|
||
* tmac/mdoc/doc-common-u: Initialize \n[doc-hyphen-flags] from
|
||
\n[HY].
|
||
|
||
* tmac/groff_mdoc.7.man \
|
||
(FORMATTING WITH GROFF, TROFF, AND NROFF): Document it.
|
||
|
||
2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): Reset inter-word and inter-sentence
|
||
spacing to default with each new page rendered.
|
||
|
||
{To observe the problem prior to this change,
|
||
$ groff -mandoc groff_mmse.7 $any_other_man_page
|
||
groff_mmse(7) loads sv.tmac, which changes the sentence
|
||
spacing.}
|
||
|
||
2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* PROBLEMS: Undocument the problem with test-groff and mdoc.
|
||
It's resolved.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?51073>.
|
||
|
||
2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am (NORMALFILES, MDOCFILES): Drop unused variables.
|
||
($(TMACMDOCFILES) $(TMACSTRIPFILES)): Scrub trailing whitespace.
|
||
Wrap long line.
|
||
|
||
2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
mdoc: Relocate within build tree.
|
||
|
||
The (modern) mdoc macro package has not been usable within the
|
||
build tree, unlike the others. This makes it more troublesome
|
||
to test changes, and frustrates deploying our test
|
||
infrastructure against it. Re-arrange the build tree to
|
||
resemble an installation tree closely enough for the macro
|
||
package to load.
|
||
|
||
* tmac/doc-common-u:
|
||
* tmac/doc-ditroff-u:
|
||
* tmac/doc-nroff-u:
|
||
* tmac/doc-syms-u: Rename to...
|
||
* tmac/mdoc/doc-common-u:
|
||
* tmac/mdoc/doc-ditroff-u:
|
||
* tmac/mdoc/doc-nroff-u:
|
||
* tmac/mdoc/doc-syms-u: ...these.
|
||
|
||
* tmac/tmac.am (TMACMDOCFILES): Look for files in tmac/mdoc.
|
||
($(TMACMDOCFILES)): Create tmac/mdoc in build tree.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?51003>.
|
||
|
||
2020-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test for usable in-tree mdoc.
|
||
|
||
* tmac/tests/doc-smoke-test.sh: Add test.
|
||
* tmac/tmac.am (tmac_TESTS): Run test.
|
||
|
||
2020-08-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_TH_repairs_ad_damage.sh:
|
||
* tmac/tests/an-old_TH_repairs_hy_damage.sh: Add tests.
|
||
* tmac/tmac.am (tmac_TESTS): Run tests.
|
||
|
||
2020-08-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): Set hyphenation mode to user preference
|
||
with each new page rendered, in case a hostile page meddled with
|
||
'.hy' or '.nh'.
|
||
(after .mso man.local): Relocate setting of default hyphenation
|
||
mode here (instead of just before .mso man.local). Eliminate
|
||
conditional on \n[an-html]; this doesn't matter because
|
||
grohtml(1) doesn't support hyphenation anyway. If it does learn
|
||
to hyphenate, we should treat it the same as other output
|
||
devices in any case. Add comment explaining why we fall back to
|
||
different defaults depending on \n[cR].
|
||
|
||
2020-08-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (TH): Set adjustment to user preference with
|
||
each new page rendered, in case a hostile page meddled with
|
||
'.ad' or '.na'.
|
||
(after .mso man.local): Set the default adjustment mode only if
|
||
a -d option or man.local did not. Also do the same for the HF
|
||
string; relocate its definition here and make it similarly
|
||
conditional. Also update comment on setting of CS and CT
|
||
registers and style their conditionals consistently with the
|
||
rest of the package.
|
||
|
||
* tmac/groff_man.7.man.in (Strings) <\*(AD>: Document it.
|
||
(Strings) <\*(HF>: Parallelize language with new \*(AD.
|
||
(Options) Expand introductory sentence to discuss -d and -r
|
||
options.
|
||
(Options) <-dAD>: Document default and likely values. Nobody
|
||
right-justifies or centers man page text; send the curious to
|
||
groff(7) for '.ad' request documentation.
|
||
(Options) <-dHF>: Document default and steer people to groff(7)
|
||
for '.ft' request documentation.
|
||
|
||
2020-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac (set-an-margin): Rename...
|
||
(an-set-margin): ...to this. It was the only package-internal
|
||
register, macro, string, or diversion that wasn't named using
|
||
the "an-*" schema.
|
||
(TH, SH, SS): Update call sites.
|
||
|
||
2020-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac (.ME, .UE): Restore hyphenation after
|
||
"punctuation" arguments have been output. The next token will
|
||
always be a space node, the end of the document, or similar.
|
||
|
||
* tmac/tmac.am (tmac_XFAIL_TESTS): Mark the punctuation
|
||
hyphenation tests as expected to fail, because they now do.
|
||
|
||
2020-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/ps.tmac: Define ordinary hyphen-minus as fallback
|
||
character for U+2011 (non-breaking hyphen). Prompted by
|
||
discussion with Dave Kemper in Savannah #58390.
|
||
|
||
2020-08-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Fix hyphenation bug. The UR/UE and MT/ME macros were much too
|
||
aggressive about turning hyphenation off. Disable it only when
|
||
writing the actual URL or email address.
|
||
|
||
* tmac/an-ext.tmac (.MT, .UR): Stop disabling hyphenation here.
|
||
(.ME, .UE): Disable hyphenation right before output of
|
||
URL/address; restore it right before output of supplementary
|
||
arguments ("punctuation").
|
||
|
||
* tmac/tests/an-ext_ME_punct_hyphenates.sh:
|
||
* tmac/tests/an-ext_MT_body_hyphenates.sh:
|
||
* tmac/tests/an-ext_UE_punct_hyphenates.sh:
|
||
* tmac/tests/an-ext_UR_body_hyphenates.sh: Test behavior.
|
||
|
||
* tmac/tmac.am (tmac_TESTS): Run tests.
|
||
|
||
2020-08-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Adapt to the fact that \: reënables hyphenation. Rename
|
||
"hyphenless [discretionary] break" to "non-printing break point"
|
||
in documentation.
|
||
|
||
* doc/groff.texi (Manipulating Hyphenation): Rename "hyphenless
|
||
break" to "non-printing break point". Clarify that it is the
|
||
soft hyphen glyph, not necessarily a hyphen, that is ordinarily
|
||
written to the output on hyphenation breaks. Note that the
|
||
remainder of a word after \: is subject to hyphenation as
|
||
normal. Note (new) '\:\%' idiom for getting what people will
|
||
want at least some of the time. Update example to use it.
|
||
* makevarescape.sed: Insert \% after we insert \: to rewrite
|
||
slashes in filenames, to protect later portions of the filename
|
||
from hyphenation.
|
||
* man/groff.7.man (Escape Sequences/Escape short reference):
|
||
Rename "hyphenless break" to "non-printing break point".
|
||
* man/groff_diff.7.man (Language/Escape sequences): Resync with
|
||
our Texinfo manual.
|
||
* tmac/groff_man.7.man.in (Description/Hyperlink and email
|
||
macros): Rename "hyphenless break" to "non-printing break
|
||
point".
|
||
|
||
2020-08-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
documentation: Re-christen 'ESCAPE_AMPERSAND'.
|
||
|
||
s/zero[- ]width space character/non-printing input break/
|
||
|
||
* doc/groff.texi (Requests): Rename. Update conceptual index
|
||
entries; retain old name (with an appended "[sic]") to aid
|
||
readers accustomed to it.
|
||
(Ligatures and kerning): Update conceptual index entries.
|
||
Supply context ("effect on kerning").
|
||
(Drawing requests): Update conceptual index entries. Supply
|
||
context ("effect on '\l'").
|
||
* man/groff.7.man (Description): Rename in macro-advice-writing
|
||
shorthand.
|
||
(Escape Sequences/Escape short reference): Rename.
|
||
* tmac/groff_man.7.man.in (Description/Command synopsis macros
|
||
[style]: Rename.
|
||
(Description/Portability) [style]: Rename.
|
||
* tmac/groff_mdoc.7.man (TROFF IDIOSYNCRASIES/Macro Usage):
|
||
Rename.
|
||
(TROFF IDIOSYNCRASIES/Other Possible Pitfalls): Rename.
|
||
|
||
2020-08-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_man.7.man.in (Description/{Document structure
|
||
macros <.TH>, Horizontal and vertical spacing}): Fix erroneous
|
||
use of "flush left". The current uses were introduced by me,
|
||
but the page has borne incorrect uses of it as far back as 1999
|
||
{in the description of .TP}. Simply say "with no indentation"
|
||
instead.
|
||
|
||
2020-08-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_man.7.man.in (Description/Number registers): Inform
|
||
reader that registers can be set in man.local file and
|
||
cross-reference it.
|
||
(Files/*/man.local): [style] Supply example of man.local
|
||
customizations, prompted by recent discussions on groff,
|
||
linux-man, and man-db mailing lists.
|
||
|
||
2020-08-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tmac.am: Use a stamp file for m4 keyword check.
|
||
(M4CHECK): Add stamp file variable.
|
||
($(M4CHECK)): Create stamp file if check succeeds.
|
||
|
||
2020-08-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Split groff_man(7) into two pages; one a (relatively) terse
|
||
reference and the other a tutorial and style guide. Both are
|
||
generated from the same source, which is processed by m4 into
|
||
two man page sources.
|
||
|
||
* tmac/groff_man.7.man: Rename...
|
||
* tmac/groff_man.7.man.in: ...to this.
|
||
|
||
* tmac/groff_man.7.man.in: Add m4 directives and define macros.
|
||
Protect m4 keywords in English from unintended expansion (this
|
||
affected the word "include"). Add new .TH and apropos lines for
|
||
style guide. Convert marker comments into m4 macros for content
|
||
control. Uncomment material intended only for basic reference
|
||
page.
|
||
|
||
* tmac/tmac.am (man7_MANS): Add groff_man_style.7.
|
||
(EXTRADIST) Add groff_man.7.man.in.
|
||
(MOSTLYCLEANFILES): Add m4-generated man page sources
|
||
tmac/groff_man{,_style}.7.man.
|
||
Add targets to generate those same two pages from the renamed
|
||
file. Add target to grep the page for unprotected English m4
|
||
keywords and halt the build if they are found. Make generation
|
||
of those pages depend on this new target.
|
||
|
||
2020-08-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_man.7.man: Add material on hooks and encoding.
|
||
(Description, ./Deprecated features): Stop identifying .PT and
|
||
.BT as "deprecated"; they shouldn't ever be called in man pages,
|
||
but that has never been their intention.
|
||
(Description): Identify character encoding and line-ending
|
||
requirements (tutorial/style-guide material).
|
||
(Description/Hooks): Add new subsection to house descriptions of
|
||
.PT and .BT. Add mnemonic expansions for both.
|
||
|
||
2020-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Control Characters): Incorrect claims were
|
||
made. Double quotes can indeed be used to enclose arguments to
|
||
string interpolations. The statement about a leading " in a
|
||
string definition (or appendment with .as) was stated too
|
||
generally. The leading quote is not necessary to include
|
||
leading tab characters, which can be input as-is, even in
|
||
compatibility mode.
|
||
|
||
2020-07-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Requests/Request short reference/.ft): Fix
|
||
some outright damage in the description of the request; the
|
||
escape sequences that are synonymous with a nullary .ft had been
|
||
wrongly removed.
|
||
|
||
2020-07-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/meintro.me:
|
||
* doc/meref.me:
|
||
* tmac/e.tmac-u: Remove postal address for Eric Allman. It's
|
||
probably decades out of date. Adjust footnote symbols. Thanks
|
||
to Dave Kemper for the bug report and the patch. Fixes
|
||
<https://savannah.gnu.org/bugs/?58726>.
|
||
|
||
2020-07-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Migrate macro packages from font CW to CR. The font name "CW"
|
||
{"constant-width"} is a legacy item we can dispose of (except
|
||
for the DVI device, which also has CWI for "constant-width
|
||
italic"), and much of the groff codebase already did starting
|
||
with commit 0de1d6d79cdb959ffa7dac3af77c2a36ef31873f {October
|
||
2017}. Courier is available in the usual four styles {roman,
|
||
bold, italic, bold+italic}.
|
||
|
||
* tmac/an-ext.tmac (.EX): Set font to R, not CW. The existing
|
||
.ft request was somewhat redundant with the '.do fam C'
|
||
immediately before, which set the font family to Courier.
|
||
* tmac/s.tmac (.UC): Use font CR, not CW.
|
||
|
||
2020-07-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tty.tmac: Stop suppressing nonexistent font warning.
|
||
Prompted by a 2017 suggestion and patch from Bjarni Ingi
|
||
Gislason. Documents and macro packages that want to change the
|
||
font family should do so in awareness that this is meaningless
|
||
on terminal (nroff) devices (and -Thtml as well).
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?51364>.
|
||
|
||
2020-07-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_man.7.man (.PP, .LP, .P): Fix error: these macros
|
||
do not reset the left margin.
|
||
|
||
2020-07-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Strings): Document behavior of .ds request
|
||
when only one argument is supplied. (The string is defined as
|
||
empty.) Thanks to Dave Kemper for the report and the patch.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58746>.
|
||
|
||
2020-07-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Using Symbols): Fix error in .rfschar
|
||
description, which should refer to "font f" rather than "glyph
|
||
f". Thanks to Dave Kemper for the report and the patch.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58767>.
|
||
|
||
2020-07-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_man.7.man (.EE, .YS): Fix error: refer to "initial
|
||
hyphenation setting" instead of "previous hyphenation mode".
|
||
Incidentally, this fact points out why putting ".hy 0" or ".nh"
|
||
in your man page is futile.
|
||
|
||
2020-06-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Requests/Request short reference): Fix error
|
||
in description of .hc; it changes the hyphenation character
|
||
rather than supplying an additional one.
|
||
|
||
2020-06-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Groff Options): Remove editorial comment about
|
||
'-a' option being "useless". It isn't. Update example for
|
||
contemporary systems (like Debian) and to reflect the fact that
|
||
the GNU troff(1) man page needs to be preprocessed with tbl(1).
|
||
(Invoking grotty): Recast discussion of -c option, importing
|
||
much language from grotty(1) page rewrite from a year ago. Add
|
||
program index entries for col, more, and ul. Fix transposition
|
||
error in ISO document number.
|
||
|
||
* src/devices/grotty/grotty.1.man (Description/Legacy output
|
||
format): Make slight wording changes prompted by content of
|
||
parallel section in our Texinfo manual.
|
||
|
||
* src/roff/groff/groff.1.man (Options/-a): Parallelize with
|
||
first sentence of corresponding material in our Texinfo
|
||
manual.
|
||
|
||
* src/roff/troff/troff.1.man (Options/-a): Parallelize with
|
||
our Texinfo manual.
|
||
|
||
Fixes the rest of
|
||
<https://savannah.gnu.org/bugs/?55278>.
|
||
|
||
2020-06-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff_diff.7.man (Language/Long names): Fix error: groff
|
||
adds three new requests with short names, not two. List them in
|
||
an adjacent comment.
|
||
|
||
2020-06-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-ext.tmac (.ME, .UE): Fix portability issue. While
|
||
widely supported, the \$* escape is not documented in CSTR #54.
|
||
If groff is not the typesetter, append macro arguments using
|
||
\$1, \$2, ..., \$9 instead.
|
||
|
||
2020-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* man/groff.7.man (Numerical Expressions): Fix error: negative
|
||
expressions evaluate false, not true as was implied.
|
||
Parallelize descriptions with our Texinfo manual and
|
||
groff_diff(7) (in abbreviated form).
|
||
|
||
2020-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Manipulating Filling and Adjusting): Fix error
|
||
in code sample: missing 'n' in number register interpolation.
|
||
|
||
2020-05-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/preconv/tests/smoke-test.sh: Make BOM detection
|
||
override less hinky (i.e., use more normative input). Add tests
|
||
for all five detected BOMs.
|
||
|
||
2020-05-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/env.cpp (space_size): Prevent assertion
|
||
failure. If an argument to the .ss request is negative, throw a
|
||
range warning and ignore it.
|
||
* src/roff/groff/tests/regression_savannah_58337.sh: Add test.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
Fixes https://savannah.gnu.org/bugs/?58337.
|
||
|
||
2020-05-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Update documentation of .ss request.
|
||
|
||
* doc/groff.texi (Manipulating Filling and Adjusting): Rewrite
|
||
documentation of .ss request and \n[.ss] and \n[.sss] escapes.
|
||
Note that negative values are not permitted in either argument
|
||
to .ss. Use new terminology, "minimal inter-word spacing" and
|
||
"additional inter-sentence spacing" for clarity. Clarify that
|
||
additional inter-sentence spacing is only used when the output
|
||
line is not full when the end of a sentence occurs. Add index
|
||
nodes to help readers find discussion of details of spacing
|
||
between words and sentences. Move discussion of differences
|
||
from AT&T troff to section "Implementation Differences". Update
|
||
example to more closely resemble a real-world case, use second
|
||
argument to .ss request, and eliminate hackish use of .nop
|
||
request.
|
||
|
||
* man/groff_diff.7.man (New number registers): Recast in
|
||
parallel with the foregoing.
|
||
|
||
* man/groff.7.man (Read-only registers): Use new terminology and
|
||
describe \n[.ss] and \n[.sss] in meaningful terms, not by
|
||
reference to arguments to the .ss request (which wasn't even
|
||
accurate, because these registers have default values).
|
||
|
||
Fixes https://savannah.gnu.org/bugs/?54101.
|
||
|
||
2020-05-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Undocument plans to support end-of-file GNU Emacs coding tags.
|
||
|
||
* src/preproc/preconv/preconv.cpp (check_coding_tag): Update
|
||
comments.
|
||
(detect_file_encoding): Alter debugging output so it's easier to
|
||
grep and verify Emacs coding tag detection.
|
||
|
||
* src/preproc/preconv/preconv.1.man (Bugs): Delete; its sole
|
||
concern was the absence of this feature.
|
||
(Usage): Document detection algorithm in more detail. Note
|
||
which detection methods don't work on unseekable input (pipes).
|
||
Offer recommendations for those struggling with encoding
|
||
detection.
|
||
(Usage/Coding Tags): Stop manipulating line adjustment. Use
|
||
hyphen-minus (\- escape) characters in coding tag names, since
|
||
they are literals that one might copy and paste. Stop
|
||
referencing XEmacs, whose development appears moribund.
|
||
(See Also): Add cross-references to iconv(3) and locale(7) man
|
||
pages.
|
||
|
||
* src/preproc/preconv/tests/smoke-test.sh: Test each of the
|
||
steps in the detection algorithm.
|
||
* src/preproc/preconv/preconv.am: Run test.
|
||
(preconv_TESTS): Add new variable.
|
||
(TESTS): Append $(preconv_TESTS).
|
||
|
||
2020-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/afmtodit/afmtodit.pl: Format usage message with
|
||
full capitals for parameters, and break out -v option in a
|
||
separate "synopsis".
|
||
|
||
2020-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* font/devpdf/util/BuildFoundries.pl: Stop throwing away
|
||
diagnostics from afmtodit. This results in only one extra line
|
||
of build output:
|
||
|
||
both Upsilon1 and Upsilon map to *U at .../afmtodit line
|
||
6413.
|
||
|
||
2020-05-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Correct documentation of .pm request.
|
||
|
||
* man/groff.7.man (Requests/Request short reference): The .pm
|
||
request's classical behavior was described instead of groff's,
|
||
and omitted mention of strings and diversions; correct it.
|
||
|
||
* man/groff_diff.7.man (Implementation Differences): Document
|
||
this difference between AT&T troff and groff.
|
||
|
||
* doc/groff.texi (Debugging): Relocate description of .pm
|
||
behavioral difference...
|
||
(Implementation Differences): ...hither.
|
||
|
||
2020-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/addftinfo/addftinfo.cpp (usage):
|
||
* src/utils/tfmtodit/tfmtodit.cpp (usage): Add "usage:" prefix
|
||
to messages documenting auxiliary modes of invoking the program.
|
||
The output doesn't look right without one, and it feels
|
||
dishonest to not document the relevant options (-v, --version)
|
||
disjunctively. I'm trying to strike a balance between the
|
||
ultra-terse BSD approach and the ultra-garrulous GNU one (see,
|
||
e.g., ls(1)). Likely both camps will be unhappy. :-/
|
||
|
||
2020-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/tfmtodit/tfmtodit.cpp (read_map): Report invalid
|
||
character code from map file in diagnostic.
|
||
(main): Report invalid skew character position in diagnostic.
|
||
Explicitly report insufficient arguments in addition to usage
|
||
message. Lift invariant computed expressions out of loops (more
|
||
to shorten long lines than because I think the compiler won't
|
||
figure it out). Give content to "impossible assertion".
|
||
(tfm::load): Capitalize TFM initialism in diagnostics.
|
||
(usage): Use full capitals for parameters as is conventional.
|
||
Document disjunction of -v/--version flag from other
|
||
invocations.
|
||
|
||
2020-04-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/utils/addftinfo/addftinfo.cpp (usage): Add overloaded
|
||
version that accepts a constant string argument, which emits the
|
||
argument as a diagnostic and then calls usage().
|
||
(main): Add diagnostics to usage message where the problem is
|
||
clear. Add comment explaining why it sometimes isn't.
|
||
(usage): Refactor main usage message (which prints the summary)
|
||
to report the actual names of the accepted option arguments
|
||
instead of just "-param", which is not literally accepted.
|
||
|
||
Sort param_table alphabetically for use by the usage message.
|
||
|
||
2020-04-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Delete groffer.
|
||
|
||
Per discussion on the groff development mailing list, there is
|
||
no desire to retain the maintenance of this portion of the groff
|
||
distribution.
|
||
|
||
See
|
||
<https://lists.gnu.org/archive/html/groff/2020-04/msg00051.html>
|
||
et seq.
|
||
|
||
* contrib/groffer: Recursively delete.
|
||
|
||
* Makefile.am:
|
||
* arch/mingw/mingw.am: Stop building groffer.
|
||
|
||
* m4/groff.m4 (GROFF_GROFFERDIR_DEFAULT):
|
||
(GROFF_GROFFERDIR_OPTION): Delete; remove "--with-grofferdir"
|
||
configuration option.
|
||
* configure.ac: Stop calling these macros.
|
||
|
||
* MANIFEST:
|
||
* NEWS:
|
||
* PROJECTS:
|
||
* TODO:
|
||
* contrib/chem/chem.1.man:
|
||
* contrib/chem/examples/122/README.txt:
|
||
* contrib/chem/examples/README.txt:
|
||
* contrib/glilypond/glilypond.1.man:
|
||
* contrib/gperl/gperl.1.man:
|
||
* contrib/gpinyin/gpinyin.1.man:
|
||
* contrib/groff_filenames/groff_filenames.5.man:
|
||
* man/groff_font.5.man:
|
||
* man/roff.7.man:
|
||
* src/roff/groff/groff.1.man:
|
||
* src/roff/grog/grog.1.man:
|
||
* src/utils/addftinfo/addftinfo.1.man:
|
||
* tmac/groff_trace.7.man: Delete references to groffer.
|
||
|
||
2020-04-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/include/curtime.h: #include <time.h> if we're returning
|
||
a time_t from current_time().
|
||
|
||
* src/libs/libgroff/curtime.cpp (current_time): Quote
|
||
$SOURCE_DATE_EPOCH variable content in diagnostics produced due
|
||
to bad input since it's under user control and could have all
|
||
kinds of bogosity in it (like whitespace).
|
||
|
||
2020-04-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* **/*.{man,tmac}: Save compatibility mode robustly.
|
||
|
||
Use new \n[.cp] register to save compatibility mode.
|
||
|
||
Use register names based on the filename (at the source
|
||
maintenance level) to avoid clobbering other files' saved
|
||
compatibility modes.
|
||
|
||
* tmac/html.tmac: Eliminate test of saved-compatibility
|
||
register by moving its body inside the block where compatibility
|
||
mode is off. This is the only part of this changeset that was
|
||
not automated.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58162>.
|
||
|
||
2020-04-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Implement new read-only .cp register.
|
||
|
||
Within a .do request, \n[.cp] holds the saved value of
|
||
compatibility mode.
|
||
|
||
The register \n[.cp] is specialized and may require a statement
|
||
of rationale. When writing macro packages or documents that use
|
||
groff features and which may be mixed with other packages or
|
||
documents that do not—common scenarios include serial processing
|
||
of man pages or use of the .so or .mso requests—you may desire
|
||
correct operation regardless of compatibility mode in the
|
||
surrounding context. It may occur to you to save the existing
|
||
value of \n(.C into a register, say, _C, at the beginning of
|
||
your file, turn compatibility mode off with “.cp 0”, then
|
||
restore it from that register at the end with “.cp \n(_C”. At
|
||
the same time, a modular design of a document or macro package
|
||
may lead you to multiple layers of inclusion. You cannot use
|
||
the same register name everywhere or you risk “clobbering” the
|
||
value from a preceding or enclosing context. The two‐character
|
||
register namespace of AT&T troff is confining and mnemonically
|
||
challenging; you may wish to use groff's more capacious
|
||
namespace. However, attempting “.nr _my_saved_C \n(.C” will not
|
||
work in compatibility mode; the register name is too long.
|
||
“This is exactly what .do is for,” you think, “.do nr
|
||
_my_saved_C \n(.C”. The foregoing will always save zero to your
|
||
register, because .do turns compatibility mode off while it
|
||
interprets its argument list. What you need is:
|
||
.do nr _my_saved_C \n[.cp]
|
||
.cp 0
|
||
at the beginning of your file, followed by
|
||
.cp \n[_my_saved_C]
|
||
at the end. As in the C language, we all have to share one big
|
||
namespace, so choose a register name that is unlikely to collide
|
||
with other uses.
|
||
|
||
* src/roff/troff/input.cpp (do_request, init_input_requests):
|
||
Implement it.
|
||
|
||
* doc/groff.texi:
|
||
* man/groff.7.man:
|
||
* man/groff_diff.7.man: Document it.
|
||
|
||
* src/roff/groff/tests/dot-cp_register_works.sh: Test it.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
Enables a fix for
|
||
<https://savannah.gnu.org/bugs/?58162>.
|
||
|
||
Thanks to John Gardner and Ingo Schwarze for the discussion.
|
||
|
||
2020-04-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Implementation Differences):
|
||
* man/groff_diff.7.man (New requests): Rewrite description of
|
||
.do request, and replace example with a more illustrative one.
|
||
|
||
* man/groff.7.man (Request short reference): Rewrite description
|
||
of .do request briefly.
|
||
|
||
2020-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Implementation Differences): Remove incorrect
|
||
claim. The .C register cannot be manipulated manually.
|
||
|
||
2020-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/smoke-test_html_device.sh: Simplify
|
||
charmap test.
|
||
|
||
2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
It's too easy for the nroff version to get desynced from the
|
||
groff version when we're running test cases, leading to spurious
|
||
results. Make it easier to see a discrepancy.
|
||
|
||
* src/roff/nroff/nroff.sh: Call groff with -v or --version when
|
||
we are called that way. Let test cases tell us to use
|
||
test-groff as groff with an environment variable.
|
||
|
||
* src/roff/nroff/tests/verbose_option_works.sh.in: Rename to...
|
||
* src/roff/nroff/tests/verbose_option_works.sh: ...this. Check
|
||
the nroff version being tested against the groff version being
|
||
wrapped. This exposes a bug; the system groff rather than the
|
||
build tree groff was being invoked. Refactor. Stop messing
|
||
with @GROFF_BIN_PATH_SETUP@ (enabling the rename); instead, let
|
||
test-groff handle that for us. Locate it and export the
|
||
variable GROFF_TEST_GROFF so nroff can find it. Because we
|
||
manipulate $PATH to run the tests, the $PATH of an installed
|
||
groff system will _always_ differ from that used by a build
|
||
tree; ignore it in the test cases. Dispose of bashisms and set
|
||
shebang to /bin/sh.
|
||
|
||
* src/roff/nroff/nroff.am: Stop generating the above test
|
||
script. It can now be run as it ships.
|
||
|
||
2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Make our assert() C99-conformant.
|
||
|
||
groff has its own implementation of the standard C library's
|
||
assert() macro. It hasn't been updated since C89. C99 requires
|
||
that the diagnostic emitted by assert() contain the failing
|
||
expression and name of the function in scope.
|
||
|
||
* src/include/assert.h: Add additional pointer to const char
|
||
arguments to do_assert() and assertion_failed() for function
|
||
name and stringified expression.
|
||
(assertion_failed): Update prototype.
|
||
(do_assert): Accept 'func' and 'msg' parameters and pass them to
|
||
assertion_failed().
|
||
(assert): Update macro to collect '__func__' and stringify the
|
||
expr parameter (as 'msg') and pass them do do_assert().
|
||
* src/libs/libgroff/assert.cpp (assertion_failed): Rewrite
|
||
diagnostic to more closely match GNU Coding Style format and
|
||
also report function and failing expression.
|
||
|
||
Example output:
|
||
troff: ../src/roff/troff/input.cpp:2644: do_request():
|
||
assertion failed: '0 == "But first, here's a rotten old
|
||
BBC programme."'
|
||
|
||
We have no excuse to assert(0) ever again. Express the
|
||
invariant that has been violated.
|
||
|
||
2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/smoke-test_html_device.sh: Set
|
||
LC_CTYPE=C.UTF-8 so that byte sequences in the pipelines are
|
||
handled correctly. Skip the test if the environment doesn't
|
||
support UTF-8. Thanks to Bjarni Ingi Gislason for the trouble
|
||
report.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?58164>.
|
||
|
||
2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/html.tmac: Use .do so we correctly load unicode.tmac in
|
||
compatibility mode.
|
||
|
||
Fixes the following problem (wrapped, filenames abbreviated):
|
||
|
||
$ echo | ./build/test-groff -C -Thtml >/dev/null
|
||
troff: backtrace: file '.../groff/build/../tmac/html.tmac':546
|
||
troff: backtrace: file '.../groff/build/../tmac/troffrc':30
|
||
troff: .../groff/build/../tmac/html.tmac:546: warning: macro
|
||
'ms' not defined
|
||
|
||
2020-04-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/smoke-test_html_device.sh: Add test.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2020-04-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/regression_savannah_58153.sh:
|
||
* src/roff/groff/tests/\
|
||
use_point_size_escape_with_single_digit_arg.sh: Use "set -e" to
|
||
ensure that multi-test script files don't hide problems. There
|
||
are arguments against "set -e" (and you can ask Greg Wooledge
|
||
for all of them), but I'm so used to it from years of writing
|
||
Debian package maintainer scripts that I feel comfortable with
|
||
it. It is less verbose than several alternatives (especially
|
||
having one test script per case).
|
||
|
||
* src/roff/groff/tests/string_case_xform_unicode_escape.sh:
|
||
Update with respect to new failure output (in a comment only,
|
||
since this is an XFAIL test).
|
||
|
||
* tmac/tests/an-old_AT_and_UC_footer_saved_and_restored.sh:
|
||
Drop unnecessary "|| exit 1" from end of script. Incidentally,
|
||
this script illustrates an alternative to "set -e".
|
||
|
||
2020-04-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Rework documentation of .spreadwarn.
|
||
|
||
* doc/groff.texi (Debugging):
|
||
* man/groff.7.man (Request short reference):
|
||
* man/groff_diff.7.man (New requests): Recast description of
|
||
.spreadwarn request, some based on suggestions from Dave Kemper.
|
||
Make more prominent the fact that spreading only applies to
|
||
adjustment mode 'b'. Document warning type used.
|
||
|
||
Fixes half of Savannah #58035.
|
||
|
||
2020-04-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Require Texinfo 5.0 (February 2013) at a minimum.
|
||
|
||
* m4/groff.m4 (GROFF_MAKEINFO): Check for version 5.0 (increased
|
||
from 4.8). Update diagnostics and comments.
|
||
|
||
* INSTALL.extra:
|
||
* README:
|
||
* doc/groff.texi:
|
||
* doc/webpage.ms: Document updated requirement.
|
||
|
||
* doc/fixinfo.sh: Delete; it is no longer necessary to work
|
||
around Texinfo 4.x bugs.
|
||
|
||
* doc/doc.am (EXTRA_DIST): Stop shipping fixinfo.sh.
|
||
(.texi.html): Remove makeinfo < 5.0 version check and consequent
|
||
execution of fixinfo.sh. Update comment.
|
||
|
||
2020-04-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Enable backtracing across process/file boundaries when errors or
|
||
non-ignored warnings are encountered.
|
||
|
||
Experimentation reveals that .so, .mso, and .pso requests acted
|
||
as barriers to backtracing except when explicitly requested with
|
||
the .backtrace request. Judging by the git history, this
|
||
behavior dates back to June 1991 or earlier. The intention,
|
||
according to a source comment, was only to suppress the
|
||
backtrace output for the line corresponding to the outermost
|
||
level of the input stack (commonly, a file argument to groff).
|
||
Unfortunately, that wasn't its only effect.
|
||
|
||
This change does result in one additional line of output for
|
||
each error or (non-ignored) warning when -b is given. However,
|
||
I regard this as unobjectionable because {1} a backtrace was in
|
||
fact explicitly requested; and {2} it seems a poor tradeoff to
|
||
suppress most of the backtrace in some complicated and
|
||
frustrating cases for the sake of one fewer line of backtrace
|
||
output in a trivial one.
|
||
|
||
Now, backtracing behaves the same no matter what triggers it.
|
||
|
||
Fixes Savannah #58153.
|
||
|
||
* src/roff/troff/input.cpp (file_iterator::backtrace): Call
|
||
get_location() for its side effect of rewriting a filename of
|
||
"-" to "<standard input>", for consistency with other diagnostic
|
||
messages. (In this class, this member function always returns
|
||
1, so ignore the return value. This fact is an essential part
|
||
of what led to the bug; the conditional
|
||
p && !p->get_location(0, &f, &n)
|
||
which appeared in the for loop of input_stack::backtrace() prior
|
||
to this change would always evaluate to false when a node of the
|
||
file_iterator class was encountered.)
|
||
(input_stack::backtrace): Replace member function body with that
|
||
of input_stack::backtrace_all().
|
||
(input_stack::backtrace_all): Delete.
|
||
(backtrace_request): Update the only call site of the above.
|
||
|
||
* src/roff/groff/tests/regression_savannah_58153.sh: Add test.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
* src/roff/groff/tests/string_case_xform_errors.sh: Update
|
||
regression test to not be confounded by additional line of
|
||
backtrace output. Remove bashism along the way.
|
||
|
||
* doc/groff.texi:
|
||
* man/groff.7.man:
|
||
* man/groff_diff.7.man: Update documentation.
|
||
|
||
2020-04-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Reorganize backtrace output.
|
||
|
||
* src/roff/troff/input.cpp (string_iterator::backtrace):
|
||
Prefix the output with the program name if it is known. In a
|
||
deviation from the GNU Coding Standards, put the string
|
||
"backtrace:" immediately next instead of the file and line
|
||
number; this is because, particularly in cases where the
|
||
backtrace is most interesting or needed, it will produce
|
||
multiple lines of output and the common prefix aids visual
|
||
understanding.
|
||
(file_iterator::backtrace): As above; also, change prefix for
|
||
popened nodes in the iterator from "process" to "pipe". This
|
||
seemed preferable to omitting the information entirely or using
|
||
an inscrutable sigil like 'f' or 'p'. The advantage is that the
|
||
output is better aligned--better ergonomics for those who have
|
||
to cope with a lot of it. Furthermore, output the filename only
|
||
once.
|
||
|
||
Example of old and new output:
|
||
|
||
/tmp/inner:2: backtrace: file '/tmp/inner'
|
||
echo .so /tmp/inner:1: backtrace: process 'echo .so /tmp/inner'
|
||
/tmp/outer:1: backtrace: file '/tmp/outer'
|
||
|
||
troff: backtrace: file '/tmp/inner':2
|
||
troff: backtrace: pipe 'echo .so /tmp/inner':1
|
||
troff: backtrace: file '/tmp/outer':1
|
||
|
||
2020-04-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (read_size): Add units to diagnostic.
|
||
This function works only with device-specific basic units
|
||
internally; users likely think in terms of point size, so add
|
||
the basic unit suffix "u" to offer a hint about what's going on.
|
||
|
||
Example:
|
||
$ groff -ww >/dev/null
|
||
\s[10]A\s[-12]B
|
||
troff: <standard input>:1: warning: point-size escape results in
|
||
non-positive size -2000u; set to 1u
|
||
|
||
On a PostScript device with 1000 basic units to the point, the
|
||
difference is important and would be confusing without the unit
|
||
indication.
|
||
|
||
2020-04-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Correct and clarify point size documentation.
|
||
|
||
Our Texinfo manual has long documented the request '.ps 0' as
|
||
restoring the previous point size (just as '\s0' or '.ps' with
|
||
no argument does), but this is incorrect; since groff 1.02 or
|
||
earlier (June 1991), the request has not actually worked this
|
||
way. Instead, '.ps 0' sets the point size to 1 basic unit
|
||
{though output drivers may clamp this to a higher value}. This
|
||
behavior is consistent with AT&T troff, Hierloom Doctools troff
|
||
and, per Ingo Schwarze, Plan 9 troff. (It is, however, not
|
||
consistent with neatroff.)
|
||
|
||
* doc/groff.texi (Changing Type Sizes): Stop claiming that '.ps
|
||
0' works like '\s0'. Note that the resulting (computed) point
|
||
size, not the argument, is clamped. Note that it is
|
||
non-positive, not negative, point sizes that are clamped to 1u.
|
||
Add (forward) cross-reference to section where \n[.ps] is
|
||
defined since it is mentioned here. Move explanation of special
|
||
handling of zero argument to \s escape description.
|
||
|
||
* man/groff.7.man (Request short reference): Explain .ps N
|
||
independently of \s. Note clamping behavior.
|
||
|
||
2020-04-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (read_size): Correctly brace 'else'
|
||
block.
|
||
|
||
* src/roff/groff/tests/\
|
||
use_point_size_escape_with_single_digit_arg.sh:
|
||
Check that we get a diagnostic when relying on ambiguous form.
|
||
|
||
2020-04-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp (read_size): Move special-case
|
||
interpretation of the '\sN' form of point-size escapes when 'N'
|
||
is 1, 2, or 3 to compatibility mode (groff -C) only, and throw
|
||
error diagnostic with suggestion for remedy if encountered.
|
||
|
||
Traditionally, '\s36A' is interpreted as "set point size to 36,
|
||
then emit 'A'". However, only values in the range 10-39 are
|
||
handled specially; '\s40A' is interpreted as a four-point "0A".
|
||
This is unlike anything else in *roff grammar; see \*, \$, \f,
|
||
\F, \g, \k, \m, \M, \n, \V, \Y, and \z.
|
||
|
||
To anticipate objections: Why not throw only a warning? Because
|
||
there isn't a warning category for supported but ambiguous
|
||
syntax (this behavior of AT&T troff dates back to the mid-1970s
|
||
but was not documented in the Troff User's Manual until 1992).
|
||
Why not throw the error outside of compatibility mode too?
|
||
Because outside of compatibility mode we (now) have an
|
||
unambiguous parse.
|
||
|
||
Background: The Graphic Systems C/A/T phototypesetter (the
|
||
original device target for AT&T troff) only supported a few
|
||
discrete point sizes in the range 6..36, so Ossanna
|
||
special-cased the parser to do what the user must have meant.
|
||
Kernighan warned of this in the 1992 revision of CSTR #54
|
||
{§2.3}, and more recently, McIlroy referred to it as a "living
|
||
fossil".
|
||
|
||
See:
|
||
https://lists.gnu.org/archive/html/groff/2020-03/msg00054.html
|
||
https://lists.gnu.org/archive/html/groff/2020-04/msg00002.html
|
||
https://lists.gnu.org/archive/html/groff/2020-04/msg00015.html
|
||
and follow-ups for discussion.
|
||
|
||
* NEWS: Advise users of behavior change and offer guidance.
|
||
|
||
* doc/groff.texi:
|
||
* man/groff.7.man: Document the restriction of special handling
|
||
of point-size arguments to '\s' to compatibility mode.
|
||
|
||
* src/roff/groff/tests/\
|
||
use_point_size_escape_with_single_digit_arg.sh: Add regression
|
||
test.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2020-04-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Improve point-size escape diagnostics.
|
||
|
||
* src/roff/troff/input.cpp (read_size): Disclose context
|
||
{point-size escape interpretation} in diagnostic messages. When
|
||
a "bad digit" is encountered, describe it if possible. When a
|
||
relative adjustment results in a negative point size, report the
|
||
computed value. Also rename a variable for slightly more
|
||
clarity ("bad" does not refer to all bad parses, just some cases
|
||
of bad digits), and update an insufficiently generalized comment
|
||
{"\s(00" is also an acceptable expression for point-size zero}.
|
||
|
||
Based on suggestions by Ingo Schwarze and Bjarni Ingi Gislason.
|
||
|
||
2020-04-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Align diagnostic message format.
|
||
|
||
* src/libs/libgroff/error.cpp (do_error_with_file_and_line):
|
||
* src/roff/troff/input.cpp (do_error):
|
||
Display the diagnostic level when it is "error", instead of
|
||
leaving it implicit.
|
||
|
||
* src/roff/troff/input.cpp (error_with_file_and_line): Include
|
||
the program name in the diagnostic message if it is known.
|
||
|
||
* src/roff/groff/tests/string_case_xform_errors.sh: Update
|
||
diagnostic message expectation.
|
||
|
||
2020-02-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi (Page Motions):
|
||
* man/groff.7.man (Single-character escapes): Document
|
||
non-breaking spaces as such.
|
||
|
||
Report and patch by Dave Kemper <saint.snit@gmail.com>.
|
||
Fixes <https://savannah.gnu.org/bugs/?55954>.
|
||
|
||
2020-02-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
nroff: Implement -P and -V options.
|
||
|
||
* src/roff/nroff/nroff.sh: Recognize -P option (with argument)
|
||
and pass it through to groff. Recognize -V option; if given,
|
||
display constructed groff command instead of executing it.
|
||
Update usage message to document new options. Tidy up shell
|
||
style and indentation. Add comments.
|
||
* src/roff/nroff/nroff.1.man: Document new -P and -V options.
|
||
* src/roff/nroff/tests/verbose_option_works.sh.in: Test -V
|
||
option.
|
||
* src/roff/nroff/nroff.am: Generate test and run it.
|
||
|
||
2020-02-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Stop ms macro package from manipulating warnings.
|
||
|
||
* tmac/s.tmac: Remove code block that attempted to enable all
|
||
warnings "only if none are given on the command line". It did
|
||
this by simply comparing the value of the warn register
|
||
{\n[.warn]} against the default value; but of course, a user
|
||
could specify -w options that exactly matched the default and
|
||
the test would not be able to tell, causing puzzling and
|
||
undesired behavior. Furthermore, the hard-coded default was out
|
||
of date and did not correspond to recent releases of groff. If
|
||
you want all warnings on, use the ".warn" request with no
|
||
arguments in your ms document or pass "-w w" to groff (see
|
||
troff(1) or our Texinfo manual for more on warnings).
|
||
|
||
Thanks to Bjarni Ingi Gislason for bringing this issue to our
|
||
attention.
|
||
|
||
Resolves <https://savannah.gnu.org/bugs/?57583>.
|
||
|
||
2020-01-21 George HELFFRICH <ghfbsd@gmail.com>
|
||
|
||
[me]: Fix regression of '.nm' (#57638).
|
||
|
||
* tmac/e.tmac-u (nm): Use saved point size and font position
|
||
for line numbering only if those registers exist.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?57638>.
|
||
|
||
2020-01-18 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
Accept any number of arguments for .Dd in the groff_mdoc(7)
|
||
macros.
|
||
|
||
* tmac/doc-common-u: The .Dd macro behaved in a weird way:
|
||
Without arguments, it printed the string "Epoch".
|
||
With one, two, four, or more arguments, it ignored all arguments
|
||
and used the current date instead.
|
||
Only for exactly three arguments, it printed the arguments.
|
||
None of this made sense. Giving the date as "Epoch" is
|
||
absurd, and printing the current date is just misleading:
|
||
why should a document be considered up-to-date when the author
|
||
did not even bother to state the date of the last change?
|
||
Admittedly, the behaviour for 0 and 4 or more arguments
|
||
already appeared 4.3BSD-Reno, and the behaviour for 2 or 3
|
||
arguments in 4.4BSD. But it was already wrong even in those
|
||
days: several manual pages in 4.4BSD gave .Dd a single, quoted
|
||
argument, e.g. .Dd "June 9, 1993": cap_mkdb(1), id(1), sed(1),
|
||
err(3), getcap(3), sysctl(3), amd(8), disklabel(8), and others.
|
||
Consequently, simply print all the arguments, no matter how
|
||
many there are.
|
||
|
||
This bug was found by Jonathan Gray <jsg@openbsd.org>
|
||
while he looked at 4.xBSD manual pages.
|
||
|
||
2020-01-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* doc/groff.texi: Document initial empty set membership of
|
||
characters with cflags values of 128, 256, or 512 in parallel
|
||
with preceding paragraphs regarding smaller powers of two.
|
||
|
||
Report and patch by Dave Kemper <saint.snit@gmail.com>.
|
||
Fixes <https://savannah.gnu.org/bugs/?57549>.
|
||
|
||
2020-01-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/*.sh: Rename some tests so their
|
||
filenames are more self-descriptive.
|
||
* src/roff/groff/groff.am (groff_TESTS): Update.
|
||
|
||
2020-01-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/groff/tests/transparent_end-of-sentence_chars.sh: Add
|
||
test for end-of-sentence recognition.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2020-01-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp: Mark \[dd] character (double dagger)
|
||
as transparent for purposes of end-of-sentence recognition.
|
||
|
||
* doc/groff.texi (Sentences):
|
||
* man/groff_diff.7.man (New requests/.cflags): Document this.
|
||
|
||
Report and patch by Dave Kemper <saint.snit@gmail.com>.
|
||
Fixes <https://savannah.gnu.org/bugs/?57546>.
|
||
|
||
2020-01-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/refer.1.man (See Also):
|
||
* src/utils/indxbib/indxbib.1.man (See Also):
|
||
* src/utils/lkbib/lkbib.1.man (See Also):
|
||
* src/utils/lookbib/lookbib.1.man (See Also): Add bibliographic
|
||
reference to the original Bell Labs "refer" paper by Mike Lesk.
|
||
|
||
2020-01-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_AT_and_UC_footer_saved_and_restored.sh: Add
|
||
regression test for Ingo's change below.
|
||
|
||
2020-01-16 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
Repair .AT and .UC in the groff_man(7) macros.
|
||
|
||
* tmac/an-old.tmac: Setting user-defined strings in a macro that
|
||
will later be called indirectly from page location traps is
|
||
excessively complicated. Besides, the implementation doesn't
|
||
work: when the trap is finally sprung, the defaults from the
|
||
an-init macro clobber what the author specified with .AT or .UC.
|
||
Instead, all that is needed is setting the strings for the
|
||
header before triggering the page break, such that they appear
|
||
right away, while setting the strings for the footer after the
|
||
page break, such that they don't appear on the previous page.
|
||
|
||
This bug was found by Jonathan Gray <jsg@openbsd.org> while he
|
||
looked at 4.xBSD manual pages.
|
||
|
||
2020-01-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/groff_man.7.man (Document structure macros/.SH): Fix
|
||
errors in footer description.
|
||
|
||
2020-01-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/tests/an-old_CS_register_on.sh: Tweak flags; all the
|
||
other tests in this group pass "-Tascii -P-cbou" instead of
|
||
"-Tutf8". (This is so that output is easy to grep from a shell
|
||
script.) Bring this test into line. Does not regress anything.
|
||
|
||
2019-12-30 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Certain pdfmark destination names caused gropdf to fail.
|
||
|
||
* src/devices/gropdf/gropdf.pl: Look for pdfmark types, (i.e.
|
||
DEST, OUT, ANN), only preceding 'pdfmark' at end of line, not
|
||
anywhere else.
|
||
|
||
2019-12-30 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
Correct output of sprintf("%%") in pic(1).
|
||
|
||
* src/preproc/pic/pic.ypp: Print "%" rather than "%%".
|
||
|
||
Bug reported by Doug McIlroy <doug at cs dot dartmouth dot edu>.
|
||
Patch using feedback from Larry McVoy <lm at mcvoy dot com>.
|
||
|
||
2019-12-29 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Update man page of gropdf to document \X calls.
|
||
|
||
* src/devices/gropdf/gropdf.1.man: The calls 'pagename' and
|
||
'switchtopage' (used by mom to relocate TOC) are documented,
|
||
together with their convenience commands '.pdfpagename' and
|
||
'.pdfswitchtopage'.
|
||
|
||
2019-12-29 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
Improve documentation of pic(1) regarding printf.
|
||
|
||
* src/preproc/pic/pic.1.man:
|
||
Document which conversion specifications are supported.
|
||
* doc/pic.ms:
|
||
Correct the list of supported conversion specifications.
|
||
|
||
2019-12-21 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
Update NetBSD, OpenBSD, FreeBSD, Darwin, and DragonFly version
|
||
strings.
|
||
|
||
* tmac/doc-common-u: Update.
|
||
* tmac/groff_mdoc.7.man: Synchronize.
|
||
|
||
Based on a patch from Guillem Jover <guillem@debian.org>
|
||
via Colin Watson <cjwatson@debian.org>, tweaked by me.
|
||
Fixes: https://bugs.debian.org/867123
|
||
|
||
2019-09-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Use a vertical spacing of 1v between paragraphs in man page
|
||
examples. This looks better (on typesetter devices like
|
||
PostScript and PDF) with the Courier font family also used in
|
||
examples. Typewriter devices (like the terminal) already used
|
||
an inter-paragraph spacing of 1v.
|
||
|
||
* tmac/an-ext.tmac (EX): Save the value of the PD number
|
||
register (inter-paragraph distance), and set it to 1v.
|
||
(EE): Restore previous value of the PD register.
|
||
|
||
2019-09-21 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Changes to allow configure to check for URW fonts
|
||
|
||
* font/devpdf/util/BuildFoundries.pl: Call the program with
|
||
--dirURW with path provided to ./configure, and --check to do
|
||
a dry-run just checking if the fonts are available. (bug #56748)
|
||
|
||
2019-09-21 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Add new ghostscript font names (bug #56748)
|
||
|
||
* font/devpdf/Foundry.in: Add changed font names
|
||
|
||
2019-09-21 Deri James <deri@chuzzlewit.myzen.co.uk>
|
||
|
||
Prevent gropdf executing arbitrary commands
|
||
|
||
* src/devices/gropdf/gropdf.pl: See bug #55557
|
||
|
||
2019-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/an-old.tmac: Move test for definitions of CS and CT
|
||
registers to after man.local is sourced; this way we can both
|
||
respect any setting of those registers in that file (which is
|
||
intended for customization by the site administrator) and ensure
|
||
that the registers are defined when dereferenced later.
|
||
|
||
2019-09-15 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* **/*.man: Put section headings in title case.
|
||
|
||
2019-09-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/roff/troff/input.cpp: Lift invariant out of loop.
|
||
|
||
2019-09-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/preproc/refer/refer.1.man: Add mention of man and mm
|
||
packages as supporting the "refer" preprocessor (GNU mm grew
|
||
this support back in groff 1.22.1).
|
||
|
||
2019-09-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Mark expected-to-fail test as XFAIL.
|
||
|
||
Automake supports XFAIL and XPASS, so actually use the
|
||
infrastructure as intended.
|
||
|
||
* Makefile.am: Declare XFAIL_TESTS variable.
|
||
* src/roff/groff/groff.am (groff_XFAIL_TESTS): Add
|
||
string_case_xform_unicode_escape.sh.
|
||
* src/roff/groff/tests/string_case_xform_unicode_escape.sh: Set
|
||
the expected output to what it would be if string case
|
||
transforms worked on groff Unicode escapes.
|
||
|
||
2019-09-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Retire '@G@' build system macro.
|
||
|
||
It existed only for forcibly-capitalized man page titles; it was
|
||
the uppercase-transformed counterpart of @g@.
|
||
|
||
* Makefile.am: Delete sed transformation of @G@.
|
||
* src/preproc/tbl/tbl.1.man: Replace '@G@EQN' in section heading
|
||
with '@g@eqn'.
|
||
|
||
2019-09-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* **/*.man: Downcase man page titles, except for glilypond and
|
||
roff2*, which did not require it.
|
||
|
||
Here's a sed script for the aid of those who have a corpus of
|
||
man pages to migrate.
|
||
|
||
# Downcase man page titles.
|
||
#
|
||
# Use the first line to skip any .TH lines that require
|
||
# special handling, perhaps because the name of the
|
||
# command gets externally macro-expanded. In groff, the
|
||
# "roff2.1.man" page is an example.
|
||
#
|
||
# This script operates _only_ on .TH lines.
|
||
#
|
||
# usage: sed -i -f this_script.sed your_man_page.1 ...
|
||
/@ROFF2MODE@/b
|
||
/^\.\s*TH/{
|
||
h
|
||
s/^\.\s*TH \+\([^ ]\+\) .*/\1/
|
||
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
|
||
G
|
||
s/\([^ ]\+\)\n\(^\.\s*TH \+\)[^ ]\+\( .*\)/\2\1\3/
|
||
}
|
||
|
||
2019-09-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
The an (man) macro package supports new CS and CT number
|
||
registers to control rendering of man page section headings and
|
||
titles, respectively, in full capitals. These default off (with
|
||
no visible effect on pages which already fully capitalize these
|
||
strings in man page sources). The rationale is to encourage man
|
||
page authors to preserve case distinction information in (or
|
||
restore it to) their titles and section headings, while giving
|
||
users (including system administrators, distributors,
|
||
integrators, and maintainers of man(1) implementations) a way to
|
||
view the rendered page elements in full capitals if desired.
|
||
|
||
* tmac/an-old.tmac (TH/an-init): If number register CT is
|
||
defined and nonzero, call .stringup on \*[an-title].
|
||
(SH): Store macro argument list to \*[an-section-heading]. If
|
||
number register CS is defined and nonzero, call .stringup on it.
|
||
* tmac/groff_man.7.man (OPTIONS): Document the CS and CT number
|
||
registers.
|
||
* tmac/tests/an-old_CS_register_off.sh:
|
||
* tmac/tests/an-old_CS_register_on.sh:
|
||
* tmac/tests/an-old_CS_register_unspecified.sh:
|
||
* tmac/tests/an-old_CT_register_off.sh:
|
||
* tmac/tests/an-old_CT_register_on.sh:
|
||
* tmac/tests/an-old_CT_register_unspecified.sh: Add tests.
|
||
* tmac/tmac.am (tmac_TESTS): Run tests.
|
||
|
||
2019-09-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Add regression test to check behavior of case transformation
|
||
request on a string containing a Unicode character escape.
|
||
Right now, this is not supported, so it is an XFAIL test in the
|
||
parlance of DejaGNU/POSIX 1003.3.
|
||
|
||
* src/roff/groff/tests/string_case_xform_unicode_escape.sh: New
|
||
test.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
||
|
||
2019-09-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Implement .stringdown and .stringup requests.
|
||
|
||
* src/roff/troff/input.cpp: Add .stringdown and .stringup
|
||
requests.
|
||
* doc/groff.texi: Document them, including example.
|
||
* man/groff_diff.7.man: Same.
|
||
* man/groff.7.man: Document them briefly.
|
||
|
||
2019-09-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
Regression-test string case transform feature.
|
||
|
||
* src/roff/groff/tests/string_case_xform_errors.sh: New test.
|
||
* src/roff/groff/tests/string_case_xform_requests.sh: New test.
|
||
* src/roff/groff/groff.am (groff_TESTS): Run tests.
|
||
|
||
2019-06-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* src/devices/grotty/grotty.1.man (Options/-i): Note support of
|
||
recent versions of xterm for italic (oblique) styles.
|
||
|
||
Fixes part of <https://savannah.gnu.org/bugs/?55278>.
|
||
|
||
2019-06-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
devlatin1: Map \(oq to ' on output.
|
||
|
||
* font/devlatin1/R.proto: Render the output glyph \[oq]
|
||
{opening quote} as 0x27 (apostrophe) instead of 0x60 (grave
|
||
accent). A grave accent is just flat wrong for the Latin-1
|
||
character set, a.k.a. ISO 8859-1. The defining document ECMA-94
|
||
{June 1986} is freely available for perusal. The ECMA-94 Latin
|
||
character sets do not define any glyphs for directional
|
||
{"typographer's"} quotation marks, but the apostrophe is
|
||
depicted as a neutral (vertical) glyph, whereas the grave accent
|
||
0x60 and acute accent 0xB4 are mirror-symmetric diacritical
|
||
marks.
|
||
|
||
Note that this change has no effect on _input_ conventions for
|
||
roff source documents. You can still get directional single
|
||
quotes on UTF-8, PostScript, PDF, and other output devices
|
||
supporting them by typing sequences like `this' in the input
|
||
{character remapping with ".char" requests and similar
|
||
notwithstanding}.
|
||
|
||
Patch and idea from Ingo Schwarze, who originally proposed it
|
||
for ASCII as well, and included Latin-1 for parallelism.
|
||
The groff developers could reach no consensus about the wisdom
|
||
of such a change for ASCII (which was designed to support
|
||
ambiguity for some code points, requiring the development of
|
||
supplementary interpretation conventions between parties).
|
||
ECMA-94/ISO-8859 is more strongly prescriptive.
|
||
|
||
See https://savannah.gnu.org/bugs/?55616 and the groff mailing
|
||
list archives for 31 January to 23 February 2019 at
|
||
https://lists.gnu.org/archive/html/groff for lengthy discussion.
|
||
|
||
* src/roff/groff/tests/on-latin1-device-oq-is-0x27.sh: Check for
|
||
correct output glyph.
|
||
|
||
* src/roff/groff/groff.am: Add test.
|
||
|
||
2019-06-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
* tmac/unicode.tmac: Save and restore compatibility mode since
|
||
the script uses a GNU extension (.char).
|
||
|
||
2019-06-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
||
|
||
libdriver: Fix SEGV (Savannah #56555).
|
||
|
||
* src/libs/libdriver/printer.cpp: Check result of
|
||
set_char_and_width() for error condition before relying on it.
|
||
|
||
* src/roff/groff/tests/regression-56555.sh: Provoke segfault
|
||
with five bytes of input using transparent line indicator.
|
||
|
||
* src/roff/groff/groff.am: Add test.
|
||
|
||
Fixes <https://savannah.gnu.org/bugs/?55278>.
|
||
|
||
2019-01-12 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
Correctly handle groff_mdoc(7) .Lk arguments starting with a
|
||
dot.
|
||
|
||
* tmac/doc.tmac-u: Each argument to the .Lk macro is printed
|
||
on its own roff input line. If it happens to start with a dot
|
||
or apostroph, it was misinterpreted as a request or macro.
|
||
Force it to be treated as text by adding "\&" in front of it.
|
||
|
||
2018-12-31 Ingo Schwarze <schwarze@openbsd.org>
|
||
|
||
* man/groff_diff.7.man: remove two stray .RE macros
|
||
|
||
|
||
________________________________________________________________________
|
||
|
||
##### License
|
||
|
||
Copyright 2018-2021 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
|
||
##### Editor settings
|
||
Local Variables:
|
||
fill-column: 72
|
||
mode: change-log
|
||
version-control: never
|
||
End:
|
||
vim:set autoindent textwidth=72:
|