gbranden pushed a commit to branch master
in repository groff.

commit ca100e202dc0841e95d80a3e7d86412195d57854
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Sun Jul 20 14:34:24 2025 -0500

    [man]: Paragraphing macros reset hyphenation mode.
    
    * tmac/an.tmac (an*reset-paragraph-parameters): Call
      `an*reset-hyphenation-mode`.
    
      (TH): Stop calling `an*reset-hyphenation-mode`.
    
    * tmac/groff_man.7.man.in (Paragraphing macros): Document paragraphing
      macros' restoration of configured hyphenation mode.
---
 ChangeLog               |  8 ++++++++
 tmac/an.tmac            | 24 ++++++++++++++++++++----
 tmac/groff_man.7.man.in |  3 ++-
 3 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8214a1cf2..27acfa0f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2025-07-20  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       * tmac/an.tmac (an*reset-paragraph-parameters): Call
+       `an*reset-hyphenation-mode`.
+       (TH): Stop calling `an*reset-hyphenation-mode`.
+       * tmac/groff_man.7.man.in (Paragraphing macros): Document
+       paragraphing macros' restoration of configured hyphenation mode.
+
 2025-07-20  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        [man]: Add `mN` register to track whether we're setting a
diff --git a/tmac/an.tmac b/tmac/an.tmac
index 4a05de6cc..d94af8f76 100644
--- a/tmac/an.tmac
+++ b/tmac/an.tmac
@@ -122,7 +122,24 @@
 .  el         .an*break-page-with-new-number
 ..
 .
-.\" `TH` and localization macro files call this.
+.\" Resetting the hyphenation mode is a complicated dance because:
+.\"   1.  Man pages sometimes disable automatic hyphenation--when they
+.\"       do, they nearly always forget to put it back the way it was;
+.\"   2.  in AT&T troff there was no register exposing the hyphenation
+.\"       mode (nor the enablement status of automatic hyphenation), so
+.\"       no idioms for performing such restoration have arisen;
+.\"   3.  groff man(7)'s `HY` register isn't supported everywhere;
+.\"   4.  we want user preferences, if expressed, to override the page
+.\"       author's; and
+.\"   5.  even if we didn't want (4), one page author's can override
+.\"       another's when formatting multiple man(7) documents in
+.\"       sequence--we thus keep track of the initial hyphenation mode.
+.\"
+.\" So we recover the "page's" preferred hyphenation mode, if expressed
+.\" via `HY`, at every paragraph (and (sub)sectioning macro call; and
+.\" recover the user's preferred hyphenation mode at each new document.
+.\"
+.\" Also see the initialization logic below.
 .de an*reset-hyphenation-mode
 .  nr an*want-hyphenation 1
 .  if r HY .if !\\n[HY] .nr an*want-hyphenation 0
@@ -155,7 +172,7 @@
 .  ps \\n[PS]u
 .  vs \\n[VS]u
 .  \" TODO: ad \\*[AD]
-.  \" TODO: hy \\n[HY]
+.  an*reset-hyphenation-mode
 ..
 .
 .\" This logic would be part of `an*reset-paragraph-parameters`, but
@@ -294,7 +311,6 @@
 .  an*reset-paragraph-parameters
 .  ll \\n[LL]u
 .  in 0 \" Well-formed documents call `SH` after `TH`.
-.  an*reset-hyphenation-mode
 .  an*reset-tab-stops
 .  an*reset-paragraph-spacing
 .
@@ -1548,7 +1564,7 @@ contains unsupported escape sequence
 .  \}
 .\}
 .
-.\" We handle `HY` in the `TH` macro definition, not here.
+.\" We handle `HY` in `an*reset-hyphenation-mode`, not here.
 .
 .\" standard indentation
 .if !r IN \{\
diff --git a/tmac/groff_man.7.man.in b/tmac/groff_man.7.man.in
index a57d65eee..8a2ce3c96 100644
--- a/tmac/groff_man.7.man.in
+++ b/tmac/groff_man.7.man.in
@@ -840,7 +840,8 @@ see subsection \[lq]Horizontal and vertical spacing\[rq] 
below.
 Except for
 .BR TQ ,
 these macros
-reset the type size and font style to defaults.
+reset the type size and font style to defaults,
+and restore the configured hyphenation mode.
 .\" slack wording for managing stranded lines in PS/PDF output
 .\" [end previous text line with semicolon, not period]
 .\"see subsections \[lq]Font style macros\[rq] and \[lq]Options\[rq]

_______________________________________________
groff-commit mailing list
groff-commit@gnu.org
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to