[PATCH 08/31] docs: use idiomatic *roff ellipsis

"G. Branden Robinson" <[email protected]> Thu, 23 Apr 2026 17:58:18 -0500
Newsgroups gmane.editors.nano.devel
Message-ID <20260423225818.ks7apii3j2iajrow@illithid>
groff_man_style(7):
   Synopsis macros
...
     •  Symbols that are neither to be typed literally nor replaced at
        the user’s discretion appear in the roman style; brackets
        surround optional arguments, and an ellipsis indicates that the
        previous syntactic element may be repeated arbitrarily.  Where
        whitespace separates optional arguments, a space precedes the
        ellipsis.
Notes
     Some tips on composing and troubleshooting your man pages follow.
...
     • Why doesn’t the package provide a string to insert an ellipsis?

       Examples of ellipsis usage are shown above, in subsection
       “Synopsis macros”.  The idiomatic roff ellipsis is three dots
       (periods) with thin space escape sequences \| internally
       separating them.  Since dots both begin control lines and are
       candidate end‐of‐sentence characters, however, it is sometimes
       necessary to prefix and/or suffix an ellipsis with the dummy
       character escape sequence \&.  That fact stands even if a string
       is defined to contain the sequence; further, if the string ends
       with \&, end‐of‐sentence detection is defeated when you use the
       string at the end of an actual sentence.  (Ending a sentence with
       an ellipsis is often poor style, but not always.)  A hypothetical
       string EL that contained an ellipsis, but not the trailing dummy
       character \&, would then need to be suffixed with the latter when
       not ending a sentence.

           Instead of...              ...do this.
       ──────────────────────────────────────────────────
       .ds EL \&.\|.\|.         Arguments are
       Arguments are            .IR src‐file\~ .\|.\|.\&
       .IR src‐file\~ \*(EL\&   .IR dest‐dir .
       .IR dest‐dir .
       ──────────────────────────────────────────────────

       The first column practices a false economy; the savings in typing
       is offset by the cost of obscuring even the suggestion of an
       ellipsis to a casual reader of the source document, and reduced
       portability to non‐roff man page formatters that cannot handle
       string definitions.

       Unicode defines an ellipsis code point, and some fonts have an
       ellipsis glyph, which some man pages have accessed non‐portably
       with the font‐dependent \N escape sequence.  We discourage their
       use; on terminals, they may crowd the dots into a half‐width
       character cell, and do not render at all if the output device
       lacks the glyph.  In synopses, missing ellipses can mislead the
       reader.  Dots and space are universally supported.

squash ellipsis
---
 doc/nano.1   |  6 +++---
 doc/nanorc.5 | 18 +++++++++---------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/doc/nano.1 b/doc/nano.1
index 84d1c513..a11cd3d7 100644
--- a/doc/nano.1
+++ b/doc/nano.1
@@ -25,9 +25,9 @@ .SH NAME
 .
 .SH SYNOPSIS
 .B nano
-.RI [ options "] [[\fB+" line [\fB, column "]] " file ]...
+.RI [ options "] [[\fB+" line [\fB, column "]] " file ].\|.\|.
 .P
-.BR nano " [" \fIoptions "] [[" + [ crCR ]{ / | ? } \fIstring "] " \fIfile ]...
+.BR nano " [" \fIoptions "] [[" + [ crCR ]{ / | ? } \fIstring "] " \fIfile ].\|.\|.
 .
 .SH NOTICES
 Since version 9.0, all lines are scrolled horizontally together
@@ -341,7 +341,7 @@ .SH OPTIONS
 point to vary along with the width of the screen if the screen is resized.
 The default value is \fB\-8\fR.
 .TP
-.B "\-s ""\fIprogram\fR [\fIargument \fR...]\fB""\fR, \fB\-\-speller=""\fIprogram\fR [\fIargument \fR...]\fB"""
+.B "\-s ""\fIprogram\fR [\fIargument \fR.\|.\|.]\fB""\fR, \fB\-\-speller=""\fIprogram\fR [\fIargument \fR.\|.\|.]\fB"""
 Use this command to perform spell checking and correcting, instead of
 using the built-in corrector that calls \fBhunspell\fR(1) or \fBspell\fR(1).
 .TP
diff --git a/doc/nanorc.5 b/doc/nanorc.5
index cc8341f0..93b04f17 100644
--- a/doc/nanorc.5
+++ b/doc/nanorc.5
@@ -355,7 +355,7 @@ .SH OPTIONS
 The single-line jerky sideways scrolling enabled by this option was the old
 behavior \(em the only behavior that \fBnano\fR knew.
 .TP
-.B set speller """\fIprogram\fR [\fIargument \fR...]\fB"""
+.B set speller """\fIprogram\fR [\fIargument \fR.\|.\|.]\fB"""
 Use the given \fIprogram\fR to do spell checking and correcting, instead of
 using the built-in corrector that calls \fBhunspell\fR(1) or \fBspell\fR(1).
 .TP
@@ -486,7 +486,7 @@ .SH SYNTAX HIGHLIGHTING
 For each kind of file a separate syntax can be defined
 via the following commands:
 .TP
-.BI syntax " name \fR[" """" fileregex """ " \fR...]
+.BI syntax " name \fR[" """" fileregex """ " \fR.\|.\|.]
 Start the definition of a syntax with this \fIname\fR.
 All subsequent \fBcolor\fR and other such commands
 are added to this syntax, until a new \fBsyntax\fR
@@ -504,12 +504,12 @@ .SH SYNTAX HIGHLIGHTING
 The syntax \fBnone\fR is reserved; specifying it on the command line
 is the same as not having a syntax at all.
 .TP
-.BI "header """ regex """ " \fR...
+.BI "header """ regex """ " \fR.\|.\|.
 If from all defined syntaxes no \fIfileregex\fR matched, then compare
 this \fIregex\fR (or regexes) against the first line of the current file,
 to determine whether this syntax should be used for it.
 .TP
-.BI "magic """ regex """ " \fR...
+.BI "magic """ regex """ " \fR.\|.\|.
 If no \fIfileregex\fR matched and no \fBheader\fR regex matched
 either, then compare this \fIregex\fR (or regexes) against the
 result of querying the \fBmagic\fR database about the current
@@ -517,10 +517,10 @@ .SH SYNTAX HIGHLIGHTING
 (This querying is done only when \fBlibmagic\fR is actually installed
 on the system and \fB\-\-magic\fR or \fBset magic\fR was given.)
 .TP
-.BI formatter " program " \fR[ "argument " \fR...]
+.BI formatter " program " \fR[ "argument " \fR.\|.\|.]
 Run the given \fIprogram\fR on the full contents of the current buffer.
 .TP
-.BI linter " program " \fR[ "argument " \fR...]
+.BI linter " program " \fR[ "argument " \fR.\|.\|.]
 Use the given \fIprogram\fR to run a syntax check on the current buffer.
 .TP
 .BI "comment """ string """"
@@ -539,7 +539,7 @@ .SH SYNTAX HIGHLIGHTING
 Python that want to see only spaces for indentation.
 This overrides the setting of the \fBtabstospaces\fR option.
 .TP
-.BI "color \fR[\fBbold,\fR][\fBitalic,\fR]" fgcolor , bgcolor " """ regex """ " \fR...
+.BI "color \fR[\fBbold,\fR][\fBitalic,\fR]" fgcolor , bgcolor " """ regex """ " \fR.\|.\|.
 Paint all pieces of text that match the extended regular expression
 \fIregex\fR with the given foreground and background colors, at least
 one of which must be specified.  Valid color names are:
@@ -571,7 +571,7 @@ .SH SYNTAX HIGHLIGHTING
 All coloring commands are applied in the order in which they are specified,
 which means that later commands can recolor stuff that was colored earlier.
 .TP
-.BI "icolor \fR[\fBbold,\fR][\fBitalic,\fR]" fgcolor , bgcolor " """ regex """ " \fR...
+.BI "icolor \fR[\fBbold,\fR][\fBitalic,\fR]" fgcolor , bgcolor " """ regex """ " \fR.\|.\|.
 Same as above, except that the matching is case insensitive.
 .TP
 .BI "color \fR[\fBbold,\fR][\fBitalic,\fR]" fgcolor , bgcolor " start=""" fromrx """ end=""" torx """"
@@ -591,7 +591,7 @@ .SH SYNTAX HIGHLIGHTING
 \fIsyntaxfile\fR may contain only the above commands, from \fBsyntax\fR
 to \fBicolor\fR.
 .TP
-.BI extendsyntax " name command argument " \fR...
+.BI extendsyntax " name command argument " \fR.\|.\|.
 Extend the syntax previously defined as \fIname\fR with another
 \fI\%command\fR.  This allows adding a new \fB\%color\fR, \fB\%icolor\fR,
 \fB\%header\fR, \fB\%magic\fR, \fB\%formatter\fR, \fB\%linter\fR,
-- 
2.30.2
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEh3PWHWjjDgcrENwa0Z6cfXEmbc4FAmnqpAoACgkQ0Z6cfXEm
bc7jKxAAr0vOkB5UNIb61AlRm2fGNC0s7SP96Y+bzcotLfPJLSQe7S7SGgRkIF+t
fZlrayQaAV+UE6cf3wVRYKvbx79c/QRwd4S46YOzb59d3IVS9nbgpPr7MKveoJQW
DvXGSgyuPkpNb0Q17ECPjLTkJqjZEnyrFtnlNt4qk4UsRzyACA0f/J4eXzTNWhUB
OmWClFKeY8x6hhDP8l8VoEPz43rZNCGnYJQPQ2T9TZFZWbbutG7/Y/MTX+BUTGGp
XqjUbo9IzJLLfBwUiMc8X79Xlmtf6jOZtsMv5TH+2NJ2WR9mL75B+DxGVQVMQIxs
lpNqBQmPBDOZ+yEK/cUEnMQY159Arxlil5WhoxZ5u4AL3GQThlJ2cfM/ETOrxkFo
DcfA3gSS+lL6o/40xTLzPTg1HcFHWMhEo6kRr4timQUHLA79odDZX/tTxbhSH4wK
NAIMuW+YYTxxFYVYb4BElM9reJVCf/bpAOONH5qAK4NL7Xrg8U/FhKzVUZ4iecos
4xUqAreAqxdicwWafengBNXBog8JCZOV6rhCPqFUzmVXEz1JE2qNn3o/VfNW+4ic
rtrTa3zO7+pDBFioAu41BqmX8LnjpWG+rrf6jgtpMq76v6hLztEHz5ReKWtSiS/H
lfYCQWZhu3j1wP9anQxPgqXKrU8GQKWVJ4YKrmeAEwRiw4z+Cug=
=sgcO
-----END PGP SIGNATURE-----