[gnu.emacs.bug] "Next" in info headers pointing to submenu item 1 rather than next

stampe@UHCCUX.UHCC.HAWAII.EDU (David Stampe) (11/22/89)

In a number of info files, including some generated from texinfo source,
the "Next" pointer in headers sometimes points not to the next node at
the same level (i.e. the next sibling node), but to the first node in
the submenu.  Here's one of many examples, from the info file for GNU tar:

(From the Top menu:)
* Options::		Options that change the way `tar' behaves.
* FullDumps::		Using `tar' to perform full dumps.

File: tar  Node: Options, Prev: Commands, Up: Top, Next: General Options
						   ^^^^^^^^^^^^^^^^^^^^^
>> THIS SHOULD SAY				   Next: FullDumps

(From the Options menu:)
* General Options::		Options that are always meaningful.

The result is that there's no way to get to FullDumps from Options except
by going back to the Top menu and doing "mFullDumps".

Probably this has been considered a "feature": having Next point to 1
rather than the actual next could be considered reasonable in a node
with no contents except a menu, but in fact, besides being confusing,
it just makes it much harder for a user to read breadth-first if he
chooses.  Pointers like this reduce info to merely a complicated "man".

If it is really felt that depth-first reading should be the default,
info could bind a key like RET to a command for linear readers:

(defun Info-go-with-the-flow ()
  "Move forward to whatever page or node logically comes next.
Specifically: If not at the end of the node, scroll forward (like SPC).
 Else, if there is a menu, go to its first item (like `1').
  Else go to the Next node, if any (like `n').
   Else go to the Up node and to its Next node."
...)

I have code for this and would be glad to submit it for consideration
for info.el.  But even this must have loop-protection built in for the
headers I'm complaining about, where Next points to 1 rather than next!

To fix those headers, for normal users who want the option to read info
files any way they please, the following needs to be done:

  1. Correct the Next pointers in texinfo source files and in
     any info files that are distributed ready-made.

  2. Maybe have Info-validate in informat.el complain about Next's
     that don't point to the next sibling node.

  3. Revise info and texinfo documents to advise against such pointers.

  4. If the new texinfo program constructs nexts automatically,
     make sure it gets them right.

If FSF is willing to apply the diffs, I'm willing to attempt 1-3.

David Stampe (stampe@uhccux.uhcc.hawaii.edu)

PS. Some thought should given to a revision of info in which node
headers do not appear in the file, but perhaps in the modeline (or in
an X window perhaps in is label); and in which menus and maybe even
crossreferences need not appear in the file, but pop up when one
wants to see them.  A menu on a given topic should be able to send the
user through any succession of next's, independently of the internal
structure (or node headers) of the files that happen to expound the
subtopics.  Menus might be thought of as different syllabuses for
perusing the same library of Great Books.

Info is one of the first hypertext systems, maybe THE first, but it
should be able to access topics and levels in texts without mutilating
the texts.  As things stand, the beginning of an info-accessible copy
of Dante's Inferno has to say something like

* Menu:
* First Circle::	Abandon hope all ye who press "m".
...
* Ninth Circle::	This node has no next.

Kidding aside, such stuff shouldn't have to appear IN the text.  Info
ought to provide menu access to any kind of files - code, data, mail,
whatever - without intruding itself into their contents.