Subject: Re: bug#31130: 26; Regression: intra-glossary links broken in Emacs manual

From: Eli Zaretskii <[email-masked]>
Date: Thu, 12 Apr 2018 19:43:00 +0300

> Date: Thu, 12 Apr 2018 08:53:49 -0700 (PDT)
> From: Drew Adams <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
> > > 1. Trying again now, I can repro the problem only in Emacs 24.5,
> > >    not in the more recent releases/builds.
> > 
> > That could be, but I guess it means you reported the bug from a binary
> > other than the one where the problem happened?
> 
> No.  I reported it from the Emacs 26 RC1, and the problem
> happened in that version.  And I tested it with `emacs -Q'
> in that version.  I likely reported it (M-x report-emacs-bug)
> using my setup, but with the same binary that I tested using
> emacs -Q.

So you are saying that either (a) something in your setup causes this
problem to happen, perhaps after some time the session is alive, or
(b) something outside of Emacs causes the problem, and that something
is not always happening, is that right?

> And I tested using emacs -Q also in Emacs 25.3.1,
> 24.5, 24.4, 23.4, and even 22.3 and 20.

Which means the (b) part above is more likely the culprit?

Are you reasonably sure that your reproduction steps are the same in
all of these attempts, whether successful or not?  Or is that yet
another potential reason for the problem to happen only sometimes?

> > > 3. I don't know how or why I saw different behavior then
> > >    than now, when I retest.
> > 
> > We've been through that before.
> 
> Have we?  Please tell me how what I saw is possible, in
> that case.

AFAIR, we ended up giving up on understanding the exact reasons back
then as well, because you were unable to reliably reproduce the
problem, except in an old version of Emacs or an old version of Info
files.  Exactly like now.

> > It depends on how your system is configured wrt multiple Emacs
> > versions installed on it, and in particular how you invoke Info.  If
> > you just type "C-h i" or "C-h r", the Info manual you get depends on
> > whether you keep the share/info directories of different versions
> > separate or not.
> 
> They are all separate.  Each Emacs version/release is in
> a separate directory/folder, and all of it is there, in
> the original subdirs (bin, etc, include,lib, libexec,
> share, ssl).  All I do is extract the zip file
> obtained from GNU Emacs (e.g. P. Lord's snapshots).  I
> make no changes to the directories or their files.
> 
> (Even with my own setup I make no such changes - no
> changes to the distributed files and their directories.
> But with my own setup I do make changes to some Info
> functions etc.)
> 
> So I repeat the question, how could it happen that I
> would read an Info file that didn't come with the
> current binary, when using emacs -Q?

Which Info files Emacs finds is determined by the code which computes
Info-default-directory-list, and on code in info-initialize (and its
subroutine Info-default-dirs).  In a nutshell, that makes Emacs
consider several alternative places until it finds one that "works".
So the answer to your question depends on the directories you have or
don't have on your system, out of those Emacs considers, something I
cannot know.  It also depends on whether you have INFOPATH defined in
the environment, and if you do, what is its value.

> Unless there is some kind of cache file that Emacs
> uses for Info that is outside that directory

There is no cache.

> I don't see how different versions could show the same Info manual
> version when each is started with emacs -Q.

If you read the code in the functions I pointed to, you will see that
it doesn't only consider directories under the directory where you
unzipped the archive.  It also looks in other places.

> > Also, "C-h i" and "C-h r" go to different places by
> > default.  This is why I always use "C-u C-h i", and then specify the
> > Info file that corresponds to the Emacs version I'm running.
> 
> I used `C-h r' to simplify the repro recipe.  If invoked
> from emacs -Q, how can that go elsewhere than the Emacs
> manual for that binary?

Again, I don't know enough to answer that.  But the only way to be in
full control of which manual file is loaded is to use "C-u C-h i".