gbranden pushed a commit to branch master
in repository groff.
commit 2780ea875f20a399739de658b2cb55c42a676fe4
Author: G. Branden Robinson <[email protected]>
AuthorDate: Wed Aug 20 11:39:52 2025 -0500
[hdtbl]: Continue fixing Savannah #52463.
* contrib/hdtbl/hdtbl.tmac: Define new `hdtbl` string containing the
(canonical) file name of the macro package, so that it can announce
itself in diagnostic messages.
* contrib/hdtbl/hdmisc.tmac (t*EM):
* contrib/hdtbl/hdtbl.tmac (TBL, CPTN, TR, TH, TD, ETB, t*free, t*cl)
(t*dntr, t*args, t*hm): Prefix diagnostic messages with it.
Continues fixing <https://savannah.gnu.org/bugs/?52463>.
---
contrib/hdtbl/ChangeLog | 12 +++++
contrib/hdtbl/hdmisc.tmac | 14 +++---
contrib/hdtbl/hdtbl.tmac | 113 ++++++++++++++++++++++++++++------------------
3 files changed, 89 insertions(+), 50 deletions(-)
diff --git a/contrib/hdtbl/ChangeLog b/contrib/hdtbl/ChangeLog
index bd020b747..57e1c1341 100644
--- a/contrib/hdtbl/ChangeLog
+++ b/contrib/hdtbl/ChangeLog
@@ -1,3 +1,15 @@
+2025-08-20 G. Branden Robinson <[email protected]>
+
+ * hdtbl.tmac: Define new `hdtbl` string containing the
+ {canonical} file name of the macro package, so that it can
+ announce itself in diagnostic messages.
+
+ * hdmisc.tmac (t*EM):
+ * hdtbl.tmac (TBL, CPTN, TR, TH, TD, ETB, t*free, t*cl, t*dntr)
+ (t*args, t*hm): Prefix diagnostic messages with it.
+
+ Continues fixing <https://savannah.gnu.org/bugs/?52463>.
+
2025-08-20 G. Branden Robinson <[email protected]>
* hdtbl.tmac (TH): Confirm (just as `TR` does) that macro usage
diff --git a/contrib/hdtbl/hdmisc.tmac b/contrib/hdtbl/hdmisc.tmac
index 298bc8cc0..6df2d782a 100644
--- a/contrib/hdtbl/hdmisc.tmac
+++ b/contrib/hdtbl/hdmisc.tmac
@@ -304,15 +304,17 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
.de t*EM
.
. if !"\\*[t*kept]"" \{\
-. tm1 "hdtbl: Not all tables have been printed.
-. tm1 " Add '.bp' at the end of your document.
+. tmc \*[hdtbl]: Not all tables have been printed.
+. tm1 " Add '.bp' at the end of your document.
. \}
. if !"\\*[t*held]"" \{\
-. tm1 "hdtbl: There are held tables which haven't been printed.
-. tm1 " Add '.t*free' at the end of your document.
+. tmc \*[hdtbl]: There are held tables which haven't been printed.
+. tm1 " Add '.t*free' at the end of your document.
+. \}
+. if \\n[t*#] \{\
+. tmc \*[hdtbl]: Missing '.ETB' macro; last .TBL in \\*[t*FN] at line
+. tm1 " \\*[t*LN].
. \}
-. if \\n[t*#] \
-. tm hdtbl: Missing '.ETB' macro; last .TBL in \\*[t*FN] at line \\*[t*LN].
..
.
.
diff --git a/contrib/hdtbl/hdtbl.tmac b/contrib/hdtbl/hdtbl.tmac
index e901a22b2..9504a5112 100644
--- a/contrib/hdtbl/hdtbl.tmac
+++ b/contrib/hdtbl/hdtbl.tmac
@@ -27,6 +27,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
.if d TBL \
. nx
.
+.ds hdtbl hdtbl.tmac\"
+.
.mso hdmisc.tmac
.mso 62bit.tmac
.
@@ -114,8 +116,10 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. el \{\
. ie \B\\*[cols] \
. nr t*cols\\n[t*#] \\*[cols]
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid number of columns value '\\*[cols]'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid number of columns value
+. tm1 " '\\*[cols]'.
+. \}
. \}
.
. t*getarg cpd \\*[args] \" cell padding
@@ -124,8 +128,10 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. el \{\
. ie \B\\*[cpd] \
. nr t*cpd\\n[t*#] \\*[cpd]
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid cell padding value '\\*[cpd]'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid cell padding value
+. tm1 " '\\*[cpd]'.
+. \}
. \}
.
. t*getarg csp \\*[args] \" cell spacing
@@ -134,8 +140,10 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. el \{\
. ie \B\\*[csp] \
. nr t*csp\\n[t*#] \\*[csp]
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid cell spacing value '\\*[csp]'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid cell spacing value
+. tm1 " '\\*[csp]'.
+. \}
. \}
.
. t*getarg border \\*[args] \" border thickness
@@ -147,8 +155,10 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. el \{\
. ie \B\\*[border] \
. nr t*b\\n[t*#] \\*[border]
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid border thickness value '\\*[border]'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid border thickness
+. tm1 " value '\\*[border]'.
+. \}
. \}\}
.
. t*getarg bc \\*[args] \" border color
@@ -160,7 +170,7 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. ie "\\*[bc]"=" \
. ds t*bc\\n[t*#] =\"
. el \
-. tm \\n[.F]:\\n[.c]: Invalid border color '\\*[bc]'.
+. tm \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid border color '\\*[bc]'.
. \}\}
. ie "\\*[bc]"=" \
. ds t*bc\\n[t*#]
@@ -187,7 +197,7 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
- ((2 * \\n[cscp\\n[t*#]]) \
+ (3 * \\n[b/2\\n[t*#]])))
. el \
-. tm \\n[.F]:\\n[.c]: Invalid height value '\\*[height]'.
+. tm \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid height value '\\*[height]'.
. \}
.
. t*cl \\*[width] \" get cell widths and offsets
@@ -205,8 +215,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. ie "\\*[tal]"r" \
. nr in\\n[t*#] (\\n[.l] - \\n[ll\\n[t*#]] + \\n[.i])
. el \{\
-. tmc \\n[.F]:\\n[.c]: Invalid horizontal table alignment '\\*[tal]':
-. tm1 " must be 'l', 'c' or 'r'.
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid horizontal table
+. tm1 " alignment '\\*[tal]': must be 'l', 'c' or 'r'.
. \}\}\}
.
. nr t*r#\\n[t*#] 0 \" initialize row index
@@ -224,7 +234,7 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
.
. if "\\$0"CPTN" \
. if \\n[t*r#\\n[t*#]] \{\
-. tmc \\n[.F]:\\n[.c]: Invalid placement of '.CPTN';
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid placement of '.CPTN';
. tm1 " must be called immediately after '.TBL'.
. return
. \}
@@ -270,7 +280,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
.de TR
. ft 1
. if !\\n[t*#] \{\
-. tm \\n[.F]:\\n[.c]: Table row (.TR) without preceding table start (.TBL).
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Table row (.TR) without preceding
+. tm1 " table start (.TBL).
. return
. \}
.
@@ -290,8 +301,10 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. el \{\
. ie \B\\*[height] \
. nr t*height\\*[#t#r] \\*[height]
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid table row height '\\*[height]'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid table row height
+. tm1 " '\\*[height]'.
+. \}
. \}
.
. \" If there is a TR with height 'height', the total height of the table
@@ -311,7 +324,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
.de TH
. ft 1
. if !\\n[t*#] \{\
-. tm \\n[.F]:\\n[.c]: Table heading (.TH) without preceding table start
(.TBL).
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Table heading (.TH) without
+. tm1 " preceding table start (.TBL).
. return
. \}
. t*getarg hal \\$@
@@ -349,7 +363,7 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. nr *rsp*\\*[*#trc*] (\\n[rowspan] - 1)
. \}
. el \
-. tm \\n[.F]:\\n[.c]: Invalid value of 'rowspan' keyword.
+. tm \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid value of 'rowspan' keyword.
. \}
.
. t*getarg colspan \\*[args]
@@ -358,7 +372,7 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. ie \B\\*[colspan] \
. nr colspan (\\*[colspan] >? 1)
. el \
-. tm \\n[.F]:\\n[.c]: Invalid value of 'colspan' keyword.
+. tm \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid value of 'colspan' keyword.
. \}
.
. t*args \\*[#trc] \\*[#t#r] \" look for common arguments
@@ -398,7 +412,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. ds * is\"
. ds ** column\"
. \}
-. tmc \\n[.F]:\\n[.c]: There \\*[*] \\n[c#\\*[#t#r]] table \\*[**] (.TD)
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: There \\*[*] \\n[c#\\*[#t#r]] table
+. tm1 " \*[**] (.TD)
.
. ds * are\"
. if (\\n[t*cols\\n[t*#]] == 1) \
@@ -438,11 +453,11 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
.de ETB
. ie \\n[t*#] \
. if !\\n[t*r#\\n[t*#]] \{\
-. tmc \\n[.F]:\\n[.c]: Each table (.TBL)
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Each table (.TBL)
. tm1 " should contain at least one table row (.TR)!
. \}
. el \{\
-. tmc \\n[.F]:\\n[.c]: Table end (.ETB)
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Table end (.ETB)
. tm1 " without corresponding table start (.TBL)!
. \}
.
@@ -474,7 +489,7 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. \}
. el \{\
. rn t*tbl0 t*hold\\n+[t*numb]
-. tm \\n[.F]:\\n[.c]: Table t*hold\\n[t*numb] held.
+. tm \*[hdtbl]:\\n[.F]:\\n[.c]: Table t*hold\\n[t*numb] held.
. ds t*held \\*[t*held] t*hold\\n[t*numb] \\n[dn]\"
. \}
.
@@ -501,13 +516,13 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
.de t*free
. if "\\$0"CPTN" \
. if \\n[t*r#\\n[t*#]] \{\
-. tmc \\n[.F]:\\n[.c]: Invalid placement of '.t*free' within a table;
-. tm1 " it must be called outside of any table.
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid placement of '.t*free'
+. tm1 " within a table; it must be called outside of any table.
. return
. \}
.
. if "\\*[t*held]"" \{\
-. tm \\n[.F]:\\n[.c]: No held tables.
+. tm \*[hdtbl]:\\n[.F]:\\n[.c]: No held tables.
. return
. \}
.
@@ -746,14 +761,18 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. substring ** 0 -2
. ie \B\\*[**] \
. nr $\\n[*] (\\*[**] * \\n[.l] / 100)
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid relative cell width '\\*[**]%'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid relative cell width
+. tm1 " '\\*[**]%'.
+. \}
. \}
. el \{\
. ie \B\\$[\\n[*]] \
. nr $\\n[*] \\$[\\n[*]]
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid cell width '\\$[\\n[*]]'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid cell width
+. tm1 " '\\$[\\n[*]]'.
+. \}
. \}\}
.
. nr ll\\n[t*#] +\\n[$\\n[*]]
@@ -761,7 +780,7 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. \}
.
. if (\\n[ll\\n[t*#]] > \\n[.l]) \
-. tm \\n[.F]:\\n[.c]: Table width larger than column width.
+. tm \*[hdtbl]:\\n[.F]:\\n[.c]: Table width larger than column width.
.
. nr ** (0 >? \\n[t*b\\n[t*#]])
. nr * 0 1
@@ -796,8 +815,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. nr *** (\\n[*] % 10)
. if d nth-\\n[***] \
. ds * \\n[*]\\*[nth-\\n[***]]\"
-. tmc \\n[.F]:\\n[.c]: The \\*[*] width value (\\$\\n[*]) is too small.
-. tm1 " It should be greater than \\n[*h].
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: The \\*[*] width value (\\$\\n[*])
+. tm1 " is too small. It should be greater than \\n[*h].
. \}
.
. nr in\\n[t*#]*\\n[*] \\n[**] \" cell offset
@@ -853,7 +872,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. ds * is\"
. ds ** column\"
. \}
-. tmc \\n[.F]:\\n[.c]: There \\*[*] only \\n[c#\\*[#t#r]] \\*[**]
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: There \\*[*] only \\n[c#\\*[#t#r]]
+. tm1 " \\*[**]
.
. nr * \\n[t*r#\\n[t*#]]
. ds * \\n[*]th\"
@@ -898,8 +918,10 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. el \{\
. ie "\\*[bgc]"=" \
. ds t*bgc\\$1 =\"
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid background color '\\*[bgc]'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid background color
+. tm1 " '\\*[bgc]'.
+. \}
. \}\}
. if "\\*[args]"" \
. return
@@ -911,8 +933,10 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. el \{\
. ie "\\*[fgc]"=" \
. ds t*fgc\\$1 =\"
-. el \
-. tm \\n[.F]:\\n[.c]: Invalid foreground color '\\*[fgc]'.
+. el \{\
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid foreground color
+. tm1 " '\\*[fgc]'.
+. \}
. \}\}
. if "\\*[args]"" \
. return
@@ -935,8 +959,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. ie \\n[t*index] \
. ds t*hal\\$1 \\*[hal]\"
. el \{\
-. tmc \\n[.F]:\\n[.c]: Invalid horizontal alignment '\\*[hal]':
-. tm1 " must be 'b', 'c', 'l' or 'r'.
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid horizontal alignment
+. tm1 " '\\*[hal]': must be 'b', 'c', 'l' or 'r'.
. \}\}
. if "\\*[args]"" \
. return
@@ -947,8 +971,8 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. ie \\n[t*index] \
. ds t*val\\$1 \\*[val]\"
. el \{\
-. tmc \\n[.F]:\\n[.c]: Invalid vertical alignment '\\*[val]':
-. tm1 " must be 't', 'm' or 'b'.
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Invalid vertical alignment
+. tm1 " '\\*[val]': must be 't', 'm' or 'b'.
. \}\}
. if "\\*[args]"" \
. return
@@ -980,14 +1004,15 @@ along with this program. If not, see
<http://www.gnu.org/licenses/>.
. pops * t*kept
. popr * t*kept
. if (\\n[*] - \\n[**]) \{\
-. tm \\n[.F]:\\n[.c]: Table \\*[*] higher than page -- ignored!
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Table \\*[*] higher than page --
+. tm1 " ignored!
. break
. \}
.
. if (\\n[*] - \\n[.t]) \{\
. ds t*kept \\n[*] \\*[t*kept]\"
. ds t*kept \\*[*] \\*[t*kept]\"
-. tmc \\n[.F]:\\n[.c]: Remaining table(s),
+. tmc \*[hdtbl]:\\n[.F]:\\n[.c]: Remaining table(s),
. tm1 " because not all fit onto this page.
. break
. \}
_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit