Hello again Alex,

At 2025-06-05T09:24:24-0500, G. Branden Robinson wrote:
> Yes, I see.  Can reproduce with groff's Git trunk.
[...]
> That sure looks like misbehavior.  I'll see what I can figure out.
> 
> > I expect that in the third command, ba*ar should be put on the next
> > line and indented.
> 
> Me too.

Fixing this turned out to be straightforward.  I had overgeneralized a
change I made to support the new two-argument form of `SY`, applying it
wrongly to the single-argument form as well.

I have a fix, a new test case, and a documentation update.

diff --git a/tmac/an-ext.tmac b/tmac/an-ext.tmac
index 9008ba596..32c1fb029 100644
--- a/tmac/an-ext.tmac
+++ b/tmac/an-ext.tmac
@@ -84,7 +84,7 @@ .de SY
 .      \" rules set forth in CSTR #54 ยง6.
 .      if \\n(.g=0:\\n(.X \
 '        ti -\\n(mTu
-.      B \\$1\ \c
+.      B \\$1
 .    \}
 .    if \\n(.$>1 \
 .      B \\$1\\$2\c
diff --git a/tmac/groff_man.7.man.in b/tmac/groff_man.7.man.in
index 30ccea056..51140a3f9 100644
--- a/tmac/groff_man.7.man.in
+++ b/tmac/groff_man.7.man.in
@@ -1055,6 +1055,12 @@ .SS "Synopsis macros"
 .I suffix
 are set in bold.
 .
+When
+.I suffix
+is present,
+.I "groff man"
+sets the next word after it without intervening space.
+.
 If a break is required in subsequent text
 (up to a paragraphing,
 sectioning,
diff --git a/tmac/tests/an-ext_SY-and-YS-work.sh 
b/tmac/tests/an-ext_SY-and-YS-work.sh
index 71d1199eb..d3c7d3b1a 100755
--- a/tmac/tests/an-ext_SY-and-YS-work.sh
+++ b/tmac/tests/an-ext_SY-and-YS-work.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Copyright (C) 2023-2024 Free Software Foundation, Inc.
+# Copyright (C) 2023-2025 Free Software Foundation, Inc.
 #
 # This file is part of groff.
 #
@@ -146,6 +146,26 @@ echo 'checking for automatic hyphenation disablement 
inside synopsis' \
     >&2
 echo "$output2" | grep -q 're-$' && wail
 
+input3='.
+.TH foo 1 2025-06-06 "groff test suite"
+.SH Name
+foo \\- frobnicate a bar
+.SH Synopsis
+.SY foo
+.B \\-\\-baz
+.YS \\&
+.
+.P
+.SY \\%ridiculously\\-long\\-command\\-name\\-can\\-you\\-believe\\-it
+\\%\\-\\-equally\\-bafflingly\\-garrulous\\-and\\-interminable\\-option
+.'
+
+output3=$(echo "$input3" | "$groff" -rLL=80n -man -T ascii -P -cbou)
+echo "$output3"
+
+echo 'checking that long unbreakable words do not overset' >&2
+echo "$output3" | grep -Eq '^ {9}--equally-bafflingly' || wail
+
 test -z "$fail"
 
 # vim:set ai et sw=4 ts=4 tw=72:

Here's how your reproducer formats now (in my working copy).

$ ./build/test-groff -ww -rCHECKSTYLE=3 -man -Tutf8 ./ATTIC/alex.man 
an.tmac:./ATTIC/alex.man:1: style: .TH missing fifth argument and second 
argument 's' not a recognized manual section; specify its title
a(s)                                                                        a(s)

g
     foo bar
     fooooooo baaaaaaaaaaaaaaaaaaaar baaaaaaaaaaaaaaaaaaaaz
         qwwwwwwwwwwwwwwwwwwwwe zxxxxxxxxxxxxxxxxxxxxc
     fooooooooooooooooooooooooooooooooooooooooooooooooo
         baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar

f                                       d                                   a(s)

Thanks for the report!  That's one fewer gob of albumen to spatter my
face after the groff 1.24 release.

Regards,
Branden

Attachment: signature.asc
Description: PGP signature

Reply via email to