Subject: 24.2; revert-buffer in an Info buffer should refresh Info-index-nodes
From: Eli Zaretskii <[email-masked]>
To: [email-masked]
Date: Sat, 18 Aug 2012 21:15:24 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

This problem cannot easily happen in "emacs -Q", so no reproducible
recipe, sorry.

However, the problem is quite clear: if you "M-x revert-buffer" in an
Info buffer, and the new Info file changed the names of its Index
nodes, then the 'i' command will most probably fail the next time you
invoke it in that Info buffer.

A case in point is the GDB manual: it recently split its Index node
into 2 nodes, called "Concept Index" and "Command and Variable Index",
respectively.  After reverting its Info buffer, 'i' started signaling
an error, complaining about the missing node "Index".

The problem is that info.el caches the Index nodes in the alist stored
in Info-index-nodes.  It should therefore remove from that alist the
association of the Info file whose buffer is reverted.

In GNU Emacs 24.2.1 (i386-mingw-nt5.1.2600)
 of 2012-08-16 on HOME-C4E4A596F7
Windowing system distributor `Microsoft Corp.', version 5.1.2600
Configured using:
 `configure --with-gcc (3.4)'

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: ENU
  value of $XMODIFIERS: nil
  locale-coding-system: cp1255
  default enable-multibyte-characters: t

Major mode: Mail

Minor modes in effect:
  diff-auto-refine-mode: t
  flyspell-mode: t
  desktop-save-mode: t
  show-paren-mode: t
  display-time-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  temp-buffer-resize-mode: t
  line-number-mode: t
  abbrev-mode: t

Recent input:
C-x b I N B <tab> <return> <C-next> <C-next> <C-next> 
<C-next> <C-next> <C-next> <C-next> <C-next> <C-next> 
<C-next> <C-next> <C-next> <C-next> <M-end> M-: I n 
f o - i n d e x - m <backspace> n o d e s <return> 
<down> C-x b * s c r <tab> <return> I n f o - i n d 
e x - n o d e s C-j <left> <left> <left> <return> <down> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <help-echo> 
C-s g d b <up> C-x b <return> C-x 5 b x d <tab> <return> 
C-h f w 3 2 - a d d <tab> <return> <C-prior> <C-prior> 
<help-echo> <help-echo> <help-echo> <switch-frame> 
C-x 5 b * i n <tab> 2 4 > <return> <help-echo> <switch-frame> 
<help-echo> <switch-frame> <help-echo> i <help-echo> 
a u t o - l o a d <return> <switch-frame> <help-echo> 
<help-echo> <help-echo> <switch-frame> <switch-frame> 
<down> <up> <switch-frame> M-1 g <up> <return> o <return> 
o <up> <return> d C-x C-s <up> <up> <switch-frame> 
<switch-frame> M-1 g <up> <up> <return> d d d <switch-frame> 
<switch-frame> m <switch-frame> <switch-frame> M-x 
r e p o r t - e m <tab> <return>

Recent messages:
byte-code: Beginning of buffer [2 times]
Getting mail from d:/usr/eli/data/mail.new...
Counting new messages...done (3)
Saving file d:/usr/eli/rmail/INBOX...
Wrote d:/usr/eli/rmail/INBOX [2 times]
Computing summary lines...done
3 new messages read
No following nondeleted message
Parsing d:/usr/eli/.mailrc... done
Scanning for dabbrevs...done

Load-path shadows:
None found.

Features:
(shadow dabbrev emacsbug mailalias sendmail rmailout help-mode view
misearch multi-isearch texinfo tcl nxml-uchnm rng-xsd xsd-regexp
rng-cmpct rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse
rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln
nxml-rap nxml-util nxml-glyph nxml-enc xmltok sgml-mode make-mode
conf-mode newcomment parse-time generic ld-script sh-script executable
vc-git arc-mode archive-mode diff-mode dired-x dired jka-compr
autorevert vc-cvs face-remap org-wl org-w3m org-vm org-rmail org-mhe
org-mew org-irc org-jsinfo org-infojs org-html org-exp ob-exp
org-exp-blocks find-func org-agenda org-info org-gnus org-docview
org-bibtex bibtex org-bbdb org byte-opt warnings bytecomp byte-compile
cconv macroexp advice help-fns advice-preload ob-emacs-lisp ob-tangle
ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys ob
ob-eval org-pcomplete pcomplete comint ansi-color ring org-list
org-faces org-compat org-entities org-macs noutline outline easy-mmode
cal-menu calendar cal-loaddefs flyspell info vc-bzr cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
regexp-opt qp rmailsum rmailmm message format-spec rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader
mail-parse rfc2231 rmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils desktop server filecache mairix cus-edit easymenu cus-start
cus-load wid-edit saveplace midnight ispell generic-x paren battery
time time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel
dos-w32 disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset image
fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet
lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook
help simple abbrev minibuffer loaddefs button faces cus-face files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
multi-tty emacs)