Macro argument quoting does not prevent recognition of punctuation
authorschwarze <schwarze@openbsd.org>
Tue, 30 May 2017 16:21:07 +0000 (16:21 +0000)
committerschwarze <schwarze@openbsd.org>
Tue, 30 May 2017 16:21:07 +0000 (16:21 +0000)
and of called macros.

This bug affects almost all macros, and fixing it simplifies the
code.  It is amazing that the bogus ARGS_QWORD feature got implemented
in the first place, and then carrier along for more than eight years
without anybody ever noticing that it was pointless.

Reported by Leah Neukirchen <leah at vuxu dot org>, found on Void Linux.

118 files changed:
regress/usr.bin/mandoc/mdoc/Ad/font.in
regress/usr.bin/mandoc/mdoc/Ad/font.out_ascii
regress/usr.bin/mandoc/mdoc/Ad/font.out_markdown
regress/usr.bin/mandoc/mdoc/An/break.in
regress/usr.bin/mandoc/mdoc/Ap/middle.in
regress/usr.bin/mandoc/mdoc/Ap/middle.out_ascii
regress/usr.bin/mandoc/mdoc/Ap/middle.out_markdown
regress/usr.bin/mandoc/mdoc/Aq/empty.in
regress/usr.bin/mandoc/mdoc/Aq/empty.out_ascii
regress/usr.bin/mandoc/mdoc/Aq/empty.out_markdown
regress/usr.bin/mandoc/mdoc/Aq/empty.out_utf8
regress/usr.bin/mandoc/mdoc/Ar/punct.in
regress/usr.bin/mandoc/mdoc/Ar/punct.out_ascii
regress/usr.bin/mandoc/mdoc/Ar/punct.out_markdown
regress/usr.bin/mandoc/mdoc/At/invalid.in
regress/usr.bin/mandoc/mdoc/At/invalid.out_ascii
regress/usr.bin/mandoc/mdoc/At/invalid.out_markdown
regress/usr.bin/mandoc/mdoc/Brq/empty.in
regress/usr.bin/mandoc/mdoc/Brq/empty.out_ascii
regress/usr.bin/mandoc/mdoc/Brq/empty.out_markdown
regress/usr.bin/mandoc/mdoc/Bx/args.in
regress/usr.bin/mandoc/mdoc/Bx/args.out_ascii
regress/usr.bin/mandoc/mdoc/Bx/args.out_markdown
regress/usr.bin/mandoc/mdoc/Cd/Makefile
regress/usr.bin/mandoc/mdoc/Cd/punct.in [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Cd/punct.out_ascii [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Cd/punct.out_markdown [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Cm/Makefile
regress/usr.bin/mandoc/mdoc/Cm/punct.in [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Cm/punct.out_ascii [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Cm/punct.out_markdown [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Dq/empty.in
regress/usr.bin/mandoc/mdoc/Dq/empty.out_ascii
regress/usr.bin/mandoc/mdoc/Dq/empty.out_markdown
regress/usr.bin/mandoc/mdoc/Dv/font.in
regress/usr.bin/mandoc/mdoc/Dv/font.out_ascii
regress/usr.bin/mandoc/mdoc/Dv/font.out_markdown
regress/usr.bin/mandoc/mdoc/Em/punct.in
regress/usr.bin/mandoc/mdoc/Em/punct.out_ascii
regress/usr.bin/mandoc/mdoc/Em/punct.out_lint
regress/usr.bin/mandoc/mdoc/Em/punct.out_markdown
regress/usr.bin/mandoc/mdoc/Eo/empty.in
regress/usr.bin/mandoc/mdoc/Eo/empty.out_ascii
regress/usr.bin/mandoc/mdoc/Eo/empty.out_markdown
regress/usr.bin/mandoc/mdoc/Eo/obsolete.in
regress/usr.bin/mandoc/mdoc/Eo/obsolete.out_ascii
regress/usr.bin/mandoc/mdoc/Eo/obsolete.out_markdown
regress/usr.bin/mandoc/mdoc/Er/noarg.in
regress/usr.bin/mandoc/mdoc/Er/noarg.out_ascii
regress/usr.bin/mandoc/mdoc/Er/noarg.out_markdown
regress/usr.bin/mandoc/mdoc/Ev/font.in
regress/usr.bin/mandoc/mdoc/Ev/font.out_ascii
regress/usr.bin/mandoc/mdoc/Ev/font.out_markdown
regress/usr.bin/mandoc/mdoc/Fl/punct.in
regress/usr.bin/mandoc/mdoc/Fl/punct.out_ascii
regress/usr.bin/mandoc/mdoc/Fl/punct.out_markdown
regress/usr.bin/mandoc/mdoc/Fo/font.in
regress/usr.bin/mandoc/mdoc/Fo/font.out_ascii
regress/usr.bin/mandoc/mdoc/Fo/font.out_markdown
regress/usr.bin/mandoc/mdoc/Fo/punct.in
regress/usr.bin/mandoc/mdoc/Fo/punct.out_ascii
regress/usr.bin/mandoc/mdoc/Fo/punct.out_markdown
regress/usr.bin/mandoc/mdoc/Ic/Makefile
regress/usr.bin/mandoc/mdoc/Ic/punct.in [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Ic/punct.out_ascii [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Ic/punct.out_markdown [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/In/font.in
regress/usr.bin/mandoc/mdoc/In/font.out_ascii
regress/usr.bin/mandoc/mdoc/In/font.out_markdown
regress/usr.bin/mandoc/mdoc/Li/punct.in
regress/usr.bin/mandoc/mdoc/Li/punct.out_ascii
regress/usr.bin/mandoc/mdoc/Li/punct.out_lint
regress/usr.bin/mandoc/mdoc/Li/punct.out_markdown
regress/usr.bin/mandoc/mdoc/Ms/font.in
regress/usr.bin/mandoc/mdoc/Ms/font.out_ascii
regress/usr.bin/mandoc/mdoc/Ms/font.out_markdown
regress/usr.bin/mandoc/mdoc/Mt/simple.in
regress/usr.bin/mandoc/mdoc/Mt/simple.out_ascii
regress/usr.bin/mandoc/mdoc/Mt/simple.out_markdown
regress/usr.bin/mandoc/mdoc/No/punct.in
regress/usr.bin/mandoc/mdoc/No/punct.out_ascii
regress/usr.bin/mandoc/mdoc/No/punct.out_lint
regress/usr.bin/mandoc/mdoc/No/punct.out_markdown
regress/usr.bin/mandoc/mdoc/Ns/punct.in
regress/usr.bin/mandoc/mdoc/Oo/punct.in
regress/usr.bin/mandoc/mdoc/Oo/punct.out_ascii
regress/usr.bin/mandoc/mdoc/Oo/punct.out_markdown
regress/usr.bin/mandoc/mdoc/Op/punct.in
regress/usr.bin/mandoc/mdoc/Pa/punct.in
regress/usr.bin/mandoc/mdoc/Pa/punct.out_ascii
regress/usr.bin/mandoc/mdoc/Pa/punct.out_markdown
regress/usr.bin/mandoc/mdoc/Qq/empty.in
regress/usr.bin/mandoc/mdoc/Qq/empty.out_ascii
regress/usr.bin/mandoc/mdoc/Qq/empty.out_markdown
regress/usr.bin/mandoc/mdoc/Sq/empty.in
regress/usr.bin/mandoc/mdoc/Sq/empty.out_ascii
regress/usr.bin/mandoc/mdoc/Sq/empty.out_markdown
regress/usr.bin/mandoc/mdoc/St/call.in
regress/usr.bin/mandoc/mdoc/Sx/noarg.in
regress/usr.bin/mandoc/mdoc/Sx/noarg.out_ascii
regress/usr.bin/mandoc/mdoc/Sx/noarg.out_markdown
regress/usr.bin/mandoc/mdoc/Sy/punct.in
regress/usr.bin/mandoc/mdoc/Sy/punct.out_ascii
regress/usr.bin/mandoc/mdoc/Sy/punct.out_lint
regress/usr.bin/mandoc/mdoc/Sy/punct.out_markdown
regress/usr.bin/mandoc/mdoc/Tn/noarg.in
regress/usr.bin/mandoc/mdoc/Tn/noarg.out_ascii
regress/usr.bin/mandoc/mdoc/Tn/noarg.out_markdown
regress/usr.bin/mandoc/mdoc/Va/Makefile
regress/usr.bin/mandoc/mdoc/Va/punct.in [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Va/punct.out_ascii [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Va/punct.out_markdown [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Xr/args.in
regress/usr.bin/mandoc/mdoc/Xr/args.out_ascii
regress/usr.bin/mandoc/mdoc/Xr/args.out_markdown
usr.bin/mandoc/libmdoc.h
usr.bin/mandoc/mdoc_argv.c
usr.bin/mandoc/mdoc_macro.c

index 104bc19..df84458 100644 (file)
@@ -6,5 +6,5 @@
 .Nd changing fonts inside the address macro
 .Sh DESCRIPTION
 normal text
-.Ad emphasis\\fBbold\\fPback | after : punctuation
+.Ad emphasis\\fBbold\\fPback | after ":" punctuation "Sy" bold
 trailing text
index e829efb..b86ab46 100644 (file)
@@ -4,6 +4,6 @@ N\bNA\bAM\bME\bE
      A\bAd\bd-\b-f\bfo\bon\bnt\bt - changing fonts inside the address macro
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     normal text _\be_\bm_\bp_\bh_\ba_\bs_\bi_\bsb\bbo\bol\bld\bd_\bb_\ba_\bc_\bk | _\ba_\bf_\bt_\be_\br: _\bp_\bu_\bn_\bc_\bt_\bu_\ba_\bt_\bi_\bo_\bn trailing text
+     normal text _\be_\bm_\bp_\bh_\ba_\bs_\bi_\bsb\bbo\bol\bld\bd_\bb_\ba_\bc_\bk | _\ba_\bf_\bt_\be_\br: _\bp_\bu_\bn_\bc_\bt_\bu_\ba_\bt_\bi_\bo_\bb\bbo\bol\bld\btrailing text
 
 OpenBSD                        November 20, 2014                       OpenBSD
index 365add6..ed3b590 100644 (file)
@@ -7,7 +7,7 @@ AD-FONT(1) - General Commands Manual
 # DESCRIPTION
 
 normal text
-*emphasis**bold**back* | *after*: *punctuation*
+*emphasis**bold**back* | *after*: *punctuation* **bold**
 trailing text
 
 OpenBSD - November 20, 2014
index b783b33..ff96c54 100644 (file)
@@ -7,7 +7,7 @@
 .Sh DESCRIPTION
 inline is the default:
 .An Kristaps ,
-.An Ingo ,
+.An Ingo ","
 and
 .An Joerg .
 empty
@@ -39,7 +39,7 @@ trailing
 .An -nosplit -split bogus
 .Pp
 inline:
-.An Kristaps ,
+.An Kristaps ","
 .An Ingo ,
 and
 .An Joerg .
index 03d7b6f..05f73b3 100644 (file)
@@ -1,4 +1,4 @@
-.Dd September 30, 2011
+.Dd May 21, 2017
 .Dt AP-MIDDLE 1
 .Os OpenBSD
 .Sh NAME
@@ -6,3 +6,6 @@
 .Nd apostrophe in the middle of a macro line
 .Sh DESCRIPTION
 .Xr mandoc 1 Ap s
+.Pp
+punctuation and called macros:
+.Sy bold Ap ( "Sy" bold
index c51bd6d..0f687a4 100644 (file)
@@ -6,4 +6,6 @@ N\bNA\bAM\bME\bE
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      mandoc(1)'s
 
-OpenBSD                       September 30, 2011                       OpenBSD
+     punctuation and called macros: b\bbo\bol\bld\bd'(b\bbo\bol\bld\bd
+
+OpenBSD                          May 21, 2017                          OpenBSD
index 9600945..dd14e8e 100644 (file)
@@ -8,4 +8,7 @@ AP-MIDDLE(1) - General Commands Manual
 
 mandoc(1)'s
 
-OpenBSD - September 30, 2011
+punctuation and called macros:
+**bold**'(**bold**
+
+OpenBSD - May 21, 2017
index a407855..1fa5a61 100644 (file)
@@ -11,4 +11,4 @@ and a full
 .Aq user@host
 return path.
 And another
-.Ao full Ac one .
+.Ao full Ac one "Sy" bold .
index c587ee5..236c062 100644 (file)
@@ -4,6 +4,7 @@ N\bNA\bAM\bME\bE
      A\bAq\bq-\b-e\bem\bmp\bpt\bty\by - empty implicit enclosure macros
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     An empty <> and a full <user@host> return path.  And another <full> one.
+     An empty <> and a full <user@host> return path.  And another <full> one
+     b\bbo\bol\bld\bd.
 
 OpenBSD                         August 6, 2010                         OpenBSD
index 27039dd..dc39648 100644 (file)
@@ -12,6 +12,6 @@ and a full
 &lt;user@host&gt;
 return path.
 And another
-&lt;full&gt; one.
+&lt;full&gt; one **bold**.
 
 OpenBSD - August 6, 2010
index 0ae72b6..0a81608 100644 (file)
@@ -4,6 +4,7 @@ N\bNA\bAM\bME\bE
      A\bAq\bq-\b-e\bem\bmp\bpt\bty\by â€“ empty implicit enclosure macros
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     An empty âŸ¨âŸ© and a full âŸ¨user@host⟩ return path.  And another âŸ¨full⟩ one.
+     An empty âŸ¨âŸ© and a full âŸ¨user@host⟩ return path.  And another âŸ¨full⟩ one
+     b\bbo\bol\bld\bd.
 
 OpenBSD                         August 6, 2010                         OpenBSD
index 963f753..5104400 100644 (file)
@@ -37,3 +37,6 @@ op paren
 .Ar ( a
 op bracket
 .Ar [ a
+.Pp
+quoted punctuation:
+.Ar a "(" b "|" c ")" d "," "Sy" bold .
index d780dbc..01426c5 100644 (file)
@@ -9,4 +9,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      _\bf_\bi_\bl_\be _\b._\b._\b.; _\bz colon _\bf_\bi_\bl_\be _\b._\b._\b.: _\bz quest _\bf_\bi_\bl_\be _\b._\b._\b.? _\bz excl _\bf_\bi_\bl_\be _\b._\b._\b.! _\bz paren
      _\bf_\bi_\bl_\be _\b._\b._\b.) _\bz bracket _\bf_\bi_\bl_\be _\b._\b._\b.] _\bz bar | _\bm op paren (_\ba op bracket [_\ba
 
+     quoted punctuation: _\ba (_\bb | _\bc) _\bd, b\bbo\bol\bld\bd.
+
 OpenBSD                         August 21, 2014                        OpenBSD
index b8e3eda..932b866 100644 (file)
@@ -39,4 +39,7 @@ op paren
 op bracket
 \[*a*
 
+quoted punctuation:
+*a* (*b* | *c*) *d*, **bold**.
+
 OpenBSD - August 21, 2014
index 8e7d9ce..345529a 100644 (file)
@@ -12,6 +12,6 @@ valid argument:
 .At v7
 .Pp
 invalid argument:
-.At murks
+.At murks "Sy" bold
 .Pp
 end of file
index c1cab59..13e82d3 100644 (file)
@@ -8,7 +8,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      valid argument: Version 7 AT&T UNIX
 
-     invalid argument: AT&T UNIX murks
+     invalid argument: AT&T UNIX murks b\bbo\bol\bld\bd
 
      end of file
 
index 0b95255..d76b8fa 100644 (file)
@@ -13,7 +13,7 @@ valid argument:
 Version&#160;7 AT&T UNIX
 
 invalid argument:
-AT&T UNIX murks
+AT&T UNIX murks **bold**
 
 end of file
 
index 323df07..5d31747 100644 (file)
@@ -8,7 +8,7 @@
 An empty
 .Brq
 and a full
-.Brq user@host
+.Brq "(" user@host
 quotation.
 And another
-.Bro full Brc one .
+.Bro "(" full Brc one "Sy" bold .
index bb59c24..9d638d0 100644 (file)
@@ -4,6 +4,7 @@ N\bNA\bAM\bME\bE
      B\bBr\brq\bq-\b-e\bem\bmp\bpt\bty\by - empty implicit enclosure macros
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     An empty {} and a full {user@host} quotation.  And another {full} one.
+     An empty {} and a full ({user@host} quotation.  And another ({full} one
+     b\bbo\bol\bld\bd.
 
 OpenBSD                        October 21, 2010                        OpenBSD
index f32edd8..a335a57 100644 (file)
@@ -9,9 +9,9 @@ BRQ-EMPTY(1) - General Commands Manual
 An empty
 {}
 and a full
-{user@host}
+({user@host}
 quotation.
 And another
-{full} one.
+({full} one **bold**.
 
 OpenBSD - October 21, 2010
index 3253095..d447927 100644 (file)
@@ -9,7 +9,7 @@ no arguments:
 .Bx
 .Pp
 one standard argument:
-.Bx 4.4
+.Bx 4.4 "."
 .Pp
 one non-standard argument:
 .Bx nett
@@ -21,6 +21,6 @@ two standard arguments:
 .Bx 4.3 reno
 .Pp
 more arguments:
-.Bx 4.3 tahoe and some additional words
+.Bx 4.3 tahoe and "Em" some additional words
 .Pp
 end of test document
index 9f45970..24e03ff 100644 (file)
@@ -6,7 +6,7 @@ N\bNA\bAM\bME\bE
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      no arguments: BSD
 
-     one standard argument: 4.4BSD
+     one standard argument: 4.4BSD.
 
      one non-standard argument: nettBSD
 
@@ -14,7 +14,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      two standard arguments: 4.3BSD-Reno
 
-     more arguments: 4.3BSD-Tahoe and some additional words
+     more arguments: 4.3BSD-Tahoe and _\bs_\bo_\bm_\be _\ba_\bd_\bd_\bi_\bt_\bi_\bo_\bn_\ba_\bl _\bw_\bo_\br_\bd_\bs
 
      end of test document
 
index 1c9fc45..5450ee5 100644 (file)
@@ -10,7 +10,7 @@ no arguments:
 BSD
 
 one standard argument:
-4\.4BSD
+4\.4BSD.
 
 one non-standard argument:
 nettBSD
@@ -22,7 +22,7 @@ two standard arguments:
 4\.3BSD-Reno
 
 more arguments:
-4\.3BSD-Tahoe and some additional words
+4\.3BSD-Tahoe and *some additional words*
 
 end of test document
 
index 93be300..dd49114 100644 (file)
@@ -1,6 +1,6 @@
-# $OpenBSD: Makefile,v 1.7 2017/03/08 22:53:35 schwarze Exp $
+# $OpenBSD: Makefile,v 1.8 2017/05/30 16:21:08 schwarze Exp $
 
-REGRESS_TARGETS = noarg font eos
+REGRESS_TARGETS = eos font noarg punct
 LINT_TARGETS   = noarg
 
 .include <bsd.regress.mk>
diff --git a/regress/usr.bin/mandoc/mdoc/Cd/punct.in b/regress/usr.bin/mandoc/mdoc/Cd/punct.in
new file mode 100644 (file)
index 0000000..9a072c0
--- /dev/null
@@ -0,0 +1,42 @@
+.Dd August 21, 2014
+.Dt CD-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Cd-punct
+.Nd punctuation handling by the Cd macro
+.Sh DESCRIPTION
+closing punctuation
+.Cd a )
+only one
+.Cd )
+only more than one
+.Cd ) )
+middle
+.Cd a ) z
+start
+.Cd ) z
+dot
+.Cd . z
+comma
+.Cd , z
+semicolon
+.Cd ; z
+colon
+.Cd : z
+quest
+.Cd ? z
+excl
+.Cd ! z
+paren
+.Cd ) z
+bracket
+.Cd ] z
+bar
+.Cd | m
+op paren
+.Cd ( a
+op bracket
+.Cd [ a
+.Pp
+quoted punctuation:
+.Cd a "(" b "|" c ")" d "." "Em" italic .
diff --git a/regress/usr.bin/mandoc/mdoc/Cd/punct.out_ascii b/regress/usr.bin/mandoc/mdoc/Cd/punct.out_ascii
new file mode 100644 (file)
index 0000000..88d369d
--- /dev/null
@@ -0,0 +1,13 @@
+CD-PUNCT(1)                 General Commands Manual                CD-PUNCT(1)
+
+N\bNA\bAM\bME\bE
+     C\bCd\bd-\b-p\bpu\bun\bnc\bct\bt - punctuation handling by the Cd macro
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     closing punctuation a\ba) only one ) only more than one )) middle a\ba) z\bz start
+     ) z\bz dot . z\bz comma , z\bz semicolon ; z\bz colon : z\bz quest ? z\bz excl ! z\bz paren )
+     z\bz bracket ] z\bz bar | m\bm op paren (a\ba op bracket [a\ba
+
+     quoted punctuation: a\ba (b\bb | c\bc) d\bd. _\bi_\bt_\ba_\bl_\bi_\bc.
+
+OpenBSD                         August 21, 2014                        OpenBSD
diff --git a/regress/usr.bin/mandoc/mdoc/Cd/punct.out_markdown b/regress/usr.bin/mandoc/mdoc/Cd/punct.out_markdown
new file mode 100644 (file)
index 0000000..c39ee62
--- /dev/null
@@ -0,0 +1,45 @@
+CD-PUNCT(1) - General Commands Manual
+
+# NAME
+
+**Cd-punct** - punctuation handling by the Cd macro
+
+# DESCRIPTION
+
+closing punctuation
+**a**)
+only one
+)
+only more than one
+))
+middle
+**a**) **z**
+start
+) **z**
+dot
+. **z**
+comma
+, **z**
+semicolon
+; **z**
+colon
+: **z**
+quest
+? **z**
+excl
+! **z**
+paren
+) **z**
+bracket
+] **z**
+bar
+| **m**
+op paren
+(**a**
+op bracket
+\[**a**
+
+quoted punctuation:
+**a** (**b** | **c**) **d**. *italic*.
+
+OpenBSD - August 21, 2014
index 805905d..6681fac 100644 (file)
@@ -1,6 +1,6 @@
-# $OpenBSD: Makefile,v 1.5 2017/03/08 22:53:35 schwarze Exp $
+# $OpenBSD: Makefile,v 1.6 2017/05/30 16:21:08 schwarze Exp $
 
-REGRESS_TARGETS = basic font noarg
+REGRESS_TARGETS = basic font noarg punct
 LINT_TARGETS   = noarg
 
 .include <bsd.regress.mk>
diff --git a/regress/usr.bin/mandoc/mdoc/Cm/punct.in b/regress/usr.bin/mandoc/mdoc/Cm/punct.in
new file mode 100644 (file)
index 0000000..432e470
--- /dev/null
@@ -0,0 +1,42 @@
+.Dd August 21, 2014
+.Dt Cm-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Cm-punct
+.Nd punctuation handling by the Cm macro
+.Sh DESCRIPTION
+closing punctuation
+.Cm a )
+only one
+.Cm )
+only more than one
+.Cm ) )
+middle
+.Cm a ) z
+start
+.Cm ) z
+dot
+.Cm . z
+comma
+.Cm , z
+semicolon
+.Cm ; z
+colon
+.Cm : z
+quest
+.Cm ? z
+excl
+.Cm ! z
+paren
+.Cm ) z
+bracket
+.Cm ] z
+bar
+.Cm | m
+op paren
+.Cm ( a
+op bracket
+.Cm [ a
+.Pp
+quoted punctuation:
+.Cm a "(" b "|" c ")" d "." "Em" italic .
diff --git a/regress/usr.bin/mandoc/mdoc/Cm/punct.out_ascii b/regress/usr.bin/mandoc/mdoc/Cm/punct.out_ascii
new file mode 100644 (file)
index 0000000..7ac1fe7
--- /dev/null
@@ -0,0 +1,13 @@
+Cm-PUNCT(1)                 General Commands Manual                Cm-PUNCT(1)
+
+N\bNA\bAM\bME\bE
+     C\bCm\bm-\b-p\bpu\bun\bnc\bct\bt - punctuation handling by the Cm macro
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     closing punctuation a\ba) only one ) only more than one )) middle a\ba) z\bz start
+     ) z\bz dot . z\bz comma , z\bz semicolon ; z\bz colon : z\bz quest ? z\bz excl ! z\bz paren )
+     z\bz bracket ] z\bz bar | m\bm op paren (a\ba op bracket [a\ba
+
+     quoted punctuation: a\ba (b\bb | c\bc) d\bd. _\bi_\bt_\ba_\bl_\bi_\bc.
+
+OpenBSD                         August 21, 2014                        OpenBSD
diff --git a/regress/usr.bin/mandoc/mdoc/Cm/punct.out_markdown b/regress/usr.bin/mandoc/mdoc/Cm/punct.out_markdown
new file mode 100644 (file)
index 0000000..c924228
--- /dev/null
@@ -0,0 +1,45 @@
+Cm-PUNCT(1) - General Commands Manual
+
+# NAME
+
+**Cm-punct** - punctuation handling by the Cm macro
+
+# DESCRIPTION
+
+closing punctuation
+**a**)
+only one
+)
+only more than one
+))
+middle
+**a**) **z**
+start
+) **z**
+dot
+. **z**
+comma
+, **z**
+semicolon
+; **z**
+colon
+: **z**
+quest
+? **z**
+excl
+! **z**
+paren
+) **z**
+bracket
+] **z**
+bar
+| **m**
+op paren
+(**a**
+op bracket
+\[**a**
+
+quoted punctuation:
+**a** (**b** | **c**) **d**. *italic*.
+
+OpenBSD - August 21, 2014
index 6e22889..1d072d5 100644 (file)
@@ -8,7 +8,7 @@
 An empty
 .Dq
 and a full
-.Dq user@host
+.Dq "(" user@host
 quotation.
 And another
-.Do full Dc one .
+.Do "(" full Dc one "Sy" bold .
index e8f1da5..9f7c8bb 100644 (file)
@@ -4,6 +4,7 @@ N\bNA\bAM\bME\bE
      D\bDq\bq-\b-e\bem\bmp\bpt\bty\by - empty implicit enclosure macros
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     An empty "" and a full "user@host" quotation.  And another "full" one.
+     An empty "" and a full ("user@host" quotation.  And another ("full" one
+     b\bbo\bol\bld\bd.
 
 OpenBSD                        October 21, 2010                        OpenBSD
index 6cba874..b6188f5 100644 (file)
@@ -9,9 +9,9 @@ DQ-EMPTY(1) - General Commands Manual
 An empty
 ""
 and a full
-"user@host"
+("user@host"
 quotation.
 And another
-"full" one.
+("full" one **bold**.
 
 OpenBSD - October 21, 2010
index 8e3c5bc..8d9e370 100644 (file)
@@ -10,4 +10,4 @@ The
 macro.
 .Pp
 And with
-.Dv some \\fIembedded\\fP string .
+.Dv some \\fIembedded\\fP string ";" "Sy" bold .
index 88f0760..8201334 100644 (file)
@@ -6,6 +6,6 @@ N\bNA\bAM\bME\bE
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      The BUFSIZ macro.
 
-     And with some _\be_\bm_\bb_\be_\bd_\bd_\be_\bd string.
+     And with some _\be_\bm_\bb_\be_\bd_\bd_\be_\bd string; b\bbo\bol\bld\bd.
 
 OpenBSD                        October 21, 2011                        OpenBSD
index b3351e3..0bf567d 100644 (file)
@@ -11,6 +11,6 @@ The
 macro.
 
 And with
-`some embedded string`.
+`some embedded string`; **bold**.
 
 OpenBSD - October 21, 2011
index b49ca50..a8e012e 100644 (file)
@@ -7,7 +7,7 @@
 .Sh DESCRIPTION
 Leading punctuation:
 .Em ( b
-.Em [ b
+.Em "[" b
 .Em | b
 .Em . b
 .Em , b
@@ -16,7 +16,7 @@ Leading punctuation:
 .Em ? b
 .Em ! b
 .Em ) b
-.Em ] b
+.Em "]" b
 .Pp
 Trailing punctuation:
 .Em a (
@@ -28,17 +28,17 @@ Trailing punctuation:
 .Em a :
 .Em a ?
 .Em a !
-.Em a )
+.Em a ")"
 .Em a ]
 .Pp
 Middle punctuation:
 .Em a ( b
 .Em a [ b
-.Em a | b
+.Em a "|" b
 .Em a . b
 .Em a , b
 .Em a ; b
-.Em a : b
+.Em a ":" b
 .Em a ? b
 .Em a ! b
 .Em a ) b
@@ -78,5 +78,6 @@ Multiple punctuation:
 .Em [ ( arg ) ] .
 .Pp
 Quoted:
-.Em "a . b Nm"
+.Em "a . b Nm" "Sy" bold
 .Em ". b Nm"
+.Em "."
index 4396e66..e0f60db 100644 (file)
@@ -21,6 +21,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      Multiple punctuation: [(_\ba_\br_\bg)].
 
-     Quoted: _\ba _\b. _\bb _\bN_\b_\b. _\bb _\bN_\bm
+     Quoted: _\ba _\b. _\bb _\bN_\bb\bbo\bol\bld\bd _\b. _\bb _\bN_\bm .
 
 OpenBSD                        November 17, 2014                       OpenBSD
index 7d16f43..cfcc04a 100644 (file)
@@ -22,3 +22,4 @@ mandoc: punct.in:70:7: WARNING: skipping empty macro: Em
 mandoc: punct.in:71:7: WARNING: skipping empty macro: Em
 mandoc: punct.in:74:7: WARNING: skipping empty macro: Em
 mandoc: punct.in:75:7: WARNING: skipping empty macro: Em
+mandoc: punct.in:83:2: WARNING: skipping empty macro: Em
index 5d3e852..6cf5402 100644 (file)
@@ -79,7 +79,8 @@ Multiple punctuation:
 \[(*arg*)].
 
 Quoted:
-*a . b Nm*
+*a . b Nm* **bold**
 *. b Nm*
+.
 
 OpenBSD - November 17, 2014
index bf637f2..b971b6d 100644 (file)
@@ -32,7 +32,7 @@ text
 all
 .Eo <<
 text
-.Ec >>
+.Ec >> "Sy" bold
 completely empty
 .No prefix Ns Eo
 .Ec
index a28e572..96849bb 100644 (file)
@@ -5,9 +5,9 @@ N\bNA\bAM\bME\bE
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      completely empty  closing only >> content only text opening only << no
-     opening text>> no content <<>> no closing <<text all <<text>> completely
-     empty prefix closing only prefix>> no opening prefixtext>> no closing
-     <<prefix stray closing
+     opening text>> no content <<>> no closing <<text all <<text>> b\bbo\bol\bld\bd
+     completely empty prefix closing only prefix>> no opening prefixtext>> no
+     closing <<prefix stray closing
      >> end of file
 
 OpenBSD                        February 1, 2015                        OpenBSD
index e0ed0e9..506a4a0 100644 (file)
@@ -20,7 +20,7 @@ no content
 no closing
 &lt;&lt;text
 all
-&lt;&lt;text&gt;&gt;
+&lt;&lt;text&gt;&gt; **bold**
 completely empty
 prefixclosing only
 prefix&gt;&gt;
index fe0bb08..2640f2a 100644 (file)
@@ -11,7 +11,7 @@
 initial text
 .En enclosed words with Fl flags
 middle text
-.En more enclosed words
+.En "(" more enclosed words
 final text
 .Pp
 .Es
index bb2f15c..cba2fc7 100644 (file)
@@ -6,7 +6,7 @@ N\bNA\bAM\bME\bE
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      no prior Es
 
-     surplus initial text <<enclosed words with -\b-f\bfl\bla\bag\bgs\bs>> middle text <<more
+     surplus initial text <<enclosed words with -\b-f\bfl\bla\bag\bgs\bs>> middle text (<<more
      enclosed words>> final text
 
      initial text after empty Es final text
index 21a3e69..200ea65 100644 (file)
@@ -12,7 +12,7 @@ surplus
 initial text
 &lt;&lt;enclosed words with **-flags**&gt;&gt;
 middle text
-&lt;&lt;more enclosed words&gt;&gt;
+(&lt;&lt;more enclosed words&gt;&gt;
 final text
 
 initial text
index 96aa2ce..6dc2aea 100644 (file)
@@ -6,7 +6,7 @@
 .Nd error constant macro without an argument
 .Sh DESCRIPTION
 with error:
-.Er ENOENT
+.Er ENOENT ";" "Sy" bold ;
 no error:
 .Er
 end of test document
index 83f45f0..cd8cc77 100644 (file)
@@ -4,6 +4,6 @@ N\bNA\bAM\bME\bE
      E\bEr\br-\b-n\bno\boa\bar\brg\bg - error constant macro without an argument
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     with error: ENOENT no error: end of test document
+     with error: ENOENT; b\bbo\bol\bld\bd; no error: end of test document
 
 OpenBSD                        January 19, 2011                        OpenBSD
index 0bb4b97..17dba3d 100644 (file)
@@ -7,7 +7,7 @@ ER-NOARG(1) - General Commands Manual
 # DESCRIPTION
 
 with error:
-`ENOENT`
+`ENOENT`; **bold**;
 no error:
 end of test document
 
index a9213d8..75237cb 100644 (file)
@@ -10,4 +10,4 @@ The
 variable.
 .Pp
 And with
-.Ev some \\fIembedded\\fP string .
+.Ev some \\fIembedded\\fP string ";" "Sy" bold.
index fad0742..a5dc539 100644 (file)
@@ -6,6 +6,6 @@ N\bNA\bAM\bME\bE
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      The PATH variable.
 
-     And with some _\be_\bm_\bb_\be_\bd_\bd_\be_\bd string.
+     And with some _\be_\bm_\bb_\be_\bd_\bd_\be_\bd string; b\bbo\bol\bld\bd.\b.
 
 OpenBSD                        October 21, 2011                        OpenBSD
index 491c932..f2bac6d 100644 (file)
@@ -11,6 +11,6 @@ The
 variable.
 
 And with
-`some embedded string`.
+`some embedded string`; **bold.**
 
 OpenBSD - October 21, 2011
index ac7eecc..8cc4c2f 100644 (file)
@@ -37,3 +37,6 @@ op paren
 .Fl ( a
 op bracket
 .Fl [ a
+.Pp
+quoted punctuation:
+.Fl a "(" b "|" c ")" d "," "Em" italic .
index b619154..1ef60d4 100644 (file)
@@ -9,4 +9,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      excl -\b-! -\b-z\bz paren -\b-) -\b-z\bz bracket -\b-] -\b-z\bz bar -\b- | -\b-m\bm op paren (-\b-a\ba op bracket
      [-\b-a\ba
 
+     quoted punctuation: -\b-a\ba (-\b-b\bb | -\b-c\bc) -\b-d\bd, _\bi_\bt_\ba_\bl_\bi_\bc.
+
 OpenBSD                         August 21, 2014                        OpenBSD
index aba7054..54d10ae 100644 (file)
@@ -39,4 +39,7 @@ op paren
 op bracket
 \[**-a**
 
+quoted punctuation:
+**-a** (**-b** | **-c**) **-d**, *italic*.
+
 OpenBSD - August 21, 2014
index 894a86a..6e2c7d8 100644 (file)
@@ -15,5 +15,5 @@ trailing text
 .Pp
 .Fo function
 .Fa prefix\\fBbold\\fPsuffix
-.Fc
+.Fc "Sy" bold
 trailing text
index 3490ad8..698a768 100644 (file)
@@ -8,6 +8,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      p\bpr\bre\bef\bfi\bix\bx_\bn_\ba_\bm_\bes\bsu\buf\bff\bfi\bix\bx(_\bt_\by_\bp_\be _\ba_\br_\bg) trailing text
 
-     f\bfu\bun\bnc\bct\bti\bio\bon\bn(_\bp_\br_\be_\bf_\bi_\bxb\bbo\bol\bld\bd_\bs_\bu_\bf_\bf_\bi_\bx) trailing text
+     f\bfu\bun\bnc\bct\bti\bio\bon\bn(_\bp_\br_\be_\bf_\bi_\bxb\bbo\bol\bld\bd_\bs_\bu_\bf_\bf_\bi_\bx) b\bbo\bol\bld\btrailing text
 
 OpenBSD                          July 9, 2012                          OpenBSD
index d36e0b8..8439391 100644 (file)
@@ -12,7 +12,7 @@ trailing text
 **prefix*name*suffix**(*type arg*)
 trailing text
 
-**function**(*prefix**bold**suffix*)
+**function**(*prefix**bold**suffix*) **bold**
 trailing text
 
 OpenBSD - July 9, 2012
index 0b407ff..e1657ec 100644 (file)
@@ -1,9 +1,13 @@
-.Dd November 20, 2014
+.Dd May 20, 2017
 .Dt FO-PUNCT 1
 .Os OpenBSD
 .Sh NAME
 .Nm Fo-punct
-.Nd punctuation on function name input lines
+.Nd punctuation on function input lines
 .Sh DESCRIPTION
 .Ft double
-.Fn sin , cos
+.Fn sin "," cos "Em" italic
+.Pp
+.Fa x "," y "Sy" bold
+.Pp
+.Ft int "," float "Sy" bold
index 4e8b1ab..febf646 100644 (file)
@@ -1,9 +1,13 @@
 FO-PUNCT(1)                 General Commands Manual                FO-PUNCT(1)
 
 N\bNA\bAM\bME\bE
-     F\bFo\bo-\b-p\bpu\bun\bnc\bct\bt - punctuation on function name input lines
+     F\bFo\bo-\b-p\bpu\bun\bnc\bct\bt - punctuation on function input lines
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     _\bd_\bo_\bu_\bb_\bl_\be s\bsi\bin\bn(), cos
+     _\bd_\bo_\bu_\bb_\bl_\be s\bsi\bin\bn(), cos _\bi_\bt_\ba_\bl_\bi_\bc
 
-OpenBSD                        November 20, 2014                       OpenBSD
+     _\bx, _\by b\bbo\bol\bld\bd
+
+     _\bi_\bn_\bt, _\bf_\bl_\bo_\ba_\bt b\bbo\bol\bld\bd
+
+OpenBSD                          May 20, 2017                          OpenBSD
index 3128aee..88524f6 100644 (file)
@@ -2,11 +2,15 @@ FO-PUNCT(1) - General Commands Manual
 
 # NAME
 
-**Fo-punct** - punctuation on function name input lines
+**Fo-punct** - punctuation on function input lines
 
 # DESCRIPTION
 
 *double*
-**sin**(), cos
+**sin**(), cos *italic*
 
-OpenBSD - November 20, 2014
+*x*, *y* **bold**
+
+*int*, *float* **bold**
+
+OpenBSD - May 20, 2017
index 78da864..bba07fb 100644 (file)
@@ -1,6 +1,6 @@
-# $OpenBSD: Makefile,v 1.6 2017/03/08 22:53:35 schwarze Exp $
+# $OpenBSD: Makefile,v 1.7 2017/05/30 16:21:08 schwarze Exp $
 
-REGRESS_TARGETS = noarg font
+REGRESS_TARGETS = font noarg punct
 LINT_TARGETS   = noarg
 
 .include <bsd.regress.mk>
diff --git a/regress/usr.bin/mandoc/mdoc/Ic/punct.in b/regress/usr.bin/mandoc/mdoc/Ic/punct.in
new file mode 100644 (file)
index 0000000..a62058b
--- /dev/null
@@ -0,0 +1,42 @@
+.Dd August 21, 2014
+.Dt Ic-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Ic-punct
+.Nd punctuation handling by the Ic macro
+.Sh DESCRIPTION
+closing punctuation
+.Ic a )
+only one
+.Ic )
+only more than one
+.Ic ) )
+middle
+.Ic a ) z
+start
+.Ic ) z
+dot
+.Ic . z
+comma
+.Ic , z
+semicolon
+.Ic ; z
+colon
+.Ic : z
+quest
+.Ic ? z
+excl
+.Ic ! z
+paren
+.Ic ) z
+bracket
+.Ic ] z
+bar
+.Ic | m
+op paren
+.Ic ( a
+op bracket
+.Ic [ a
+.Pp
+quoted punctuation:
+.Ic a "(" b "|" c ")" d "," "Em" italic .
diff --git a/regress/usr.bin/mandoc/mdoc/Ic/punct.out_ascii b/regress/usr.bin/mandoc/mdoc/Ic/punct.out_ascii
new file mode 100644 (file)
index 0000000..4c37048
--- /dev/null
@@ -0,0 +1,13 @@
+Ic-PUNCT(1)                 General Commands Manual                Ic-PUNCT(1)
+
+N\bNA\bAM\bME\bE
+     I\bIc\bc-\b-p\bpu\bun\bnc\bct\bt - punctuation handling by the Ic macro
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     closing punctuation a\ba) only one ) only more than one )) middle a\ba) z\bz start
+     ) z\bz dot . z\bz comma , z\bz semicolon ; z\bz colon : z\bz quest ? z\bz excl ! z\bz paren )
+     z\bz bracket ] z\bz bar | m\bm op paren (a\ba op bracket [a\ba
+
+     quoted punctuation: a\ba (b\bb | c\bc) d\bd, _\bi_\bt_\ba_\bl_\bi_\bc.
+
+OpenBSD                         August 21, 2014                        OpenBSD
diff --git a/regress/usr.bin/mandoc/mdoc/Ic/punct.out_markdown b/regress/usr.bin/mandoc/mdoc/Ic/punct.out_markdown
new file mode 100644 (file)
index 0000000..7fd2742
--- /dev/null
@@ -0,0 +1,45 @@
+Ic-PUNCT(1) - General Commands Manual
+
+# NAME
+
+**Ic-punct** - punctuation handling by the Ic macro
+
+# DESCRIPTION
+
+closing punctuation
+**a**)
+only one
+)
+only more than one
+))
+middle
+**a**) **z**
+start
+) **z**
+dot
+. **z**
+comma
+, **z**
+semicolon
+; **z**
+colon
+: **z**
+quest
+? **z**
+excl
+! **z**
+paren
+) **z**
+bracket
+] **z**
+bar
+| **m**
+op paren
+(**a**
+op bracket
+\[**a**
+
+quoted punctuation:
+**a** (**b** | **c**) **d**, *italic*.
+
+OpenBSD - August 21, 2014
index e24ab18..9399325 100644 (file)
@@ -6,5 +6,5 @@
 .Nd changing the font inside the include macro
 .Sh DESCRIPTION
 normal text
-.In prefix\\fBheader\\fPsuffix
+.In prefix\\fBheader\\fPsuffix | after ":" punctuation "Sy" bold
 trailing text
index 7d1948e..d868a8c 100644 (file)
@@ -4,6 +4,6 @@ N\bNA\bAM\bME\bE
      I\bIn\bn-\b-f\bfo\bon\bnt\bt - changing the font inside the include macro
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     normal text <_\bp_\br_\be_\bf_\bi_\bxh\bhe\bea\bad\bde\ber\br_\bs_\bu_\bf_\bf_\bi_\bx> trailing text
+     normal text <_\bp_\br_\be_\bf_\bi_\bxh\bhe\bea\bad\bde\ber\br_\bs_\bu_\bf_\bf_\bi_\bx> | after: punctuation b\bbo\bol\bld\btrailing text
 
 OpenBSD                          July 9, 2012                          OpenBSD
index e007a01..4b99b61 100644 (file)
@@ -7,7 +7,7 @@ IN-FONT(2) - System Calls Manual
 # DESCRIPTION
 
 normal text
-&lt;*prefix**header**suffix*>
+&lt;*prefix**header**suffix*> | after: punctuation **bold**
 trailing text
 
 OpenBSD - July 9, 2012
index 331e55d..0256577 100644 (file)
@@ -7,7 +7,7 @@
 .Sh DESCRIPTION
 Leading punctuation:
 .Li ( b
-.Li [ b
+.Li "[" b
 .Li | b
 .Li . b
 .Li , b
@@ -23,7 +23,7 @@ Trailing punctuation:
 .Li a [
 .Li a |
 .Li a .
-.Li a ,
+.Li a ","
 .Li a ;
 .Li a :
 .Li a ?
@@ -37,11 +37,11 @@ Middle punctuation:
 .Li a | b
 .Li a . b
 .Li a , b
-.Li a ; b
+.Li a ";" b
 .Li a : b
 .Li a ? b
 .Li a ! b
-.Li a ) b
+.Li a ")" b
 .Li a ] b
 .Pp
 Isolated punctuation:
@@ -78,6 +78,6 @@ Multiple punctuation:
 .Li [ ( arg ) ] .
 .Pp
 Quoted:
-.Li "a . b Nm"
+.Li "a . b Nm" "Sy" bold
 .Li ". b Nm"
 .Li "."
index ae7d3f6..d0de6c9 100644 (file)
@@ -21,6 +21,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      Multiple punctuation: [(arg)].
 
-     Quoted: a . b Nm . b Nm .
+     Quoted: a . b Nm b\bbo\bol\bld\b. b Nm .
 
 OpenBSD                        November 17, 2014                       OpenBSD
index 3abdf12..bdce45c 100644 (file)
@@ -22,3 +22,4 @@ mandoc: punct.in:70:7: WARNING: skipping empty macro: Li
 mandoc: punct.in:71:7: WARNING: skipping empty macro: Li
 mandoc: punct.in:74:7: WARNING: skipping empty macro: Li
 mandoc: punct.in:75:7: WARNING: skipping empty macro: Li
+mandoc: punct.in:83:2: WARNING: skipping empty macro: Li
index fcfc83b..97110e2 100644 (file)
@@ -79,8 +79,8 @@ Multiple punctuation:
 \[(`arg`)].
 
 Quoted:
-`a . b Nm`
+`a . b Nm` **bold**
 `. b Nm`
-`.`
+.
 
 OpenBSD - November 17, 2014
index dc84174..24c2c23 100644 (file)
@@ -6,5 +6,5 @@
 .Nd changing fonts inside the mathematical symbol macro
 .Sh DESCRIPTION
 normal text
-.Ms bold\\fIemphasis\\fPback | after : punctuation
+.Ms bold\\fIemphasis\\fPback | after ":" punctuation "Em" italic
 trailing text
index 280aa40..50ca3b2 100644 (file)
@@ -4,6 +4,6 @@ N\bNA\bAM\bME\bE
      M\bMs\bs-\b-f\bfo\bon\bnt\bt - changing fonts inside the mathematical symbol macro
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     normal text b\bbo\bol\bld\bd_\be_\bm_\bp_\bh_\ba_\bs_\bi_\bsb\bba\bac\bck\bk | a\baf\bft\bte\ber\br: p\bpu\bun\bnc\bct\btu\bua\bat\bti\bio\bon\bn trailing text
+     normal text b\bbo\bol\bld\bd_\be_\bm_\bp_\bh_\ba_\bs_\bi_\bsb\bba\bac\bck\bk | a\baf\bft\bte\ber\br: p\bpu\bun\bnc\bct\btu\bua\bat\bti\bio\bon\b_\bi_\bt_\ba_\bl_\bi_\btrailing text
 
 OpenBSD                        November 20, 2014                       OpenBSD
index 7b04400..b554083 100644 (file)
@@ -7,7 +7,7 @@ MS-FONT(1) - General Commands Manual
 # DESCRIPTION
 
 normal text
-**bold*emphasis*back** | **after**: **punctuation**
+**bold*emphasis*back** | **after**: **punctuation** *italic*
 trailing text
 
 OpenBSD - November 20, 2014
index d9e36c3..16afb2d 100644 (file)
@@ -6,7 +6,7 @@
 .Nd mailto
 .Sh DESCRIPTION
 Please send mail to
-.Mt schwarze@openbsd.org .
+.Mt schwarze@openbsd.org ";" "Sy" bold .
 .Pp
 Do not send mail to
 .Mt .
index 65cde86..7b2ea54 100644 (file)
@@ -4,7 +4,7 @@ N\bNA\bAM\bME\bE
      M\bMt\bt-\b-s\bsi\bim\bmp\bpl\ble\be - mailto
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     Please send mail to _\bs_\bc_\bh_\bw_\ba_\br_\bz_\be_\b@_\bo_\bp_\be_\bn_\bb_\bs_\bd_\b._\bo_\br_\bg.
+     Please send mail to _\bs_\bc_\bh_\bw_\ba_\br_\bz_\be_\b@_\bo_\bp_\be_\bn_\bb_\bs_\bd_\b._\bo_\br_\bg; b\bbo\bol\bld\bd.
 
      Do not send mail to _\b~.
 
index 78c21be..9281fee 100644 (file)
@@ -7,7 +7,7 @@ MT-SIMPLE(1) - General Commands Manual
 # DESCRIPTION
 
 Please send mail to
-[schwarze@openbsd.org](mailto:schwarze@openbsd.org).
+[schwarze@openbsd.org](mailto:schwarze@openbsd.org); **bold**.
 
 Do not send mail to
 [~](mailto:~).
index b4d8ef7..c952c7c 100644 (file)
@@ -6,7 +6,7 @@
 .Nd punctuation after the normal macro
 .Sh DESCRIPTION
 Leading punctuation:
-.No ( b
+.No "(" b
 .No [ b
 .No | b
 .No . b
@@ -29,17 +29,17 @@ Trailing punctuation:
 .No a ?
 .No a !
 .No a )
-.No a ]
+.No a "]"
 .Pp
 Middle punctuation:
 .No a ( b
-.No a [ b
+.No a "[" b
 .No a | b
 .No a . b
 .No a , b
 .No a ; b
 .No a : b
-.No a ? b
+.No a "?" b
 .No a ! b
 .No a ) b
 .No a ] b
@@ -78,6 +78,6 @@ Multiple punctuation:
 .No [ ( arg ) ] .
 .Pp
 Quoted:
-.No "a . b Nm"
+.No "a . b Nm" "Sy" bold
 .No ". b Nm"
 .No "."
index eca39c4..94252d8 100644 (file)
@@ -21,6 +21,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      Multiple punctuation: [(arg)].
 
-     Quoted: a . b Nm . b Nm .
+     Quoted: a . b Nm b\bbo\bol\bld\b. b Nm .
 
 OpenBSD                        November 17, 2014                       OpenBSD
index cd2fd00..e46cd67 100644 (file)
@@ -22,3 +22,4 @@ mandoc: punct.in:70:7: WARNING: skipping empty macro: No
 mandoc: punct.in:71:7: WARNING: skipping empty macro: No
 mandoc: punct.in:74:7: WARNING: skipping empty macro: No
 mandoc: punct.in:75:7: WARNING: skipping empty macro: No
+mandoc: punct.in:83:2: WARNING: skipping empty macro: No
index 6861d21..6dd09c8 100644 (file)
@@ -79,7 +79,7 @@ Multiple punctuation:
 \[(arg)].
 
 Quoted:
-a . b Nm
+a . b Nm **bold**
 . b Nm
 .
 
index d55cd32..20cfe5c 100644 (file)
@@ -8,6 +8,6 @@
 Normal words:
 .No no Ns ns No no
 Opening punctuation:
-.No no Ns ( ns No no
+.No no Ns "(" ns No no
 Closing punctuation:
-.No no Ns ns ) No no
+.No no "Ns" ns ")" No no
index c9e9d73..59ea4bb 100644 (file)
@@ -6,13 +6,13 @@
 .Nd punctuation handling by the Oo macro
 .Sh DESCRIPTION
 at the beginning:
-.Oo ( z
+.Oo "(" z
 .Oo | z
 .Oo . z
-.Oc Oc Oc
+.Oc Oc "Sy" bold Oc
 .Pp
 in the middle:
-.Oo a ( z
+.Oo a "(" z
 .Oo a | z
 .Oo a . z
 .Oc Oc Oc
index ca487cf..68addf8 100644 (file)
@@ -4,7 +4,7 @@ N\bNA\bAM\bME\bE
      O\bOo\bo-\b-p\bpu\bun\bnc\bct\bt - punctuation handling by the Oo macro
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     at the beginning: ([z [| z [. z]]]
+     at the beginning: ([z [| z [. z]] b\bbo\bol\bld\bd]
 
      in the middle: [a (z [a | z [a. z]]]
 
index befa71f..e6525b1 100644 (file)
@@ -9,7 +9,7 @@ OO-PUNCT(1) - General Commands Manual
 at the beginning:
 (\[z
 \[| z
-\[. z]]]
+\[. z]] **bold**]
 
 in the middle:
 \[a (z
index 02a25c9..7bc9933 100644 (file)
@@ -6,12 +6,12 @@
 .Nd punctuation handling by the Op macro
 .Sh DESCRIPTION
 at the beginning:
-.Op ( z
+.Op "(" z
 .Op | z
 .Op . z
 .Pp
 in the middle:
-.Op a ( z
+.Op a "(" z
 .Op a | z
 .Op a . z
 .Pp
index ea6c81f..c243d74 100644 (file)
@@ -37,3 +37,6 @@ op paren
 .Pa ( a
 op bracket
 .Pa [ a
+.Pp
+quoted punctuation:
+.Pa a "(" b "|" c ")" d "," "Sy" bold .
index 65b247e..ee2a7ed 100644 (file)
@@ -8,4 +8,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      start _\b~) _\bz dot _\b~. _\bz comma _\b~, _\bz semicolon _\b~; _\bz colon _\b~: _\bz quest _\b~? _\bz excl
      _\b~! _\bz paren _\b~) _\bz bracket _\b~] _\bz bar | _\bm op paren (_\ba op bracket [_\ba
 
+     quoted punctuation: _\ba (_\bb | _\bc) _\bd, b\bbo\bol\bld\bd.
+
 OpenBSD                         August 21, 2014                        OpenBSD
index e7b0503..3730d72 100644 (file)
@@ -39,4 +39,7 @@ op paren
 op bracket
 \[*a*
 
+quoted punctuation:
+*a* (*b* | *c*) *d*, **bold**.
+
 OpenBSD - August 21, 2014
index 58d6bf3..81bd207 100644 (file)
@@ -8,7 +8,7 @@
 An empty
 .Qq
 and a full
-.Qq user@host
+.Qq "(" user@host
 quotation.
 And another
-.Qo full Qc one .
+.Qo "(" full Qc one "Sy" bold .
index 311f1e9..a191f45 100644 (file)
@@ -4,6 +4,7 @@ N\bNA\bAM\bME\bE
      Q\bQq\bq-\b-e\bem\bmp\bpt\bty\by - empty implicit enclosure macros
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     An empty "" and a full "user@host" quotation.  And another "full" one.
+     An empty "" and a full ("user@host" quotation.  And another ("full" one
+     b\bbo\bol\bld\bd.
 
 OpenBSD                        October 21, 2010                        OpenBSD
index 262ae04..beb8cb3 100644 (file)
@@ -9,9 +9,9 @@ QQ-EMPTY(1) - General Commands Manual
 An empty
 ""
 and a full
-"user@host"
+("user@host"
 quotation.
 And another
-"full" one.
+("full" one **bold**.
 
 OpenBSD - October 21, 2010
index 00af9a2..4a8cd1e 100644 (file)
@@ -8,7 +8,7 @@
 An empty
 .Sq
 and a full
-.Sq user@host
+.Sq "(" user@host
 quotation.
 And another
-.So full Sc one .
+.So "(" full Sc one "Sy" bold .
index 4ca5e84..cf01442 100644 (file)
@@ -4,6 +4,7 @@ N\bNA\bAM\bME\bE
      S\bSq\bq-\b-e\bem\bmp\bpt\bty\by - empty implicit enclosure macros
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     An empty `' and a full `user@host' quotation.  And another `full' one.
+     An empty `' and a full (`user@host' quotation.  And another (`full' one
+     b\bbo\bol\bld\bd.
 
 OpenBSD                        October 21, 2010                        OpenBSD
index 34a3fcb..1da780b 100644 (file)
@@ -9,9 +9,9 @@ SQ-EMPTY(1) - General Commands Manual
 An empty
 ''
 and a full
-'user@host'
+('user@host'
 quotation.
 And another
-'full' one.
+('full' one **bold**.
 
 OpenBSD - October 21, 2010
index 10a45d3..26dc494 100644 (file)
@@ -6,7 +6,7 @@
 .Nd the standard macro calling other macros
 .Sh STANDARDS
 calling another macro:
-.St Fl called
+.St "Fl" called
 .Pp
 valid argument:
 .St -p1003.1-2004
index 35c4a64..f2126b7 100644 (file)
@@ -6,7 +6,7 @@
 .Nd internal cross reference without a target
 .Sh DESCRIPTION
 with target:
-.Sx DESCRIPTION
+.Sx DESCRIPTION ";" "Em" italic
 no target:
 .Sx
 end of test document
index 343ab00..e3adc0b 100644 (file)
@@ -4,6 +4,6 @@ N\bNA\bAM\bME\bE
      S\bSx\bx-\b-n\bno\boa\bar\brg\bg - internal cross reference without a target
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     with target: _\bD_\bE_\bS_\bC_\bR_\bI_\bP_\bT_\bI_\bO_\bN no target: end of test document
+     with target: _\bD_\bE_\bS_\bC_\bR_\bI_\bP_\bT_\bI_\bO_\bN; _\bi_\bt_\ba_\bl_\bi_\bc no target: end of test document
 
 OpenBSD                        January 19, 2011                        OpenBSD
index 0271546..d318451 100644 (file)
@@ -7,7 +7,7 @@ SX-NOARG(1) - General Commands Manual
 # DESCRIPTION
 
 with target:
-*DESCRIPTION*
+*DESCRIPTION*; *italic*
 no target:
 end of test document
 
index 4f51886..764e8ab 100644 (file)
@@ -7,7 +7,7 @@
 .Sh DESCRIPTION
 Leading punctuation:
 .Sy ( b
-.Sy [ b
+.Sy "[" b
 .Sy | b
 .Sy . b
 .Sy , b
@@ -28,13 +28,13 @@ Trailing punctuation:
 .Sy a :
 .Sy a ?
 .Sy a !
-.Sy a )
+.Sy a ")"
 .Sy a ]
 .Pp
 Middle punctuation:
 .Sy a ( b
 .Sy a [ b
-.Sy a | b
+.Sy a "|" b
 .Sy a . b
 .Sy a , b
 .Sy a ; b
@@ -78,5 +78,6 @@ Multiple punctuation:
 .Sy [ ( arg ) ] .
 .Pp
 Quoted:
-.Sy "a . b Nm"
+.Sy "a . b Nm" "Em" italic
 .Sy ". b Nm"
+.Sy "."
index 39bed0b..2f36857 100644 (file)
@@ -21,6 +21,6 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
      Multiple punctuation: [(a\bar\brg\bg)].
 
-     Quoted: a\ba .\b. b\bb N\bNm\b.\b. b\bb N\bNm\bm
+     Quoted: a\ba .\b. b\bb N\bNm\b_\bi_\bt_\ba_\bl_\bi_\bc .\b. b\bb N\bNm\bm .
 
 OpenBSD                        November 17, 2014                       OpenBSD
index 0073a30..31f1d56 100644 (file)
@@ -22,3 +22,4 @@ mandoc: punct.in:70:7: WARNING: skipping empty macro: Sy
 mandoc: punct.in:71:7: WARNING: skipping empty macro: Sy
 mandoc: punct.in:74:7: WARNING: skipping empty macro: Sy
 mandoc: punct.in:75:7: WARNING: skipping empty macro: Sy
+mandoc: punct.in:83:2: WARNING: skipping empty macro: Sy
index 8d91555..5e3a0c1 100644 (file)
@@ -79,7 +79,8 @@ Multiple punctuation:
 \[(**arg**)].
 
 Quoted:
-**a . b Nm**
+**a . b Nm** *italic*
 **. b Nm**
+.
 
 OpenBSD - November 17, 2014
index 1d18a95..6465042 100644 (file)
@@ -6,7 +6,7 @@
 .Nd trade name macro without argument
 .Sh DESCRIPTION
 with argument
-.Tn IBM
+.Tn IBM "," "Em" italic
 no argument
 .Tn
 end of test document
index 1333a90..2fc5b4e 100644 (file)
@@ -4,6 +4,6 @@ N\bNA\bAM\bME\bE
      T\bTn\bn-\b-n\bno\boa\bar\brg\bg - trade name macro without argument
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     with argument IBM no argument end of test document
+     with argument IBM, _\bi_\bt_\ba_\bl_\bi_\bc no argument end of test document
 
 OpenBSD                        January 19, 2011                        OpenBSD
index 64641d6..2ff512c 100644 (file)
@@ -7,7 +7,7 @@ TN-NOARG(1) - General Commands Manual
 # DESCRIPTION
 
 with argument
-`IBM`
+`IBM`, *italic*
 no argument
 end of test document
 
index e207ffa..b8796a8 100644 (file)
@@ -1,6 +1,6 @@
-# $OpenBSD: Makefile,v 1.5 2017/03/08 22:53:36 schwarze Exp $
+# $OpenBSD: Makefile,v 1.6 2017/05/30 16:21:08 schwarze Exp $
 
-REGRESS_TARGETS        = basic font noarg
+REGRESS_TARGETS        = basic font noarg punct
 LINT_TARGETS   = noarg
 
 .include <bsd.regress.mk>
diff --git a/regress/usr.bin/mandoc/mdoc/Va/punct.in b/regress/usr.bin/mandoc/mdoc/Va/punct.in
new file mode 100644 (file)
index 0000000..198e95a
--- /dev/null
@@ -0,0 +1,42 @@
+.Dd August 21, 2014
+.Dt AR-PUNCT 1
+.Os OpenBSD
+.Sh NAME
+.Nm Va-punct
+.Nd punctuation handling by the Va macro
+.Sh DESCRIPTION
+closing punctuation
+.Va a )
+only one
+.Va )
+only more than one
+.Va ) )
+middle
+.Va a ) z
+start
+.Va ) z
+dot
+.Va . z
+comma
+.Va , z
+semicolon
+.Va ; z
+colon
+.Va : z
+quest
+.Va ? z
+excl
+.Va ! z
+paren
+.Va ) z
+bracket
+.Va ] z
+bar
+.Va | m
+op paren
+.Va ( a
+op bracket
+.Va [ a
+.Pp
+quoted punctuation:
+.Va a "(" b "|" c ")" d "," "Sy" bold .
diff --git a/regress/usr.bin/mandoc/mdoc/Va/punct.out_ascii b/regress/usr.bin/mandoc/mdoc/Va/punct.out_ascii
new file mode 100644 (file)
index 0000000..a333c7e
--- /dev/null
@@ -0,0 +1,13 @@
+AR-PUNCT(1)                 General Commands Manual                AR-PUNCT(1)
+
+N\bNA\bAM\bME\bE
+     V\bVa\ba-\b-p\bpu\bun\bnc\bct\bt - punctuation handling by the Va macro
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     closing punctuation _\ba) only one ) only more than one )) middle _\ba) _\bz start
+     ) _\bz dot . _\bz comma , _\bz semicolon ; _\bz colon : _\bz quest ? _\bz excl ! _\bz paren )
+     _\bz bracket ] _\bz bar | _\bm op paren (_\ba op bracket [_\ba
+
+     quoted punctuation: _\ba (_\bb | _\bc) _\bd, b\bbo\bol\bld\bd.
+
+OpenBSD                         August 21, 2014                        OpenBSD
diff --git a/regress/usr.bin/mandoc/mdoc/Va/punct.out_markdown b/regress/usr.bin/mandoc/mdoc/Va/punct.out_markdown
new file mode 100644 (file)
index 0000000..772793f
--- /dev/null
@@ -0,0 +1,45 @@
+AR-PUNCT(1) - General Commands Manual
+
+# NAME
+
+**Va-punct** - punctuation handling by the Va macro
+
+# DESCRIPTION
+
+closing punctuation
+*a*)
+only one
+)
+only more than one
+))
+middle
+*a*) *z*
+start
+) *z*
+dot
+. *z*
+comma
+, *z*
+semicolon
+; *z*
+colon
+: *z*
+quest
+? *z*
+excl
+! *z*
+paren
+) *z*
+bracket
+] *z*
+bar
+| *m*
+op paren
+(*a*
+op bracket
+\[*a*
+
+quoted punctuation:
+*a* (*b* | *c*) *d*, **bold**.
+
+OpenBSD - August 21, 2014
index 97e6820..3124ed5 100644 (file)
@@ -8,13 +8,13 @@
 One single
 .Xr echo 1
 is fine, and so is an
-.Xr echo 1 followed by something else.
+.Xr echo 1 followed by something "Em" else .
 .Pp
 But listen for multiple
 .Xr echo 1 Ns s .
 .Pp
 A call, an
-.Xr echo 1 , and
+.Xr "(" echo 1 ")" , and
 another
 .Xr echo 1 .
 .Pp
index 81fe878..67e8b71 100644 (file)
@@ -5,11 +5,11 @@ N\bNA\bAM\bME\bE
 
 D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      One single echo(1) is fine, and so is an echo(1) followed by something
-     else.
+     _\be_\bl_\bs_\be.
 
      But listen for multiple echo(1)s.
 
-     A call, an echo(1), and another echo(1).
+     A call, an (echo(1)), and another echo(1).
 
      Finally, half an echo, no echo and no echo at all.
 
index bc102f5..fdfaa8d 100644 (file)
@@ -9,13 +9,13 @@ XR-ARGS(1) - General Commands Manual
 One single
 echo(1)
 is fine, and so is an
-echo(1) followed by something else.
+echo(1) followed by something *else*.
 
 But listen for multiple
 echo(1)s.
 
 A call, an
-echo(1), and
+(echo(1)), and
 another
 echo(1).
 
index 708f3a1..8c86af6 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: libmdoc.h,v 1.82 2017/04/29 12:43:55 schwarze Exp $ */
+/*     $OpenBSD: libmdoc.h,v 1.83 2017/05/30 16:21:07 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -39,7 +39,6 @@ enum  margserr {
        ARGS_EOLN, /* end-of-line */
        ARGS_WORD, /* normal word */
        ARGS_PUNCT, /* series of punctuation */
-       ARGS_QWORD, /* quoted word */
        ARGS_PHRASE /* Bl -column phrase */
 };
 
index 30b5061..bd9984c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mdoc_argv.c,v 1.70 2017/05/05 15:16:25 schwarze Exp $ */
+/*     $OpenBSD: mdoc_argv.c,v 1.71 2017/05/30 16:21:07 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -553,14 +553,14 @@ args(struct roff_man *mdoc, int line, int *pos,
                        if ( ! (mdoc->flags & MDOC_PHRASE))
                                mandoc_msg(MANDOCERR_ARG_QUOTE,
                                    mdoc->parse, line, *pos, NULL);
-                       return ARGS_QWORD;
+                       return ARGS_WORD;
                }
 
                mdoc->flags &= ~MDOC_PHRASELIT;
                buf[(*pos)++] = '\0';
 
                if ('\0' == buf[*pos])
-                       return ARGS_QWORD;
+                       return ARGS_WORD;
 
                while (' ' == buf[*pos])
                        (*pos)++;
@@ -569,7 +569,7 @@ args(struct roff_man *mdoc, int line, int *pos,
                        mandoc_msg(MANDOCERR_SPACE_EOL, mdoc->parse,
                            line, *pos, NULL);
 
-               return ARGS_QWORD;
+               return ARGS_WORD;
        }
 
        p = &buf[*pos];
index 92f334e..b78b3ed 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mdoc_macro.c,v 1.180 2017/05/05 15:16:25 schwarze Exp $ */
+/*     $OpenBSD: mdoc_macro.c,v 1.181 2017/05/30 16:21:07 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -74,7 +74,8 @@ const struct mdoc_macro __mdoc_macros[MDOC_MAX - MDOC_Dd] = {
        { blk_full, MDOC_PARSED | MDOC_JOIN }, /* It */
        { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ad */
        { in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* An */
-       { in_line_argn, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Ap */
+       { in_line_argn, MDOC_CALLABLE | MDOC_PARSED |
+                       MDOC_IGNDELIM | MDOC_JOIN }, /* Ap */
        { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ar */
        { in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Cd */
        { in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Cm */
@@ -710,8 +711,7 @@ blk_exp_close(MACRO_PROT_ARGS)
                if (ac == ARGS_PUNCT || ac == ARGS_EOLN)
                        break;
 
-               ntok = ac == ARGS_QWORD ? TOKEN_NONE :
-                   lookup(mdoc, tok, line, lastarg, p);
+               ntok = lookup(mdoc, tok, line, lastarg, p);
 
                if (ntok == TOKEN_NONE) {
                        dword(mdoc, line, lastarg, p, DELIM_MAX,
@@ -807,7 +807,7 @@ in_line(MACRO_PROT_ARGS)
                        break;
                }
 
-               ntok = (ac == ARGS_QWORD || (tok == MDOC_Fn && !cnt)) ?
+               ntok = (tok == MDOC_Fn && !cnt) ?
                    TOKEN_NONE : lookup(mdoc, tok, line, la, p);
 
                /*
@@ -836,14 +836,11 @@ in_line(MACRO_PROT_ARGS)
                }
 
                /*
-                * Non-quote-enclosed punctuation.  Set up our scope, if
-                * a word; rewind the scope, if a delimiter; then append
-                * the word.
+                * Handle punctuation.  Set up our scope, if a word;
+                * rewind the scope, if a delimiter; then append the word.
                 */
 
-               d = ac == ARGS_QWORD ? DELIM_NONE : mdoc_isdelim(p);
-
-               if (DELIM_NONE != d) {
+               if ((d = mdoc_isdelim(p)) != DELIM_NONE) {
                        /*
                         * If we encounter closing punctuation, no word
                         * has been emitted, no scope is open, and we're
@@ -863,11 +860,12 @@ in_line(MACRO_PROT_ARGS)
                         * Close out our scope, if one is open, before
                         * any punctuation.
                         */
-                       if (scope)
+                       if (scope && tok != MDOC_Lk) {
                                rew_elem(mdoc, tok);
-                       scope = 0;
-                       if (tok == MDOC_Fn)
-                               mayopen = 0;
+                               scope = 0;
+                               if (tok == MDOC_Fn)
+                                       mayopen = 0;
+                       }
                } else if (mayopen && !scope) {
                        mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
                        scope = 1;
@@ -1113,7 +1111,6 @@ blk_full(MACRO_PROT_ARGS)
 
                if (head == NULL &&
                    ac != ARGS_PHRASE &&
-                   ac != ARGS_QWORD &&
                    mdoc_isdelim(p) == DELIM_OPEN) {
                        dword(mdoc, line, la, p, DELIM_OPEN, 0);
                        continue;
@@ -1210,8 +1207,7 @@ blk_part_imp(MACRO_PROT_ARGS)
                if (ac == ARGS_EOLN || ac == ARGS_PUNCT)
                        break;
 
-               if (body == NULL && ac != ARGS_QWORD &&
-                   mdoc_isdelim(p) == DELIM_OPEN) {
+               if (body == NULL && mdoc_isdelim(p) == DELIM_OPEN) {
                        dword(mdoc, line, la, p, DELIM_OPEN, 0);
                        continue;
                }
@@ -1267,8 +1263,7 @@ blk_part_exp(MACRO_PROT_ARGS)
 
                /* Flush out leading punctuation. */
 
-               if (head == NULL && ac != ARGS_QWORD &&
-                   mdoc_isdelim(p) == DELIM_OPEN) {
+               if (head == NULL && mdoc_isdelim(p) == DELIM_OPEN) {
                        dword(mdoc, line, la, p, DELIM_OPEN, 0);
                        continue;
                }
@@ -1367,7 +1362,7 @@ in_line_argn(MACRO_PROT_ARGS)
                        state = -2;
                }
 
-               ntok = (ac == ARGS_QWORD || (tok == MDOC_Pf && state == 0)) ?
+               ntok = (tok == MDOC_Pf && state == 0) ?
                    TOKEN_NONE : lookup(mdoc, tok, line, la, p);
 
                if (ntok != TOKEN_NONE) {
@@ -1379,8 +1374,7 @@ in_line_argn(MACRO_PROT_ARGS)
                        break;
                }
 
-               if (ac == ARGS_QWORD ||
-                   mdoc_macros[tok].flags & MDOC_IGNDELIM ||
+               if (mdoc_macros[tok].flags & MDOC_IGNDELIM ||
                    mdoc_isdelim(p) == DELIM_NONE) {
                        if (state == -1) {
                                mdoc_elem_alloc(mdoc, line, ppos, tok, arg);