Subject: 23.3; next-file command not operational

From: Uday S Reddy <[email-masked]>
Date: Mon, 11 Apr 2011 16:47:52 +0100

Emacs 19 manual described a function called `next-file' (under "Editing
Programs").  This section was dropped some time, and the `next-file'
command hasn't been working either.  The attached patch

- adds back a paragraph on `next-file' to the manual, and

- proposes a fix for the `next-file' function using `switch-to-buffer'
instead of `set-buffer'.  This may not be the best possible fix, but it
at least works.  

Cheers,
Uday

In GNU Emacs 23.3.1 (i386-mingw-nt5.1.2600)
 of 2011-03-10 on 3249CTO
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (4.5) --no-opt --cflags -Ic:/imagesupport/include'

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: cp1252
  default enable-multibyte-characters: t

Major mode: LaTeX

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  savehist-mode: t
  which-function-mode: t
  tooltip-mode: t
  mouse-wheel-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-encryption-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
d C-a C-x C-s C-c s M-p <return> C-h i C-x C-r m l 
i s t SPC <return> SPC <backspace> C-x b <return> C-x 
q C-g C-x q t a g SPC t a b l e <return> t a g s SPC 
t a b l e <return> SPC SPC C-a C-x C-s C-c s p w d 
<return> c d SPC . . <return> c d SPC . . <return> 
b z r SPC d i f f <return> <down-mouse-1> <mouse-1> 
<wheel-up> <wheel-down> <wheel-up> <wheel-up> <wheel-down> 
<wheel-up> <double-wheel-up> <triple-wheel-up> <wheel-down> 
<wheel-down> <wheel-down> <wheel-down> <wheel-down> 
<wheel-up> <wheel-down> <wheel-down> <next> <prior> 
C-x C-f <backspace> <return> C-s d i f f C-a C-n e 
C-x y C-c s C-x . b z r SPC r e v e r t SPC l i s p 
/ f i l e s . e l <return> C-x C-f l i s p <return> 
C-v C-v C-v C-v C-v C-v C-v C-v C-v C-v C-v C-v C-v 
C-v C-v C-c s b z r SPC d i f f <backspace> <backspace> 
<backspace> <backspace> <help-echo> <down-mouse-1> 
<mouse-1> d i f f <return> <f1> C-g <prior> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> b 
z r SPC d i f f SPC > SPC n e x t - f i l e . d i f 
f <return> C-x C-f n e x SPC SPC f i SPC SPC <return> 
<switch-frame> <down-mouse-1> <mouse-movement> <mouse-1> 
M-x r e p o r t - e m a c s - b u SPC <return>

Recent messages:
buffer reverted to current contents of the file
Quit
Mark set
Replaced 2 occurrences
Saving file d:/gnu/emacs-23-dev/doc/emacs/maintaining.texi...
Wrote d:/gnu/emacs-23-dev/doc/emacs/maintaining.texi
d:/gnu/emacs-23-dev/doc 
d:/gnu/emacs-23-dev 
Mark saved where search started
Mark set
Quit

Load-path shadows:
d:/Home/udr/share/emacs/sml-mode hides d:/gnu/emacs-23.3/../site-lisp/sml-mode
d:/Home/udr/share/emacs/savehist-20+ hides d:/gnu/emacs-23.3/../site-lisp/savehist-20+
d:/gnu/emacs-23.3/../site-lisp/longlines hides d:/gnu/emacs-23.3/lisp/longlines
d:/gnu/vm/trunk/lisp/cus-load hides d:/gnu/emacs-23.3/lisp/cus-load
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org hides d:/gnu/emacs-23.3/lisp/org/org
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-xoxo hides d:/gnu/emacs-23.3/lisp/org/org-xoxo
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-wl hides d:/gnu/emacs-23.3/lisp/org/org-wl
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-w3m hides d:/gnu/emacs-23.3/lisp/org/org-w3m
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-vm hides d:/gnu/emacs-23.3/lisp/org/org-vm
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-timer hides d:/gnu/emacs-23.3/lisp/org/org-timer
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-table hides d:/gnu/emacs-23.3/lisp/org/org-table
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-src hides d:/gnu/emacs-23.3/lisp/org/org-src
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-rmail hides d:/gnu/emacs-23.3/lisp/org/org-rmail
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-remember hides d:/gnu/emacs-23.3/lisp/org/org-remember
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-publish hides d:/gnu/emacs-23.3/lisp/org/org-publish
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-protocol hides d:/gnu/emacs-23.3/lisp/org/org-protocol
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-plot hides d:/gnu/emacs-23.3/lisp/org/org-plot
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mouse hides d:/gnu/emacs-23.3/lisp/org/org-mouse
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mobile hides d:/gnu/emacs-23.3/lisp/org/org-mobile
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mhe hides d:/gnu/emacs-23.3/lisp/org/org-mhe
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mew hides d:/gnu/emacs-23.3/lisp/org/org-mew
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-macs hides d:/gnu/emacs-23.3/lisp/org/org-macs
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mac-message hides d:/gnu/emacs-23.3/lisp/org/org-mac-message
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-list hides d:/gnu/emacs-23.3/lisp/org/org-list
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-latex hides d:/gnu/emacs-23.3/lisp/org/org-latex
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-jsinfo hides d:/gnu/emacs-23.3/lisp/org/org-jsinfo
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-irc hides d:/gnu/emacs-23.3/lisp/org/org-irc
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-install hides d:/gnu/emacs-23.3/lisp/org/org-install
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-inlinetask hides d:/gnu/emacs-23.3/lisp/org/org-inlinetask
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-info hides d:/gnu/emacs-23.3/lisp/org/org-info
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-indent hides d:/gnu/emacs-23.3/lisp/org/org-indent
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-id hides d:/gnu/emacs-23.3/lisp/org/org-id
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-icalendar hides d:/gnu/emacs-23.3/lisp/org/org-icalendar
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-html hides d:/gnu/emacs-23.3/lisp/org/org-html
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-habit hides d:/gnu/emacs-23.3/lisp/org/org-habit
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-gnus hides d:/gnu/emacs-23.3/lisp/org/org-gnus
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-freemind hides d:/gnu/emacs-23.3/lisp/org/org-freemind
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-footnote hides d:/gnu/emacs-23.3/lisp/org/org-footnote
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-feed hides d:/gnu/emacs-23.3/lisp/org/org-feed
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-faces hides d:/gnu/emacs-23.3/lisp/org/org-faces
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-exp hides d:/gnu/emacs-23.3/lisp/org/org-exp
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-exp-blocks hides d:/gnu/emacs-23.3/lisp/org/org-exp-blocks
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-docbook hides d:/gnu/emacs-23.3/lisp/org/org-docbook
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-datetree hides d:/gnu/emacs-23.3/lisp/org/org-datetree
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-crypt hides d:/gnu/emacs-23.3/lisp/org/org-crypt
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-compat hides d:/gnu/emacs-23.3/lisp/org/org-compat
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-colview hides d:/gnu/emacs-23.3/lisp/org/org-colview
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-clock hides d:/gnu/emacs-23.3/lisp/org/org-clock
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-bibtex hides d:/gnu/emacs-23.3/lisp/org/org-bibtex
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-bbdb hides d:/gnu/emacs-23.3/lisp/org/org-bbdb
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-attach hides d:/gnu/emacs-23.3/lisp/org/org-attach
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-ascii hides d:/gnu/emacs-23.3/lisp/org/org-ascii
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-archive hides d:/gnu/emacs-23.3/lisp/org/org-archive
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-agenda hides d:/gnu/emacs-23.3/lisp/org/org-agenda
d:/Home/udr/share/emacs/rnews hides d:/gnu/emacs-23.3/lisp/obsolete/rnews

Features:
(shadow sort message ecomplete mml mml-sec password-cache mm-decode
mm-bodies mm-encode mailcap nnheader gmm-utils mailheader canlock
hashcash warnings emacsbug add-log smerge-mode diff-mode mule-util
apropos macros bibcmds bibtex pp texmathp tabify tex-buf noutline
outline latex tex latexenc info texinfo smtpmail flyspell ispell
mail-utils mailalias vm-delete vm-reply cl-specs edebug vc-annotate
ediff-vers vm-edit w3m-form w3m browse-url doc-view dired-x dired-aux
mydired dired image-mode w3m-hist w3m-fb bookmark-w3m w3m-ems wid-edit
w3m-ccl ccl w3m-favicon w3m-image w3m-proc w3m-util vm-w3m longlines
easy-mmode bbdb-hooks mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums
mm-util mail-prsvr tapestry vm-crypto vm-imap u-vm-color my-vm etags
ps-print ps-def lpr vm-save vm-ps-print vm-rfaddons vm-menu vm-window
vm-toolbar vm-mime vm-undo vm-virtual vm-summary-faces vm-mouse vm-page
vm-minibuf vm-message vm-macro bbdb-vm vm-autoload bbdb-snarf mail-extr
rfc822 bbdb-com advice help-fns advice-preload mailabbrev cl cl-19 vm
vm-sort vm-summary vm-motion vm-folder vm-misc vm-thread debug
ansi-color shell newcomment ediff-merg ediff-diff ediff-wind ediff-help
ediff-util ediff-mult ediff-init ediff vc vc-dispatcher vc-bzr sha1
hex-util help-mode easymenu view multi-isearch server w3m-load
bbdb-autoloads bbdb timezone vm-autoloads vm-version vm-vars org-install
savehist tex-site tex-mik telnet movement natural-space NatSpeak
sendmail auth-source gnus-util netrc time-date epa-file epa epg
epg-config ange-ftp regexp-opt comint ring echistory chistory ehelp
electric derived which-func imenu edmacro kmacro jka-compr 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 mldrag 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 loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process multi-tty emacs)

-- 

=== modified file 'doc/emacs/maintaining.texi'
--- doc/emacs/maintaining.texi	2011-02-05 06:13:36 +0000
+++ doc/emacs/maintaining.texi	2011-04-11 15:36:35 +0000
@@ -1619,7 +1619,7 @@
 * Select Tags Table::   How to visit a tags table.
 * Find Tag::            Commands to find the definition of a specific tag.
 * Tags Search::         Using a tags table for searching and replacing.
-* List Tags::           Listing and finding tags defined in a file.
+* List Tags::           Finding tags and files listed in a tags table.
 @end menu
 
 @node Tag Syntax
@@ -2307,6 +2307,19 @@
   You can also use the collection of tag names to complete a symbol
 name in the buffer.  @xref{Symbol Completion}.
 
+If you wish to process all the files in the selected tags table, but
+not in the specific ways that @kbd{M-x tags-search} and @kbd{M-x
+tags-query-replace}  do, you can use @kbd{M-x next-file} to visit the files
+one by one.
+
+@table @kbd
+@item C-u M-x next-file
+Visit the first file in the tags table, and prepare to advance
+sequentially by files. 
+@item M-x next-file
+Visit the next file in the selected tags table.
+@end table
+
 @node EDE
 @section Emacs Development Environment
 @cindex EDE (Emacs Development Environment)

=== modified file 'lisp/progmodes/etags.el'
--- lisp/progmodes/etags.el	2011-01-02 23:50:46 +0000
+++ lisp/progmodes/etags.el	2011-04-11 15:27:25 +0000
@@ -1733,9 +1733,9 @@
 	 (with-current-buffer buffer
 	   (revert-buffer t t)))
     (if (not (and new novisit))
-	(set-buffer (find-file-noselect next novisit))
+	(switch-to-buffer (find-file-noselect next novisit))
       ;; Like find-file, but avoids random warning messages.
-      (set-buffer (get-buffer-create " *next-file*"))
+      (seitch-to-buffer (get-buffer-create " *next-file*"))
       (kill-all-local-variables)
       (erase-buffer)
       (setq new next)