Follow-up Comment #6, bug #64466 (group groff): Revised patch.
diff --git a/ChangeLog b/ChangeLog index b187d7026..126b06bb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2026-09-03 G. Branden Robinson <[email protected]> + + [ms]: Improve diagnostics involving keeps/diversions. + + * tmac/s.tmac: Introduce new Boolean-valued register in `kp` + module, `kp*in-keep`, tracking that element of package state. + (pg@super-eject): Enhance diagnostic to supply a hint about why + a diversion might still be open when the document ends. + (KS, KF): Check `kp*in-keep`; if already true, throw error + diagnostic and return early. Otherwise, make it true. + (KE): Make `kp*in-keep` false. Clarify error diagnostic. + + Fixes <https://savannah.gnu.org/bugs/?64466>. Thanks to Doug + McIlroy for the report. + 2026-09-03 G. Branden Robinson <[email protected]> * configure.ac: Defeat C23/C++23 presumption. We want to be diff --git a/tmac/s.tmac b/tmac/s.tmac index 92a664a9a..98fc11cfb 100644 --- a/tmac/s.tmac +++ b/tmac/s.tmac @@ -834,7 +834,8 @@ .de pg*footer .de pg@super-eject .br .if !'\\n(.z'' \{\ -. ds @msg diversion open while ejecting page\" +. ds @msg diversion open while ejecting page;\" +. as @msg " possible .KS/.KF/.KE mismatch\" . as @msg " (last file seen: \\*[@last-file-seen])\" . @error-recover \\*[@msg] . rm @msg @@ -1047,12 +1048,23 @@ .de fn@print-sep .\" ******** module kp ******** .\" *************************** .\" Keeps. +.nr kp*in-keep 0 .de KS .br +.if \\n[kp*in-keep] \{\ +. @error ignoring .\\$0: cannot nest keeps +. return +.\} +.nr kp*in-keep 1 .di kp@div .. .de KF +.if \\n[kp*in-keep] \{\ +. @error ignoring .\\$0: cannot nest keeps +. return +.\} .if !'\\n(.z'' .@error-recover .KF while diversion open +.nr kp*in-keep 1 .di kp@fdiv .ev k .if \\n[@is-initialized] \{\ @@ -1062,9 +1074,10 @@ .de KF .. .de KE .nr kp*did-closure-succeed 0 +.nr kp*in-keep 0 .if '\\n(.z'kp@div' .kp*end .if '\\n(.z'kp@fdiv' .kp*fend -.if !\\n[kp*did-closure-succeed] .@error .KE without .KS or .KF +.if !\\n[kp*did-closure-succeed] .@error .KE without (valid) .KS or .KF .rr kp*did-closure-succeed .. .de @div-end!kp@div _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?64466> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/
signature.asc
Description: PGP signature
