gbranden pushed a commit to branch master
in repository groff.
commit 049a1f2313a2b22b573c8e972a2363a5acb0c850
Author: G. Branden Robinson <[email protected]>
AuthorDate: Wed Jul 16 10:36:16 2025 -0500
[mdoc]: Refactor hyphenation mode handling.
* tmac/doc.tmac: Refactor.
([initialization]): Stop assigning `HY` register a default value if
it's unspecified by the user (on the command line or via "man.local").
(doc-reset-args): Stop resetting hyphenation mode here; replacing it
with a call to `doc-reset-hyphenation-mode` causes infinite macro
recursion. (Will this bite us later?)
(doc-print-reference): Call `doc-reset-hyphenation-mode` instead of
manipulating automatic hyphenation mode directly.
* tmac/mdoc/doc-common ([initialization]): Drop logic that sets up
`doc-hyphen-flags` register, which we're retiring in favor of a new
macro.
(Dd, Nd): Call `doc-reset-hyphenation-mode`. The lack of a
hyphenation mode reset in the latter macro was apparently an
oversight, caught by a forthcoming automated test.
(doc-reset-hyphenation-mode): New macro works if the `HY` register is
not defined. Use new local register `doc-want-hyphenation` to
determine which hyphenation mode ultimately gets set (that of the
locale, or zero). Remove register when done.
(Sh): Call `doc-reset-hyphenation-mode` instead of manipulating
automatic hyphenation mode directly.
---
ChangeLog | 27 +++++++++++++++++++++++++++
tmac/doc.tmac | 11 ++---------
tmac/mdoc/doc-common | 33 +++++++++++++++++++++++----------
3 files changed, 52 insertions(+), 19 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 8f837bfc7..d0184bb5c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2025-07-16 G. Branden Robinson <[email protected]>
+
+ [mdoc]: Refactor hyphenation mode handling.
+
+ * tmac/doc.tmac: Refactor.
+ ([initialization]): Stop assigning `HY` register a default value
+ if it's unspecified by the user (on the command line or via
+ "man.local").
+ (doc-reset-args): Stop resetting hyphenation mode here;
+ replacing it with a call to `doc-reset-hyphenation-mode` causes
+ infinite macro recursion. (Will this bite us later?)
+ (doc-print-reference): Call `doc-reset-hyphenation-mode` instead
+ of manipulating automatic hyphenation mode directly.
+ * tmac/mdoc/doc-common ([initialization]): Drop logic that sets
+ up `doc-hyphen-flags` register, which we're retiring in favor of
+ a new macro.
+ (Dd, Nd): Call `doc-reset-hyphenation-mode`. The lack of a
+ hyphenation mode reset in the latter macro was apparently an
+ oversight, caught by a forthcoming automated test.
+ (doc-reset-hyphenation-mode): New macro works if the `HY`
+ register is not defined. Use new local register
+ `doc-want-hyphenation` to determine which hyphenation mode
+ ultimately gets set (that of the locale, or zero). Remove
+ register when done.
+ (Sh): Call `doc-reset-hyphenation-mode` instead of manipulating
+ automatic hyphenation mode directly.
+
2025-07-17 G. Branden Robinson <[email protected]>
[mdoc]: Disable hyphenation less aggressively.
diff --git a/tmac/doc.tmac b/tmac/doc.tmac
index 70cb79c74..2aa974511 100644
--- a/tmac/doc.tmac
+++ b/tmac/doc.tmac
@@ -213,12 +213,7 @@
.rr doc-HF-length
.rm doc-heading-style
.
-.\" \n[HY] is recognized for groff_man(7) compatibility, particularly
-.\" via andoc.tmac and man(1); see \n[doc-hyphen-flags] in doc-common.
-.\"
-.\" hyphenation enablement
-.if !r HY \
-. nr HY 1
+.\" `doc-reset-hyphenation-mode` handles the `HY` register.
.
.\" groff mdoc does _not_ use groff man's `IN` register.
.
@@ -561,8 +556,6 @@
. nr doc-arg-count 0
. nr doc-arg-ptr 0
. nr doc-have-slot 0
-.
-. hy \n[doc-hyphen-flags]
..
.ec
.
@@ -5881,7 +5874,7 @@ arguments
. if \n[doc-reference-count] \
. doc-warn unresolved reference problem
.
-. hy \n[doc-hyphen-flags]
+. doc-reset-hyphenation-mode
..
.ec
.
diff --git a/tmac/mdoc/doc-common b/tmac/mdoc/doc-common
index 314083129..dea488c5a 100644
--- a/tmac/mdoc/doc-common
+++ b/tmac/mdoc/doc-common
@@ -309,6 +309,7 @@
. if \n[C] .rr P
.
. doc-reset-titles
+. doc-reset-hyphenation-mode
.
. if !\n[.$] \
. doc-warn .Dd directive expects an argument
@@ -989,15 +990,6 @@
.ec
.
.
-.\" NS doc-hyphen-flags global register
-.\" NS the parameter for the '.hy' request
-.ie \n[HY] \{\
-. ie \n[cR] .nr doc-hyphen-flags \n[\*[locale]*hyphenation-mode-base]
-. el .nr doc-hyphen-flags \n[\*[locale]*hyphenation-mode-trap]
-.\}
-.el .nr doc-hyphen-flags 0
-.
-.
.\" NS doc-header macro
.\" NS print page header
.\" NS
@@ -1135,6 +1127,26 @@
.ec
.
.
+.\" NS doc-reset-hyphenation-mode
+.\" NS Repair automatic hyphenation after man page meddling.
+.
+.eo
+.de doc-reset-hyphenation-mode
+. nr doc-want-hyphenation 1
+. if r HY .ie !\n[HY] .nr doc-want-hyphenation 0
+. ie \n[doc-want-hyphenation] \{\
+. ie \n[cR] \
+. nr doc-hyphenation-mode \n[\*[locale]*hyphenation-mode-base]
+. el \
+. nr doc-hyphenation-mode \n[\*[locale]*hyphenation-mode-trap]
+. \}
+. el .nr doc-hyphenation-mode 0
+. hy \n[doc-hyphenation-mode]
+. rr doc-want-hyphenation
+..
+.ec
+.
+.
.\" NS doc-end-macro macro
.\" NS finish output
.\" NS
@@ -1254,6 +1266,7 @@
.
.eo
.de Nd
+. doc-reset-hyphenation-mode
. nop \[em] \$*
..
.ec
@@ -1420,7 +1433,7 @@
. doc-parse-args \$@
.
. ad \*[AD]
-. hy \n[HY]
+. doc-reset-hyphenation-mode
.
. ie "\*[doc-sec-head]"\*[doc-section-name]" \{\
. doc-set-up-titles
_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit