mirror of
https://https.git.savannah.gnu.org/git/groff.git
synced 2026-01-26 15:39:07 +00:00
* Makefile.am (EXTRA_DIST): Ship ancient groff ChangeLog files split off from ChangeLog.115 (.old, .111, .112, .113, .114).
1859 lines
71 KiB
Plaintext
1859 lines
71 KiB
Plaintext
2023-08-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* Makefile.am (EXTRA_DIST): Ship ancient groff ChangeLog files
|
|
split off from ChangeLog.115 (.old, .111, .112, .113, .114).
|
|
|
|
2023-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/node.cpp (translate_font): Validate arguments.
|
|
|
|
2023-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Trivially refactor; add utility function.
|
|
|
|
* src/roff/troff/node.cpp (is_nonnegative_integer): New function
|
|
tests C-style string for validity as such; promoted from open
|
|
code because I just spotted a second place we can use it.
|
|
|
|
2023-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Trivially refactor; demote `int`-returning functions to
|
|
Boolean-returning ones and rename.
|
|
- check_font -> is_font_name
|
|
- check_style -> is_abstract_style
|
|
|
|
* src/roff/troff/node.h:
|
|
* src/roff/troff/node.cpp: Do it.
|
|
|
|
* src/roff/troff/env.cpp (is_family_valid):
|
|
* src/roff/troff/input.cpp (do_if_request): Update call sites.
|
|
|
|
2023-08-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/eqn/main.cpp (main): Trivially refactor; demote
|
|
`int` `load_startup_file` to Boolean `want_startup_file`.
|
|
|
|
2023-08-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Implement "reset" keyword.
|
|
|
|
* src/preproc/eqn/box.cpp: Use `static` storage class for
|
|
parametric defaults, moving them to file scope from global.
|
|
Rename `param_table` array of structs to `default_param_table`.
|
|
Use the length of this array for iteration since it is known at
|
|
compile time. Convert `param_table` to a null pointer.
|
|
(set_param): Update diagnostic message text.
|
|
(reset_param): New function restores a rendering parameter in
|
|
`param_table` to its corresponding value in
|
|
`default_param_table`.
|
|
(get_param): New function accesses `param_table` entries via a C
|
|
string rather than integer lvalues. Use `assert()` to dump
|
|
core; this function is never called by the parser, but only by
|
|
static logic. Add `fatal()` under this same circumstance, in
|
|
case anyone `#define`s `NDEBUG`.
|
|
(init_param_table): New function populates the (mutable)
|
|
`param_table` from the (immutable) `default_param_table` using
|
|
heap storage.
|
|
(free_param_table): New function avoids memory leak by freeing
|
|
the heap storage allocated for `param_table`.
|
|
* src/preproc/eqn/eqn.h: Drop external declaration of `nroff`.
|
|
* src/preproc/eqn/eqn.ypp: Add new token `RESET`.
|
|
* src/preproc/eqn/lex.cpp: Map C string "reset" to token `RESET`
|
|
in untagged struct `token_table`.
|
|
(do_reset): Handle new keyword; if argument valid, call
|
|
`reset_param()` with it.
|
|
(yylex): Hook up token `RESET` to `do_reset()`.
|
|
* src/preproc/eqn/box.h: Declare `reset_param()`, `get_param()`,
|
|
`init_param_table()`, and `free_param_table()`.
|
|
* src/preproc/eqn/main.cpp (main): Call `init_param_table()`
|
|
when starting up. Register `free_param_table()` with
|
|
`std::atexit()`.
|
|
* src/preproc/eqn/pbox.h: Drop external declarations of
|
|
rendering parameters.
|
|
* src/preproc/eqn/delim.cpp (build_extensible)
|
|
(define_extensible_string, delim_box::compute_metrics):
|
|
* src/preproc/eqn/lex.cpp (yylex):
|
|
* src/preproc/eqn/limit.cpp (limit_box::compute_metrics):
|
|
* src/preproc/eqn/list.cpp (compute_spacing):
|
|
* src/preproc/eqn/other.cpp (accent_box::compute_metrics)
|
|
(overline_char_box::overline_char_box):
|
|
(overline_box::compute_metrics, overline_box::output):
|
|
(underline_char_box::underline_char_box):
|
|
(underline_box::compute_metrics, underline_box::output):
|
|
(fat_box::compute_metrics, fat_box::output):
|
|
(vcenter_box::compute_metrics):
|
|
* src/preproc/eqn/over.cpp (over_box::compute_metrics):
|
|
(over_box::output):
|
|
* src/preproc/eqn/pile.cpp (pile_box::compute_metrics):
|
|
(matrix_box::compute_metrics, matrix_box::output):
|
|
* src/preproc/eqn/script.cpp (script_box::compute_metrics):
|
|
* src/preproc/eqn/sqrt.cpp (sqrt_box::compute_metrics): Migrate
|
|
from lvalue access to `get_param()` for parameter retrieval.
|
|
|
|
* src/preproc/eqn/eqn.1.man (Customization): Document it.
|
|
|
|
* src/preproc/eqn/tests/parameters-can-be-set-and-reset.sh: Test
|
|
it.
|
|
* src/preproc/eqn/eqn.am (eqn_TESTS): Run test.
|
|
|
|
* NEWS: Add item.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?62692>.
|
|
|
|
2023-08-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/eqn/box.cpp (set_param): Migrate iteration style
|
|
to use new `array_size()` instead of null pointer guards at the
|
|
end of an array of structs.
|
|
|
|
2023-08-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[src]: Add template function for obtaining the length of an
|
|
array.
|
|
|
|
* src/include/lib.h (array_size) [__cplusplus]: Do it.
|
|
|
|
2023-08-22 Dave Kemper <saint.snit@gmail.com>
|
|
|
|
* doc/pic.ms: Document `PY` macro, new to groff 1.23.0.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64575>.
|
|
|
|
2023-08-22 Dave Kemper <saint.snit@gmail.com>
|
|
|
|
* tmac/pic.tmac (PY): Call `PF` rather than duplicating its
|
|
{three bytes of} code. This is almost too trivial to DRY, but
|
|
{1} the new form is a cue to the human reader that .PY is meant
|
|
to be an alias of .PF; and {2} .PE was already defined as a
|
|
variant of .PF with an explicit call to it, so this makes the
|
|
.PY definition conform to that precedent.
|
|
|
|
2023-08-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/an.tmac: Stop setting `an*can-hyperlink` if formatting
|
|
for PDF; we don't yet have support for this implemented, leading
|
|
to vanishing text when the `U` register is true and, for
|
|
instance, `UR`/`UE` are called with no link text.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64572>.
|
|
|
|
2023-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* doc/doc.am (PROCESSEDFILES_DEPS_HTML): Depend on
|
|
tmac/html{,-end}.tmac.
|
|
(PROCESSEDFILES_DEPS_PDF): Depend on tmac/pdf.tmac.
|
|
(PROCESSEDFILES_DEPS_PS): Depend on tmac/ps.tmac.
|
|
(PROCESSEDFILES_DEPS_TXT): Depend on tmac/tty.tmac.
|
|
|
|
2023-08-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/devices/grops/ps.cpp (ps_printer::define_encoding):
|
|
* src/devices/grops/psrm.cpp (resource_manager::output_prolog)
|
|
(resource_manager::supply_resource): Report more intelligible
|
|
diagnostics when libgroff's `font::open_file()` returns a null
|
|
pointer without setting `errno`. The only way this can happen
|
|
is if it rejected the file name for containing a slash, thus
|
|
attempting directory traversal (recall Savannah #61424). Also
|
|
fix code style nits: explicitly `#include` errno.h C standard
|
|
library header, align style of null pointer checks, and stop
|
|
explicitly setting `errno` to zero before (indirectly) calling
|
|
`fopen()`; we inspect `errno`'s value only under a documented
|
|
error condition (a null stream pointer). See errno(3).
|
|
|
|
* NEWS: Add item; we should have mentioned this (and produced
|
|
these better diagnostics) when 1.23.0 was released.
|
|
Distributors may find this change desirable to backport.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64577>. Thanks to Phil
|
|
Chadwick for the report and Deri James for swiftly finding a
|
|
correct workaround that suited the reporter.
|
|
|
|
2023-08-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/node.cpp (class tfont_spec): Stop declaring
|
|
copy constructor. The implicitly defined one suffices.
|
|
Resolves "-Wdeprecated-copy" warning from GCC.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?57515>. Thanks to Bjarni
|
|
Ingi Gislason for the report.
|
|
|
|
2023-08-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* configure.ac: Include paper format in configuration report.
|
|
|
|
* m4/groff.m4 (GROFF_PAGE): Slightly refactor, and help users to
|
|
figure out how the "configure" script decided upon the paper
|
|
format it did by supplementing the `AC_MSG_RESULT` message. If
|
|
not falling back to the "letter" default or honoring a
|
|
command-line setting (e.g., "./configure PAGE=a4"), report which
|
|
file or command was used to infer the paper locale. Apply DRY
|
|
principle by using shell variables more.
|
|
|
|
Prompted by discussion with Damian McGuckin on the groff list.
|
|
<https://lists.gnu.org/archive/html/groff/2023-07/msg00072.html>
|
|
|
|
2023-08-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
Our "Makefile.am" defines an `RM` macro if make(1) itself does
|
|
not, and our Automake files employ it extensively; sweep up the
|
|
stragglers.
|
|
|
|
* font/devpdf/devpdf.am (mostlyclean_devpdf_extra)
|
|
(uninstall_devpdf):
|
|
* src/devices/xditview/xditview.am (uninstall_xditview):
|
|
* src/libs/libgroff/libgroff.am (install_charset_data):
|
|
* src/roff/nroff/nroff.am (nroff):
|
|
* src/utils/indxbib/indxbib.am (install_indxbib):
|
|
(uninstall_indxbib): Do it.
|
|
|
|
2023-08-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/utils/indxbib/indxbib.am (install_indxbib): Use `$(LN_S)`,
|
|
not `ln -s`.
|
|
|
|
2023-08-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Trivially refactor.
|
|
|
|
* src/preproc/eqn/main.cpp (input_char_description): Migrate to
|
|
`const`-qualified object to size an array of length computed at
|
|
compile time and avoid repeating lengthy expression.
|
|
|
|
2023-08-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[man]: Add new `TS` register to configure required separation
|
|
between a (`IP`, `TP`) paragraph's tag and its body, and change
|
|
the default amount used for this purpose from 1n to 2n. Retire
|
|
private register `an-tag-separation` in favor of `TS`.
|
|
|
|
* tmac/an.tmac: Assign `TS` value of 2n if not already defined.
|
|
(TH): Stop setting the default here.
|
|
(an-write-paragraph-tag): Use it.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64539>. Thanks to Alex
|
|
Colomar for the report.
|
|
|
|
2023-08-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[man,mdoc]: Change base paragraph indentation to 5n. This
|
|
corresponds to the amount used by historical man(7) and mdoc(7)
|
|
implementations going back to Unix Version 7 and 4.3BSD-Reno,
|
|
respectively.
|
|
|
|
* tmac/an.tmac: Introduce new interface register, `BP`, to
|
|
control the base paragraph indentation amount. Formerly, `IN`
|
|
determined it, the default relative inset amount, and the
|
|
default amount of additional indentation used by `IP`, `TP`, and
|
|
the deprecated `HP`.
|
|
(an-reset-margin-and-inset-level, SH, SS): Use it.
|
|
|
|
* tmac/doc.tmac: Introduce `BP` register, replacing `IN`.
|
|
* tmac/mdoc/doc-common (Sh): Use it.
|
|
|
|
* src/preproc/tbl/tests/save-and-restore-tab-stops.sh:
|
|
* tmac/tests/an-ext_SY-and-YS-work.sh:
|
|
* tmac/tests/an_TH-repairs-hy-damage.sh:
|
|
* tmac/tests/an_UE-breaks-before-long-URIs.sh:
|
|
* tmac/tests/an_adjust-link-text-correctly.sh:
|
|
* tmac/tests/an_link-macros-work-in-paragraph-tags.sh:
|
|
* tmac/tests/an_use-input-traps-correctly.sh:
|
|
* tmac/tests/andoc_flush-between-packages.sh:
|
|
* tmac/tests/doc_Mt-works.sh:
|
|
* tmac/tests/doc_indents-correctly.sh:
|
|
* tmac/tests/doc_synopsis_is_not_adjusted.sh: Update amount of
|
|
indentation expected in output.
|
|
|
|
* tmac/groff_man.7.man.in:
|
|
* tmac/groff_mdoc.7.man: Document it.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64018>. Thanks to
|
|
Thorsten Glaser and Ingo Schwarze for the discussion.
|
|
|
|
2023-08-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Add paranoia to `token::description()`.
|
|
|
|
* src/roff/troff/input.cpp (token::description): Clear static
|
|
buffer on entry to function to avoid another problem like
|
|
Savannah #62813.
|
|
|
|
2023-08-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Trivially refactor (`define_color`).
|
|
|
|
* src/roff/troff/input.cpp (define_color): Throw more helpful
|
|
diagnostics when arguments from this 3-5-argument-taking request
|
|
is not given enough of them. Rename internal variable `style`
|
|
to `color_space` to make it less opaque.
|
|
|
|
2023-08-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Trivially refactor.
|
|
|
|
* src/roff/troff/input.cpp (input_char_description): Migrate to
|
|
`const`-qualified object to size an array of length computed at
|
|
compile time and avoid repeating lengthy expression.
|
|
|
|
2023-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* man/groff_diff.7.man: Drop displayed examples. Man pages'
|
|
honor as references, not tutorials, has been vigorously
|
|
championed on the groff mailing list. Accordingly, drop
|
|
displayed examples from this page; all are available in groff's
|
|
Texinfo manual.
|
|
* NEWS: Add item in case people wonder where they've gone.
|
|
|
|
2023-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tbl]: Fix staggering of text block entries.
|
|
|
|
* src/preproc/tbl/table.cpp: Add C preprocessor macro storing a
|
|
"text block staggering macro" name.
|
|
(block_entry::position_vertically): Call it in generated output
|
|
with a negative half-vee motion.
|
|
(block_entry::position_vertically, left_block_entry::print)
|
|
(right_block_entry::print, center_block_entry::print)
|
|
(alphabetic_block_entry::print): Call it in generated output
|
|
with a positive half-vee motion.
|
|
(table::init_output): Write out its definition in generated
|
|
output. It wraps the `sp` request. If we're in a diversion,
|
|
use the `\!` technique to recursively call ourselves and bubble
|
|
up the spacing request a diversion level (spacing requests of
|
|
anything other than 1v are ignored in diversions). Otherwise,
|
|
invoke the request.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64454> a.k.a. Debian
|
|
#1038391. Thanks to наб for the report and a good test case.
|
|
|
|
2023-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tbl]: Regression-test Debian #1038391.
|
|
|
|
* src/preproc/tbl/tests/\
|
|
align-staggered-text-blocks-correctly.sh: Do it.
|
|
* src/preproc/tbl/tbl.am (tbl_TESTS): Run test.
|
|
|
|
2023-08-04 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[man]: Deprecate `SB` macro. It is a SunOS 4.0 (1988) extension
|
|
that in most contexts, does nothing you can't achieve with `SM`
|
|
and `B` together (in either order).
|
|
|
|
Study of the SunOS 4 man page corpus suggests a reason for its
|
|
introduction of this macro: use of `SB` immediately after `TP`
|
|
was common (610 out of 2,111 occurrences). The problem with
|
|
`TP` and the mechanism suggested above is that input traps in
|
|
troff normally ignore the `\c` escape sequence, the use of which
|
|
would be necessary to get the desired effect. In groff since
|
|
1.22.4, the man(7) `TP` macro uses GNU troff's `itc` request,
|
|
which _does_ respect `\c`. (mandoc(1) 1.14.2 and later behave
|
|
compatibly with groff man >= 1.22.4.) Solaris 11 switched to
|
|
groff as its troff implementation, so there is no reason for
|
|
newly written or currently maintained man pages to employ `SB`.
|
|
|
|
* tmac/an.tmac (SB): Throw deprecation warning.
|
|
|
|
* tmac/groff_man.7.man.in (Description): Move macro from table
|
|
to deprecation list.
|
|
(Font style macros): Move description from here...
|
|
(Deprecated features): ...to here.
|
|
(Portability): Drop mention, since we don't encourage people to
|
|
use it at all.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64515>.
|
|
|
|
2023-08-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/node.cpp (zoom_font): Validate arguments more.
|
|
Invalid inputs could have bizarre consequences.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64505>.
|
|
|
|
2023-08-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
Drop tmac/fixmacros.sed. We hadn't ever actually installed it;
|
|
it was provided only in our distribution archives, as far back
|
|
as our history indicates.
|
|
|
|
* tmac/fixmacros.sed: Delete.
|
|
* tmac/tmac.am (EXTRA_DIST): Stop shipping it.
|
|
* PROBLEMS: Recast and update relevant item description. This
|
|
is the only place the file was documented.
|
|
|
|
2023-07-31 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/doc.tmac (doc-parse-args): Set ellipses in roman.
|
|
|
|
Thanks to Lennart Jablonka for reminding me of this issue on the
|
|
linux-man mailing list.
|
|
|
|
2023-07-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/libs/libgroff/fontfile.cpp: Update `#include`s.
|
|
(font::open_file): Do more parameter validation. Don't
|
|
construct a file name for opening from components that are null
|
|
pointers. Also `assert()` this since it should be an invariant.
|
|
Migrate from `sprintf()` to `snprintf()`; we have the size of
|
|
the destination buffer handy.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64485>. Thanks to Bjarni
|
|
Ingi Gislason for the report.
|
|
|
|
2023-07-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/pic/troff.cpp (troff_output::set_location): Do
|
|
more parameter validation. Generate the two-argument form of
|
|
the `lf` request only if the C string holding the new file name
|
|
to write isn't a null pointer. Also `assert()` this since it
|
|
should be an invariant.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64488>. Thanks to Bjarni
|
|
Ingi Gislason for the report.
|
|
|
|
2023-07-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[gxditview]: Add accelerators for "Print" action.
|
|
|
|
An apparent bug in a support library affects some users; it
|
|
disables gxditview's pop-up menu. (The menu pops up, but no
|
|
item can be selected.) Also, "Print" was the only action for
|
|
which no keyboard accelerator was defined. "p" (unmodified) is
|
|
already bound to `PreviousPage()`; bind "p" with any of the
|
|
modifiers Shift, Ctrl, Alt, or Meta to `Print()`.
|
|
|
|
* src/devices/xditview/GXditview.ad: Do it.
|
|
* src/devices/xditview/gxditview.1.man: Document it.
|
|
|
|
2023-07-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/es.tmac: Scream the entire word "BIBLIOGRAPHÍA", instead
|
|
of dying off to a murmur at the last two letters.
|
|
|
|
2023-07-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Add new `.trap` built-in register.
|
|
|
|
* src/roff/troff/div.h (class diversion, class macro_diversion,
|
|
class top_level_diversion): Declare new member function
|
|
`get_next_trap_name`.
|
|
* src/roff/troff/div.cpp (macro_diversion::get_next_trap_name):
|
|
New member function returns name of diversion trap if any, and
|
|
if its position is greater than the vertical drawing position,
|
|
otherwise an empty string.
|
|
(top_level_diversion::get_next_trap_name): New member function
|
|
returns the name of the next vertical position trap, if any,
|
|
otherwise an empty string.
|
|
(class next_trap_name_reg): New class has one member, a
|
|
`get_string()` function.
|
|
(next_trap_name_reg::get_string): New function.
|
|
(init_div_requests): Add `.trap` to the register dictionary and
|
|
wire it up to `next_trap_name_reg`.
|
|
|
|
* doc/groff.texi (Page Location Traps):
|
|
* man/groff.7.man (Read-only registers):
|
|
* man/groff_diff.7.man (New registers): Document it.
|
|
|
|
* src/roff/groff/tests/dot-trap_register_works.sh: Test it.
|
|
* src/roff/groff/groff.am (groff_TESTS): Run test.
|
|
|
|
* NEWS: Add item.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64212>. Thanks to Dave
|
|
Kemper for feedback.
|
|
|
|
2023-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/node.cpp (unbreakable_space_node::tprint):
|
|
Write word marker ('w' command) to output.
|
|
* NEWS: Add item.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64356>.
|
|
|
|
2023-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/papersize.tmac: Set register `#R_MARGIN` for mom(7)'s
|
|
benefit, not `R_MARGIN`, which it neither tests nor interpolates
|
|
as a register. Continues commit bed42a77cb, 2022-11-16.
|
|
|
|
2023-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/papersize.tmac: If the `paper` string is defined when
|
|
this macro file is loaded, set the `O` (mm page offset register)
|
|
independently of the `W` (mm line length ["width"] register).
|
|
|
|
2023-07-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[docs]: Revise material in our Texinfo manual.
|
|
|
|
* doc/groff.texi (Manipulating Filling and Adjustment): Document
|
|
a CSTR #54 erratum; the arguments to the `ss` request are in
|
|
12ths of the selected font's `spacewidth` parameter, not 36ths
|
|
of an em. Drop false claim of rounding of `.ss` and `.sss`
|
|
register values on terminal devices. (Rounding of any resulting
|
|
adjustment quantities might still occur, but this is part of the
|
|
usual application of motion quanta and not particular to the
|
|
`ss` request.) Characterize "undiscardable space" as
|
|
"horizontal motion" to help the reader acquire this essential
|
|
distinction between horizontal spaces and motions.
|
|
(Manipulating Spacing): Clarify behavior. Distinguish `sp`
|
|
request from `\v` escape sequence and cross reference the
|
|
latter. Recast to squeeze presentation of `ss` request onto one
|
|
U.S. letter page when typeset. Drop (commented-out) trivial
|
|
example of `ls` usage in favor of new example illustrating some
|
|
macros using `vs` instead, for pedagogical purposes and to eat
|
|
up a lot of dead space on the page caused by a later lengthy
|
|
example. (Knuth-Plass for the...uh...win.)
|
|
(Page Control): Stop (arguably) mis-applying the term "widow",
|
|
in favor of less metaphorical language. Extend Woolf example to
|
|
narrow the seas of vertical space produced by TeX's formatting
|
|
of the page it occupies. (Our blanched discourse can use the
|
|
purple prose.)
|
|
(Page Motion): Fix straggling use of "escape" as a noun; we
|
|
prefer "escape sequence".
|
|
|
|
* man/groff.7.man (Request short reference) <ss>: Sync.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64440>. Thanks to Dave
|
|
Kemper for the report and review.
|
|
|
|
2023-07-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/env.cpp (environment::print_env): Fix error in
|
|
report. The units of {minimum inter-word, additional
|
|
inter-sentence} space size are 12ths of the font's "spacewidth"
|
|
parameter, not 36ths of an em.
|
|
|
|
Consider the following input.
|
|
.\" groff -T ps -Z
|
|
.nf
|
|
foo bar1
|
|
.ss 12
|
|
foo bar2 \" cases 1 and 2 are the same
|
|
foo\h'1m/3u'bar3 \" wider than 1 & 2
|
|
foo\h'1m/36u*12u'bar4 \" slightly narrower than case 3
|
|
.ss 11
|
|
foo bar5 \" narrower than case 1 (as expected)
|
|
foo\h'1m/36u*11u'bar6 \" between cases (1,2) and 4
|
|
|
|
2023-07-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/papersize.tmac: If not already defined, set `PO` register
|
|
to one inch to integrate with ms(7), man(7), and mdoc(7).
|
|
|
|
2023-07-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[ms]: Improve documentation of pic(1) usage.
|
|
|
|
* tmac/groff_ms.7.man
|
|
(Tables, figures, equations, and references): Document the
|
|
mandatory arguments to `PS`. Explain that pic(1) will supply
|
|
them. (This is documentation of the _package's_ interface.)
|
|
|
|
* doc/groff.texi: As above, and add example of pic(1) input.
|
|
Also tighten wording.
|
|
|
|
* doc/ms.ms: As above, and supply pic output corresponding to
|
|
example (if typesetting). Add a keep.
|
|
|
|
* doc/doc.am (doc/ms.ps): Preprocess with pic; call groff with
|
|
`-p` option when generating document.
|
|
|
|
* src/utils/grog/tests/smoke-test.sh: Drop a test case; we no
|
|
longer have an ms(7) document in the tree that uses tbl and eqn
|
|
but not pic.
|
|
|
|
2023-07-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tbl]: Fix post-1.23.0 regression.
|
|
|
|
* src/preproc/tbl/main.cpp (process_format): Fix thinkos
|
|
introduced in commit ba420961c3, 19 May, which caused the first
|
|
character after [PpVv] column modifiers to be ignored. Problem
|
|
visible in typeset renderings of our "ms.ms" document, where
|
|
some table entries were getting rendered at a type size of 1p.
|
|
|
|
2023-07-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[ms]: Fix Savannah #64438.
|
|
|
|
* tmac/s.tmac (@PS): Stop treating excess arguments as
|
|
erroneous, foregoing preparation for pic(1) output. Fixes
|
|
regression from groff 1.22.4.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64438>. Thanks to Doug
|
|
McIlroy for the report, Dave Kemper for root-cause analysis, and
|
|
Deri James for usability feedback.
|
|
|
|
2023-07-17 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* arch/djgpp/config.site:
|
|
* arch/misc/shdeps.sh:
|
|
* bootstrap:
|
|
* font/devdvi/generate/CompileFonts:
|
|
* font/devps/generate/afmname:
|
|
* font/devps/generate/make-zapfdr:
|
|
* font/util/make-Rproto:
|
|
* gendef.sh:
|
|
* m4/groff.m4:
|
|
* mdate.pl:
|
|
* src/devices/grops/grops.1.man:
|
|
* src/devices/xditview/ad2c:
|
|
* src/libs/libgroff/config.charset:
|
|
* src/libs/libgroff/make-uniuni:
|
|
* src/preproc/eqn/neqn.sh:
|
|
* src/roff/nroff/nroff.sh:
|
|
* src/utils/afmtodit/make-afmtodit-tables:
|
|
* test-groff.in:
|
|
* tmac/hyphenex.pl: Stop endorsing shebang line space myth.
|
|
Fixes <https://savannah.gnu.org/bugs/?64058>.
|
|
|
|
2023-07-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* m4/groff.m4 (GROFF_PROG_YACC): Behave more like `AC_PROG_YACC`
|
|
where useful, seeking "bison" first. Drop comment claiming that
|
|
"Bison-generated parsers have problems with C++ compilers other
|
|
than g++", which dates back to groff 1.10, 26 November 1995.
|
|
Let us optimistically assume that GNU Bison (and C++ compilers)
|
|
have improved since then.
|
|
|
|
2023-07-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/groff/groff.cpp (main): Update copyright notice and
|
|
warranty disclaimer. Bump year. Lead with declaration as free
|
|
software (join us now); specify GPL version and user's option to
|
|
upgrade to later version. Use a warranty disclaimer inspired by
|
|
GNU Bison. Drop mention of "COPYING" file, which is not
|
|
installed by groff's "install" make(1) target and not sufficient
|
|
information to aid users of groff packages prepared by
|
|
distributors (which neverless are legally bound to provide
|
|
licensing information via some means, and do so with high
|
|
reliability). After almost 35 years, we can have some hope that
|
|
people have heard of the GNU GPL and can locate a copy of it
|
|
without great difficulty. Also drop use of term "subprogram".
|
|
|
|
2023-07-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/man.local: Stop disabling hyperlinks on non-HTML output
|
|
devices. less(1) version 566 and later are in wide distribution
|
|
now and will be more so by the time of the next groff release.
|
|
|
|
* tmac/tests/an_UE-breaks-before-long-URIs.sh: Force hyperlinks
|
|
off with `-rU0` to preserve test validity.
|
|
|
|
* NEWS: Add item.
|
|
|
|
Thanks to Colin Watson for pioneering these changes in Debian's
|
|
groff 1.23.0-1 package.
|
|
|
|
2023-07-12 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/html/pushback.cpp (pushBackBuffer::isString):
|
|
Partially revert commit 411b42f4ec, 2 June. This member
|
|
function needs a signed type to iterate backwards for internal
|
|
validation purposes, so use `ptrdiff_t` instead of `size_t`.
|
|
Fixes post-1.23.0 problem with pre-grohtml infinitely looping on
|
|
complex documents like groff_char(7). Mea culpa.
|
|
|
|
2023-06-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Clarify diagnostic message.
|
|
|
|
* src/preproc/eqn/lex.cpp (do_delim): Do it.
|
|
|
|
Thanks to Doug McIlroy for the report <https://lists.gnu.org/\
|
|
archive/html/groff/2023-06/msg00158.html>.
|
|
|
|
2023-06-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Add unit tests for drawing commands.
|
|
|
|
* src/roff/groff/tests/draw-arc.sh:
|
|
* src/roff/groff/tests/draw-circle.sh:
|
|
* src/roff/groff/tests/draw-ellipse.sh:
|
|
* src/roff/groff/tests/draw-filled-circle.sh:
|
|
* src/roff/groff/tests/draw-filled-ellipse.sh:
|
|
* src/roff/groff/tests/draw-filled-polygon.sh:
|
|
* src/roff/groff/tests/draw-line.sh:
|
|
* src/roff/groff/tests/draw-polygon.sh:
|
|
* src/roff/groff/tests/draw-spline.sh:
|
|
* src/roff/groff/tests/set-stroke-thickness.sh: Do it.
|
|
|
|
* src/roff/groff/groff.am (groff_TESTS): Run tests.
|
|
|
|
2023-06-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[man, mdoc]: Parameterize page offset.
|
|
|
|
* tmac/mdoc/doc-ditroff (doc-setup-page-layout):
|
|
* tmac/mdoc/doc-nroff (doc-setup-page-layout): Stop forcing the
|
|
page offset to the device defaults, redundantly.
|
|
|
|
* tmac/an.tmac:
|
|
* tmac/mdoc/doc-ditroff (doc-setup-page-layout):
|
|
* tmac/mdoc/doc-nroff (doc-setup-page-layout): Honor `PO`
|
|
register if set at startup.
|
|
|
|
* tmac/groff_man.7.man.in (Options):
|
|
* tmac/groff_mdoc.7.man (Options): Document it.
|
|
|
|
* NEWS: Add item.
|
|
|
|
2023-06-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
Slightly refactor.
|
|
|
|
[grodvi, grops, xditview, libbib, libgroff, eqn, pre-grohtml,
|
|
preconv, refer, troff, tfmtodit]: Store return value of
|
|
`strlen()` in a `size_t` (or `ptrdiff_t` if we're performing
|
|
subtraction on it) instead of an `int`. Change temporaries
|
|
{loop indices and similar} to use the same types.
|
|
|
|
* src/devices/grodvi/dvi.cpp (dvi_printer::do_special):
|
|
* src/devices/grops/ps.cpp (ps_output::comment_arg):
|
|
(ps_output::put_string, ps_output::put_number):
|
|
(ps_output::put_float, ps_output::put_color):
|
|
* src/devices/grops/ps.cpp (class ps_output) <put_string, col>:
|
|
<max_line_length>:
|
|
* src/devices/xditview/Dvi.c (ClassInitialize):
|
|
* src/include/symbol.h (class symbol) <block_size>:
|
|
* src/libs/libbib/index.cpp (index_search_item::munge_filename):
|
|
(index_search_item::search_item):
|
|
* src/libs/libgroff/fontfile.cpp (font::open_file):
|
|
* src/libs/libgroff/string.cpp (string::operator=):
|
|
(string::operator+):
|
|
* src/libs/libgroff/symbol.cpp (symbol::symbol):
|
|
(symbol::block_size):
|
|
* src/preproc/eqn/delim.cpp (define_extensible_string):
|
|
* src/preproc/html/pre-html.cpp (char_buffer::can_see):
|
|
* src/preproc/html/pushback.cpp (pushBackBuffer::isString):
|
|
* src/preproc/preconv/preconv.cpp (emacs2mine):
|
|
* src/preproc/refer/label.ypp (format_expr::evaluate):
|
|
* src/roff/troff/input.cpp (make_temp_iterator, pipe_source):
|
|
* src/utils/tfmtodit/tfmtodit.cpp (main): Do it.
|
|
|
|
* src/preproc/html/pushback.cpp (pushBackBuffer::isString): Drop
|
|
`while` loop that is now tautologically true due to comparison
|
|
of unsigned types.
|
|
|
|
2023-05-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/env.cpp (font_change): Trivially refactor.
|
|
Simplify conditionals.
|
|
|
|
2023-05-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Trivially refactor. Rename `check_tabs` member functions
|
|
to `diagnose_tab_stop_usage`, to be more expressive and to
|
|
prepare for the diagnosis of leaders in the input as well.
|
|
|
|
* src/preproc/eqn/box.cpp (box::check_tabs):
|
|
(box_list::list_check_tabs):
|
|
(pointer_box::check_tabs):
|
|
(tab_box::check_tabs):
|
|
* src/preproc/eqn/box.h (box::check_tabs):
|
|
(box_list::list_check_tabs):
|
|
(list_box::check_tabs):
|
|
(pile_box::check_tabs):
|
|
(matrix_box::check_tabs):
|
|
(pointer_box::check_tabs):
|
|
(tab_box::check_tabs):
|
|
* src/preproc/eqn/delim.cpp (delim_box::check_tabs):
|
|
* src/preproc/eqn/limit.cpp (limit_box::check_tabs):
|
|
* src/preproc/eqn/list.cpp (list_box::check_tabs):
|
|
* src/preproc/eqn/other.cpp (accent_box::check_tabs):
|
|
(uaccent_box::check_tabs):
|
|
* src/preproc/eqn/over.cpp (over_box::check_tabs):
|
|
* src/preproc/eqn/pile.cpp (pile_box::check_tabs):
|
|
(matrix_box::check_tabs):
|
|
* src/preproc/eqn/script.cpp (script_box::check_tabs):
|
|
* src/preproc/eqn/sqrt.cpp (sqrt_box::check_tabs):
|
|
Rename these...
|
|
* src/preproc/eqn/box.cpp (box::check_tabs):
|
|
(box::diagnose_tab_stop_usage):
|
|
(box_list::list_diagnose_tab_stop_usage):
|
|
(pointer_box::list_diagnose_tab_stop_usage):
|
|
(tab_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/box.h (box::diagnose_tab_stop_usage):
|
|
(box_list::list_diagnose_tab_stop_usage):
|
|
(list_box::diagnose_tab_stop_usage):
|
|
(pile_box::diagnose_tab_stop_usage):
|
|
(matrix_box::diagnose_tab_stop_usage):
|
|
(pointer_box::diagnose_tab_stop_usage):
|
|
(tab_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/delim.cpp
|
|
(delim_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/limit.cpp
|
|
(limit_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/list.cpp (list_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/other.cpp
|
|
(accent_box::diagnose_tab_stop_usage):
|
|
(uaccent_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/over.cpp (over_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/pile.cpp (pile_box::diagnose_tab_stop_usage):
|
|
(matrix_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/script.cpp
|
|
(script_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/sqrt.cpp (sqrt_box::diagnose_tab_stop_usage):
|
|
...to these.
|
|
|
|
* src/preproc/eqn/box.cpp (box::top_level)
|
|
(box_list::list_diagnose_tab_stop_usage):
|
|
(pointer_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/delim.cpp
|
|
(delim_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/limit.cpp
|
|
(limit_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/list.cpp (list_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/other.cpp
|
|
(accent_box::diagnose_tab_stop_usage):
|
|
(uaccent_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/over.cpp (over_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/pile.cpp (pile_box::diagnose_tab_stop_usage):
|
|
(matrix_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/script.cpp
|
|
(script_box::diagnose_tab_stop_usage):
|
|
* src/preproc/eqn/sqrt.cpp (sqrt_box::diagnose_tab_stop_usage):
|
|
Update call sites.
|
|
|
|
2023-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Trivially refactor. Boolify `tab_box` member variable
|
|
`disabled`.
|
|
|
|
* src/preproc/eqn/box.cpp (tab_box::tab_box)
|
|
(tab_box::check_tabs):
|
|
* src/preproc/eqn/box.h (class tab_box): Do it.
|
|
|
|
* src/preproc/eqn/box.cpp (tab_box::check_tabs): Also recast
|
|
diagnostic message to clarify what "level" we're talking about:
|
|
it's lexical. Which, sadly, probably won't help any but
|
|
CS/SWeng people...
|
|
|
|
2023-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Validate a font family before trying to use it.
|
|
|
|
* src/roff/troff/env.cpp (is_family_valid): New function checks
|
|
for all text styles (R, I, B, BI) and returns true only if the
|
|
given family supports them all.
|
|
(family_change): Call `is_family_valid()` on given argument.
|
|
If invalid, throw diagnostic and ignore `fam` request.
|
|
* src/roff/troff/env.h (is_family_valid): Declare; make visible.
|
|
* src/roff/troff/input.cpp (main): Call `is_family_valid()` on
|
|
`-f` option argument. Its invalidity is a fatal error.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64155>. Thanks to Dave
|
|
Kemper for the report.
|
|
|
|
2023-05-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/env.h (read_hyphen_file): Drop relic prototype
|
|
for undeclared function. Should have been disposed of on
|
|
1992-09-21, per ChangeLog.115.
|
|
|
|
2023-05-23 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/input.cpp (do_error): Describe vertical page
|
|
locations in output warning diagnostics in terms of lines on
|
|
nroff devices.
|
|
* doc/groff.texi (Debugging) <warnscale>:
|
|
* man/groff.7.man (Request short reference) <warnscale>:
|
|
Document this change.
|
|
* NEWS: Add item.
|
|
|
|
2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tbl]: Refactor handling of type size and vertical spacing.
|
|
|
|
* src/preproc/tbl/table.h (struct inc_number): Rename this...
|
|
(struct size_expression): ...to this, and change its member
|
|
types. The `inc` `short` becomes a `relativity` enum
|
|
because it only ever takes 3 values. The `val` short becomes an
|
|
`int`, undoing what I suspect to be premature optimization.
|
|
* src/preproc/tbl/main.cpp (entry_modifier::entry_modifier)
|
|
(entry_format::debug_print, process_format):
|
|
* src/preproc/tbl/table.cpp (set_modifier, set_inline_modifier)
|
|
(restore_inline_modifier): Update to reflect new types and
|
|
enum literals.
|
|
|
|
2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/tbl/main.cpp (process_format): Check for EOF after
|
|
eating spaces and tabs when processing [pPvVwW] column
|
|
modifiers, and emit an appropriate error diagnostic. This was
|
|
already being done for [fFmM].
|
|
|
|
2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/tbl/main.cpp (process_format): Accept (and
|
|
discard) space and tab characters after [pPvV] in a column
|
|
descriptor, as is already done for [fFmMwW]. Modify [wW] to use
|
|
the same loop style as the others, for consistency.
|
|
|
|
2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/eqn/box.cpp (half_space_box::output)
|
|
(full_space_box::output, thick_space_box::output)
|
|
(half_space_box::output): Add assertions to catch unexpected
|
|
flow of control.
|
|
|
|
2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Implement tunable "half_space" and "full_space"
|
|
parameters. They default to the same widths as "thin_space" and
|
|
"thick_space", respectively, but control the widths of the '^'
|
|
and '~' input tokens.
|
|
|
|
* src/preproc/eqn/box.cpp: Add globals `half_space`,
|
|
`full_space`.
|
|
(struct S): Recognize "half_space" and "full_space" as
|
|
parameters to the "set" primitive, and map them to the globals.
|
|
(half_space_box::output): Format the half space width.
|
|
(full_space_box::output): Format the full space width.
|
|
(full_space_box::output, thick_space_box::output): Drop
|
|
workaround for Firefox 1.5 MathML bug (November 2005). Emit
|
|
"  " entity instead of " ".
|
|
|
|
* src/preproc/eqn/eqn.1.man (Customization): Document feature.
|
|
|
|
* NEWS: Add item.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64216>. Thanks to Doug
|
|
McIlroy for the report and Damian McGuckin for the discussion.
|
|
|
|
2023-05-19 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Add `thick_space` and `thin_space` classes.
|
|
|
|
* src/preproc/eqn/box.cpp:
|
|
* src/preproc/eqn/box.h: Do it.
|
|
|
|
2023-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Trivially refactor. Rename "space_box" class to
|
|
"full_space_box" for clarity and to prepare for adding distinct
|
|
thin and thick space box classes.
|
|
|
|
* src/preproc/eqn/box.cpp (space_box::space_box)
|
|
(space_box::output, space_box::debug_print):
|
|
* src/preproc/eqn/box.h (class space_box): Rename these...
|
|
* src/preproc/eqn/box.cpp (full_space_box::full_space_box)
|
|
(full_space_box::output, full_space_box::debug_print):
|
|
* src/preproc/eqn/box.h (class full_space_box): ...to these.
|
|
* src/preproc/eqn/eqn.ypp (simple): Construct item using new
|
|
type name.
|
|
|
|
2023-05-18 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/hvunits.h: Boolify.
|
|
(class vunits, class hunits, vunits::is_zero, hunits::is_zero):
|
|
Do it.
|
|
|
|
2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/node.cpp: Rename request-handling functions to
|
|
better describe their operation.
|
|
(font_translate, font_position, style, underline_font)
|
|
(define_font_special_character, remove_font_special_character)
|
|
(font_special_request, special_request, font_zoom_request)
|
|
(bold_font, track_kern, constant_space, ligature, kern_request)
|
|
(set_soft_hyphen_char): Rename these...
|
|
(translate_font, mount_font_at_position)
|
|
(associate_style_with_font_position, select_underline_font)
|
|
(define_font_specific_character, remove_font_specific_character)
|
|
(set_font_specific_special_fonts, set_special_fonts, zoom_font)
|
|
(embolden_font, configure_track_kerning, constantly_space_font)
|
|
(set_ligature_mode, set_kerning_mode)
|
|
(set_soft_hyphen_character): ...to these.
|
|
|
|
2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/node.cpp (font_translate, font_position, style)
|
|
(underline_font, define_font_special_character)
|
|
(remove_font_special_character, font_special_request)
|
|
(special_request, font_zoom_request, bold_font, track_kern)
|
|
(constant_space, ligature, kern_request, set_soft_hyphen_char):
|
|
Declare functions as `static`.
|
|
|
|
2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Fix Savannah #64166.
|
|
|
|
* src/roff/troff/node.cpp (bold_font): Add `WARN_MISSING`
|
|
diagnostic if request given no arguments; it does nothing, and
|
|
the behavior of this request is sufficiently complex that it's
|
|
worth saying so. Stop throwing font lookup error if second
|
|
argument cannot be resolved as a font name; it might be an
|
|
emboldening amount instead.
|
|
|
|
2023-05-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/s.tmac (PE): Turn on no-space mode after a pic(1)
|
|
display, when not flying back with `PF`. Continues fix for
|
|
Savannah #62688.
|
|
|
|
2023-05-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Trivially refactor.
|
|
|
|
* src/roff/troff/input.cpp (token::~token, token::operator=):
|
|
Drop workaround for bug in compiler (SGI C++) that dates back to
|
|
groff 1.07 (March 1993). But don't go back to using the ternary
|
|
operator.
|
|
|
|
2023-05-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Fix Savannah #64104.
|
|
|
|
* src/roff/troff/input.cpp (set_escape_char): Rename this...
|
|
(assign_escape_character): ...to this. Don't permit the escape
|
|
character to be set to the same thing as the control or no-break
|
|
control characters.
|
|
* doc/groff.texi (Using Escape Sequences): Document
|
|
restrictions.
|
|
|
|
* src/roff/troff/env.h (class environment): Slightly refactor.
|
|
Rename fields `control_char` and `no_break_control_char` to
|
|
`control_character` and `no_break_control_character`,
|
|
respectively, and make them private. Add public getters and
|
|
setters for them.
|
|
(get_control_character): New public member function returns
|
|
`unsigned char`.
|
|
(set_control_character): New public member function takes an
|
|
`unsigned char` and returns a `bool`.
|
|
(get_no_break_control_character):
|
|
(set_no_break_control_character): Similar.
|
|
* src/roff/troff/env.cpp (environment::environment): Update
|
|
constructors to use new field names and initialize them in their
|
|
new order of declaration.
|
|
(environment::copy): Similar. (Not to be confused with a copy
|
|
constructor, this member function implements the operation of a
|
|
valid `evc` GNU troff request.)
|
|
(environment::get_control_character):
|
|
(environment::set_control_character):
|
|
(environment::get_no_break_control_character):
|
|
(environment::set_no_break_control_character): Implement.
|
|
|
|
* src/roff/troff/env.cpp: Drop handling of `cc` and `c2`
|
|
requests.
|
|
(control_char, no_break_control_char): Drop implementations.
|
|
(init_env_requests): Drop `init_request` calls for them.
|
|
|
|
* src/roff/troff/input.cpp: Resurrect handling of `cc` and `c2`
|
|
requests here, with more error handling.
|
|
(assign_escape_character, process_input_stack): Use the new
|
|
getters defined above in environment object since the relevant
|
|
fields are now private.
|
|
(assign_control_character): New function assumes the former
|
|
responsibilities of env.cpp:control_char and rejects the request
|
|
if the desired character is already the escape or no-break
|
|
control character.
|
|
(assign_no_break_control_character): New function assumes the
|
|
former responsibilities of env.cpp:no_break_control_char and
|
|
rejects the request if the desired character is already the
|
|
escape or control character.
|
|
(process_input_stack): Reorder comparisons to avoid inadvertent
|
|
lvalue assignment. Add parentheses to assignment with complex
|
|
RHS.
|
|
(init_input_requests): Attach `cc` and `c2` requests to new
|
|
functions above.
|
|
* doc/groff.texi (Control Characters): Document restrictions.
|
|
|
|
2023-05-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Don't quote a character with itself in diagnostics.
|
|
|
|
* src/roff/troff/input.cpp (token::description)
|
|
(input_char_description): When quoting the ' character in
|
|
diagnostics, use double-quotes, not apostrophes.
|
|
|
|
2023-05-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Trivially refactor.
|
|
|
|
* src/roff/troff/input.cpp (top level, warnscale_request, main,
|
|
do_error): Rename global `warn_scaling_indicator` to
|
|
`warn_scaling_unit`, to align with our documentation.
|
|
|
|
2023-05-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Revise output warning diagnostic format.
|
|
|
|
* src/roff/troff/input.cpp (do_error): For the `OUTPUT_WARNING`
|
|
value of the `error_type` enum, spell out the words "page" and
|
|
"diversion" instead of abbreviating them, and place the
|
|
diversion information (if present) in parentheses.
|
|
|
|
2023-05-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Trivially refactor.
|
|
|
|
* src/roff/troff/reg.cpp (set_number_reg): Rename to...
|
|
(set_register): ...this.
|
|
* src/roff/troff/reg.h: Update extern reference.
|
|
* src/roff/troff/div.cpp (mark):
|
|
* src/roff/troff/input.cpp (length_request, do_register)
|
|
(token::add_to_zero_width_node_list, do_register_assignment)
|
|
(init_registers): Update call sites.
|
|
|
|
* src/roff/troff/div.cpp (interpolate_number_reg): Rename to...
|
|
(interpolate_register): ...this.
|
|
(get_copy, token::next, length_request, read_title_parts):
|
|
Update call sites.
|
|
* src/roff/troff/token.h: Update extern reference. Explicitly
|
|
declare as `extern`.
|
|
|
|
* src/roff/troff/reg.cpp (define_number_reg): Rename to...
|
|
(define_register): ...this.
|
|
(init_reg_requests): Update call site.
|
|
(set_number_reg): Rename to...
|
|
(set_register): ...this.
|
|
(print_number_regs): Rename to...
|
|
(print_registers): ...this.
|
|
|
|
* src/roff/troff/reg.cpp (lookup_number_reg): Rename to...
|
|
(look_up_register): ...this.
|
|
* src/roff/troff/input.cpp (interpolate_register): Update call
|
|
site.
|
|
* src/roff/troff/reg.h: Update extern reference. Explicitly
|
|
declare as `extern`.
|
|
|
|
2023-04-30 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Improve tests of line number accuracy.
|
|
|
|
* src/preproc/eqn/tests/\
|
|
diagnostics-report-correct-line-numbers.sh: Add cases to check
|
|
behavior of valid input, not just error cases. Also add some
|
|
unexecuted test cases for future use.
|
|
|
|
2023-04-29 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/include/lf.h (interpret_lf_args):
|
|
* src/libs/libgroff/lf.cpp (interpret_lf_args): Boolify.
|
|
|
|
2023-04-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tbl]: Fix Savannah #64122.
|
|
|
|
* src/preproc/tbl/table.cpp (table::init_output): Specify
|
|
scaling unit when using `hym` and `hys` requests. Continues
|
|
commit cee547e883, 30 January 2021.
|
|
|
|
Thanks to Frederic Chartier and Peter Schaffter for the report.
|
|
|
|
2023-04-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tbl]: Regression-test Savannah #64122.
|
|
|
|
* src/preproc/tbl/tests/\
|
|
save-and-restore-hyphenation-parameters.sh: Update input and add
|
|
check.
|
|
|
|
2023-04-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Drop `POPEN_MISSING` preprocessor macro.
|
|
|
|
3 source files test this macro but nothing appears to define it.
|
|
It dates back to (at least) 1994. I suspect this of being
|
|
bitrot. Reasons include: (1) We test for a declaration of
|
|
`popen` in our "configure.ac" file; (2) our gxditview command
|
|
uses `popen` _without_ #ifdef-guarding it (perhaps the
|
|
assumption was that any system that supported X11 also had a
|
|
working `popen`); (3) our "nonposix.h" header file defines a
|
|
macro aliasing `popen` to `_popen`, which is its typical name on
|
|
Windows systems, and is the most likely build host candidate for
|
|
which support might have been missing as late as 1994.
|
|
Microsoft end-of-lifed MS-DOS in 2000. If someone wants to
|
|
start up a FreeDOS port, talk to us. Maybe even that has a
|
|
functional `popen()`. Here's hopin'.
|
|
|
|
* src/roff/troff/input.cpp ([global], file_iterator::close)
|
|
(pipe_source, pipe_output, init_input_requests):
|
|
* src/roff/troff/node.cpp (class real_output_file)
|
|
(output_file::real_output_file, output_file::~real_output_file):
|
|
* src/roff/troff/node.h: Do it.
|
|
|
|
2023-04-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Implement new "gifont" primitive.
|
|
|
|
* src/preproc/eqn/eqn.ypp: Add token "GFONT" (to supplement
|
|
"GIFONT", already renamed from "GFONT".
|
|
* src/preproc/eqn/lex.cpp (struct token_table): Map "gifont" and
|
|
"gfont" inputs to "GIFONT" and "GFONT" tokens.
|
|
(do_gfont, do_gifont): Employ parallel implementations,
|
|
differing only in diagnostic message text.
|
|
(yylex): Handle token "GFONT" by calling `do_gfont()`.
|
|
|
|
* src/preproc/eqn/eqn.1.man (New primitives, Fonts, Options)
|
|
(Bugs): Document it.
|
|
* NEWS: Add item.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?63967>. Thanks to Damian
|
|
McGuckin, Doug McIlroy, and Ralph Corderoy for support and
|
|
suggestions.
|
|
|
|
2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/eqn/lex.cpp (do_include, do_undef, do_gsize)
|
|
(do_gifont, do_grfont, do_gbfont, do_space, do_chartype)
|
|
(do_set): Recast diagnostic messages to use terminology
|
|
established in man page, and use more idiomatic English in
|
|
phrasing. Distinguish which argument has the problem when
|
|
lexical analysis of "chartype" and "set" commands fails.
|
|
|
|
2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/eqn/lex.cpp (do_include, ignore_definition)
|
|
(do_definition, do_undef, do_gsize, do_gifont, do_grfont)
|
|
(do_gbfont, do_sprintf, do_ifdef, do_chartype, do_set): Recast
|
|
diagnostic messages to characterize input as "invalid" rather
|
|
than "bad".
|
|
|
|
2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[eqn]: Trivially refactor, renaming various globals from
|
|
containing "gfont" to "gifont", to make it clearer that they
|
|
deal with the italic font used by equations.
|
|
|
|
* src/preproc/eqn/box.cpp (gfont): Rename global char pointer
|
|
from this...
|
|
(gifont): ...to this.
|
|
* src/preproc/eqn/box.cpp (get_gfont, set_gfont):
|
|
* src/preproc/eqn/box.h (get_gfont, set_gfont):
|
|
* src/preproc/eqn/lex.cpp (do_gfont): Rename functions from
|
|
these...
|
|
* src/preproc/eqn/box.cpp (get_gifont, set_gifont):
|
|
* src/preproc/eqn/box.h (gifont, get_gifont, set_gifont):
|
|
* src/preproc/eqn/lex.cpp (do_gifont): ...to these.
|
|
* src/preproc/eqn/box.cpp (get_gifont, set_gifont): Update
|
|
global `gfont` access sites.
|
|
* src/preproc/eqn/box.cpp (box::top_level):
|
|
* src/preproc/eqn/eqn.ypp (simple):
|
|
* src/preproc/eqn/lex.cpp (do_gifont, yylex):
|
|
* src/preproc/eqn/main.cpp (main): Update call sites.
|
|
* src/preproc/eqn/eqn.ypp:
|
|
* src/preproc/eqn/lex.cpp (token_table, yylex): Rename "GFONT"
|
|
token type to "GIFONT".
|
|
|
|
2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/preproc/eqn/main.cpp (main): Prefix generated *roff
|
|
diagnostics with name of input file (the document). Use
|
|
`tmc`/`tm1` to coalesce multi-line diagnostic onto one line of
|
|
output to stderr. Tighten wording. Continues the long process
|
|
of fixing Savannah #52463.
|
|
|
|
2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/input.cpp (temp_iterator::temp_iterator):
|
|
Skip allocation of zero-length arrays. Resolves "-Walloc-zero"
|
|
warning from GCC.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?62398>. Thanks to Bjarni
|
|
Ingi Gislason for the report.
|
|
|
|
2023-04-02 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/input.cpp (token::description): Revise
|
|
construction of description of printable ordinary input
|
|
characters (U+0021 through U+007E). This is to facilitate
|
|
better diagnostics from the `rchar` request in the future. See
|
|
Savannah #63985.
|
|
|
|
2023-04-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/roff/troff/input.cpp (chop_macro)
|
|
(do_string_case_transform, substring_request, asciify_macro):
|
|
(unformat_macro, write_macro_request): When diagnosing
|
|
impossible operations on request names, report the name of the
|
|
request they were attempted upon.
|
|
* src/roff/groff/tests/string_case_xform_errors.sh: Update test
|
|
expectations.
|
|
|
|
2023-04-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[troff]: Make futile aliasing an error.
|
|
|
|
* src/roff/troff/input.cpp (alias_macro): Promote diagnostic
|
|
when attempting to alias a nonexistent macro/string/diversion
|
|
from warning to error; this aligns with the handling of the
|
|
requests `chop`, `stringup`, `stringdown`, `substring`,
|
|
`asciify`, `unformat`, and `writem` when they are regarded as
|
|
impossible. Further, attempting to alias a nonexistent object
|
|
does not create an empty one, unlike interpolating it; try ".als
|
|
baz qux", then ".pm".
|
|
* src/roff/troff/reg.cpp (alias_reg): Promote diagnostic when
|
|
attempting to alias a nonexistent register from warning to
|
|
error. Attempting to alias a nonexistent register does not
|
|
create an empty one, unlike interpolating it; try ".aln q r",
|
|
then ".pnr".
|
|
|
|
2023-03-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tbl]: Trivially refactor. Rename variables and functions to
|
|
use the term "rule" rather than "line". The value of the term
|
|
"rule" is that it is not confusable with "lines" of (text) input
|
|
or output.
|
|
|
|
* src/preproc/tbl/main.cpp (struct format) <vline>:
|
|
(format::format) <vline>:
|
|
(format::add_rows) <old_vline, vline>:
|
|
(format::~format) <vline>:
|
|
(struct input_entry_format) <vline, vline_count>:
|
|
(input_entry_format::input_entry_format) <vline, vline_count>:
|
|
(input_entry_format::debug_print) <vline, vline_count>:
|
|
(process_format) <vline_count>:
|
|
(process_data) ([anonymous] enum) <SINGLE_HLINE, DOUBLE_HLINE>:
|
|
* src/preproc/tbl/table.cpp:
|
|
* src/preproc/tbl/table.h (enum format_type) <FORMAT_HLINE,
|
|
FORMAT_DOUBLE_HLINE>
|
|
(class table) <vline, vline_spanned, ([anonymous] enum)
|
|
<HAS_TOP_VLINE, HAS_TOP_HLINE>, add_single_hline,
|
|
add_double_hline, add_vlines, print_single_hline,
|
|
print_double_hline: Rename these...
|
|
|
|
* src/preproc/tbl/main.cpp (struct format) <vrule>:
|
|
(format::format) <vrule>:
|
|
(format::add_rows) <old_vrule, vrule>:
|
|
(format::~format) <vrule>:
|
|
(struct input_entry_format) <vrule, vrule_count>:
|
|
(input_entry_format::input_entry_format) <vrule, vrule_count>:
|
|
(input_entry_format::debug_print) <vrule, vrule_count>:
|
|
(process_format) <vrule_count>:
|
|
(process_data) ([anonymous] enum) <SINGLE_HRULE, DOUBLE_HRULE>:
|
|
* src/preproc/tbl/table.cpp:
|
|
* src/preproc/tbl/table.h (enum format_type) <FORMAT_HRULE,
|
|
FORMAT_DOUBLE_HRULE>
|
|
(class table) <vrule, vrule_spanned, ([anonymous] enum)
|
|
<HAS_TOP_VRULE, HAS_TOP_HRULE>, add_single_hrule,
|
|
add_double_hrule, add_vrules, print_single_hrule,
|
|
print_double_hrule: ...to these.
|
|
|
|
2023-02-25 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tbl]: Fix Savannah #63838.
|
|
|
|
* src/preproc/tbl/table.cpp (table::add_entry): Throw error
|
|
diagnostic if table entry ends in the zero-motion escape
|
|
sequence `\z`. This is nonsense and provokes baffling
|
|
diagnostics from the formatter. Stick user's nose directly into
|
|
the problem.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?63838>. Thanks to the
|
|
mandoc(1) project for documenting the issue in a regression
|
|
test.
|
|
|
|
2023-04-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[build]: Improve portability to non-GNU, non-LLVM compilers.
|
|
|
|
* bootstrap.conf (gnulib_modules): Add "attribute".
|
|
* src/libs/libgroff/getopt.c:
|
|
* src/libs/libgroff/new.cpp: Include gnulib's "attribute.h"
|
|
header file.
|
|
* src/libs/libgroff/getopt.c (_getopt_initialize):
|
|
* src/libs/libgroff/new.cpp (operator delete): Replace GNU C
|
|
unused attribute syntax with gnulib's "MAYBE_UNUSED".
|
|
|
|
Thanks to Bruno Haible for the report and suggested remedy.
|
|
|
|
2023-03-16 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* src/libs/libxutil/XFontName.c (utoa): Rename function from
|
|
this...
|
|
(xu_utoa): ...to this, to avoid name collision when using
|
|
"newlib" portability library.
|
|
(XFormatFontName): Update call site.
|
|
* PROBLEMS: Drop item.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?63831>. Thanks to Brian
|
|
Inglis for the report.
|
|
|
|
2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[man]: Preserve user-selected font family.
|
|
|
|
* tmac/an.tmac: When initializing, save the currently selected
|
|
font family as `an*body-family` instead of forcing 'T' (Times,
|
|
which is the formatter's default, even on nroff-mode devices
|
|
that can't switch families). This change makes the formatter's
|
|
`-f` option work on man(7) documents again (important for
|
|
Japanese man pages, but there is now once again nothing stopping
|
|
you from viewing man pages in Palatino or Helvetica on the 'ps'
|
|
and 'pdf' devices where these families are available). It also
|
|
reopens an avenue for rogue pages to affect the rendering of
|
|
unrelated documents later in batch rendering, but there are many
|
|
other, and worse, ways for rogue pages to do damage. Problem
|
|
introduced by me in commit e0e16d8e65, 15 March 2022.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64130>. Thanks to Deri
|
|
James for the report.
|
|
|
|
2023-05-01 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[man]: Stop `HP` producing excess vertical space.
|
|
|
|
* tmac/an.tmac (HP): Fix thinko/typo when expanding macro as
|
|
string to call `an-deprecation-warn`.
|
|
* tmac/an-ext.tmac (SY): Put 1v of vertical space on the output
|
|
if we are starting a (non-nested) synopsis.
|
|
|
|
Thanks to Alex Colomar for the report. Problem introduced by me
|
|
in commit aea1dfb11b, 6 March 2022.
|
|
|
|
2023-04-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[ms]: Default vertical spacing to 120% of type size, not 2
|
|
points larger.
|
|
|
|
* tmac/s.tmac (par@load-init, par@init): Do it.
|
|
* NEWS: Add item.
|
|
|
|
2023-04-26 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[pdfpic]: Refactor.
|
|
|
|
* tmac/pdfpic.tmac: Migrate gathering of image dimensions from
|
|
`sy` and a temporary file to `pso`.
|
|
(pdfpic@cleanup): Drop `pdfpic*temporary-file` string.
|
|
(pdfpic@get-image-dimensions): Remove redirection. Invoke
|
|
`pso`, not `sy`.
|
|
(PDFPIC): Stop constructing `pdfpic*temporary-file` string.
|
|
Stop testing `systat` register. Stop sourcing and deleting
|
|
temporary file.
|
|
|
|
2023-04-21 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/pdfpic.tmac: Refactor to make comprehensible some
|
|
woefully undocumented cleverness and improve efficiency.
|
|
(PDFPIC): Break out flaming-hoop-leaping "clever" bit of `sy`
|
|
usage into its own macro, calling from here and relocating its
|
|
requests from here...
|
|
(pdfpic@get-image-dimensions): ...to here. When using `sy`
|
|
request to collect and munge output of pdfinfo(1), (a) disable
|
|
the escape character while defining the macro; (b) construct the
|
|
command in a roff string, appending to it in discrete, hopefully
|
|
comprehensible chunks; (c) disable the escape character during
|
|
macro interpretation wherever possible (most of it); (d) retain
|
|
doubled backslashes so that they survive subsequent string
|
|
interpolation; (e) stop using grep(1) in the pipeline when
|
|
sed(1) is perfectly capable of performing its own input
|
|
filtering; (f) invoke sed with '-n' option and emit output only
|
|
upon a successful substitution; (g) replace unportable(!) POSIX
|
|
BRE character class '[:digit:]' in substitution match text with
|
|
'[0-9]'; and most importantly (h) replace multi-line sed 's'
|
|
replacement text (see below for the reason we can't use it) with
|
|
single roff control line employing the groff extension escape
|
|
sequence `\R` to assign multiple registers. Annotate
|
|
portability and escaping challenges. Tested on GNU/Linux, macOS
|
|
12, and (with simulated pdfinfo(1) output) Solaris 11.
|
|
|
|
There is a problem with trying to embed true newlines into the
|
|
arguments of a `sy` request. The C++ function that GNU troff
|
|
uses to assemble the command string (character by character)
|
|
_does not recognize C/C++ string literal escape sequences_.
|
|
This means that you _cannot_ embed "\n" in `sy`'s arguments and
|
|
have it survive, as a newline character, into the command string
|
|
passed to the standard C library's system(3) function. ("A\nB"
|
|
gets encoded as 'A', '\\', 'n', 'B', not 'A', '\n', 'B'.)
|
|
Unfortunately, this appears to be AT&T troff-compatible
|
|
behavior. But it means that you _cannot_ portably construct
|
|
multi-line replacement text for sed's 's' command. (Other sed
|
|
commands like 'a', 'c', and 'i' will be similarly affected.)
|
|
See Savannah #64071.
|
|
|
|
* PROBLEMS: Drop item.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64061>. Thanks to Bruno
|
|
Haible for the report, and to him and Ralph Corderoy for the
|
|
discussion of portable and efficient sed constructs.
|
|
|
|
2023-04-27 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[pdfpic]: Clean up better.
|
|
|
|
* tmac/pdfpic.tmac (PDFPIC): Call `pdfpic@cleanup` before
|
|
returning when falling back to `PSPIC` for non-PDF documents.
|
|
|
|
2023-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/tty.tmac: Add angle bracket fallbacks.
|
|
|
|
Thanks to Mike Fulton for the report, and to Ralph Corderoy and
|
|
Dave Kemper for the discussion.
|
|
|
|
2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tests]: Add Spanish language support (5/5).
|
|
|
|
* src/roff/groff/tests/localization_works.sh:
|
|
* tmac/tests/e_ld-works.sh: Test it.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?63921>. Thanks to Eloi
|
|
Montañés.
|
|
|
|
2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[docs]: Add Spanish language support (4/5).
|
|
|
|
* doc/groff.texi (Manipulating Hyphenation):
|
|
* doc/ms.ms (Language and localization):
|
|
* man/groff_tmac.5.man (Localization files): Document it.
|
|
|
|
* NEWS: Add item.
|
|
|
|
2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tmac]: Add Spanish language support (3/5).
|
|
|
|
* tmac/hyphen.es:
|
|
* tmac/es.tmac: Update editor aids.
|
|
|
|
2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tmac]: Add Spanish language support (2/5).
|
|
|
|
* tmac/es.tmac: Spell weekday and month names in lowercase;
|
|
every style authority I could find online mandates this, and it
|
|
meshes with my half-remembered formal instruction in the
|
|
language. Fix groff composite special character escape
|
|
sequences to place the base character first. Replace one
|
|
Unicode special character escape sequence with a composite
|
|
special character escape sequence, for consistency.
|
|
|
|
2023-03-13 Eloi Montañés <em@ilsrv.com>
|
|
|
|
[tmac]: Add Spanish language support (1/5).
|
|
|
|
* tmac/hyphen.es: Add hyphenation patterns (encoded in Latin-9).
|
|
* tmac/es.tmac: Add groff locale for Spanish.
|
|
* tmac/tmac.am (TMACNORMALFILES): Ship new files.
|
|
* doc/groff.texi (Manipulating Hyphenation): Add file/package
|
|
index entry for "es.tmac".
|
|
* LICENSES: Update for CTAN Spanish hyphenation patterns.
|
|
|
|
2023-03-09 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tests]: Add Russian language support (7/7).
|
|
|
|
* src/roff/groff/tests/localization_works.sh:
|
|
* tmac/tests/e_ld-works.sh: Test it.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?63076>. Thanks to Nikita
|
|
Ivanov.
|
|
|
|
2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[docs]: Add Russian language support (6/7).
|
|
|
|
* doc/groff.texi (Input Encodings, Manipulating Hyphenation):
|
|
* doc/ms.ms (Language and localization):
|
|
* man/groff_tmac.5.man (Localization packages, Input encodings):
|
|
Document support for KOI8-R encoding and Russian language.
|
|
|
|
2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tmac]: Add Russian language support (5/7).
|
|
|
|
* tmac/tmac.am (TMACNORMALFILES): Ship new Russian language
|
|
support files.
|
|
|
|
2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tmac]: Add Russian language support (4/7).
|
|
|
|
* tmac/koi8-ru.tmac: Rename this file...
|
|
* tmac/koi8-r.tmac: ...to this. There _is_ a "KOI8-RU"
|
|
encoding, which appears to subsume KOI8-B and KOI8-U (by
|
|
replacing more box drawing characters), but this file does not
|
|
remap their values to applicable Unicode code points.
|
|
* tmac/ru.tmac: Load the encoding file under its new name.
|
|
|
|
2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[tmac]: Add Russian language support (3/7).
|
|
|
|
* tmac/hyphen.ru:
|
|
* tmac/ru.tmac: Update editor aids so these files can be edited
|
|
more intelligibly using GNU Emacs. Annotate apparent problem
|
|
with Vim's KOI8-R support.
|
|
|
|
2023-03-08 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
Add Russian language support (2/7).
|
|
|
|
LICENSES: Update for CTAN Russian hyphenation patterns.
|
|
|
|
2023-03-08 Nikita Ivanov <nikita.vyach.ivanov@gmail.com>
|
|
|
|
[tmac]: Add Russian language support (1/7).
|
|
|
|
* tmac/hyphen.ru: Add hyphenation patterns (encoded in KOI8-R).
|
|
* tmac/koi8-ru.tmac: Add character encoding support.
|
|
* tmac/ru.tmac: Add groff locale for Russian.
|
|
|
|
2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/s.tmac (@EQ): Trivially refactor. Shift valid
|
|
pseudo-enumeration type values from 0..2 to 1..3 so that they
|
|
more idiomatically test for truth values in roff (where zero and
|
|
negative values are false). Simplify a conditional accordingly.
|
|
|
|
2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[ms]: Fix Savannah #64013.
|
|
|
|
* tmac/s.tmac (@EQ): Revise argument handling. If there is only
|
|
one argument and it is not a recognized alignment, warn and
|
|
treat it as an equation label. If there are two arguments but
|
|
the first is not a recognized alignment, throw a warning
|
|
diagnostic (but still use default alignment with the second
|
|
argument as label). An explicitly empty first argument is
|
|
synonymous with "C".
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64013>.
|
|
|
|
2023-04-07 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[ms]: Regression-test Savannah #64013.
|
|
|
|
* tmac/tests/s_EQ-handles-empty-first-arg.sh: Do it.
|
|
* tmac/tmac.am (tmac_TESTS): Run test.
|
|
|
|
2023-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[ms]: Fix Savannah #64005.
|
|
|
|
* tmac/s.tmac (@break-page, bp): Define alias for `bp` request
|
|
and wrapper for `bp` to (if needed) temporarily disable no-space
|
|
mode, so that a document's `bp` requests are honored even if
|
|
no-space mode is on, as can happen after displays. Fixes a
|
|
regression from groff 1.22.4 and historical ms implementations
|
|
introduced by me on 6 July when resolving Savannah #62688.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64005>. Thanks to Michał
|
|
Kruszewski for reporting the problem and Dave Kemper for
|
|
identifying the cause.
|
|
|
|
2023-04-05 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[ms]: Regression-test Savannah #64005.
|
|
|
|
* tmac/tests/s_honor-page-break-after-display.sh: Do it.
|
|
* tmac/tmac.am (tmac_TESTS): Run test.
|
|
|
|
2023-03-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/mdoc/doc-common (Sh): Restore hyphenation configured with
|
|
`HY` register upon entry to any new section. Disable adjustment
|
|
and hyphenation when in the "Synopsis" section.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?63957>. Thanks to Alex
|
|
Colomar for reporting an issue that brought this one to light.
|
|
|
|
2023-03-24 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[mdoc]: Regression-test Savannah #63957.
|
|
|
|
* tmac/tests/doc_synopsis_is_not_adjusted.sh: Do it.
|
|
* tmac/tmac.am (tmac_TESTS): Run test.
|
|
|
|
2023-03-14 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/tmac.am (tmac/stamp-wrap): Stop prepending groff's man(7)
|
|
package wrapper ("-man") on hosts with a system man package with
|
|
a request to source itself; this was search-and-replace damage
|
|
from resolving Savannah #60789. The wrapper still worked, but
|
|
reported any errors inside the wrapped macro package many times
|
|
until the process ran out of file descriptors. Problem
|
|
introduced by me in commit fdac25937f, 2021-07-05.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?63924>.
|
|
|
|
2023-05-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* tmac/tests/an-ext_SY-and-YS-work.sh: Add test.
|
|
* tmac/tmac.am (tmac_TESTS): Run test.
|
|
|
|
2023-04-28 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[build]: Skip an Autoconf check if not necessary.
|
|
|
|
* m4/groff.m4 (GROFF_PNMTOPS_NOSETPAGE): Skip check if no
|
|
"pnmtops" command was found.
|
|
|
|
2023-04-06 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[doc]: Abstract document dependencies on the mom package.
|
|
|
|
* doc/doc.am (doc/automake.pdf): Replace dependency with new
|
|
macro `TMAC_PACKAGE_MOM`.
|
|
|
|
Aligns with <https://savannah.gnu.org/bugs/?62541> (4/4).
|
|
|
|
2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[doc]: Add document dependencies on the ms package.
|
|
|
|
* tmac/tmac.am (TMAC_PACKAGE_MS): Define new macro comprising
|
|
the files of the ms package.
|
|
* doc/doc.am (doc/ms.ps, doc/webpage.ps, doc/pic.html)
|
|
(doc/pic.ps): Add dependency on new macro.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?62541> (2/4).
|
|
|
|
2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[doc]: Add document dependencies on the "me" package.
|
|
|
|
* tmac/tmac.am (TMAC_PACKAGE_ME): Define new macro comprising
|
|
the files of the "me" package.
|
|
* doc/doc.am (doc/grnexmpl.ps, doc/meintro.ps)
|
|
(doc/meintro_fr.ps, doc/meref.ps): Add dependency on new macro.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?62541> (1/4).
|
|
|
|
2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[build]: Install PDF documents better. Ship only one copy of
|
|
"automake.pdf", and install it and the new "groff-man-pages.pdf"
|
|
in the "pdf/" subdirectory of the destination "doc" directory.
|
|
|
|
* doc/doc.am (PROCESSEDDOCFILES): Drop
|
|
"$(PROCESSEDDOCFILES_PDF)" from macro definition.
|
|
(nodist_docpdfdoc_DATA) [USE_GROPDF]: Use it here instead,
|
|
replacing a literal "doc/automake.pdf".
|
|
(mostlyclean-doc) [USE_GROPDF]: Clean these same files.
|
|
|
|
2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[build]: Ship groff.dvi (our Texinfo manual in DVI format).
|
|
|
|
* doc/doc.am (install-dvi-local, uninstall-dvi): Add targets.
|
|
(uninstall-local): Depend on "uninstall-dvi".
|
|
|
|
2023-04-03 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[build]: Resume shipping pic.html.
|
|
|
|
* m4/groff.m4 (GROFF_CHECK_GROHTML_PROGRAMS)
|
|
(GROFF_GROHTML_PROGRAM_NOTICE, GROFF_PNMTOOLS_CAN_BE_QUIET):
|
|
Rename "make_htmldoc" to "use_grohtml" as expected by
|
|
"configure.ac". Also stop `AC_SUBST`ing it; we don't need
|
|
"@use_grohtml@" in our Makefiles since an `AM_CONDITIONAL` in
|
|
configure.ac already does an equivalent thing. Continues commit
|
|
aa5787c1eb by me from 20 May.
|
|
(PROCESSEDDOCFILES): Drop "$(PROCESSEDDOCFILES_HTML)" from macro
|
|
definition; annotate why.
|
|
|
|
2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
m4/groff.m4 (GROFF_TMAC): Eliminate garbage leading space from
|
|
contents of `tmac_wrap` shell variable.
|
|
|
|
2023-03-13 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[build]: Clarify output of `GROFF_TMAC` Autoconf test.
|
|
|
|
* configure.ac: Correct characterization of the list of macro
|
|
packages reported. It is not the list of macro packages
|
|
receiving a "g" prefix, but the list of macro packages reciving
|
|
a wrapper macro file in groff's macro directory, each of which
|
|
sources the corresponding system (likely AT&T-descended troff)
|
|
macro package. Fixes wording I introduced in commit 4d30dd7424,
|
|
31 May.
|
|
* m4/groff.m4 (GROFF_TMAC): Clarify first "checking" message:
|
|
we are looking for a file name prefix on existing system macro
|
|
packages (like "tmac."). This has nothing to do with the prefix
|
|
applied to groff commands, or the "g" prefixed to groff
|
|
implementations of the man, mm, and ms packages. Tighten
|
|
wording of second "checking" message. Consistently say "(none)"
|
|
instead of "none" or "none found".
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?63900>.
|
|
|
|
2023-03-11 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* doc/doc.am (install-txt): Look for "groff.txt" in the source
|
|
and build directories in sequence; it could be in either place
|
|
depending on whether the build is from the Git repository or
|
|
from a distribution archive. Annotate this. Fixes
|
|
"install-doc" target when building from Git repository. Problem
|
|
introduced by me in commit 691fc70108, 22 February. Thanks to
|
|
Nikita Ivanov for the report.
|
|
(install-pdf-local, install-html-local): Similar.
|
|
|
|
Also fixes <https://savannah.gnu.org/bugs/?64059>, later
|
|
reported anonymously.
|
|
|
|
2023-03-10 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* doc/doc.am (maintainer-clean-local): Remove temporary "*.t2d"
|
|
and "*.t2p" directories created by texi2dvi.
|
|
|
|
2023-04-20 Bruno Haible <bruno@clisp.org>
|
|
|
|
[build]: Fix gxditview linking on AIX.
|
|
|
|
* m4/groff.m4 (GROFF_X11): Add macro dependency on
|
|
`AC_CANONICAL_HOST`. Introduce new variable `X_AW_DEPS`, empty
|
|
on most hosts. If we otherwise have Athena widget library
|
|
support, and the host is AIX, force linkage against Xpm and Xext
|
|
libraries to reflect modern Athena dependencies, which AIX's
|
|
linker doesn't figure out on its own. `AC_SUBST` this variable,
|
|
exposing it to Automake files.
|
|
* src/devices/xditview/xditview.am (gxditview_LDADD): Use it.
|
|
|
|
{A similar change might also be useful for HP-UX, another Unix
|
|
System V descendant; see
|
|
<http://hpux.connect.org.uk/hppd/cgi-bin/wwwtar?/hpux/Gnu/\
|
|
groff-1.23.0/groff-1.23.0-src-11.31.tar.gz+groff-1.23.0/\
|
|
HPUX.Install+text>. --GBR, 2023-07-10}
|
|
|
|
2023-04-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* bootstrap.conf (gnulib_modules): Add "sys_wait" module. MinGW
|
|
does not provide "sys/wait.h", which we require in
|
|
src/preproc/html/pre-html.cpp since commit 11137209ed, 27 June.
|
|
|
|
2023-04-20 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
* Makefile.am: Initialize (as empty) Automake variables that we
|
|
don't use but which gnulib modules expect to be defined.
|
|
(AUTOMAKE_OPTIONS, SUBDIRS, noinst_HEADERS, noinst_LTLIBRARIES)
|
|
(pkgdata_DATA, MOSTLYCLEANDIRS, AM_CFLAGS): Do it.
|
|
|
|
Thanks to Bruno Haible for the advice.
|
|
|
|
2023-04-22 G. Branden Robinson <g.branden.robinson@gmail.com>
|
|
|
|
[mdoc]: Regression-test Savannah #57665, but for mdoc.
|
|
|
|
* tmac/tests/doc_TS-do-not-keep-tables-when-cR-set.sh: Do it.
|
|
* tmac/tmac.am (tmac_TESTS): Run test.
|
|
|
|
Fixes <https://savannah.gnu.org/bugs/?64037>.
|
|
|
|
|
|
|
|
________________________________________________________________________
|
|
|
|
##### License
|
|
|
|
Copyright 2023 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:
|