On Sat, Oct 24, 2026 at 08:20:49PM +0300, Eli Zaretskii wrote:
> Hi,
> 
> Currently, there seem to be subtle differences in the syntax of node
> references in menus vs node references in cross-references.  This is
> contrary to the Texinfo manual saying that they are identical:
> 
>          <menu> =
>        * Menu:
>        (<menu entry> | <menu comment>)*
> 
>      The parts of a <menu entry> are also described in *note Menu Parts::.
>   They have the same syntax as cross-references, with a leading ‘*’
>   instead of ‘* (N|n)ote’ (*note Info Format Cross Reference::).
> 
> A test Info file provided by Patrice for testing the Emacs
> implementation, here:
> 
>   https://debbugs.gnu.org/cgi/bugreport.cgi?bug=57277#11
> 
> includes a menu item like this:
> 
> * the topic:blumpty.fump.
> 
> This menu item has a period embedded in the node name "blumpty.fump",
> but it is not quoted.  As result, the Emacs Info reader thinks that
> the node name is "blumpty".
> 
> Patrice tells me that this is done for compatibility reasons with old
> Texinfo versions (including the makeinfo implementation in C).  This
> might be so, but the Emacs Info reader never supported such menu
> entries, and neither does it support them today.  Moreover, the old
> implementation could not use any quoting mechanism, whereas nowadays
> we have quoting with DEL characters.

As I said in my other email, it is likely this is to support menu entries
to nodes containing full stops.  It is possible in indices, but also in the
dir node.

I found this change log entry:

2008-05-12  Karl Berry  <[email protected]>

        * install-info.c (split_entry, add_missing_basenames,
        add_mission_descriptions, --name and --description parsing):
        use ". " to delimit the description from the node name,
        rather than just ".", since we want to support nodes and names
        containing "config.status".
        * doc/texinfo.txi (Menu Parts): mention need for ". ".
        (Invoking install-info): mention bzip2 and lzma checks.

This was about an entry in the dir file to a node containing the
text "config.status".

Link to discussion:
https://lists.gnu.org/archive/html/bug-texinfo/2008-05/msg00013.html

The "Menu Parts" node still has the text in the current revision:

     The template for a generic menu entry looks like this (but see the
  next section for one more possibility):
  
       * MENU-ENTRY-NAME: NODE-NAME.   DESCRIPTION
  
     Follow the menu entry name with a single colon, and follow the node
  name with tab, comma, newline, or the two characters period and space
  (‘. ’).

I double-checked that with Emacs Info today (Emacs 29.3 (Debian)),
the dir entry under discussion in that 2008 thread, still does not work:

* config.status: (autoconf)config.status Invocation.
                                                Recreating configurations.

Trying to follow that entry leads to an error, "No such node or anchor: config".
It works correctly in the standalone "info" program.


> So I submit that we no longer need these convoluted differences
> between the node references in these two contexts, and can now decide
> that node names with embedded periods will be quoted in all node
> references.  I hope you will agree.

In the thread from 2008, somebody was complaining about a regression from
Texinfo 4.11.

If we do DEL-quote all node names in menu entries that contain a '.',
this may stop these files from working in older versions of the "info"
program.  However, Emacs Info when the next version of Emacs is released
may be more popular than these old versions of "info" , meaning that it would
soon be more useful than not to DEL-quote.  It looks like we introduced
the mechanism around 2015.

I think it would be very unlikely that we make a new Texinfo release this
year, although early next year is possible depending on how much progress
we make with pending issues.  Looking at 
https://www.gnu.org/software/emacs/history.html,
Emacs seems to get new releases about twice a year.  So if we do add the
DEL-quoting as proposed, it could be roughly half a year before the Emacs
that can read such entries in Info files properly is released.  It also takes
time (years, in fact) for new Texinfo releases to be adopted so the stream
of updated Info files using the syntax would be slow.

Another consideration is that node names containing full stops are fairly
rare, lowering the probability of users experiencing breakage.

Here's the thread from 2014 where I proposed the idea:
https://lists.gnu.org/archive/html/bug-texinfo/2014-04/msg00016.html

Thread from 2002 mentioning more nodes from the Automake manual:
https://lists.gnu.org/archive/html/bug-texinfo/2002-04/msg00035.html

At that time, it was said that the nodes with full stops in their names
worked better in Emacs Info than in standalone Info, although it isn't
clear if that included index entries referencing those nodes.

Reply via email to