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/
signature.asc
Description: PGP signature