Follow-up Comment #2, bug #67347 (group groff):

Thought bubble:

The existing `\)` escape sequence has only one user: _groff_ _mdoc_.

Moreover, its semantics seem impossible to motivate except by reference to
_mdoc_'s bespoke macro processing system.  (That is, the package essentially
implements a macro processor in *roff, which is itself--among other things--a
macro processor.)

Importantly, I don't think the _mdoc_ language ever encourages its users to
employ this escape sequence, in other words to put `\)` into their documents.
Ingo would be a good authority here.

I don't think the _groff_ language can sustain an entire escape sequence for
such a niche usage--one macro package doing a strange thing.  Especially if
the objective is achievable by other means.

And that means may be to keep the `\)` escape sequence, but to change its
semantics to those I proposed for `\T` in comment #1.

I need to explore the consequences of this proposal and see if they survive
contact with _mdoc_ reality.

_groff mdoc_'s use of `\)` is indeed copious.


tmac/doc.tmac:500:.  nop \)\*[doc-arg\n[doc-arg-ptr]]\c
tmac/doc.tmac:507:.    nop \)\*[doc-space]\c
tmac/doc.tmac:540:.    nop \)
tmac/doc.tmac:651:.        nop \)\*[Ba]\c
tmac/doc.tmac:668:.      nop \)\*[doc-str-dfr]\f[]\c
tmac/doc.tmac:684:.          nop \)\*[doc-space\n[doc-reg-dfr]]\c
tmac/doc.tmac:687:.        nop \)\*[doc-space\n[doc-reg-dfr]]\c
tmac/doc.tmac:728:.      nop \)\*[doc-str-dpr]\f[]\c
tmac/doc.tmac:738:.      nop \)\*[doc-space\n[doc-reg-dpr]]\c
tmac/doc.tmac:757:.    nop \)\*[doc-arg\n[doc-arg-ptr]]\f[]\c
tmac/doc.tmac:839:.      nop \)\*[doc-str-Ar-default]\&
tmac/doc.tmac:848:.    nop \)\*[doc-str-Ar-default]\&\c
tmac/doc.tmac:1361:.    nop \)\c
tmac/doc.tmac:1363:.      nop \)\f[\*[doc-Tn-font]]\c
tmac/doc.tmac:1700:.      nop \)\*[doc-quote-left]\*[doc-quote-right]
tmac/doc.tmac:1710:.  \" the final '\)' prevents hyphenation in case next
character is '\%'
tmac/doc.tmac:1711:.  nop \)\*[doc-quote-left]\)\c
tmac/doc.tmac:1714:.    nop \)\*[doc-quote-right]\)\c
tmac/doc.tmac:1729:.      ds doc-arg\n[doc-reg-des]
"\*[doc-quote-right]\)\*[doc-arg\n[doc-reg-des]]
tmac/doc.tmac:1745:.        doc-append-arg "\)\*[doc-quote-right]\)" 3
tmac/doc.tmac:1750:.          ds doc-arg\n[doc-reg-des]
"\*[doc-quote-right]\)\*[doc-arg\n[doc-reg-des]]
tmac/doc.tmac:1767:.          ds doc-arg\n[doc-reg-des]
"\)\*[doc-quote-right]\)
tmac/doc.tmac:2246:.  nop \)\*[doc-quote-left]\)\c
tmac/doc.tmac:2289:.  nop \)\*[doc-quote-right]\)\c
tmac/doc.tmac:2300:.      nop \)\*[doc-space\n[doc-arg-ptr]]\c
tmac/doc.tmac:2335:.      nop \)\*[doc-arg\n[doc-arg-ptr]]\c
tmac/doc.tmac:2341:.    nop \)\$1\)\c
tmac/doc.tmac:2347:.      nop \)
tmac/doc.tmac:2402:.    nop \)'\)\c
tmac/doc.tmac:2526:.            nop \)
tmac/doc.tmac:2574:.        nop \)
tmac/doc.tmac:2859:.    nop
\)\f[\n[doc-fontmode-font-stack\n[doc-fontmode-depth]]]\c
tmac/doc.tmac:2860:.    nop
\)\s[\n[doc-fontmode-size-stack\n[doc-fontmode-depth]]u]\c
tmac/doc.tmac:4289:.  nop \)\f[\*[doc-Sy-font]]\[bu]\f[]
tmac/doc.tmac:4304:.  nop \)\f[\*[doc-Sy-font]]\-\f[]
tmac/doc.tmac:5237:.        nop ,\)\c
tmac/doc.tmac:5238:.    nop
\)\*[doc-space\n[doc-arg-ptr]]\f[\*[doc-Fa-font]]\c
tmac/doc.tmac:5239:.    nop \)\*[doc-arg\n[doc-arg-ptr]]\f[]\c
tmac/doc.tmac:5243:.    nop \)\f[\*[doc-Fa-font]]\*[doc-arg\n[doc-arg-ptr]]\c
tmac/doc.tmac:5333:.  nop \f[]\*[lp]\)\c
tmac/doc.tmac:5343:.  nop \)\*[rp]\)\c
tmac/doc.tmac:5345:.    nop \);\)\c
tmac/doc.tmac:5350:.    nop \)\*[doc-space\n[doc-arg-ptr]]\c
tmac/doc.tmac:5390:.  nop \)\*[doc-arg\n[doc-arg-ptr]]\c
tmac/doc.tmac:5399:.          nop ,\)\c
tmac/doc.tmac:5400:.      nop \)\*[doc-space\n[doc-reg-ddfa]]\f[]\|\c
tmac/doc.tmac:5501:.    nop \f[]\*[lp]\)\c
tmac/doc.tmac:5530:.    doc-parse-args \) \$@
tmac/doc.tmac:5540:.    nop \|\*[rp];\)
tmac/doc.tmac:5542:.    nop \|\*[rp]\)
tmac/doc.tmac:5756:.    nop \),
tmac/doc.tmac:5758:.    nop \).
tmac/doc.tmac:5782:.      nop
\)\*[Lq]\)\*[doc-reference-title-name-for-book]\)\*[Rq]\c
tmac/doc.tmac:5899:.      nop \)\*[doc-author-name\n[doc-reg-dpra]],
tmac/doc.tmac:5901:.      nop \)\*[doc-author-name\n[doc-reg-dpra]]
tmac/doc.tmac:5908:.    nop \)\*[doc-str-dpra]
tmac/doc.tmac:5909:.  nop \)\*[doc-author-name\n[doc-reg-dpra]],
tmac/doc.tmac:6736:.    nop \)\*[doc-arg\n[doc-arg-ptr]]\c
tmac/doc.tmac:6749:.      nop \)\*[doc-space\n[doc-reg-ddr]]\c
tmac/doc.tmac:6893:.      nop \)\*[doc-str-Rv-stds-prefix]
tmac/doc.tmac:6902:.      nop \)\*[doc-str-Rv-stds-and]
tmac/doc.tmac:6904:.      nop \)\*[doc-str-Rv-stds-suffix]
tmac/doc.tmac:6907:.      nop \)\*[doc-str-Rv-std-prefix]
tmac/doc.tmac:6909:.      nop \)\*[doc-str-Rv-std-suffix]
tmac/doc.tmac:6912:.      nop \)\*[doc-str-Rv-std0]
tmac/doc.tmac:6959:.      nop \)\*[doc-str-Ex-stds-prefix]
tmac/doc.tmac:6968:.      nop \)\*[doc-str-Ex-stds-and]
tmac/doc.tmac:6970:.      nop \)\*[doc-str-Ex-stds-suffix]
tmac/doc.tmac:6973:.      nop \)\*[doc-str-Ex-std-prefix]
tmac/doc.tmac:6975:.      nop \)\*[doc-str-Ex-std-suffix]
tmac/mdoc/doc-syms:617:.as doc-str-St--ansiC-89       "
(\*[Lq]\)\*[Ai]\~C89\*[doc-str-St]\*[Rq])
tmac/mdoc/doc-syms:639:.as doc-str-St--p1003.1        "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:641:.as doc-str-St--p1003.1b       "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:643:.as doc-str-St--p1003.1-88     "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:645:.as doc-str-St--p1003.1-90     "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:648:.as doc-str-St--p1003.1b-93    "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:650:.as doc-str-St--p1003.1c-95    "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:652:.as doc-str-St--p1003.1i-95    "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:654:.as doc-str-St--p1003.1-96     "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:657:.as doc-str-St--p1003.1g-2000  "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:659:.as doc-str-St--p1003.1-2001   "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:661:.as doc-str-St--p1003.1-2004   "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:663:.as doc-str-St--p1003.1-2008   "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:665:.as doc-str-St--p1003.1-2024   "
(\*[Lq]\)\*[Px]\*[doc-str-St].1\*[Rq])
tmac/mdoc/doc-syms:671:.as doc-str-St--p1003.2        "
(\*[Lq]\)\*[Px]\*[doc-str-St].2\*[Rq])
tmac/mdoc/doc-syms:673:.as doc-str-St--p1003.2-92     "
(\*[Lq]\)\*[Px]\*[doc-str-St].2\*[Rq])
tmac/mdoc/doc-syms:675:.as doc-str-St--p1003.2a-92    "
(\*[Lq]\)\*[Px]\*[doc-str-St].2\*[Rq])
tmac/mdoc/doc-syms:677:.as doc-str-St--iso9945-2-93   "
(\*[Lq]\)\*[Px]\*[doc-str-St].2\*[Rq])


I'm eager to prove that the changed semantics, meaning "freeze this word's
end-of-sentence status at this point", will cause no rendering regression in
_groff mdoc_, or at least none that can't be worked around within the package
itself.

And on the upside we'd then acquire an escape sequence--without actually
growing the language--that is useful to other already existing macro packages
and any that people want to develop in the future, who may find themselves
suffixing words with annotations that are "meta" to the grammar of the
substrate language.


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?67347>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/

Attachment: signature.asc
Description: PGP signature

Reply via email to