Subject: Re: bug#49558: fill paragraph in texinfo-mode fails with @

From: Eli Zaretskii <[email-masked]>
Date: Wed, 14 Jul 2021 15:01:18 +0300

> From: Lars Ingebrigtsen <[email-masked]>
> Date: Wed, 14 Jul 2021 09:47:11 +0200
> Cc: [email-masked]
> 
> [email-masked] writes:
> 
> > I am using `M-q` to fill my paragraphs.  I have noticed that in texinfo-mode,
> > doing `M-q` on a paragraph starting with `@` does not refill the paragraph.
> >
> > This occurs in instances such as
> >
> > @noindent Everyone is permitted to copy and distribute verbatim
> > copies of this license document, but changing it is not allowed.
> 
> This is because texinfo-mode regards almost any line that starts with a
> @ as a paragraph separator, so forward-paragraph etc doesn't work
> properly on those lines.

I actually think this is a "feature" in Texinfo mode.  In Texinfo, we
have constructs that start with @ at BOL which we don't _want_ to
refill, and we _do_ want them to be treated as a separate paragraph.
A few examples:

@node Foo Bar Baz Quux Very Long Node Name

@subsection This is a very long subsection name

@cindex a very long index entry that could wrap

@defun my-func with many different arguments that could wrap

@end multitable

And I could probably come up with a few more.  So @noindent is more an
exception that the rule, and there actually is no reason to have any
text after it on the same line, you could leave it on a line by itself
without losing anything.

> The following patch fixes the problem, but I'm not sure this is the
> correct thing, but the manual says:
> 
> --
> Lines that start a new paragraph and are
> contained in it must match only ‘paragraph-start’, not
> ‘paragraph-separate’. 
> --

I never took this seriously.  E.g., even our default values of these
variables don't seem to heed this rule.

Stefan, any comments?

> So I think it is?  But this code has been basically like this for
> decades...  anybody got any comments about why it is like it is today?

See above.  I'd prefer not to change these variables in Texinfo, as it
could cause more trouble than it fixes.  If we want the likes of
@noindent to be exempt from this treatment of lines that begin with @,
we could perhaps introduce a fill-paragraph-function specific for
Texinfo, and in that function treat ^@noindent (and perhaps a few
more directives) specially.