Subject: Re: bug#50801: 28.0.50; Emacs manual about file variables doesn't mention that major modes shouldn't end in "-mode"

From: Daniel Martín <[email-masked]>
Date: Sat, 25 Sep 2021 20:22:28 +0200

Stefan Kangas <[email-masked]> writes:

>
>> I'm reviewing the manuals for the upcoming Emacs 28 and I have a couple
>> of minor suggestions for node "49.2.4.1 Specifying File Variables":
>
> That is extremely useful, thank you very much for working on this.
>
> (BTW, you can press `w' in info to get a reference like "(emacs)
> Specifying File Variables".  This is not super important, but a handy
> feature to know about, as you can then `M-: (info "...")' and get to
> that section quickly.)

Yep, I forgot to add a direct link to the Info node, sorry.  BTW you can
'C-u w' to get the link inside a function call to `info` directly.

>
>> The node doesn't explictly mention the crucial information that in
>> 'mode: MODENAME' 'MODENAME' must not end in "-mode".  It's true that
>> there's an example down there that says "mode: Lisp", so users may infer
>> that you don't need to spell the major mode with "-mode", but I thought
>> it may be better to be explicit about in the manual.
>
> Fully agreed.  Perhaps something like this?
>
> diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
> index d12033f841..d5f18fff35 100644
> --- a/doc/emacs/custom.texi
> +++ b/doc/emacs/custom.texi
> @@ -1084,8 +1084,9 @@ Specifying File Variables
>  @noindent
>  You can specify any number of variable/value pairs in this way, each
>  pair with a colon and semicolon.  The special variable/value pair
> -@code{mode: @var{modename};}, if present, specifies a major mode.  The
> -@var{value}s are used literally, and not evaluated.
> +@code{mode: @var{modename};}, if present, specifies a major mode
> +(excluding the ``-mode'' part).  The @var{value}s are used literally,
> +and not evaluated.

I'm not a native speaker but it reads well to me, thank you.

>
>  @findex add-file-local-variable-prop-line
>  @findex delete-file-local-variable-prop-line
>
>> Another suggestion I have is that the manual doesn't mention that
>> something like "-*- C++ -*-" (that is, omitting the "mode" keyword) is
>> also supported.  Many free software projects have traditionally been
>> using "-* C++ -*" in their C++ header files to make Emacs distinguish
>> them from plain C files.  See also src/epaths.in in the Emacs
>> repository, among others.  I see this used by Jim Blandy since 1992 at
>> least, but I don't really know if a) it's really a stable way to declare
>> a file-local mode, and we may lack the historical info to answer that,
>> and b) it's worth mentioning it in the manual.
>
> I can't remember the details, but I believe that this form is considered
> obsolete and/or problematic.  So I think it's fine to not document it.

Makes sense.