changeset 83561:dc002877ce12

Merged from emacs@sv.gnu.org Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-674 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-675 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-676 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-677 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-678 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-679 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-680 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-681 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-682 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-683 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-684 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-685 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-686 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-687 Release ERC 5.2. * emacs@sv.gnu.org/emacs--devo--0--patch-688 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-689 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-690 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-691 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-692 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-693 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-694 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-695 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-696 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-697 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-698 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-699 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-700 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-701 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-209 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-210 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-211 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-212 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-213 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-214 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-215 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-601
author Karoly Lorentey <karoly@lorentey.hu>
date Sun, 22 Apr 2007 12:42:47 +0000
parents 738ce3540ffb (current diff) 128de1e556af (diff)
children 5a45becb5728
files ChangeLog admin/FOR-RELEASE admin/notes/copyright configure configure.in etc/TODO lisp/ChangeLog lisp/cus-start.el lisp/emacs-lisp/bytecomp.el lisp/faces.el lisp/files.el lisp/font-lock.el lisp/international/mule.el lisp/isearch.el lisp/ldefs-boot.el lisp/menu-bar.el lisp/progmodes/gdb-ui.el lisp/progmodes/idlw-shell.el lisp/progmodes/idlwave.el lisp/recentf.el lisp/simple.el lisp/startup.el lisp/subr.el lisp/term/xterm.el lisp/tmm.el lisp/url/url-cookie.el lisp/url/url-http.el lisp/url/url-parse.el lisp/url/url-vars.el lisp/vc-rcs.el lisp/whitespace.el lisp/xt-mouse.el lispref/ChangeLog lispref/elisp.texi man/ChangeLog man/cc-mode.texi man/emacs.texi man/eshell.texi man/frames.texi man/newsticker.texi man/pcl-cvs.texi man/speedbar.texi man/woman.texi src/alloc.c src/buffer.c src/dispnew.c src/emacs.c src/fileio.c src/gtkutil.c src/indent.c src/keyboard.c src/keymap.c src/keymap.h src/lread.c src/macfns.c src/macterm.c src/print.c src/process.c src/widget.c src/window.c src/xdisp.c src/xfns.c
diffstat 344 files changed, 11441 insertions(+), 7167 deletions(-) [+]
line wrap: on
line diff
--- a/AUTHORS	Sun Apr 22 12:12:29 2007 +0000
+++ b/AUTHORS	Sun Apr 22 12:42:47 2007 +0000
@@ -33,9 +33,9 @@
 
 Alan Mackenzie: wrote cc-awk.el
 and changed cc-cmds.el cc-mode.el cc-engine.el cc-defs.el cc-vars.el
-  cc-langs.el cc-mode.texi cc-styles.el cc-align.el lread.c cc-fonts.el
-  programs.texi cc-subword.el isearch.el lisp.el search.texi subr.el
-  text.texi buffers.texi cc-fix.el cc-mode-19.el and 17 other files
+  cc-langs.el cc-mode.texi cc-styles.el cc-align.el cc-fonts.el lread.c
+  programs.texi cc-subword.el isearch.el lisp.el search.texi startup.el
+  subr.el text.texi buffers.texi cc-fix.el and 18 other files
 
 Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el
   easy-mmode.el gnus-sum.el ibuf-ext.el ibuffer.el lunar.el macros.el
@@ -124,10 +124,11 @@
   fileio.c simple.el buffer.c minibuf.c process.c xterm.c emacs.c
   keyboard.c and 449 other files
 
-Andreas Seltenreich: changed nnweb.el gnus.texi nnslashdot.el mm-uu.el
-  battery.el comint.el easy-mmode.el gmm-utils.el gnus-art.el gnus-ml.el
-  gnus-srvr.el gnus-start.el gnus-sum.el gnus-util.el gnus.el mm-url.el
-  url-cookie.el url-http.el xterm.c
+Andreas Seltenreich: changed nnweb.el gnus.texi nnslashdot.el
+  gnus-util.el mm-uu.el url-http.el battery.el comint.el easy-mmode.el
+  gmm-utils.el gnus-art.el gnus-ml.el gnus-msg.el gnus-srvr.el
+  gnus-start.el gnus-sum.el gnus.el message.el mm-url.el url-cookie.el
+  xterm.c
 
 Andrew Choi: wrote mac-win.el
 and changed macterm.c mac.c macfns.c INSTALL macmenu.c darwin.h macterm.h
@@ -331,11 +332,11 @@
 Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el
   url-file.el url-handlers.el url-http.el url-nfs.el
 
-Chong Yidong: changed cus-edit.el simple.el custom.el files.el
-  display.texi longlines.el keyboard.c text.texi custom.texi files.texi
-  image-mode.el info.el mouse.el xdisp.c compile.el frames.texi
-  startup.el wid-edit.el xterm.c cus-theme.el misc.texi
-  and 237 other files
+Chong Yidong: changed cus-edit.el simple.el files.el custom.el
+  display.texi longlines.el xdisp.c keyboard.c compile.el custom.texi
+  files.texi info.el text.texi frames.texi image-mode.el mouse.el
+  startup.el wid-edit.el xterm.c cus-theme.el faces.el
+  and 290 other files
 
 Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c
   hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el
@@ -395,7 +396,7 @@
 Daiki Ueno: wrote pgg-def.el pgg-gpg.el pgg-parse.el pgg-pgp.el
   pgg-pgp5.el pgg.el starttls.el
 and changed gnus-sum.el mml2015.el gnus-agent.el gnus-srvr.el
-  message.texi mml1991.el
+  message.texi mml1991.el pgg.texi
 
 Dale Gulledge: changed TUTORIAL.eo
 
@@ -417,7 +418,7 @@
 and changed term.el xterm.el hideshow.el isearch.el icon.el lisp.h
   cus-edit.el faces.el font-lock.el grep.el sh-script.el eterm-color.ti
   ibuffer.el rxvt.el vhdl-mode.el xterm.c bindings.el compile.el
-  dabbrev.el imenu.el outline.el and 164 other files
+  dabbrev.el imenu.el outline.el and 166 other files
 
 Daniel Brockman: changed cus-start.el format-spec.el ibuffer.el rcirc.el
 
@@ -462,7 +463,7 @@
 and changed configure.in Makefile.in help.el fortran.el browse-url.el
   mule-cmds.el simple.el xterm.c cus-edit.el files.el info.el mule.el
   wid-edit.el fns.c vc.el rfc2047.el bindings.el cus-start.el buffer.c
-  byte-opt.el bytecomp.el and 729 other files
+  byte-opt.el bytecomp.el and 727 other files
 
 Dave Pearson: wrote 5x5.el quickurl.el
 
@@ -491,7 +492,7 @@
   cl.texinfo complete.el edmacro.el
 and changed info.el bytecomp.el
 
-David Hansen: changed nnrss.el pcomplete.el tempo.el
+David Hansen: changed nnrss.el cc-cmds.el lisp.el pcomplete.el tempo.el
 
 David Hedbor: changed gnus-art.el mm-decode.el mm-view.el gnus-agent.el
   gnus-cite.el gnus-cus.el gnus-eform.el gnus-group.el gnus-msg.el
@@ -508,8 +509,8 @@
 
 David Kastrup: changed greek.el replace.el faq.texi search.c ange-ftp.el
   help.el mouse.el Makefile.in calc.el desktop.el keymaps.texi
-  meta-mode.el process.c search.texi subr.el DEBUG DEVEL.HUMOR
-  MAILINGLISTS autoload.el browse-url.el buffer.c and 34 other files
+  meta-mode.el process.c search.texi subr.el woman.el DEBUG DEVEL.HUMOR
+  MAILINGLISTS autoload.el browse-url.el and 37 other files
 
 David K,Ae(Bgedal: wrote tempo.el
 and changed sendmail.el xmenu.c
@@ -555,6 +556,8 @@
 
 David S. Goldberg: changed gnus-art.el message.el
 
+David Vazquez: changed m4-mode.el
+
 David Z. Maze: changed nnml.el nnrss.el
 
 Deanna Phillips: changed configure.in
@@ -583,9 +586,9 @@
 
 Diane Murray: changed erc.el erc-menu.el erc-backend.el erc-button.el
   erc-track.el erc-match.el erc-nets.el erc-list.el erc-autoaway.el
-  erc-capab.el erc-nickserv.el erc-compat.el erc-stamp.el erc-goodies.el
-  erc-ibuffer.el erc-log.el Makefile erc-dcc.el erc-fill.el
-  erc-nicklist.el erc-notify.el and 30 other files
+  erc-capab.el erc-nickserv.el erc-stamp.el erc-compat.el erc-fill.el
+  erc-goodies.el erc-ibuffer.el erc-log.el Makefile erc-dcc.el
+  erc-networks.el erc-nicklist.el and 32 other files
 
 Dick King: wrote uniquify.el
 
@@ -645,9 +648,9 @@
 
 Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el
 and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c
-  startup.el mainmake.v2 config.bat menu-bar.el pc-win.el msdos.h
-  rmail.el simple.el internal.el xfaces.c frame.c dosfns.c emacs.c
-  faces.el frame.el and 523 other files
+  startup.el mainmake.v2 config.bat menu-bar.el pc-win.el rmail.el
+  simple.el msdos.h internal.el xfaces.c emacs.c frame.c dosfns.c
+  faces.el frame.el and 531 other files
 
 Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
   sh-script.el text.texi
@@ -846,11 +849,11 @@
 
 Giuseppe Scrivano: changed buffer.c configure.in sysdep.c xsmfns.c
 
-Glenn Morris: changed f90.el calendar.el diary-lib.el fortran.el
+Glenn Morris: changed f90.el diary-lib.el calendar.el fortran.el
   calendar.texi appt.el sh-script.el Makefile.in timeclock.el cal-menu.el
-  startup.el abbrevs.texi cal-hebrew.el cal-islam.el emacs.texi files.el
-  holidays.el orgcard.tex programs.texi scroll-all.el TUTORIAL.eo
-  and 112 other files
+  complete.el startup.el MACHINES abbrevs.texi cal-hebrew.el cal-islam.el
+  configure.in emacs.texi files.el fr-refcard.tex holidays.el
+  and 138 other files
 
 Glynn Clements: wrote gamegrid.el snake.el tetris.el
 
@@ -875,7 +878,7 @@
 
 Gregory Neil Shapiro: changed mailabbrev.el
 
-Guanpeng Xu: changed add-log.el TUTORIAL.cn type-break.el
+Guanpeng Xu: changed add-log.el TUTORIAL.cn mouse.el type-break.el
 
 Guillermo J. Rozas: wrote fakemail.c
 
@@ -917,6 +920,8 @@
 
 Henry Kautz: wrote bib-mode.el refbib.el
 
+Herbert Euler: changed display.texi
+
 Hewlett-Packard: changed emacsclient.c emacsserver.c keyboard.c server.el
 
 Hideki Iwamoto: changed etags.c
@@ -1051,7 +1056,7 @@
 and changed w32fns.c w32term.c w32menu.c w32-win.el w32term.h
   makefile.w32-in w32.c w32bdf.c w32-fns.el w32select.c w32console.c
   w32gui.h w32proc.c keyboard.c mule-cmds.el emacs.c fileio.c w32bdf.h
-  w32inevt.c config.nt configure.bat and 83 other files
+  w32inevt.c config.nt configure.bat and 84 other files
 
 Jay Belanger: changed calc.texi calc.el calc-ext.el calc-embed.el
   calc-aent.el calc-prog.el calc-arith.el calc-help.el calc-lang.el
@@ -1142,11 +1147,11 @@
 
 Jochen K,A|(Bpper: changed calc-units.el gnus.texi
 
-Joe Buehler: changed Makefile.in cygwin.h MACHINES browse-url.el
-  comint.el configure.in dired-aux.el dired.el dirtrack.el dos-w32.el
-  fast-lock.el filecache.el fileio.c files.el gmalloc.c gnus-util.el
-  hippie-exp.el keyboard.c lastfile.c loadup.el mem-limits.h
-  and 11 other files
+Joe Buehler: changed Makefile.in configure.in cygwin.h MACHINES
+  browse-url.el comint.el configure dired-aux.el dired.el dirtrack.el
+  dos-w32.el fast-lock.el filecache.el fileio.c files.el gmalloc.c
+  gnus-util.el hippie-exp.el keyboard.c lastfile.c loadup.el
+  and 12 other files
 
 Joe Casadonte: changed gnus-srvr.el
 
@@ -1171,11 +1176,9 @@
 
 Johan Bockg,Ae(Brd: changed erc.el erc-backend.el cl-macs.el erc-match.el
   erc-nickserv.el erc-ring.el erc-speak.el erc-track.el simple.el
-  align.el calendar.el cl.texi custom.el dired-aux.el display.texi
-  erc-bbdb.el erc-button.el erc-compat.el erc-dcc.el erc-list.el
-  erc-log.el and 12 other files
-
-Johan Bockg,be(Brd: changed icomplete.el
+  align.el bytecomp.el calendar.el cl.texi custom.el dired-aux.el
+  display.texi erc-bbdb.el erc-button.el erc-compat.el erc-dcc.el
+  erc-list.el and 15 other files
 
 Johan Vromans: wrote forms-d2.el forms.el iso-acc.el
 and changed complete.el
@@ -1278,9 +1281,9 @@
 and changed files.el perl-mode.el
 
 Juanma Barranquero: changed makefile.w32-in subr.el faces.el help-fns.el
-  files.el w32fns.c buffer.c emacsclient.c replace.el simple.el
-  vhdl-mode.el bs.el cperl-mode.el eval.c org.el xdisp.c idlwave.el
-  sh-script.el window.c ada-mode.el allout.el and 627 other files
+  files.el buffer.c simple.el w32fns.c emacsclient.c replace.el
+  vhdl-mode.el bs.el cperl-mode.el eval.c org.el process.c xdisp.c
+  idlwave.el sh-script.el window.c ada-mode.el and 628 other files
 
 Juergen Hoetzel: changed url-handlers.el
 
@@ -1296,8 +1299,8 @@
 
 Juri Linkov: changed info.el simple.el replace.el isearch.el compile.el
   faces.el display.texi grep.el descr-text.el cus-edit.el dired.el
-  dired-aux.el edebug.el files.el lisp-mode.el lisp.el modes.texi mule.el
-  compare-w.el desktop.el files.texi and 221 other files
+  dired-aux.el edebug.el compare-w.el files.el lisp-mode.el lisp.el
+  modes.texi mule.el desktop.el files.texi and 221 other files
 
 Justin Sheehy: changed gnus-sum.el nntp.el
 
@@ -1325,11 +1328,11 @@
 
 Kanematsu Daiji: changed nnimap.el
 
-Karl Berry: changed info.texi emacs.texi elisp.texi emacs-xtra.texi
-  filelock.c anti.texi building.texi cmdargs.texi copyright.el
-  custom.texi customize.texi dired.c display.texi faq.texi frames.texi
-  gnu.texi help.texi macos.texi minibuf.texi msdog.texi mule.texi
-  and 65 other files
+Karl Berry: changed info.texi emacs.texi elisp.texi anti.texi
+  display.texi emacs-xtra.texi filelock.c gnu.texi mule.texi text.texi
+  building.texi cmdargs.texi copyright.el custom.texi customize.texi
+  dired.c faq.texi frames.texi help.texi lists.texi loading.texi
+  and 71 other files
 
 Karl Chen: changed files.el align.el cc-vars.el gnus-art.el help-mode.el
   jka-cmpr-hook.el make-mode.el perl-mode.el python.el tex-mode.el
@@ -1359,9 +1362,9 @@
 
 Katsumi Yamaoka: wrote canlock.el
 and changed gnus-art.el message.el gnus-sum.el gnus.texi mm-decode.el
-  mm-view.el gnus-util.el mm-util.el gnus-msg.el gnus.el lpath.el
+  mm-view.el gnus-util.el gnus-msg.el mm-util.el gnus.el lpath.el
   gnus-group.el gnus-start.el rfc2047.el dgnushack.el mm-uu.el nntp.el
-  gnus-agent.el mml.el nnrss.el rfc2231.el and 73 other files
+  gnus-agent.el mml.el nnrss.el message.texi and 72 other files
 
 Kaveh R. Ghazi: changed delta88k.h xterm.c
 
@@ -1438,17 +1441,17 @@
 
 Kevin Ryde: wrote info-xref.el
 and changed info-look.el info.el cl.texi gnus-art.el gnus-sum.el
-  mailcap.el os.texi text.texi MORE.STUFF cal-dst.el calendar.texi
-  cc-align.el cmdargs.texi compile.texi display.texi em-alias.el
-  em-dirs.el em-hist.el em-unix.el emacs-lisp-intro.texi etags.c
-  and 18 other files
+  mailcap.el os.texi text.texi MORE.STUFF arc-mode.el cal-dst.el
+  calendar.texi cc-align.el cmdargs.texi compile.texi display.texi
+  em-alias.el em-dirs.el em-hist.el em-unix.el emacs-lisp-intro.texi
+  and 19 other files
 
 Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el ido.el
   keypad.el kmacro.el
-and changed xdisp.c dispextern.h simple.el process.c window.c keyboard.c
+and changed xdisp.c dispextern.h process.c simple.el window.c keyboard.c
   xterm.c subr.el w32term.c dispnew.c lisp.h fringe.c macterm.c
   display.texi fns.c alloc.c xfaces.c keymap.c xfns.c xterm.h .gdbinit
-  and 252 other files
+  and 255 other files
 
 Kim-Minh Kaplan: changed gnus-picon.el gnus-sum.el gnus-start.el
   gnus-win.el gnus-xmas.el gnus.texi message.el nndraft.el nnml.el
@@ -1670,8 +1673,9 @@
   mule-cmds.el rmailout.el checkdoc.el configure.in custom.el emacsbug.el
   gnus.el help-fns.el ls-lisp.el mwheel.el and 122 other files
 
-Markus Triska: changed doctor.el flymake.texi handwrite.el speedbar.el
-  subr.el tumme.el widget.texi
+Markus Triska: changed byte-opt.el bytecomp.el doctor.el expand.el
+  flymake.el flymake.texi handwrite.el internals.texi speedbar.el subr.el
+  tumme.el widget.texi
 
 Marshall T. Vandegrift: changed gnus-fun.el
 
@@ -1690,10 +1694,11 @@
 
 Martin Neitzel: changed sc.el
 
-Martin Rudalics: changed cus-edit.el wid-edit.el flyspell.el font-lock.el
-  complete.el cus-start.el files.el insdel.c macmenu.c syntax.c w32menu.c
-  wdired.el window.el xdisp.c xmenu.c backups.texi buffer.c buffer.h
-  casefiddle.c cperl-mode.el custom.el and 30 other files
+Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el
+  flyspell.el font-lock.el complete.el insdel.c macmenu.c syntax.c
+  w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c
+  backups.texi buffer.c buffer.h casefiddle.c cperl-mode.el
+  and 34 other files
 
 Martin Stjernholm: wrote cc-bytecomp.el
 and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
@@ -1799,10 +1804,10 @@
   ediff.texi viper-mouse.el viper.texi
 
 Michael Olson: changed erc.el erc-backend.el erc.texi Makefile
-  erc-stamp.el erc-log.el erc-autoaway.el erc-identd.el erc-track.el
-  erc-list.el erc-match.el erc-dcc.el erc-notify.el erc-bbdb.el
-  erc-goodies.el erc-ibuffer.el erc-nicklist.el erc-pcomplete.el
-  erc-spelling.el erc-compat.el erc-fill.el and 43 other files
+  erc-autoaway.el erc-log.el erc-stamp.el erc-identd.el erc-list.el
+  erc-track.el erc-match.el erc-bbdb.el erc-dcc.el erc-notify.el
+  erc-ibuffer.el erc-pcomplete.el erc-spelling.el erc-compat.el
+  erc-goodies.el erc-nicklist.el ERC-NEWS and 44 other files
 
 Michael Piotrowski: changed gnus-sum.el ps-print.el
 
@@ -1925,9 +1930,9 @@
 
 Nick Roberts: wrote gdb-ui.el
 and changed gud.el building.texi tooltip.el speedbar.el bindings.el
-  thumbs.el .gdbinit DEBUG cc-mode.el frames.texi subr.el xt-mouse.el
-  comint.el display.texi help-mode.el t-mouse.el compile.el descr-text.el
-  dired.el gud-display.pbm speedbar.texi and 114 other files
+  thumbs.el xt-mouse.el .gdbinit DEBUG cc-mode.el frames.texi subr.el
+  t-mouse.el comint.el display.texi help-mode.el compile.el descr-text.el
+  dired.el gud-display.pbm speedbar.texi and 115 other files
 
 Nico Francois: changed w32fns.c w32inevt.c w32menu.c
 
@@ -1997,6 +2002,8 @@
 
 Pascal Rigaux: changed rfc2231.el
 
+Paul Curry: changed cc-subword.el
+
 Paul D. Smith: wrote snmp-mode.el
 and changed imenu.el make-mode.el
 
@@ -2138,8 +2145,10 @@
 
 Ralf Angeli: wrote scroll-lock.el
 and changed w32fns.c tex-mode.el comint.el flow-fill.el frame.el
-  gnus-art.el killing.texi mm-view.el pcl-cvs.texi smtpmail.el w32term.c
-  window.c
+  gnus-art.el killing.texi mm-view.el pcl-cvs.texi reftex-auc.el
+  reftex-cite.el reftex-dcr.el reftex-global.el reftex-index.el
+  reftex-parse.el reftex-ref.el reftex-sel.el reftex-toc.el
+  reftex-vars.el reftex.el reftex.texi and 4 other files
 
 Ralf Fassel: changed dabbrev.el files.el fill.el iso-acc.el tar-mode.el
 
@@ -2164,7 +2173,7 @@
 and changed gnus-art.el gnus.texi message.el gnus-sum.el gnus.el
   gnus-group.el gnus-faq.texi gnus-util.el mml.el gnus-score.el
   gnus-start.el message.texi mm-util.el gnus-agent.el gnus-msg.el spam.el
-  files.el spam-report.el mm-decode.el nnweb.el deuglify.el
+  files.el spam-report.el mm-decode.el nnmail.el nnweb.el
   and 166 other files
 
 Remek Trzaska: changed gnus-ems.el
@@ -2278,7 +2287,7 @@
 Russ Allbery: changed message.el
 
 Ryan Yeske: wrote rcirc.el
-and changed ffap.el rmailsum.el
+and changed ffap.el rmailsum.el simple.el testcover.el
 
 Ryszard Kubiak: changed ogonek.el
 
@@ -2405,7 +2414,7 @@
 and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h
   keyboard.c keymap.c tex-mode.el fill.el alloc.c compile.el files.el
   regex.c simple.el easy-mmode.el info.el syntax.c vc-hooks.el xdisp.c
-  sh-script.el and 517 other files
+  sh-script.el and 518 other files
 
 Steinar Bang: changed imap.el
 
@@ -2414,7 +2423,7 @@
 
 Stephen A. Wood: changed fortran.el
 
-Stephen Berman: changed allout.el
+Stephen Berman: changed allout.el recentf.el
 
 Stephen C. Gilardi: changed configure.in
 
@@ -2469,7 +2478,7 @@
 Stuart D. Herring: changed keymap.c minibuf.c widget.texi
 
 Stuart Herring: changed files.el isearch.el align.el allout.el comint.el
-  edebug.el find-lisp.el
+  edebug.el find-lisp.el sregex.el
 
 Sudish Joseph: changed mac-win.el
 
@@ -2527,8 +2536,8 @@
 Thien-Thi Nguyen: wrote hideshow.el make-mms-derivative.el
 and changed ewoc.el info.el processes.texi zone.el Makefile.in vc.el
   fileio.c lisp-mode.el scheme.el text.texi TUTORIAL.it bindat.el
-  dcl-mode.el display.texi files.el pcvs.el sysdep.c MORE.STUFF
-  TUTORIAL.ja ange-ftp.el diary-lib.el and 126 other files
+  dcl-mode.el display.texi files.el gnus.texi pcvs.el startup.el sysdep.c
+  vc-rcs.el MORE.STUFF and 129 other files
 
 Thierry Emery: changed kinsoku.el timezone.el url-http.el wid-edit.el
 
@@ -2653,7 +2662,8 @@
   ps-prin2.ps lpr.el ps-print.ps subr.el TUTORIAL.pt_BR easymenu.el
   loading.texi ps-print-def.el ps-print0.ps ps-vars.el
 
-Vivek Dasmohapatra: changed emacs.c sh-script.el xterm.c xterm.h
+Vivek Dasmohapatra: changed emacs.c erc-backend.el erc.el sh-script.el
+  xterm.c xterm.h
 
 Vladimir Alexiev: changed arc-mode.el nnvirtual.el tmm.el
 
@@ -2719,9 +2729,9 @@
 Yagi Tatsuya: changed gnus-art.el gnus-start.el
 
 Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
-  macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c config.h
-  emacs.c makefile.MPW Makefile.in macos.texi xfaces.c INSTALL darwin.h
-  configure.in dispextern.h and 72 other files
+  macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW
+  config.h emacs.c Makefile.in macos.texi darwin.h xfaces.c INSTALL
+  dispnew.c alloc.c and 77 other files
 
 Yann Dirson: changed imenu.el
 
--- a/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,27 @@
+2007-04-15  Glenn Morris  <rgm@gnu.org>
+
+	* FTP: Replace with a pointer to the web version.
+
+2007-04-13  Glenn Morris  <rgm@gnu.org>
+
+	* INSTALL: In lib-src, timer, wakeup, yow are removed.
+
+2007-04-04  Glenn Morris  <rgm@gnu.org>
+
+	* configure.in (NON_GNU_CPP): Use associated preprocessor when
+	compiling with Sun Studio on Solaris.
+
+2007-03-23  Glenn Morris  <rgm@gnu.org>
+
+	* configure.in: Restore support for hp800 (removed 2007-01-27)
+	following clarification of legal status.
+
+2007-03-22  Joe Buehler  <jbuehler@spirentcom.com> (tiny change)
+
+	* configure.in: Add support for AIX4.3 on IBM RS6000.
+
+	* configure: Regenerate.
+
 2007-03-20  Richard Stallman  <rms@gnu.org>
 
 	* configure.in: Fix previous change.
--- a/FTP	Sun Apr 22 12:12:29 2007 +0000
+++ b/FTP	Sun Apr 22 12:42:47 2007 +0000
@@ -1,234 +1,6 @@
-								-*- text -*-
-How to get GNU Software by Internet FTP or by UUCP.  Last updated 1999-01-20
-
-* Please send improvements to this file to gnu@gnu.org.
-
-* No Warranties
-
-We distribute software in the hope that it will be useful, but without
-any warranty.  No author or distributor of this software accepts
-responsibility to anyone for the consequences of using it or for
-whether it serves any particular purpose or works at all, unless he
-says so in writing. This is exactly the same warranty that the proprietary
-software companies offer: None.  If the distribution is incomplete or the
-media fails, you can always download a replacement from any of the GNU
-mirrors, free of charge.
-
-* Updates
-
-You can always find the most recent version of this list of GNU FTP sites at
-        http://www.gnu.org/order/ftp.html
-
-* How to FTP
-
-Use the ftp program on your system (ask locally if you can't find it)
-to connect to the host you are ftping from.  Unless indicated
-otherwise, login in as user "anonymous", with password: "your e-mail
-address" and set "binary" mode (to transfer all eight bits in each
-byte).
-
-ALWAYS USE BINARY/IMAGE MODE TO TRANSFER THESE FILES!
-Text mode does not work for tar files or compressed files.
-
-* GNU Software and How To FTP It
-
-GNU software is available on ftp.gnu.org under the directory /gnu.
-diff files to convert between versions exist for some of these
-programs.  Some programs have misc support files as well.  Have a look
-on ftp.gnu.org to see which ones.  In most cases, the tar or diff
-files are compressed with the `gzip' program; this is indicated with
-the .gz suffix.  Binaries for gzip can be downloaded from
-http://www.gzip.org.
-
-Descriptions of GNU software are available at
-	http://www.gnu.org/software/software.html
- and in the Free Software Directory at
-        http://www.gnu.org/directory/index.html
-
-* Alternative Internet FTP Sources
-
-The canonical GNU ftp site is located at ftp.gnu.org/gnu.
-You should probably use one of the many mirrors of that site - the
-mirrors will be less busy, and you can find one closer to your site.
-
-* GNU FTP Site Mirror List
-
-United States:
-
-
-California - mirrors.kernel.org/gnu, http://mirrors.kernel.org/gnu
-California - gatekeeper.dec.com/pub/GNU/
-California - ftp.keystealth.org/pub/gnu/
-Illinois - uiarchive.cso.uiuc.edu/pub/ftp/ftp.gnu.org/gnu/
-Indiana - ftp.in-span.net/pub/mirrors/ftp.gnu.org/
-Kentucky - gnu.ms.uky.edu/pub/mirrors/gnu/
-Maryland - ftp.digex.net/pub/gnu/
-Massachusetts - aeneas.mit.edu/pub/gnu/
-Michigan - ftp.egr.msu.edu/pub/gnu/, http://ftp.egr.msu.edu/pub/gnu/
-Michigan - ftp.wayne.edu/gnu_mirror/
-Missouri - wuarchive.wustl.edu/systems/gnu/
-New Jersey - gnu.teleglobe.net/ftp.gnu.org/
-New York - ftp.cs.columbia.edu/archives/gnu/prep/
-New York - ftp.ece.cornell.edu/pub/mirrors/gnu/
-North Carolina - http://www.ibiblio.org/pub/gnu/
-Ohio - ftp.cis.ohio-state.edu/mirror/gnu/
-Pennsylvania - boron.club.cc.cmu.edu/gnu/
-Tennessee - sunsite.utk.edu/pub/gnu/ftp/, thales.memphis.edu/pub/gnu/
-Washington - ftp.nodomainname.net/pub/mirrors/gnu/, gnu.wwc.edu/
-Wisconsin - ftp.twtelecom.net/pub/GNU/
-
-Africa:
-
-South Africa - ftp.sun.ac.za/mirrorsites/ftp.gnu.org/pub/gnu
-
-The Americas:
-
-Brazil - ftp.unicamp.br/pub/gnu/
-Brazil - master.softaplic.com.br/pub/gnu/
-Brazil - ftp.matrix.com.br/pub/gnu/
-Canada - ftp.cs.ubc.ca/mirror2/gnu/
-Chile - ftp.inf.utfsm.cl/pub/gnu/
-Costa Rica - sunsite.ulatina.ac.cr/Mirrors/GNU/
-Mexico - www.gnu.unam.mx/pub/gnu/software/
-Mexico - gnu.cem.itesm.mx/pub/mirrors/gnu.org/
-Mexico - ftp.azc.uam.mx/mirrors/gnu/
-
-Australia:
-
-Australia - mirror.aarnet.edu.au/pub/gnu/
-Australia - gnu.mirror.pacific.net.au/gnu/
-
-Asia:
+For information about how to obtain GNU Emacs and other GNU software
+by FTP, please see <http://www.gnu.org/order/ftp.html>.
 
-China - ftp.sea9.com/pub/gnu/
-China - ftp.cs.cuhk.edu.hk/pub/gnu/gnu/
-China - sunsite.ust.hk/pub/gnu/
-China - ftp.shellhung.org/pub/gnu/
-India - ftp.kernel.org.in/gnu.org/
-India - http://kernel.org.in/mirrors/gnu.org/
-India - www.imtech.res.in/mirror/gnuftp/
-Indonesia - sapi.vlsm.org/gnu
-Indonesia - http://sapi.vlsm.org/gnu/
-Israel - ftp.cs.huji.ac.il/mirror/GNU
-Japan - tron.um.u-tokyo.ac.jp/pub/GNU/prep/
-Japan - core.ring.gr.jp/pub/GNU/
-Japan - ftp.ring.gr.jp/pub/GNU/
-Japan - mirrors.hbi.co.jp/gnu/
-Japan - ftp.ayamura.org/pub/gnu/
-Korea - cair-archive.kaist.ac.kr/pub/gnu/ (Internet address 143.248.186.3)
-Korea - ftpmirror.hanyang.ac.kr/GNU/
-Korea - ftp.linux.sarang.net/mirror/gnu/gnu/ (also mirrors alpha.gnu.org/gnu/ at ../alpha/)
-Korea - ftp.xgate.co.kr/pub/mirror/gnu/
-Saudi Arabia - ftp.isu.net.sa/pub/gnu/
-Taiwan - ftp.nctu.edu.tw/UNIX/gnu/, coda.nctu.edu.tw/UNIX/gnu/
-Taiwan - ftp1.sinica.edu.tw/pub3/GNU/gnu/
-Thailand - ftp.nectec.or.th/pub/mirrors/gnu/
-
-Europe:
+Information about Emacs is also available at
+<http://www.gnu.org/software/emacs/>.
 
-Austria - ftp.gnu.vbs.at/
-Austria - ftp.univie.ac.at/packages/gnu/
-Austria - gd.tuwien.ac.at/gnu/gnusrc/
-Austria - http://gd.tuwien.ac.at/gnu/gnusrc/
-Czech Republic - ftp.fi.muni.cz/pub/gnu/
-Denmark - ftp.denet.dk/mirror/ftp.gnu.org/pub/gnu
-Denmark - ftp.dkuug.dk/pub/gnu/
-Denmark - sunsite.dk/mirrors/gnu, http://mirrors.sunsite.dk/gnu
-Finland - ftp.funet.fi/pub/gnu/prep/
-France - ftp.irisa.fr/pub/gnu/
-France - ftp.medasys-digital-systems.fr/pub/gnu/
-France - ftp.cs.univ-paris8.fr/mirrors/ftp.gnu.org/
-Germany - ftp.cs.tu-berlin.de/pub/gnu/
-Germany - ftp.fh-worms.de/pub/mirror/ftp.gnu.org/
-Germany - ftp.leo.org/pub/comp/os/unix/gnu/
-Germany - ftp.informatik.rwth-aachen.de/pub/gnu/
-Germany - ftp.de.uu.net/pub/gnu/
-Germany - ftp.freenet.de/pub/ftp.gnu.org/gnu/
-Germany - ftp.cs.uni-bonn.de/pub/gnu/
-Germany - ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
-Germany - http://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
-Germany - ftp.stw-bonn.de/pub/mirror/ftp.gnu.org/
-Greece - ftp.forthnet.gr/pub/gnu/
-Greece - ftp.ntua.gr/pub/gnu/
-Greece - ftp.duth.gr/pub/gnu/
-Greece - ftp.physics.auth.gr/pub/gnu/
-Ireland - ftp.esat.net/pub/gnu/ (Internet address 193.120.14.241)
-Italy - ftp.oasi.gpa.it/pub/gnu/
-Italy - ftp.lugroma2.org/pub/gnu/
-Netherlands - ftp.nluug.nl/pub/gnu/
-Netherlands - ftp.mirror.nl/pub/mirror/gnu/
-Netherlands - ftp.nl.uu.net/pub/gnu/
-Netherlands - mirror.widexs.nl/pub/gnu/
-Norway - ftp.gnu.no/
-Poland - sunsite.icm.edu.pl/pub/gnu/
-Portugal - ftp.ist.utl.pt/pub/GNU/gnu/
-Romania - ftp.timisoara.roedu.net/mirrors/ftp.gnu.org/pub/gnu
-Russia - ftp.chg.ru/pub/gnu/
-Slovenia - ftp.arnes.si/software/gnu/
-Spain - ftp.etsimo.uniovi.es/pub/gnu/
-Spain - ftp.rediris.es/pub/gnu/
-Sweden - ftp.isy.liu.se/pub/gnu/
-Sweden - ftp.stacken.kth.se/pub/gnu/
-Sweden - ftp.sunet.se/pub/gnu/; also mirrors /non-gnu
-Sweden - ftp.chl.chalmers.se/pub/gnu/
-Switzerland - sunsite.cnlab-switch.ch/mirror/gnu/
-Ukraine - mirddin.farlep.net/pub/GNU/
-United Kingdom - ftp.mcc.ac.uk/pub/gnu/
-United Kingdom - ftp.mirror.ac.uk/sites/ftp.gnu.org/pub/gnu/
-United Kingdom - ftp.warwick.ac.uk/pub/gnu/ (Internet address 137.205.192.13)
-United Kingdom - ftp.hands.com/ftp.gnu.org/
-United Kingdom - gnu.teleglobe.net/ftp.gnu.org/
-
-* How to FTP GNU Emacs
-
-Emacs is in the directory /gnu/emacs on ftp.gnu.org.  The emacs
-distribution itself has a filename in the form emacs-M.N.tar.gz, where
-M and N stand for the version numbers; the Emacs Lisp Reference Manual
-is in a separate file, named elisp-manual-NN.tar.gz.
-
-* Scheme and How to FTP It
-
-The latest distribution version of C Scheme is available via anonymous FTP
-from swiss-ftp.ai.mit.edu in /pub/scheme-X.X/ (where X.X is some version
-number).
-
-Read the files INSTALL and README in the top level C Scheme directory.
-
-* TeX and How to Obtain It
-
-We don't distribute TeX now, but it is free software.
-
-TeX is a document formatter that is used, among other things, by the FSF
-for all its documentation.  You will need it if you want to make printed
-manuals.
-
-TeX is freely redistributable.  You can get it by ftp, tape, or CD/ROM.
-
-** For FTP instructions, retrieve the file
-ftp.cs.umb.edu/pub/tex/unixtex.ftp. (We don't include it here because it
-changes relatively frequently.  Sorry.)
-
-** A minimal TeX collection (enough to process Texinfo files, anyway)
-is included on the GNU source CD-ROM.  See the file ORDERS in this
-directory for more information.
-
-* GNU Software for VMS
-
-        - http://www.lp.se/gnu-vms/- lots of GNU ports to VMS,
-including Emacs 19, GCC, Bison, Make, RCS.
-
-* If You Like The Software
-
-If you like the software developed and distributed by the Free
-Software Foundation, please express your satisfaction with a donation.
-Your donations will help to support the Foundation and make our future
-efforts successful.  The Foundation continues to improve GNU programs
-and encourage the writing of new free software to enhance GNU/Linux
-and GNU/Hurd systems.  For more information on GNU and the Foundation,
-see our web site at http://www.gnu.org.
-
-Ordering a GNU Source Code CD-ROM or Source Code CD-ROM Subscription
-is a good way for your organization to help support our work.  You can
-also purchase printed manuals, reference cards, t-shirts, and other
-items.  See our online ordering form at http://order.fsf.org for
-details.
--- a/INSTALL	Sun Apr 22 12:12:29 2007 +0000
+++ b/INSTALL	Sun Apr 22 12:42:47 2007 +0000
@@ -192,7 +192,7 @@
 not those you need to compile it.  For example, to compile Emacs with
 X11 support, you may need to install the special `X11 development'
 package.  For example, in April 2003, the package names to install
-were `XFree86-devel' and `Xaw3d-devel' on RedHat.  On Debian, the
+were `XFree86-devel' and `Xaw3d-devel' on Red Hat.  On Debian, the
 packages necessary to build the installed version should be
 sufficient; they can be installed using `apt-get build-dep emacs21' in
 Debian 3 and above.
@@ -353,7 +353,7 @@
 disable caching, for debugging `configure'.
 
 If the description of the system configuration printed by `configure'
-is not right, or if it claims some of the fatures or libraries are not
+is not right, or if it claims some of the features or libraries are not
 available when you know they are, look at the `config.log' file for
 the trace of the failed tests performed by `configure' to check
 whether these features are supported.  Typically, some test fails
@@ -385,7 +385,7 @@
 
 For some libraries, like Gtk+, fontconfig and ALSA, `configure' use 
 pkg-config to find where those libraries are installed. 
-If you wan't pkg-config to look in special directories, you have to set 
+If you want pkg-config to look in special directories, you have to set 
 the environment variable PKG_CONFIG_PATH to point to the directories 
 where the .pc-files for those libraries are.
 For example:
@@ -703,8 +703,8 @@
 the paths to the values specified in `./Makefile'.
 
 2) Go to directory `./lib-src' and run `make'.  This creates
-executables named `ctags' and `etags' and `wakeup' and `make-docfile'
-and `digest-doc' and `test-distrib'.  And others.
+executables named `ctags' and `etags' and `make-docfile' and
+`digest-doc' and `test-distrib'.  And others.
 
 3) Go to directory `./src' and Run `make'.  This refers to files in
 the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
@@ -732,8 +732,8 @@
 
 Strictly speaking, not all of the executables in `./lib-src' need be copied.
 - The programs `cvtmail', `fakemail', `hexl',
-    `movemail', `profile', `rcs2log', `timer', `vcdiff', `wakeup',
-    and `yow' are used by Emacs; they do need to be copied.
+    `movemail', `profile', `rcs2log', and `vcdiff' are used by Emacs;
+    they do need to be copied.
 - The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
     are intended to be run by users; they are handled below.
 - The programs `make-docfile' and `test-distrib' were
--- a/admin/FOR-RELEASE	Sun Apr 22 12:12:29 2007 +0000
+++ b/admin/FOR-RELEASE	Sun Apr 22 12:42:47 2007 +0000
@@ -5,8 +5,6 @@
 ** Check for widow and orphan lines in manuals;
 make sure all the pages really look ok in the manual as formatted.
 
-** Check for text in manuals that assumes current version is 21.
-
 ** Cleanup temporary +++/--- lines in etc/NEWS.
 
 ** Regenerate the postscript files of the reference cards in etc.
@@ -43,13 +41,6 @@
 
 * BUGS
 
-** Kevin Rodgers missing assignment
-
-** flyspell and check-comments
-
-** lennart.borgman@gmail.com, Feb 22: C-h k does not catch text properties keymaps
-   Update: Problem is only seen when viper-mode is enabled.
-
 * DOCUMENTATION
 
 ** Check the Emacs Tutorial.
--- a/admin/notes/copyright	Sun Apr 22 12:12:29 2007 +0000
+++ b/admin/notes/copyright	Sun Apr 22 12:42:47 2007 +0000
@@ -367,14 +367,6 @@
   - see comments below. These files are OK to be released with Emacs
   22, but we may want to revisit them afterwards.
 
-[src/unexhp9k800.c - removed 2007/1/27]
-[src/m/sr2k.h - removed 2007/1/27]
-  - First file removed due to legal uncertainties; second file removed
-  due to dependency on first. Note that src/m/hp800.h is still needed on
-  hp800 arch.
-  NB we would like to re-add this file if we can. Please let us know
-  if you can clarify its legal status.
-
 
 ** Some notes on resolved issues, for historical information only
 
@@ -405,6 +397,23 @@
 
   Accordingly, FSF copyright was added.
 
+src/unexhp9k800.c  (and dependent src/m/sr2k.h)
+  - briefly removed due to legal uncertainly Jan-Mar 2007. The
+  relevant assignment is under "hp9k800" in copyright.list. File was
+  written by John V. Morris at HP, and disclaimed by the author and
+  HP. So this file is public domain.
+
+
+K Rodgers changes
+ It was pointed out that K Rodgers only had assigments for VC and
+ ps-print, but had changed several other files. We tried to contact
+ him for a general assignment, but he proved uncommunicative (despite
+ initially indicating to rms he would sign an assignment). As a result, his
+ changes were removed and/or rewritten independently. For details, see
+ threads:
+http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00225.html
+http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00257.html
+
 
 ** Issues that are "fixed" for the release of Emacs 22, but we may
    wish to revisit later in more detail
@@ -547,8 +556,8 @@
 
 REMOVED etc/gnu.xpm, nt/icons/emacs21.ico, nt/icons/sink.ico
   - Restore if find legal info. emacs21.ico is not due to Davenport.
-  Voelker could not immediately recall anything, but will check and
-  let us know if he finds anything.
+  Geoff Voelker checked but could not find a record of where it came
+  from.
 
 
 etc/images
--- a/configure	Sun Apr 22 12:12:29 2007 +0000
+++ b/configure	Sun Apr 22 12:42:47 2007 +0000
@@ -2260,13 +2260,6 @@
       sparc*-*-openbsd*)       machine=sparc ;;
       vax-*-openbsd*)          machine=vax ;;
       x86_64-*-openbsd*)       machine=amdx86-64 ;;
-      i386-*-openbsd*)	machine=intel386 ;;
-      x86_64-*-openbsd*)    machine=amdx86-64 ;;
-      m68k-*-openbsd*)  machine=hp9000s300 ;;
-      mipsel-*-openbsd*) machine=pmax ;;
-      ns32k-*-openbsd*)	machine=ns32000 ;;
-      sparc-*-openbsd*)	machine=sparc ;;
-      vax-*-openbsd*)	machine=vax ;;
     esac
   ;;
 
@@ -2566,6 +2559,13 @@
     machine=nh6000 opsys=powerunix
     NON_GNU_CPP="cc -Xo -E -P"
   ;;
+  ## SR2001/SR2201 running HI-UX/MPP
+  hppa1.1-hitachi-hiuxmpp* )
+    machine=sr2k opsys=hiuxmpp
+  ;;
+  hppa1.1-hitachi-hiuxwe2* )
+    machine=sr2k opsys=hiuxwe2
+  ;;
   ## Honeywell XPS100
   xps*-honeywell-sysv* )
     machine=xps100 opsys=usg5-2
@@ -2588,10 +2588,46 @@
     esac
   ;;
 
+  ## HP 9000 series 700 and 800, running HP/UX
+  hppa*-hp-hpux7* )
+    machine=hp800 opsys=hpux
+  ;;
+  hppa*-hp-hpux8* )
+    machine=hp800 opsys=hpux8
+  ;;
+  hppa*-hp-hpux9shr* )
+    machine=hp800 opsys=hpux9shr
+  ;;
+  hppa*-hp-hpux9* )
+    machine=hp800 opsys=hpux9
+  ;;
+  hppa*-hp-hpux10.2* )
+    machine=hp800 opsys=hpux10-20
+  ;;
+  hppa*-hp-hpux10* )
+    machine=hp800 opsys=hpux10
+  ;;
+  hppa*-hp-hpux1[1-9]* )
+    machine=hp800 opsys=hpux11
+    CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
+  ;;
+
   hppa*-*-linux-gnu* )
     machine=hp800 opsys=gnu-linux
   ;;
 
+  ## HP 9000 series 700 and 800, running HP/UX
+  hppa*-hp-hpux* )
+    ## Cross-compilation?  Nah!
+    case "`uname -r`" in
+      ## Someone's system reports A.B8.05 for this.
+      ## I wonder what other possibilities there are.
+      *.B8.* ) machine=hp800 opsys=hpux8 ;;
+      *.08.* ) machine=hp800 opsys=hpux8 ;;
+      *.09.* ) machine=hp800 opsys=hpux9 ;;
+      *) machine=hp800 opsys=hpux10 ;;
+    esac
+  ;;
   hppa*-*-nextstep* )
     machine=hp800 opsys=nextstep
   ;;
@@ -2632,6 +2668,9 @@
   rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2*  )
     machine=ibmrs6000 opsys=aix4-2
   ;;
+  rs6000-ibm-aix4.3* | powerpc-ibm-aix4.3*  )
+    machine=ibmrs6000 opsys=aix4-2
+  ;;
   rs6000-ibm-aix5* | powerpc-ibm-aix5*  )
     machine=ibmrs6000 opsys=aix4-2
   ;;
@@ -2957,7 +2996,12 @@
 		;;
       *-sunos5* | *-solaris* )
 		opsys=sol2-6
-		NON_GNU_CPP=/usr/ccs/lib/cpp
+		if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
+		  ## -Xs prevents spurious whitespace.
+		  NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
+		else
+		  NON_GNU_CPP=/usr/ccs/lib/cpp
+		fi
 		;;
       *			  ) opsys=bsd4-2   ;;
     esac
--- a/configure.in	Sun Apr 22 12:12:29 2007 +0000
+++ b/configure.in	Sun Apr 22 12:42:47 2007 +0000
@@ -593,6 +593,13 @@
     machine=nh6000 opsys=powerunix
     NON_GNU_CPP="cc -Xo -E -P"
   ;;
+  ## SR2001/SR2201 running HI-UX/MPP
+  hppa1.1-hitachi-hiuxmpp* )
+    machine=sr2k opsys=hiuxmpp
+  ;;
+  hppa1.1-hitachi-hiuxwe2* )
+    machine=sr2k opsys=hiuxwe2
+  ;;
   ## Honeywell XPS100
   xps*-honeywell-sysv* )
     machine=xps100 opsys=usg5-2
@@ -615,10 +622,46 @@
     esac
   ;;
 
+  ## HP 9000 series 700 and 800, running HP/UX
+  hppa*-hp-hpux7* )
+    machine=hp800 opsys=hpux
+  ;;
+  hppa*-hp-hpux8* )
+    machine=hp800 opsys=hpux8
+  ;;
+  hppa*-hp-hpux9shr* )
+    machine=hp800 opsys=hpux9shr
+  ;;
+  hppa*-hp-hpux9* )
+    machine=hp800 opsys=hpux9
+  ;;
+  hppa*-hp-hpux10.2* )
+    machine=hp800 opsys=hpux10-20
+  ;;
+  hppa*-hp-hpux10* )
+    machine=hp800 opsys=hpux10
+  ;;
+  hppa*-hp-hpux1[1-9]* )
+    machine=hp800 opsys=hpux11
+    CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
+  ;;
+
   hppa*-*-linux-gnu* )
     machine=hp800 opsys=gnu-linux
   ;;
 
+  ## HP 9000 series 700 and 800, running HP/UX
+  hppa*-hp-hpux* )
+    ## Cross-compilation?  Nah!
+    case "`uname -r`" in
+      ## Someone's system reports A.B8.05 for this.
+      ## I wonder what other possibilities there are.
+      *.B8.* ) machine=hp800 opsys=hpux8 ;;
+      *.08.* ) machine=hp800 opsys=hpux8 ;;
+      *.09.* ) machine=hp800 opsys=hpux9 ;;
+      *) machine=hp800 opsys=hpux10 ;;
+    esac
+  ;;
   hppa*-*-nextstep* )
     machine=hp800 opsys=nextstep
   ;;
@@ -659,6 +702,9 @@
   rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2*  )
     machine=ibmrs6000 opsys=aix4-2
   ;;
+  rs6000-ibm-aix4.3* | powerpc-ibm-aix4.3*  )
+    machine=ibmrs6000 opsys=aix4-2
+  ;;
   rs6000-ibm-aix5* | powerpc-ibm-aix5*  )
     machine=ibmrs6000 opsys=aix4-2
   ;;
@@ -984,7 +1030,12 @@
 		;;
       *-sunos5* | *-solaris* )
 		opsys=sol2-6
-		NON_GNU_CPP=/usr/ccs/lib/cpp
+		if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
+		  ## -Xs prevents spurious whitespace.
+		  NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
+		else
+		  NON_GNU_CPP=/usr/ccs/lib/cpp
+		fi
 		;;
       *			  ) opsys=bsd4-2   ;;
     esac
--- a/etc/COOKIES	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/COOKIES	Sun Apr 22 12:42:47 2007 +0000
@@ -26,7 +26,7 @@
 Add:			4 eggs
 			2 tsp. vanilla
 
-Mis together in
+Mix together in
 separate bowl:		4 cups flour
 			5 cups oatmeal (put small
  amounts of oatmeal in blender until it turns to
--- a/etc/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,70 @@
+2007-04-15  Glenn Morris  <rgm@gnu.org>
+
+	* FTP: Make it a duplicate of ../FTP.
+
+2007-04-14  Glenn Morris  <rgm@gnu.org>
+
+	* SERVICE: Replace with a pointer to the web version.
+
+	* emacs.1: Update some of the more obsolete information.
+
+2007-04-13  Glenn Morris  <rgm@gnu.org>
+
+	* MACHINES: emacserver is removed.
+
+	* MORE.STUFF: Update some links, remove some dead ones.
+
+2007-04-04  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>
+
+	* emacs.py (format_exception): New function.
+	(eexecfile): Use it instead of traceback.print_exception.
+	Don't use execfile to avoid a bug in w32.
+
+2007-04-04  Glenn Morris  <rgm@gnu.org>
+
+	* MACHINES: Mention preprocessor to use with /opt/SUNWspro/bin/cc
+	on Solaris.
+
+	* PROBLEMS (Configuration): Add entries on compiler/preprocessor
+	mismatch, and on preprocessor inserting whitespace.
+
+2007-04-03  Eli Zaretskii  <eliz@gnu.org>
+
+	* TODO: Add entry for switching MS-Windows keyboard input to
+	Unicode.  Add specific pointer to msdos.c functions that support
+	menus on text terminals.
+
+2007-04-01  Michael Olson  <mwolson@gnu.org>
+
+	* ERC-NEWS: Update for the ERC 5.2 release.  Most of these entries
+	were for previously-committed changes.
+
+2007-03-31  Michael Albinus  <michael.albinus@gmx.de>
+
+	* PROBLEMS: Remove Tramp problem; it has been fixed.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+	* PROBLEMS (MS-Windows problems): How to bind non-ASCII keys with
+	modifiers.
+
+2007-03-23  Glenn Morris  <rgm@gnu.org>
+
+	* Makefile (DESTDIR, LIBDIR, BINDIR, MANDIR, MANEXT):
+	Delete unused variables.
+	(dired-refcards, misc-refcards, survival-card, viper-cards):
+	New targets.
+	(all): Also build dired-refcards and misc-refcards.
+	(clean, distclean, maintainer-clean): Depend on mostlyclean.
+	(SOURCES): Remove non-existent files.
+	(mostlyclean, clean, distclean, maintainer-clean, unlock, relock):
+	Mark as phony.
+	(.ps files): Specify default papersize in the dvips command.
+
+	* fr-refcard.tex (\letterpaper): Switch to A4.
+	(\section): Reduce \vskips to fit on A4 paper.
+	(\shortcopyrightnotice): Display at end of first column.
+
 2007-03-21  Glenn Morris  <rgm@gnu.org>
 
 	* fr-refcard.tex (\metax): Tweak \hsize to avoid overfull columns.
@@ -322,7 +389,7 @@
 	(section{TODO Items and Checkboxes}): Checkbox keys moved to this
 	section, added documentation for the key `C-c #'.
 
-2006-11-05  Slawomir Nowaczyk  <slawek@cs.lth.se>  (tiny change)
+2006-11-05  Slawomir Nowaczyk  <slawek@cs.lth.se>
 
 	* emacs.py (eargs): Provide eldoc message for builtin types.
 	  Make sure eargs always outputs sentinel, to avoid Emacs freeze.
@@ -417,7 +484,7 @@
 	(eimport): Use __main__ rather than `emacs' namespace.
 	(modpath): New fun.
 
-2006-08-20  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>  (tiny change)
+2006-08-20  Slawomir Nowaczyk  <slawomir.nowaczyk.847@student.lu.se>
 
 	* emacs.py (eexecfile): Use the __main__ rather than `emacs' namespace.
 
@@ -680,8 +747,8 @@
 	* pl-refcard.tex (section{Info}): Ditto.  Translation suggested by
 	Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>.
 
-	* cs-refcard.tex (section{Info}): Use `s' instead of `M-s'.  Entry
-	for `i' is not translated yet.
+	* cs-refcard.tex (section{Info}): Use `s' instead of `M-s'.
+	Entry for `i' is not translated yet.
 
 	* pt-br-refcard.tex (section{Info}): Ditto.
 
@@ -1410,7 +1477,7 @@
 
 	* NEWS: Lots of clarifications and cleanups.
 
-2005-05-05  Slawomir Nowaczyk  <slawek@cs.lth.se>  (tiny change)
+2005-05-05  Slawomir Nowaczyk  <slawek@cs.lth.se>
 
 	* TUTORIAL.pl: Updated header.
 
--- a/etc/DEBUG	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/DEBUG	Sun Apr 22 12:42:47 2007 +0000
@@ -306,10 +306,15 @@
 
 ** If you encounter X protocol errors
 
-Try evaluating (x-synchronize t).  That puts Emacs into synchronous
-mode, where each Xlib call checks for errors before it returns.  This
-mode is much slower, but when you get an error, you will see exactly
-which call really caused the error.
+The X server normally reports protocol errors asynchronously,
+so you find out about them long after the primitive which caused
+the error has returned.
+
+To get clear information about the cause of an error, try evaluating
+(x-synchronize t).  That puts Emacs into synchronous mode, where each
+Xlib call checks for errors before it returns.  This mode is much
+slower, but when you get an error, you will see exactly which call
+really caused the error.
 
 You can start Emacs in a synchronous mode by invoking it with the -xrm
 option, like this:
@@ -562,7 +567,7 @@
 
 Once you discover the corrupted Lisp object or data structure, grep
 the sources for its uses and try to figure out what could cause the
-corruption.  If looking at the sources doesn;t help, you could try
+corruption.  If looking at the sources doesn't help, you could try
 setting a watchpoint on the corrupted data, and see what code modifies
 it in some invalid way.  (Obviously, this technique is only useful for
 data that is modified only very rarely.)
@@ -726,7 +731,7 @@
 disassembly to determine exactly what code is being run--the
 disassembly will probably show several source lines followed by a
 block of assembler for those lines.  The actual point where Emacs
-crashes will be one of those source lines, but not neccesarily the one
+crashes will be one of those source lines, but not necessarily the one
 that the debugger reports.
 
 Another problematic area with the MS debugger is with variables that
--- a/etc/ERC-NEWS	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/ERC-NEWS	Sun Apr 22 12:42:47 2007 +0000
@@ -3,8 +3,7 @@
 Copyright (C) 2006, 2007  Free Software Foundation, Inc.
 See the end of the file for license conditions.
 
-
-* Changes in ERC 5.2 (stable pre-release for Emacs 22)
+* Changes in ERC 5.2
 
 ** M-x erc RET now starts ERC.
 `erc-select' has been changed to `erc'.  `erc-select' still remains as
@@ -12,37 +11,173 @@
 `erc-ssl' with `erc-select-ssl' as its alias.  The function that was
 known as `erc' is now `erc-open'.
 
+** Open query buffers by default when private messages are received.
+The default value of `erc-auto-query' has been changed to 'bury.
+
 ** New command: /RECONNECT
 This command tries to reconnect to the current IRC server exactly
 once.  It does not work in server buffers (throws an error before the
 command is run), but works in query and channel buffers.
 
+** In MS-DOS environments, look for _ercrc.el rather than .ercrc.el.
+
+** Fix buggy interaction with multi-tty Emacs.
+
+** After running /QUIT, make sure that the IRC process is killed within
+4 seconds.  Freenode, in particular, needs this at times.
+
+** If the IRC process has not responded to our PINGs within a certain
+time, kill it and restart the connection.  See
+`erc-server-auto-reconnect', `erc-server-reconnect-attempts',
+`erc-server-reconnect-timeout', `erc-server-send-ping-interval', and
+`erc-server-send-ping-timeout' to fine-tune ERC's behavior.
+
+** Avoid getting into an infinite connection loop.
+Previously, this could happen if your nick was banned, you were using
+Tor, incorrect information was entered, or the connection was bad.
+
+** Make ban messages less confusing.
+
+** Restore the point correctly when reconnecting to an IRC server.
+
+** Make /IGNORE and /UNIGNORE prompt to determine whether their
+argument is a user or a regexp.  This results in less-confusing
+behavior when trying to ignore someone who has a bracket in their
+nick.
+
+** Make the default port "6667" rather than "ircd", because some
+operating systems don't know what port "ircd" maps to.
+
+** Fix several bugs in erc-iswitchb (C-c C-b).
+
+** Clean up internal documentation.
+Special thanks go to Juanma Barranquero for the thorough vetting of
+ERC's internal documentation.
+
+** Display a more informative message when a module is not found.
+
+** Fix a bug where paths were being colored like IRC commands.
+
+** In the customize interface for `erc-modules', add the name of the module.
+This makes it easier to find modules by name.
+
+** erc-server-send-ping-interval: Change to use a default of 30 seconds.
+
+** Some files which are included with the release of ERC 5.2 will not
+appear in the version of ERC that is bundled with Emacs 22.  These
+extras files may be found at:
+
+ o http://ftp.gnu.org/gnu/erc/erc-5.2-extras.tar.gz, or
+ o http://ftp.gnu.org/gnu/erc/erc-5.2-extras.zip.
+
+** Renamed files
+
+Several files were renamed so as to make them distinct to users of the
+MS-DOS operating system.
+
+ o erc-autojoin.el -> erc-join.el
+ o erc-complete.el -> erc-hecomplete.el
+ o erc-nickserv.el -> erc-services.el
+ o ChangeLog.NNNN -> ChangeLog.NN
+
+** Header line changes
+
+*** Remove "[IRC]" from the header line.
+
+*** Add the %l format character to `erc-header-line-format',
+
+*** Document how to remove the header line.
+Namely: (setq erc-header-line-format nil).
+
 ** New options
 
 *** erc-server-reconnect-attempts: Determines the number of
 reconnection attempts that ERC will make per server.
 
-*** erc-server-reconnect-timeout: New option that determines the
-amount of time, in seconds, that ERC will wait between successive
-reconnect attempts.
+*** erc-server-reconnect-timeout: Determines the amount of time,
+in seconds, that ERC will wait between successive reconnect attempts.
+
+*** erc-server-send-ping-timeout: Determines when to consider a connection
+stalled and restart it.  The default is	after 120 seconds.
+
+*** erc-system-name: Determines the system name to use when logging in.
+The default is to figure this out by calling `system-name'.
 
 ** New face: `erc-my-nick-face'
 This helps make it easier to distinguish messages sent by yourself
 from messages sent by other users when the value of the variable
 `erc-show-my-nick' is non-nil.
 
+** Namespace changes
+
+*** New macro: `erc-with-server-buffer'
+Switches to the current ERC server buffer and runs some code.  If no
+server buffer is available, return nil.  This is a useful way to
+access variables in the server buffer.
+
+*** New function: `erc-open-server-buffer-p'
+Returns non-nil if the given buffer is an ERC server buffer that has
+an open IRC process.
+
+*** New function: `erc-format-lag-time'
+Returns the estimated lag time to server, `erc-server-lag'.
+
+*** Renamed items
+
+ o `erc-server-setup-periodical-server-ping' is now
+   `erc-server-setup-periodical-ping'
+
+ o `erc-away-p' is now `erc-away-time'
+
+** Changes to the ERC manual
+
+*** New section: Sample Session.
+Describes a sample ERC session for connecting to the #emacs channel on
+Freenode.  Also mention the #erc channel.
+
+*** New section: Special Features.
+Describes some of the special features of ERC.
+
+*** Getting Started: Mention ~/.emacs.d/.ercrc.el and the Customize
+interface.
+
+*** Development: Mention ErcDevelopment page on emacswiki.org.
+
+*** Tips and Tricks: Remove empty section for now.
+
+*** Options: Mention how to see available ERC options.
+
+*** Sample Configuration: Add an example of how to configure ERC.
+
 ** New modules
 
+*** Autoaway (erc-autoaway.el)
+
+**** Make this much more reliable.
+
+**** Avoid duplicate messages when coming back from being away.
+
+**** Fix bug where autoaway was enabled just by loading the file.
+
+*** BBDB (erc-bbdb.el)
+
+**** Display information on how to cancel merging of info or how to
+create a new John Doe record.
+
+**** Make it so that information from /whois continues to come in, even
+while prompting for a record to merge.
+
+**** Make hitting C-g correctly abort merging the record.
+
 *** Capab identify (erc-capab.el)
 Mark users who haven't identified to NickServ on servers supporting
 CAPAB IDENTIFY-MSG.
 
 ** Changes and additions to modules
 
-*** Channel lists (erc-list.el)
+*** Button (erc-button.el)
 
-**** This has been removed from Emacs 22, since a major contributor
-to it has not yet assigned changes.
+**** Make <backtab> go to the previous button.
 
 *** Channel tracking (erc-track.el)
 
@@ -50,6 +185,103 @@
 This helps people using a mouse know that they are buttons and can be
 clicked on.
 
+**** Fix issue where C-c C-SPC could conflict with user-defined keybindings.
+This is accomplished by moving these bindings to their own global
+minor mode.  Now the default is to check whether the user has bound
+something to C-c C-SPC or C-c C-@.  If they have, prompt them about
+whether to really override that binding.  This also has the effect of
+preventing ERC from clobbering rcirc's keybinding, unless this is
+desired.  See `erc-track-enable-keybindings' for more details.
+
+**** New option: erc-track-enable-keybindings.
+Determine whether or not to enable the C-c C-SPC and C-c C-@
+keybindings.  The default is to ask whether to do this if a binding to
+these keys already exists.  It can also be set to t or nil to always
+bind or never bind, respectively.
+
+**** Remove `track-when-inactive' module.
+See `erc-track-when-inactive' for further details.
+
+**** New option: erc-track-when-inactive.
+This option replaces the track-when-inactive module.  Set it to
+non-nil to track activity even in visible buffers when inactive.  The
+default is nil.
+
+**** Remove the `track-modified-channels' alias for the `track' module.
+
+*** DCC support (erc-dcc.el)
+
+**** Add Usage section to Commentary.
+
+**** Fix a bug in the server message output.
+
+*** Filling (erc-fill.el)
+
+**** Fix bug involving messages that start with one or more blank lines.
+
+*** Identd (erc-identd.el)
+
+**** New option `erc-identd-port'
+Specifies the port to use if none is given as an argument to
+`erc-identd-start'.  This is placed in the new customization group
+`erc-identd'.
+
+**** New function: `erc-identd-quickstart'
+Ignores any arguments and calls `erc-identd-start'.
+
+*** Channel lists (erc-list.el)
+
+**** Enable by default, except in the version of ERC bundled with Emacs 22.
+
+*** Logging (erc-log.el)
+
+**** Make sure filenames are safe to use before writing to them.
+
+**** Save all log buffers when exiting Emacs.
+
+**** erc-generate-log-file-name-function: Add option for
+`erc-generate-log-file-name-network', which is a new function that
+uses the network name rather than the server name when possible.
+
+*** Menu (erc-menu.el)
+
+**** Name the menu "ERC" instead of "IRC" to avoid confusion with rcirc
+and other clients.
+
+**** Make this into a proper module and load it by default.
+
+**** Add "Current channel" submenu.
+
+*** Networks (erc-networks.el)
+
+**** Add support for Ars OpenIRC, LinuxChix, and OFTC networks.
+
+**** Escape periods in Konfido.Net and Kewl.Org.
+
+*** Internet services / Nickserv (erc-nickserv.el)
+
+**** Add new 'both method for the `erc-nickserv-identify-mode' option
+and make it the default.  This tries to do the right thing both when a
+known nickserv message exists for an IRC network, and when it does
+not.
+
+**** Support nickserv authentication on OFTC, Azzurra, Ars, and QuakeNet.
+
+**** Support authentication on BitlBee.
+
+**** Make source code easier to understand by using accessor functions.
+
+*** Sound support (erc-sound.el)
+
+**** Make this work with both Emacs 21 and Emacs 22.
+
+*** Timestamps (erc-stamp.el)
+
+**** Exclude the newline from the erc-timestamp field.
+
+**** New function: `erc-toggle-timestamps'.
+Toggles display of timestamps.
+
 * Changes in ERC 5.1.4
 
 ** Make find-function and find-variable work in Emacs 22 for
@@ -156,6 +388,10 @@
 
 **** Don't create an extra buffer for the identd process.
 
+*** Channel lists (erc-list.el)
+
+**** Enable by default, except in the version of ERC bundled with Emacs 22.
+
 *** Logging (erc-log.el)
 
 **** By default, don't insert old logs when opening an ERC buffer.
--- a/etc/FTP	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/FTP	Sun Apr 22 12:42:47 2007 +0000
@@ -1,2 +1,6 @@
-Please refer to <http://www.gnu.org/software/emacs/> for information
-about obtaining Emacs.
+For information about how to obtain GNU Emacs and other GNU software
+by FTP, please see <http://www.gnu.org/order/ftp.html>.
+
+Information about Emacs is also available at
+<http://www.gnu.org/software/emacs/>.
+
--- a/etc/MACHINES	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/MACHINES	Sun Apr 22 12:42:47 2007 +0000
@@ -126,7 +126,7 @@
   Emacs distribution, and remove the "#if 0" and "#endif" directives
   which surround the following block near the end of the file:
 
-    #if 0  /* This breaks things on PPC GNU/Linux ecept for Yellowdog,
+    #if 0  /* This breaks things on PPC GNU/Linux except for Yellowdog,
 	      even with identical GCC, as, ld.  Let's take it out until we
 	      know what's really going on here.  */
     /* GCC 2.95 and newer on GNU/Linux PPC changed the load address to
@@ -156,9 +156,8 @@
   installations may have to edit src/Makefile manually after it is created.
   There are too many versions of both cc and X to automate this easily.
 
-  In `lib-src/Makefile', emacsclient and emacsserver compile and work fine
-  under CC 6.9.  They now probably work under other versions of the compiler,
-  as well.
+  In `lib-src/Makefile', emacsclient compiles and works fine under CC 6.9.
+  It now probably works under other versions of the compiler, as well.
 
   The Apollo Domain CC compiler will issue quite a few warning messages,
   mostly complaining about incompatible pointers.  In general, these are
@@ -1149,7 +1148,9 @@
   On Solaris, do not use /usr/ucb/cc.  Use /opt/SUNWspro/bin/cc.  Make
   sure that /usr/ccs/bin and /opt/SUNWspro/bin are in your PATH before
   /usr/ucb.  (Most free software packages have the same requirement on
-  Solaris.)
+  Solaris.)  With this compiler, use `/opt/SUNWspro/bin/cc -E' as the
+  preprocessor.  If this inserts extra whitespace into its output (see
+  the PROBLEMS file) then add the option `-Xs'.
 
   If you have trouble using open-network-stream, get the distribution
   of `bind' (the BSD name-server), build libresolv.a, and link Emacs
@@ -1393,7 +1394,7 @@
   cannot be made to work.  Whether or not the GNU relocating malloc is
   used, the symptom is that the first call Emacs makes to sbrk(0) returns
   (char *)-1.  Sorry, you're stuck with character-only mode.  Try
-  installing Xfree86 to fix this.
+  installing XFree86 to fix this.
 
 System V rel 4.0.3 and 4.0.4 (usg5.4)
 
@@ -1497,11 +1498,10 @@
   to make the Emacs meta key work.
 
 Local variables:
-mode: indented-text
+mode: text
 fill-prefix: "  "
 End:
 
-
 This file is part of GNU Emacs.
 
 GNU Emacs is free software; you can redistribute it and/or modify
--- a/etc/MORE.STUFF	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/MORE.STUFF	Sun Apr 22 12:42:47 2007 +0000
@@ -47,9 +47,6 @@
 
  * Battery and Info Look: <URL:http://www-cdf.fnal.gov/~sthrlnd/emacs/>
 
- * BibTeX:
-   <URL:http://www.ida.ing.tu-bs.de/people/dirk/bibtex/index.html>
-
  * BS: <URL:http://www.geekware.de/software/emacs/index.html>
 
  * Calculator: <URL:http://www.barzilay.org/misc/calculator.el>
@@ -85,26 +82,24 @@
 
  * MH-E: <URL:http://mh-e.sourceforge.net/>
 
- * PC Selection: <URL:ftp://ftp.thp.uni-duisburg.de/pub/source/elisp/>
-
  * PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>
 
- * PS-print: <URL:http://www.cpqd.com.br/~vinicius/emacs/>
+ * PS-print: <URL:http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage>
 
  * QuickURL: <URL:http://www.davep.org/emacs/>
 
- * RefTeX: <URL:http://staff.science.uva.nl/~dominik/Tools/reftex/>
+ * RefTeX: <URL:http://www.gnu.org/software/auctex/reftex.html>
 
  * Speedbar, Checkdoc etc: <URL:http://cedet.sourceforge.net/>
 
- * SQL: <URL:http://www.geocities.com/TimesSquare/6120/emacs.html>
+ * SQL: <URL:http://www.emacswiki.org/cgi-bin/wiki/sql.el>
 
  * Tramp: Remote file access via rsh/ssh
    <URL:http://savannah.gnu.org/projects/tramp/>
 
  * Webjump: <URL:http://www.neilvandyke.org/webjump>
 
- * Whitespace: <URL:http://www.dsmit.com/lisp/>
+ * Whitespace: <URL:http://www.dsmit.com/lisp/whitespace.el>
 
 * Auxiliary files
 
@@ -147,7 +142,7 @@
    mirrors of the `CTAN' TeX archives.
 
  * Dismal: spreadsheet:
-   <URL:http://www.gnu.org/software/dismal/dismal.html>
+   <URL:http://ritter.ist.psu.edu/dismal/dismal.html>
 
  * ECB: Emacs Code Browser: <URL:http://ecb.sourceforge.net/>
 
@@ -177,8 +172,7 @@
    <URL:http://emacspeak.sourceforge.net/>
 
  * Emacs-w3m : <URL:http://emacs-w3m.namazu.org/>
-   A simple Emacs interface to w3m, which is a text-mode
-   WWW browser
+   A simple Emacs interface to w3m, which is a text-mode WWW browser
 
  * Emacs Wiki Mode: <URL:http://www.mwolson.org/projects/EmacsWiki.html>
    A wiki-like publishing tool and personal information manager
@@ -198,7 +192,7 @@
    HTML-specific editing.  Can work with PSGML.
 
  * Hyperbole:
-   <URL:http://ftp.gnu.org/pub/gnu/hyperbole/>
+   <URL:http://directory.fsf.org/hyperbole.html>
    Hyperbole is an open, efficient, programmable information
    management and hypertext system.
 
@@ -229,11 +223,11 @@
    nXML mode is an addon for GNU Emacs, which makes GNU Emacs into a
    powerful XML editor.
 
- * Planner Mode: <URL:http://www.plannerlove.com/>
+ * Planner Mode: <URL:http://wjsullivan.net/PlannerMode>
    Planner is an organizer and day planner for Emacs.
 
  * Preview LaTeX: embed preview LaTeX images in source buffer.
-   <URL:http://preview-latex.sourceforge.net/>
+   <URL:http://www.gnu.org/software/auctex/preview-latex>
 
  * PSGML: <URL:http://www.lysator.liu.se/projects/about_psgml.html>
    DTD-aware serious SGML/XML editing.
@@ -260,7 +254,7 @@
 
  * Tiny Tools: <URL:http://tiny-tools.sourceforge.net/>
 
- * VM (View Mail): <URL:http://www.wonderworks.com/vm/> Alternative
+ * VM (View Mail): <URL:http://www.nongnu.org/viewmail/> Alternative
    mail reader.  There is a VM newsgroup: <URL:news:gnu.emacs.vm.info>
 
  * W3: <URL:http://savannah.gnu.org/projects/w3/>
@@ -276,8 +270,7 @@
    shell-script daemon and some LaTeX macros.
 
  * X-Symbol: <URL:http://x-symbol.sourceforge.net/>
-   Quasi-WYSIWYG editing of TeX & al.  (It will be improved to take
-   better advantage of Emacs 21 features.)
+   Quasi-WYSIWYG editing of TeX & al.
 
 Local Variables:
 mode: text
--- a/etc/Makefile	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/Makefile	Sun Apr 22 12:42:47 2007 +0000
@@ -1,43 +1,110 @@
-DESTDIR=
-LIBDIR=/usr/local/lib
-BINDIR=/usr/local/bin
-MANDIR=/usr/man/man1
-MANEXT=1
+### Makefile for Emacs etc/ directory
+
+## Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
+##   2007 Free Software Foundation, Inc.
+
+## This file is part of GNU Emacs.
 
-all:
+## GNU Emacs is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## GNU Emacs is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with GNU Emacs; see the file COPYING.  If not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301, USA.
+
 
-refcards:	refcard.ps cs-refcard.ps de-refcard.ps fr-refcard.ps \
-		pl-refcard.ps pt-br-refcard.ps ru-refcard.ps sk-refcard.ps
+## Top-level targets.
+
+## PS files included with Emacs.
+all: refcards dired-refcards misc-refcards
+
+
+refcards: refcard.ps cs-refcard.ps de-refcard.ps fr-refcard.ps \
+          pl-refcard.ps pt-br-refcard.ps ru-refcard.ps sk-refcard.ps
+
+dired-refcards: dired-ref.ps cs-dired-ref.ps fr-drdref.ps sk-dired-ref.ps
 
-refcard.dvi de-refcard.dvi fr-refcard.dvi pt-br-refcard.dvi sk-refcard.dvi:	%.dvi:	%.tex
-	tex $<
+## No PS files: vipcard.tex viperCard.tex survival.tex sk-survival.tex
+misc-refcards: calccard.ps gnus-booklet.ps gnus-refcard.ps orgcard.ps
+
+## Following PS files are not included with Emacs.
+survival-cards: survival.ps cs-survival.ps sk-survival.ps
 
-cs-refcard.dvi:	%.dvi:	%.tex
+viper-cards: vipcard.ps viperCard.ps
+
+
+## dvi files.
+
+## FIXME the sk-*.tex files say to use csplain, but were not
+## traditionally in this rule. Fix the doc or the rule.
+cs-refcard.dvi cs-dired-ref.dvi cs-survival.dvi: %.dvi:	%.tex
 	csplain $<
 
-pl-refcard.dvi: %.dvi:	%.tex
+pl-refcard.dvi: %.dvi: %.tex
 	if ! kpsewhich -format=fmt mex > /dev/null; then \
 	  echo "No mex format found."; false; \
 	fi
 	tex $<
 
-ru-refcard.dvi:	%.dvi:	%.tex
+ru-refcard.dvi gnus-refcard.dvi: %.dvi: %.tex
 	latex $<
 
-refcard.ps de-refcard.ps fr-refcard.ps pt-br-refcard.ps:	%.ps:	%.dvi
-	dvips -t landscape $<
+gnus-booklet.dvi: gnus-refcard.tex
+	latex '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}'
+	mv gnus-refcard.dvi $@
+
+## Everything not explicitly listed above.
+%.dvi: %.tex
+	tex $<
+
+
+## PostScript files.
+
+## Note that some of the tex files (refcard, de-refcard, fr-refcard,
+## pt-br-refcard) have settings for letter or a4 paper. Following are
+## the default paper sizes (letter for English, A4 for translations).
+## FIXME orgcard.ps does not fit on letter (see orgcard.tex).
 
-cs-refcard.ps pl-refcard.ps ru-refcard.ps sk-refcard.ps:	%.ps:	%.dvi
-	dvips $<
+## A4, landscape.
+de-refcard.ps fr-refcard.ps pt-br-refcard.ps orgcard.ps: %.ps: %.dvi
+	dvips -t a4 -t landscape $<
+
+## A4, portrait.
+cs-dired-ref.ps cs-refcard.ps cs-survival.ps fr-drdref.ps \
+pl-refcard.ps ru-refcard.ps \
+sk-dired-ref.ps sk-refcard.ps sk-survival.ps: %.ps: %.dvi
+	dvips -t a4 $<
+
+## letter, landscape.
+calccard.ps refcard.ps: %.ps: %.dvi
+	dvips -t letter -t landscape $<
+
+## letter, portrait.
+dired-ref.ps gnus-booklet.ps gnus-refcard.ps survival.ps vipcard.ps \
+viperCard.ps: %.ps: %.dvi
+	dvips -t letter $<
+
+
+.PHONY: mostlyclean clean distclean maintainer-clean unlock relock
 
 mostlyclean:
-	-rm -f core *.dvi *.log
+	-rm -f *.dvi *.log
 
-clean distclean maintainer-clean:
-	-rm -f DOC* core *.dvi *.log
+## Note does not delete generated ps files.
+clean distclean maintainer-clean: mostlyclean
+	-rm -f DOC*
 
-SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* etags.* ledit.l ms-* \
-	spook-lines tasks.texi termcap.* *.tex
+
+SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* ms-* \
+	spook-lines termcap.* *.tex
 
 unlock:
 	chmod u+w $(SOURCES)
@@ -54,4 +121,6 @@
 e/eterm-color: e/eterm-color.ti
 	TERMINFO=`pwd`; export TERMINFO; $(TIC) e/eterm-color.ti
 
-# arch-tag: 4261f003-cf77-4478-a10a-5284e9d8f797
+
+## arch-tag: 4261f003-cf77-4478-a10a-5284e9d8f797
+### Makefile ends here
--- a/etc/NEWS	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/NEWS	Sun Apr 22 12:42:47 2007 +0000
@@ -1,4 +1,4 @@
-GNU Emacs NEWS -- history of user-visible changes.  2006-06-04
+GNU Emacs NEWS -- history of user-visible changes.
 
 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
           Free Software Foundation, Inc.
@@ -35,7 +35,7 @@
 version is used.  You can use M-x list-load-path-shadows to find such
 older packages.
 
-Some specific packages which are known to cause problems are:
+Some specific packages that are known to cause problems are:
 
 ** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
 ** cua.el, cua-mode.el: remove old versions.
@@ -91,7 +91,7 @@
 
 The Emacs Lisp Reference Manual in Info format is built as part of the
 Emacs build procedure and installed together with the Emacs User
-Manual.  A menu item was added to the menu bar that makes it easy
+Manual.  A menu item was added to the menu bar to make it easily
 accessible (Help->More Manuals->Emacs Lisp Reference).
 
 ---
@@ -100,7 +100,7 @@
 
 This manual is now part of the standard distribution and is installed,
 together with the Emacs User Manual, into the Info directory.  A menu
-item was added to the menu bar that makes it easy accessible
+item was added to the menu bar to make it easily accessible
 (Help->More Manuals->Introduction to Emacs Lisp).
 
 ---
@@ -144,12 +144,8 @@
 ** Support for GNU/Linux systems on X86-64 machines was added.
 
 ---
-** Support for HP 9000 series 800 and Hitachi SR2001/SR2201 machines
-was removed.
-
----
 ** Mac OS 9 port now uses the Carbon API by default.  You can also
-create non-Carbon build by specifying `NonCarbon' as a target.  See
+create a non-Carbon build by specifying `NonCarbon' as a target.  See
 the files mac/README and mac/INSTALL for build instructions.
 
 ---
@@ -160,6 +156,7 @@
 ** When pure storage overflows while dumping, Emacs now prints how
 much pure storage it will approximately need.
 
+---
 ** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
 contents of buffers from a core dump and save them to files easily, should
 Emacs crash.
@@ -230,10 +227,10 @@
 
 ---
 ** Emacs built for MS-Windows now behaves like Emacs on X does,
-wrt its frame position: if you don't specify a position (in your
-.emacs init file, in the Registry, or with the --geometry command-line
-option), Emacs leaves the frame position to the Windows' window
-manager.
+with respect to its frame position: if you don't specify a position
+(in your .emacs init file, in the Registry, or with the --geometry
+command-line option), Emacs leaves the frame position to the Windows'
+window manager.
 
 +++
 ** Emacs can now be invoked in full-screen mode on a windowed display.
@@ -246,12 +243,12 @@
 ** Emacs now displays a splash screen by default even if command-line
 arguments were given.  The new command-line option --no-splash
 disables the splash screen; see also the variable
-`inhibit-startup-message' (which is also aliased as
-`inhibit-splash-screen').
+`inhibit-splash-screen' (which is also aliased as
+`inhibit-startup-message').
 
 +++
 ** The default is now to use a bitmap as the icon, so the command-line options
---icon-type, -i has been replaced with options --no-bitmap-icon, -nbi to turn
+--icon-type, -i have been replaced with options --no-bitmap-icon, -nbi to turn
 the bitmap icon off.
 
 +++
@@ -365,6 +362,7 @@
 doublequotes make no difference in the shell, but they prevent
 special treatment in `dired-do-shell-command'.
 
+---
 ** Adaptive filling misfeature removed.
 It no longer treats `NNN.' or `(NNN)' as a prefix.
 
@@ -880,9 +878,11 @@
 the window now works sensibly, by automatically adjusting the window's
 vscroll property.
 
++++
 *** New customize option `overline-margin' controls the space between
 overline and text.
 
++++
 *** New variable `x-underline-at-descent-line' controls the relative
 position of the underline.  When set, it overrides the
 `x-use-underline-position-properties' variables.
@@ -991,6 +991,7 @@
 elements on mode-line (and header-line) like `highlight' face on text
 areas.
 
++++
 *** `mode-line-buffer-id' is the standard face for buffer identification
 parts of the mode line.
 
@@ -1011,7 +1012,7 @@
 *** New option `ebnf-arrow-extra-width' which specify extra width for arrow
 shape drawing.
 The extra width is used to avoid that the arrowhead and the terminal border
-overlap.  It depens on `ebnf-arrow-shape' and `ebnf-line-width'.
+overlap.  It depends on `ebnf-arrow-shape' and `ebnf-line-width'.
 
 +++
 *** New option `ebnf-arrow-scale' which specify the arrow scale.
@@ -1118,7 +1119,7 @@
 to support existing GUI file selection dialogs better.
 
 +++
-*** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
+*** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be
 disabled by customizing the variable `use-file-dialog'.
 
 ---
@@ -1126,7 +1127,7 @@
 be navigated with the arrow keys (like Gtk+, Mac and W32).
 
 +++
-*** The menu bar for Motif/Lesstif/Lucid/Gtk+ can be navigated with keys.
+*** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys.
 Pressing F10 shows the first menu in the menu bar.  Navigation is done with
 the arrow keys, select with the return key and cancel with the escape keys.
 
@@ -1136,7 +1137,7 @@
 `-xrm "Emacs*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
 
 ---
-*** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
+*** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing
 ESC, like they do for Gtk+, Mac and W32.
 
 +++
@@ -1167,7 +1168,7 @@
 click to follow a link, whereas most other applications use a Mouse-1
 click for both purposes, depending on whether you click outside or
 inside a link.  Now the behavior of a Mouse-1 click has been changed
-to match this context-sentitive dual behavior.  (If you prefer the old
+to match this context-sensitive dual behavior.  (If you prefer the old
 behavior, set the user option `mouse-1-click-follows-link' to nil.)
 
 Depending on the current mode, a Mouse-2 click in Emacs can do much
@@ -1220,6 +1221,7 @@
 
 ** Multilingual Environment (Mule) changes:
 
++++
 *** You can disable character translation for a file using the -*-
 construct.  Include `enable-character-translation: nil' inside the
 -*-...-*- to disable any character translation that may happen by
@@ -1618,7 +1620,7 @@
 *** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are
 more user-friendly versions of `grep' and `grep-find', which prompt
 separately for the regular expression to match, the files to search,
-and the base directory for the search.  Case sensitivitivy of the
+and the base directory for the search.  Case sensitivity of the
 search is controlled by the current value of `case-fold-search'.
 
 These commands build the shell commands based on the new variables
@@ -1748,6 +1750,7 @@
 
 * New Modes and Packages in Emacs 22.1
 
+---
 ** ERC is now part of the Emacs distribution.
 
 ERC is a powerful, modular, and extensible IRC client for Emacs.
@@ -2020,6 +2023,7 @@
 can generate a table source in typesetting and markup languages such
 as latex and html from the visually laid out text table.
 
++++
 ** The tumme.el package allows you to easily view, tag and in other ways
 manipulate image files and their thumbnails, using dired as the main interface.
 Tumme provides functionality to generate simple image galleries.
@@ -2072,6 +2076,7 @@
 ** The TCL package tcl-mode.el was replaced by tcl.el.
 This was actually done in Emacs-21.1, and was not documented.
 
+---
 ** The new package scroll-lock.el provides the Scroll Lock minor mode
 for pager-like scrolling.  Keys which normally move point by line or
 paragraph will scroll the buffer by the respective amount of lines
@@ -2087,6 +2092,7 @@
 
 ** Changes in Shell Mode
 
+---
 *** Shell output normally scrolls so that the input line is at the
 bottom of the window -- thus showing the maximum possible text.  (This
 is similar to the way sequential output to a terminal works.)
@@ -2121,7 +2127,7 @@
 or mathematica's "*)") - at the beginning of line are no longer are
 interpreted as level 1 topics in those modes.
 
-*** Many or most commonly occuring "accidental" topics are disqualified.
+*** Many or most commonly occurring "accidental" topics are disqualified.
 Text in item bodies that looks like a low-depth topic is no longer mistaken
 for one unless its first offspring (or that of its next sibling with
 offspring) is only one level deeper.
@@ -2211,6 +2217,7 @@
    - many, many other, more minor tweaks, fixes, and refinements.
    - version number incremented to 2.2
 
++++
 ** The variable `woman-topic-at-point' was renamed
 to `woman-use-topic-at-point' and behaves differently: if this
 variable is non-nil, the `woman' command uses the word at point
@@ -2730,6 +2737,7 @@
 The function `c-toggle-syntactic-indentation' can be used to toggle
 syntactic indentation.
 
+---
 ** In sh-script, a continuation line is only indented if the backslash was
 preceded by a SPC or a TAB.
 
@@ -2861,6 +2869,7 @@
 By default, its setting is inferred on a buffer-by-buffer basis
 from the file name or buffer contents.
 
+---
 *** The variable `sgml-transformation' has been renamed to
 `sgml-transformation-function'.  The old name is still available as
 alias.
@@ -2886,6 +2895,7 @@
 +++
 *** New major mode Doctex mode, for *.dtx files.
 
+---
 ** BibTeX mode:
 
 *** The new command `bibtex-url' browses a URL for the BibTeX entry at
@@ -2942,6 +2952,7 @@
 `bibtex-autokey-titleword-case-convert-function'.  The old names are
 still available as aliases.
 
++++
 ** In Artist mode the variable `artist-text-renderer' has been
 renamed to `artist-text-renderer-function'.  The old name is still
 available as alias.
@@ -2973,6 +2984,7 @@
 To use this package just type M-x gdb.  See the Emacs manual if you want the
 old behaviour.
 
+---
 *** The variable tooltip-gud-tips-p has been removed.  GUD tooltips can now be
 toggled independently of normal tooltips with the minor mode
 `gud-tooltip-mode'.
@@ -3339,6 +3351,7 @@
 ---
 *** Rmail now displays 5-digit message ids in its summary buffer.
 
++++
 *** The new commands rmail-end-of-message and rmail-summary end-of-message,
 by default bound to `/', go to the end of the current mail message in
 Rmail and Rmail summary buffers.
@@ -3705,6 +3718,7 @@
 ---
 ** cplus-md.el has been deleted.
 
+---
 ** Ewoc changes
 
 *** The new function `ewoc-delete' deletes specified nodes.
@@ -3850,6 +3864,7 @@
 `kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
 `kTextEncodingISOLatin2' are obsolete.
 
++++
 ** The variable `mac-command-key-is-meta' is obsolete.  Use
 `mac-command-modifier' and `mac-option-modifier' instead.
 
@@ -3919,6 +3934,7 @@
 
 ** General Lisp changes:
 
++++
 *** The function `expt' handles negative exponents differently.
 The value for `(expt A B)', if both A and B are integers and B is
 negative, is now a float.  For example: (expt 2 -2) => 0.25.
@@ -4050,6 +4066,12 @@
 This combines `defalias' and `make-obsolete'.
 
 +++
+*** New macro `with-case-table'
+
+This executes the body with the case table temporarily set to a given
+case table.
+
++++
 *** New function `unsafep' determines whether a Lisp form is safe.
 
 It returns nil if the given Lisp form can't possibly do anything
@@ -4063,6 +4085,7 @@
 
 This is useful in packages that can be preloaded.
 
++++
 *** `list-faces-display' takes an optional argument, REGEXP.
 
 If it is non-nil, the function lists only faces matching this regexp.
@@ -4406,6 +4429,7 @@
 have a buffer-local binding in buffer BUFFER, it returns the default
 value of VARIABLE instead.
 
+---
 *** The function `frame-or-buffer-changed-p' now lets you maintain
 various status records in parallel.
 
@@ -5405,7 +5429,7 @@
 ** Mouse pointer features:
 
 +++ (lispref)
-??? (man)
+--- (man)
 *** The mouse pointer shape in void text areas (i.e. after the end of a
 line or below the last line in the buffer) of the text window is now
 controlled by the new variable `void-text-area-pointer'.  The default
@@ -5848,6 +5872,12 @@
 for it.  (If the coding system is detected incorrectly for a specific
 file, you can put a `coding:' tags to override it.)
 
++++
+*** The new variable `ascii-case-table' stores the case table for the
+ascii character set.  Language environments (such as Turkish) may
+alter the case correspondences of ASCII characters.  This variable
+saves the original ASCII case table before any such changes.
+
 ---
 *** The new function `merge-coding-systems' fills in unspecified aspects
 of one coding system from another coding system.
--- a/etc/ORDERS	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/ORDERS	Sun Apr 22 12:42:47 2007 +0000
@@ -8,6 +8,6 @@
 Your purchases will help support further development of Emacs and
 other free software programs.
 
-You can also make tax-deductable donations to the Free Software
+You can also make tax-deductible donations to the Free Software
 Foundation, a not-for-profit organization (assuming you pay US taxes)
 - see <http://www.gnu.org/help/donate.html>.
--- a/etc/PROBLEMS	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/PROBLEMS	Sun Apr 22 12:42:47 2007 +0000
@@ -213,15 +213,15 @@
 This happens because of bugs in Gtk+.  Gtk+ 2.10 seems to be OK.  See bug
 http://bugzilla.gnome.org/show_bug.cgi?id=85715.
 
-** Emacs compiled with Gtk+ crashes on startup on cygwin.
+** Emacs compiled with Gtk+ crashes on startup on Cygwin.
 
 A typical error message is
-  ***MEMORY-ERROR***: emacs[5172]: GSlice: failed to allocate 504 bytes 
+  ***MEMORY-ERROR***: emacs[5172]: GSlice: failed to allocate 504 bytes
   (alignment: 512): Function not implemented
 
 Emacs supplies its own malloc, but glib (part of Gtk+) calls memalign and on
-cygwin that becomes the cygwin supplied memalign.  As malloc is not the
-cygwin malloc, the cygwin memalign always returns ENOSYS.  A fix for this
+Cygwin, that becomes the Cygwin supplied memalign.  As malloc is not the
+Cygwin malloc, the Cygwin memalign always returns ENOSYS.  A fix for this
 problem would be welcome.
 
 * General runtime problems
@@ -1198,7 +1198,7 @@
 emulation for which it is set up.
 
 Only the Motif 1.2 emulation seems to be stable enough in LessTif.
-Lesstif 0.92-17's Motif 1.2 emulation seems to work okay on FreeBSD.
+LessTif 0.92-17's Motif 1.2 emulation seems to work okay on FreeBSD.
 On GNU/Linux systems, lesstif-0.92.6 configured with "./configure
 --enable-build-12 --enable-default-12" is reported to be the most
 successful.  The binary GNU/Linux package
@@ -1295,7 +1295,7 @@
    improves performance dramatically, at the slight expense of correctness
    of the X protocol.  lbxproxy acheives the performance gain by grouping
    several X requests in one TCP packet and sending them off together,
-   instead of requiring a round-trip for each X request in a seperate
+   instead of requiring a round-trip for each X request in a separate
    packet.  The switches that seem to work best for emacs are:
     -noatomsfile  -nowinattr  -cheaterrors -cheatevents
    Note that the -nograbcmap option is known to cause problems.
@@ -1401,7 +1401,7 @@
 
 in your site-init.el file.
 
-* Runtime problems on character termunals
+* Runtime problems on character terminals
 
 ** Emacs spontaneously displays "I-search: " at the bottom of the screen.
 
@@ -2102,6 +2102,18 @@
 Windows 95 and Windows NT up to version 4.0 do not support help text
 for menus.  Help text is only available in later versions of Windows.
 
+When "ClearType" method is selected as the "method to smooth edges of
+screen fonts" (in Display Properties, Appearance tab, under
+"Effects"), there are various problems related to display of
+characters: 2-pixel trace is left behind when moving overlays, bold
+fonts can be hard to read, small portions of some characters could
+appear chopped, etc.  This happens because, under ClearType,
+characters are drawn outside their advertised bounding box.  Emacs 21
+disabled the use of ClearType, whereas Emacs 22 allows it and has some
+code to enlarge the width of the bounding box.  Apparently, this
+display feature needs more changes to get it 100% right.  A workaround
+is to disable ClearType.
+
 There are problems with display if mouse-tracking is enabled and the
 mouse is moved off a frame, over another frame then back over the first
 frame.  A workaround is to click the left mouse button inside the frame
@@ -2113,16 +2125,32 @@
 An inactive cursor remains in an active window after the Windows
 Manager driven switch of the focus, until a key is pressed.
 
-Windows input methods are not recognized by Emacs.  Some
+Windows input methods are not recognized by Emacs.  However, some
 of these input methods cause the keyboard to send characters encoded
 in the appropriate coding system (e.g., ISO 8859-1 for Latin-1
-characters, ISO 8859-8 for Hebrew characters, etc.).  To make this
-work, set the keyboard coding system to the appropriate value after
-you activate the Windows input method.  For example, if you activate
-the Hebrew input method, type "C-x RET k iso-8859-8 RET".  (Emacs
-ought to recognize the Windows language-change event and set up the
-appropriate keyboard encoding automatically, but it doesn't do that
-yet.)
+characters, ISO 8859-8 for Hebrew characters, etc.).  To make these
+input methods work with Emacs, set the keyboard coding system to the
+appropriate value after you activate the Windows input method.  For
+example, if you activate the Hebrew input method, type this:
+
+   C-x RET k hebrew-iso-8bit RET
+
+(Emacs ought to recognize the Windows language-change event and set up
+the appropriate keyboard encoding automatically, but it doesn't do
+that yet.)  In addition, to use these Windows input methods, you
+should set your "Language for non-Unicode programs" (on Windows XP,
+this is on the Advanced tab of Regional Settings) to the language of
+the input method.
+
+To bind keys that produce non-ASCII characters with modifiers, you
+must specify raw byte codes. For instance, if you want to bind
+META-a-grave to a command, you need to specify this in your `~/.emacs':
+
+  (global-set-key [?\M-\340] ...)
+
+The above example is for the Latin-1 environment where the byte code
+of the encoded a-grave is 340 octal.  For other environments, use the
+encoding appropriate to that environment.
 
 The %b specifier for format-time-string does not produce abbreviated
 month names with consistent widths for some locales on some versions
@@ -2295,12 +2323,36 @@
 Alternatively, modify the generated src/Makefile to link the .a file
 explicitly, and edit src/config.h to define HAVE_JPEG.
 
+*** `configure' warns ``accepted by the compiler, rejected by the preprocessor''.
+
+This indicates a mismatch between the C compiler and preprocessor that
+configure is using.  For example, on Solaris 10 trying to use
+CC=/opt/SUNWspro/bin/cc (the Sun Studio compiler) together with
+CPP=/usr/ccs/lib/cpp can result in errors of this form (you may also
+see the error ``"/usr/include/sys/isa_defs.h", line 500: undefined control'').
+
+The solution is to tell configure to use the correct C preprocessor
+for your C compiler (CPP="/opt/SUNWspro/bin/cc -E" in the above
+example).
+
+*** `configure' fails with ``"junk.c", line 660: invalid input token: 8.elc''
+
+The final stage of the Emacs configure process uses the C preprocessor
+to generate the Makefiles.  Errors of this form can occur if the C
+preprocessor inserts extra whitespace into its output.  The solution
+is to find the switches that stop your preprocessor from inserting extra
+whitespace, add them to CPPFLAGS, and re-run configure.  For example,
+this error can occur on Solaris 10 when using the Sun Studio compiler
+``Sun C 5.8'' with its preprocessor CPP="/opt/SUNWspro/bin/cc -E".
+The relevant switch in this case is "-Xs" (``compile assuming
+(pre-ANSI) K & R C style code'').
+
 ** Compilation
 
 *** Building Emacs over NFS fails with ``Text file busy''.
 
 This was reported to happen when building Emacs on a GNU/Linux system
-(RedHat Linux 6.2) using a build directory automounted from Solaris
+(Red Hat Linux 6.2) using a build directory automounted from Solaris
 (SunOS 5.6) file server, but it might not be limited to that
 configuration alone.  Presumably, the NFS server doesn't commit the
 files' data to disk quickly enough, and the Emacs executable file is
@@ -2387,17 +2439,17 @@
 
 (using the location of the 32-bit X libraries on your system).
 
-*** Building the Cygwin port for MS-Windows can fail with some GCC version
+*** Building the Cygwin port for MS-Windows can fail with some GCC versions
 
 Building Emacs 22 with Cygwin builds of GCC 3.4.4-1 and 3.4.4-2 is
 reported to either fail or cause Emacs to segfault at run time.  In
 addition, the Cygwin GCC 3.4.4-2 has problems with generating debug
 info.  Cygwin users are advised not to use these versions of GCC for
-compiling Emacs.  GCC versions 4.0.3, 4.1.1, and 4.1.2 reportedly
-build a working Cygwin binary of Emacs, so we recommend these GCC
-versions.  Note that these three versions of GCC, 4.0.3, 4.1.1, and
-4.1.2, are currently the _only_ versions known to succeed in building
-Emacs (as of v22.1).
+compiling Emacs.  GCC versions 4.0.3, 4.0.4, 4.1.1, and 4.1.2
+reportedly build a working Cygwin binary of Emacs, so we recommend
+these GCC versions.  Note that these versions of GCC, 4.0.3, 4.0.4,
+4.1.1, and 4.1.2, are currently the _only_ versions known to succeed
+in building Emacs (as of v22.1).
 
 *** Building the native MS-Windows port with Cygwin GCC can fail.
 
@@ -2548,7 +2600,7 @@
 
 *** Linux: Segfault during `make bootstrap' under certain recent versions of the Linux kernel.
 
-With certain recent Linux kernels (like the one of Redhat Fedora Core
+With certain recent Linux kernels (like the one of Red Hat Fedora Core
 1 and newer), the new "Exec-shield" functionality is enabled by default, which
 creates a different memory layout that breaks the emacs dumper.  Emacs tries
 to handle this at build time, but if the workaround used fails, these
@@ -2718,6 +2770,13 @@
 You need to install a recent version of Texinfo; that package
 supplies the `install-info' command.
 
+*** Installing to a directory with spaces in the name fails.
+
+For example, if you call configure with a directory-related option
+with spaces in the value, eg --enable-locallisppath='/path/with\ spaces'.
+Using directory paths with spaces is not supported at this time: you
+must re-configure without using spaces.
+
 ** First execution
 
 *** Emacs binary is not in executable format, and cannot be run.
--- a/etc/SERVICE	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/SERVICE	Sun Apr 22 12:42:47 2007 +0000
@@ -1,1378 +1,10 @@
--*- text -*-
 GNU Service Directory
 ---------------------
 
-See the end of file for copyright information.
-
-This is a list of people who have asked to be listed as offering
-support services for GNU software, including GNU Emacs, for a fee
-or in some cases at no charge.
-
-The information comes from the people who asked to be listed;
-we do not include any information we know to be false, but we
-cannot check out any of the information; we are transmitting it to
-you as it was given to us and do not promise it is correct.
-Also, this is not an endorsement of the people listed here.
-We have no opinions and usually no information about the abilities of
-any specific person.  We provide this list to enable you to contact
-service providers and decide for yourself whether to hire one.
-
-Before FSF will list your name in the GNU Service Directory, we ask
-that you agree informally to the following terms:
-
-1. You will not restrict (except by copyleft) the use or distribution
-of any software, documentation, or other technical information you
-supply anyone in the course of modifying, extending, or supporting GNU
-software.  This includes any information specifically designed to
-ameliorate the use of GNU software.
-
-2. You will not take advantage of contact made through the Service
-Directory to advertise an unrelated business (e.g., sales of
-non-GNU-related proprietary information).  You may spontaneously
-mention your availability for general consulting, but you should not
-promote a specific unrelated business unless the client asks.
-
-Please include some indication of your rates, because otherwise users
-have nothing to go by.	Please put each e-mail address inside "<>".
-Please put nothing else inside "<>".  Thanks!
-
-For a current copy of this directory, or to have yourself listed, ask:
-	service@gnu.org
-
-** Please keep the entries in this file alphabetical **
-^_
-Aaronsen Group, Ltd.    <gnu@aaronsen.com>
-600 Grant St.
-Suite 5345
-Pittsburgh, PA 15219 US
-+1 412 391 6000 voice
-+1 412 361 5991 fax
-http://www.aaronsen.com/gnu
-
-The Aaronsen Group provides several levels of service in the free software
-arena, from simple configuration and installation to large extensions and
-new development.  We specialize in unique applications, but have the
-experience to handle all manner of prospects, from database-backed
-web-sites to high-end multiprocessor clusters.
-
-Our service area covers the US, with key offices in Pittsburgh, PA; San
-Jose, CA; and New York, NY.
-
-We are available for both hourly work (at $300 per hour, some qualified
-discounts are available) and fixed-price projects.  Work is done on the
-client site, at our offices, or remote via Internet or telephone
-connection
-
-Updated: 2001-05-08
-^_
-Alcôve
-------
-
-Alcôve, Centre Paris Pleyel, 153 bld Anatole France
-93200 Saint-Denis France
-
-Email:  <infos@alcove.fr>
-
-Web:    http://www.alcove.com
-Tél.:   +33 1 49 22 68 00
-Fax:    +33 1 49 22 68 01
-
-Founded in 1996, Alcôve's main purpose is to promote and support the
-use of GNU/Linux and OSS on the European market.
-Expertise in OSS innovation is the foundation of all Alcôve's
-activities.
-We provide key accounts and leading businesses in the field of IT with :
-
-	Consultancy
-        Engineering
-	Training
-	Support
-	Technical watching brief
-	OSS Certification - Validation - Guarantee
-	Drivers for the linux kernel
-	Company directory and unified messaging
-	Linux Firewall Security Package
-
-Keys: support services, consulting, open source software, GNU/Linux,
-Apache, Perl, GNU, Samba, Zope, Imp, OpenLDAP
-
-Average daily rate, depending on the job : 1000 euros.
-
-Updated:  2001-06-26
-^_
-Allegro Consultants, Inc.         <info@gccsupport.com>
-1072 De Anza Blvd., Suite B101
-San Jose, CA  95129-3532
-USA
-+1 408 252-2330 voice
-+1 408 252-2334 fax
-http://www.gccsupport.com
-
-Allegro Consultants, Inc, in association with DIS International, is
-now offering annual support contracts covering the GNU Compiler
-Collection and related tools, including the GCC C and C++ compilers
-for MPE/iX.
-
-The free GCC C and C++ compilers have been available on MPE/iX for
-several years now, and are used for mission-critical applications by
-many organizations including Hewlett-Packard. Until now, assistance
-was available only from Mark Klein of DIS on a limited, voluntary
-basis. Mark is the person who originally ported GCC to the HP e3000,
-and he continues to maintain the software and port new versions.
-
-Support contracts start at $1,995.00/year for an organization
-(unlimited number of HP e3000 computer systems) with two designated
-callers.  Additional options are available for large organizations who
-need to designate more than two authorized callers, or who want the
-additional security of 24x7 coverage.
-
-Updated: 2001-06-12
-^_
-Amazonia Computing
-
-<rick@viclink.com>
-http://www.viclink.com/~rick
-
-1981 NW Thomsen Lane
-McMinnville, OR  97128
-503-474-0572
-
-I provide development and technical support for free software
-and open source systems including embedded programming, GNU/Linux, the
-GNU development suite..
-
-I have over 10 years experience building and maintaining systems ranging
-from medical patient monitoring systems to Linux device drivers for
-custom PCI plug in cards.
-
-Rates range from $75.00/hr to $90/hr USD.  Will work for a lower rate
-if in involves working in either Brazil, Vietnam, Indonesia, or Cuba.
-I am also willing to work on fixed price contracts.
-
-Updated: 2001-05-08
-^_
-Dipl.-Inform. Gerd Aschemann                     <gerd@aschemann.net>
-Osannstr. 49
-D-64285 Darmstadt
-Tel.: +49 173 3264070
-http://www.aschemann.net/
-
-- Consultant
-  + Unix Network and System Administration
-  + Distributed Systems and Middleware Infrastructures
-- former System Administrator (UNIX and NT) at CS Department, TU Darmstadt, Germany
-- 20 years working in the CS field, System administration on different platforms
-- 13 years with UNIX/Networking/FreeWare/GNU/X11
-- 10 years courses on Operating Systems and Distributed Systems
-- Lectures on System and Network Administration
-- Platforms: Solaris, GNU/Linux, SunOS, Ultrix, HP-UX, Digital Unix, AIX, SCO, FreeBSDs
-- Distributed Platforms and Information Systems (CORBA, WWW, Java, SOAP)
-
-Rates are at 180,-- DM (~85 US$) per hour minimum, depending on the job.
-I am willing to travel for sufficiently large jobs.
-
-Updated: 2001-05-09
-^_
-Baker Research, Ltd.
-P. O. Box 10036, Alexandria, VA   22310
-Phone:	(703) 960-9500 (Voice)
-	(703) 960-8700 (Fax)
-Web:	http://www.baker-research.com
-email:	<solutions@baker-research.com>
-Rate:	$75.00/hr to $150.00/hr, or fixed-price projects.
-
-Services:
-
-    --Customization of systems for user needs
-    --Software product evaluation and recommendation
-    --Full-lifecycle software development
-    --Programming (C/C++, tcl/tk, bash, perl)
-    --Custom backup and archival systems
-    --GNU/Linux system installation, configuration, and management
-    --Cluster systems support
-	-Installation, configuration, and management
-	-MPI and Myrinet support
-    --Data acquisition, management, visualization, and archival
-
-Updated:  2001-05-11
-^_
-Don Barry, Ph.D.       <don@astro.cornell.edu>
-Ithaca, NY
-
-Astrophysicist with extensive and varied hacker background.  Substantial
-expertise in mathematical modeling, instrument interface, low-level and
-high-level hardware control, statistical analysis, automated/mathematical
-typesetting.  Also fluent in opto/electro/mechanical design.  I try to find
-solutions using free software when possible and specialize in GNU/Linux
-platforms.  Degrees also in chemistry and mathematics.
-
-Speak: C, APL, Fortran, J, Perl, Emacs Lisp, IDL, variety of machine
-languages from CDC CYBER (!) to x86 families, TeX/LaTeX, sendmail, and
-quite a few others.  Experience on platforms from PDP to present.
-
-Rates: $75--$150 per hour + travel (if required) depending on the needs of
-the project, the level of support and availability required, and its
-interest to me.
-
-Services: consulting, design, porting, lecturing, support, project definition,
-system implementation.
-
-Updated: 2001-05-09
-^_
-James Craig Burley
-97 Arrowhead Circle
-Ashland, MA 01721
-Email: <craig@jcb-sc.com>
-Web:   http://world.std.com/~burley/
-
-Expertise (mainly Development and Maintenance):
-    Compilers for Imperative Languages (author of GNU Fortran, aka g77)
-    Operating System Kernels
-    Tools/Utilities
-    Microcode (mainly VLIW) and Assembler
-    Software-Development-System Architecture (including APIs, IDEs)
-    Debugging
-    Technical Writing (Manager of Documentation)
-
-Experience:
-    Programming Languages C, PL/I, Fortran, PostScript
-    Operating Systems Unix, GNU/Linux, Solaris, HP-UX, VAX/VMS, PRIMOS,
-      MIT ITS, TOPS-10, TSS/8, IBM MVS
-    Assembler/Microcode Languages for Sun SPARC, HP-PA RISC, Numerix VLIWs,
-      VAX, Pr1me, IBM 360, PDP-10, PDP-8
-    Scripting Languages (many)
-    APIs (many)
-
-Rate: $180/hour
-
-Updated: 2001-05-08
-^_
-   C2V                          Michel Delval <mfd@c2v.com>
-   82 bd Haussmann              Jean-Alain Le Borgne <jalb@c2v.com>
-   75008 Paris
-   France
-   Tel (33 1) 40.08.07.07
-   Fax (33 1) 43.87.35.99
-   http://www.c2v.com/freesoft.htm
-   e-mail: <consult@c2v.com>
-
-   Services: we offer source or source+binary distribution,
-   installation, training, maintenance, technical support,
-   consulting, specific development and followup on the GNU software
-   development environment: Emacs, gcc/g++, binutils, gas, gdb.
-
-   Porting on new platforms, and professionally developing software
-   with the GNU tools in the Unix/X11 environment since they were
-   first available.
-
-   Experience: GNU C Compilation toolchain for the SGS-Thomson D950
-   and ST20 DSP chips.
-
-   GNU C compilation toolchain (cross-compiler, compiler, linker,
-   assembler, debugger) for SparcV7 ERC32 based space systems
-   (Sextant Avionique / Alcatel Espace).
-
-   Feasability study, analysis and prototyping of a complete
-   compilation toolchain based on the GNU programming tools for the
-   CSEM RISC microprocessor family.
-
-   Rates: from 5000 FF/day to 750 000 FF/year, 40% discount for
-   educational institutions, add taxes and expenses.  Ask for list.
-
-Updated: 2001-05-09
-^_
-Cendio Systems AB       <info@cendio.com>
-Teknikringen 3
-SE-583 30 Linkoping
-SWEDEN
-+46 13 21 46 00 voice
-+46 13 21 47 00 fax
-http://www.cendio.com/  <international site>
-
-Cendio Systems develops, implements and integrates solutions based on
-Open Source Software. We also develop and market the Fuego
-Firewall(TM), an award winning and easy-to-use firewall, based on
-GNU/Linux.
-
-We offer professional services, including support, maintenance,
-integration and development in the following areas:
-
-* Embedded Linux
-* Client/Server Solutions GNU/Linux/BSD
-* Professional Training GNU/Linux, certifications from SAIR Linux/GNU
-* Open Source Strategy
-* Development/Adaptation of free software
-
-Cendio Systems have deep roots in Linkoping University, and was
-founded 1992 as Signum Support. Our headquarters resides in Mjardevi
-Science Park in Linkoping and we have an office in Stockholm. We are
-currently about fifty employees at both locations.
-
-Cendio Systems won the Lotus 'Tux Award' at LotusSphere 2000 for "the
-partner who best exemplifies a unique dedication to Lotus and Linux
-technologies and has successfully executed their vision in the
-marketplace."
-
-Cendio Systems have the following certifications and memberships:
-
-Association of Computing Machinery, Professional Membership
-COMPAQ System Specialist (Intel and Alpha Systems)
-Embedded Linux Consortium, Founding Member
-IBM Value Added Reseller (Netfinity)
-IBM Solution Provider (RS/6000)
-SAIR GNU/Linux, Accredited Center for education
-SGI Systems Integrator
-
-Rates: Please request our price list.
-
-Updated: 2001-05-09
-^_
-Alex Cherepanov
-111 McDade Blvd, Apt. A-205, Folsom, PA 19033
-Phone: 610 529 3475
-email: <alexcher@erols.com>
-Web:   http://users.erols.com/alexcher/
-
-Services: Support and maintenance of free PostScript and PDF
-software including Ghostscript, ps2pdf, a2ps, tiff2ps, pdfopt.
-General imaging, font, and PDL consulting.
-
-Experience: 12 years experience in software engineering, 5 years
-in PostScript and digital color printing.
-
-Rates: $50-75/hour, depending on contract length.
-
-Updated: 2001-05-22
-^_
-CodeSourcery, LLC <info@codesourcery.com>
-9978 Granite Point Ct
-Granite Bay, CA 95746
-(650) 364-5360
-http://www.codesourcery.com
-
-CodeSourcery specializes in customization of, enhancements to, and
-support for all GNU software.  We have particular experience in the
-field of programming tools, and have been responsible for many
-features in the GNU C and C++ compilers including the implementation
-of member templates and type-based alias analysis.  Mark Mitchell, one
-of our co-founders, is a co-maintainer of the GNU Compiler Collection.
-
-We also have experience with GNU tools ranging from emacs to binutils
-to gdb to autoconf, and are willing to work on any and all free
-software projects.
-
-Please see our web page at www.codesourcery.com for more information
-about our products, services, and prices.
-
-Updated: 2001-05-16
-^_
-Stuart Cracraft         <cracraft@gnu.org>
-P.O. Box 6061
-Laguna Niguel, CA, 92607, USA
-Phone: 714-347-8106 (prefer email)
-Rate: negotiable
-
-Consultation topics:
-Entire GNU suite - porting, compilation, installation,
-user-training, administrator-training.
-
-Method: via any combination of telephone, dialup, Internet, in-person, email.
-
-Experience: supporting GNU since project inception, original port of
-GNU Emacs to Sun Solaris, original author of GNU Emacs online tutorial.
-Expertise in C, Emacs Lisp, Perl, Expect, Oracle, Informix, SunOS, Solaris,
-NIS, NFS, system-monitoring via paging. Unix System and Database
-administration or development.
-
-Updated: 2000-12-13
-^_
-Bruce Dawson    -    <jbd@codemeta.com>
-CodeMeta, Inc.
-Manchester, NH  USA
-800-354-2209
-
-Specializing in GNU tools such as CVS, gnats, bash, gawk, fileutils...
-
-Services:
-
-  o 800 phone support.
-
-  o Modification and development.
-
-  o Training.
-
-Rate: Fixed rate deliverables or $110/hour for hourly work.
-
-http://www.codemeta.com
-
-Updated: 2001-05-09
-^_
-Martin Deen Consulting
-<sunra@mail.hypermart.net>
-426 Marietta St. #503
-Atlanta, GA 30313
-(V) 404-931-5392
-http://sunra.hypermart.net
-
-Consultant with many years supporting the GNU/Linux environment and
-working with Open Source solutions.  Available for hourly and per
-project work.  Hourly rates start at $100/hr.  Work can be done on
-client site, offsite, or remotely via Internet.  Can take engagements
-in Atlanta with little notice, call for arangements elsewhere.
-
-Updated: 2001-04-20
-^_
-DSS Distributed Systems Software, Inc.
-3253 Georgia St.                         <dss@dss.bc.ca>
-Richmond, British Columbia V7E 2R4       http://www.dss.bc.ca
-CANADA                                   (604) 270-9559
-
-GNU-related services:
-  We specialize in support for GCC (mainly C and C++), including porting,
-  retargeting, and customizing.
-  Also, GNU and other free software that falls within our areas of expertise.
-
-Expertise:
-  DSS provides software design, implementation, and consulting services.
-
-  Distributed systems:
-    o Client/Server architectures, computer networking, communication
-protocols
-    o Directory systems, including X.500 and LDAP
-    o High-performance and special-purpose distributed systems and databases:
-      scalability, reliability, availability, transactions
-    o Computer systems performance analysis
-
-  Compilers, translators, and interpreters, including "small" and
-  special-purpose languages
-
-Rates:
-  Consulting rates are $65-$200 USD per hour, plus
-  applicable taxes.  Fixed-cost projects are also possible.
-
-Updated: 2001-05-10
-^_
-John W. Eaton
-<jwe@gnu.org>, <jwe@net66.com>
-
-Experience:   Original author and current maintainer of GNU Octave
-              (http://www.octave.org).
-
-              Derivatives of the Unix man utility that I wrote in 1990
-              are currently distributed with several GNU/Linux systems.
-
-              Improved GNU Make's support for VPATH and object
-              libraries on VMS systems.
-
-              Various other enhancements and bug fixes for other free
-              software tools.
-
-              I have more than 18 years experience programming various
-              languages and systems, more than 13 years as a user and
-              system mangler of Unix systems, including Ultrix, SunOS,
-              AIX, HP/UX, BSD, IRIX, Digital Unix, and GNU/Linux.
-              Long-time user of GNU tools on all these platforms.
-
-Programming:  Octave, Matlab, C++, C, Fortran, Emacs Lisp, TeX/LaTeX,
-              AWK, M4, Autoconf, Make, Lex & YACC, Unix shell
-              programming, etc.
-
-Services:     Anything related to programming and extending Octave.
-              Porting, installation, and customization of GNU/Linux and
-              GNU tools.  Unix system administration.
-
-Rates:        $100/hour + travel and expenses (if required).  Will
-              consider travel for short periods and/or sufficiently
-              interesting jobs, but prefer to work via the net or email.
-              Lower rates for non-profits.
-
-Updated: 2001-05-14
-^_
- Echo Labs                  <echo@iinet.net.au>
- 29 Weld St,                 http://www.iinet.net.au/~echo/
- Nedlands, WA 6009
- Perth, Australia
- +61 (0) 41 356 0008
-
- Echo Labs is a software consultancy that also provides support and
- development skills.  Specialising in GNU software, particularly Tcl/Tk
- and Linux. We can deliver systems at a fraction of the cost of those
- based on more traditional technologies.  Internet/intranet, telephony
- and data communications solutions, for all platforms are undertaken.
- GUI front-ends done quickly in rapid development process.
-
- While typically involved in engineering and technical areas, any
- GNU/Open Source software will be supported.
-
- For further details see: http://www.iinet.net.au/~echo/
-
- Experience: 15+ years C/Unix, Sun, SCO, GNU/Linux, Win/NT.
-             Secure WWW servers (Apache SSL), Ecommerce solutions.
-             Systems programming, device drivers, hardware interfacing.
-             GNU tools/utilities, telephony and Embedded & realtime
-             systems. Communications protocols and implementation.
-
- Degrees:    BAppSc (CS) (Distinction), Curtin University, Perth
-
- Rates:      AUS $50-75/hr neg.
-
-Updated:    2001-05-09
-^_
-Noah Friedman                   <friedman@splode.com>
-6114 La Salle Ave. #739
-Oakland, CA 94611-2802
-
-Author of several Emacs Lisp packages and parts of Emacs, as well as
-numerous network and unix system utilities.  Co-maintained GNU Texinfo and
-Autoconf for a couple of years.  Experienced unix systems engineer.
-FSF employee Feb 1991--Sep 1994.
-
-I can perform installation, porting, and enhancement of all GNU software
-and any other free software, especially for Linux/GNU systems; design
-high-capacity hardware-redundant servers for production environments;
-provide consulting on the use of version control management with CVS; and I
-am willing to provide handholding for shell programming and Emacs Lisp
-development.
-
-Fees negotiable, averaging $100-$150/hour.  I can work in the California
-bay area or anywhere accessible on the Internet.  For larger jobs I may be
-willing to travel.
-
-Updated: 2001-05-08
-^_
-Brian Gough                         <bjg@network-theory.co.uk>
-Network Theory Limited              http://www.network-theory.co.uk/
-Bristol, United Kingdom
-
-Tel: 0117 3179309 (in UK), +44 117 3179309 (outside UK)
-
-I provide support and development of free software on a contract
-basis.  I can work at your site, over the internet, or by phone/email.
-I have extensive experience with many free software packages,
-particularly for web development.
-
-I can also provide specialized consulting in numerical software
-development for scientific and quantitative applications.
-
-Rate: 40-60 pounds/hour, depending on location.
-
-Updated: 2001-09-05
-^_
-Ronald F. Guilmette    <rfg@monkeys.com>
-RG Consulting
-1751 East Roseville Pkwy. #1828
-Roseville, CA 95661
-Tel: +1 916 786 7945
-FAX: +1 916 786 5311
-
-Services:      Development & porting of GNU software development tools.
-
-GNU Contributions:
-               Invented, designed, and implemented the protoize and
-               unprotoize tools supplied with GCC2.
-
-               Designed and developed all code to support the generation
-               of Dwarf symbolic debugging information for System V Release
-               4 in GCC2.
-
-               Performed original port of GNU compilers to SVr4 system.
-
-               Finished port of GNU compilers to Intel i860 RISC
-               processor.
-
-Experience:    13+ years UNIX systems experience, all working on compilers
-               and related tools.
-
-               7+ years working professionally on GCC, G++, and GDB under
-               contract to various firms including the Microelectronics
-               and Computer Technology Corporation (MCC), Data General (DG),
-               Network Computing Devices (NCD), and Intel Corp.
-
-Other qualifications:
-               Developer of the RoadTest (tm) C and C++ commercial
-               compiler test suites.
-
-               Former vice-chairman of UNIX International Programming
-               Languages Special Interest Group (UI/PLSIG).
-
-               Bachelor's and a Master's degrees, both in Computer Science.
-
-Rates:         Variable depending upon contract duration.  Call for quote.
-
-Updated: 2000-12-13
-^_
-IDEALX
-15-17 avenue de ségur
-75007 Paris
-France
-
-Tel - +33144420000  Fax - +33144420001
-http://www.IDEALX.com, http://www.IDEALX.org
-
-IDEALX is involved in the development of Open Source solutions,and
-ensures their deployment and maintenance.
-Development
-Technical support
-Technology watch
-Consulting
-Engineering
-Training
-
-Rates - Variable
-
-Updated: 2000-12-13
-^_
-Ehud Karni     <kehud@iname.com>
-Israel
-
-Support of Emacs & Emacs lisp, GNU/Linux, Cygwin.
-
-Fee:  $75/hour.
-
-Updated: 2001-05-09
-^_
-Bradley M. Kuhn
-<bkuhn@ebb.org>
-http://www.ebb.org/bkuhn
-
-I am available for part-time system administration, software development
-and training.  I have extensive experience with system administration of
-GNU/Linux systems, and Free Software development.  I have also taught
-courses in C++ and Perl.  As an employee of the FSF, I have a unique
-perspective on the free software community.
-
-Please visit my homepage for more information on my background and skills.
-My resume is also available there.
-
-I am available for both 1099 and W2 on-site contracting in the Boston, MA,
-USA metropolitan area, as well as remote consulting via dialup or Internet
-connection anywhere in the USA.  I am not interested in relocation.
-However, temporary (two week maximum) jobs with paid expenses at other
-locations will be considered.
-
-My rate varies greatly (between $25-$60/hour) depending on the
-circumstances.  Rates for non-profit organizations will be on the lower end
-of the spectrum, if I support your cause.
-
-Updated: 2001-06-14
-^_
-Paul Gillingwater, CEO
-CSO Lanifex Unternehmensberatungs & Softwareentwicklung GmbH
-Praterstrasse 60
-A-1020 Vienna, Austria
-http://www.lanifex.com
-Phone.: +43/1/2699293-21
-Fax.: +43/1/2699293-13
-Mobile.: +43/699/19223085
-
- CSO Lanifex is an effective team of software developers who are
-actively implementing Web-based database systems, using a variety of
-Open Source technologies, including GNU/Linux, PHP, MySQL, Perl and
-especially the Midgard Project.
-
- Our speciality is Web development with content management, especially
-for larger Web portals and e-Commerce systems.  We're very much
-in-favour of Free (as in speech) software, and have used it for almost
-all of our customers.
-
- We have eight staff, with a variety of skills, including RHCE, PHP,
-Perl, C, Java, SQL, network design, security consulting, Internet
-routing, UMS etc.  The CEO personally has over 20 years of experience
-with UNIX, and more than 10 years experience with a variety of
-Internet technologies.  For a more complete list, please refer to our
-Web site listed below.
-
-For further details see: http://www.lanifex.com
-
-Rates: ATS 1.500/hr neg.
-
-Updated: 2000-12-19
-^_
-Greg Lehey
-LEMIS
-PO Box 460
-Echunga SA 5153
-Australia
-
-Phone:	+61-8-8388-8286
-Fax:	+61-8-8388-8725
-Mobile:	+61-418-838-708
-Mail	<grog@lemis.com>
-
-Services: Supply, porting, installation, consultation on all GNU
-products.
-
-Experience: 25 years OS and compiler experience, ports of most GNU
-products.  Author of ported software CD-ROM for UNIX System V.4.2,
-"Porting UNIX Software" (O'Reilly), "Installing and Running FreeBSD"
-and "The Complete FreeBSD" (both Walnut Creek).
-
-Rates: Choice of AUD 300 per hour or hotline rates AUD 6 per minute.
-Outside Australia, $US 180 per hour or $US 3.50 per minute.  Quick,
-well prepared questions by mail may be free.
-
-Updated: 2001-05-09
-^_
-Alan Lehotsky                                               <apl@alum.mit.edu>
-Quality Software Management
-634 West St
-Carlisle, MA 01741
-
-Phone:  (978)287-0435
-Fax:    (978)287-0436
-
-Services:
-                 -  Support for GNU compilers, including rehost/retarget
-                 -  GNU Binutils rehost/retarget.
-                 -  cgen/sim
-                 -  Perl internals hacking
-                 -  General system software work (SW tools, O/S, device drivers)
-                 -  runtime library (especially floating point)
-                 -  project management
-                 -  software process improvement
-
-Experience:     20+ years of design and implementation of optimizing
-                compilers.  "Mr. Bliss" at Digital in the 70's and early
-                80's.  Experience with Motorola 68k, PowerPC, SPARC, Intel
-                x86 and IA64 (Merced), MIPS, NS32K, ADI SHARC DSP, VAX, PDP-11,
-                PDP-10.  Wrote or maintained compilers for Ada, BLISS, C, C++,
-                FORTRAN, Pascal, Modula/2,  O/S experience includes Unix (OSF/1,
-                SunOS, Solaris, AIX, HP/UX), VAX/VMS, Windows/NT, MacOS.
-
-                8 years experience with GCC internals, including major changes to
-		support 8 bit bytes on word-address Analog Devices SHARC DSP and
-                general support of PowerPC code generation. Retargetted gcc/binutils
-		cross-tools to ASIC used in optical switch.  Retargeted gcc to 8 bit "internet toaster"
-		micro-computer.
-
-References available
-
-Rates:          $110/hr.
-                 fixed price possible for well-defined deliverables.
-
-Updated: 2001-05-08
-^_
-Reuven M. Lerner
-Lerner Communications Consulting Ltd.
-PO Box 518
-105 Nahar Ha-Yarden Street
-Modi'in 71700
-Israel				<reuven@lerner.co.il>
-
-Phone:     08-973-2225 (within Israel)
-       +972-8-973-2225 (outside of Israel)
-
-Fax:       08-973-0477 (within Israel)
-       +972-8-973-0477 (outside of Israel)
-
-WWW: http://www.lerner.co.il
-
-We specialize in writing custom Web and Internet applications.  In
-particular:
-
-- We create database-backed Web sites using Perl, Tcl, Python, Java,
-  Apache, mod_perl, MySQL, PostgreSQL, and (when free software doesn't
-  suffice) Oracle.
-
-- We offer support and service for system administrators who need help
-  with their GNU/Linux systems.
-
-- We offer training in a variety of programming languages (Perl, Tcl,
-  Python, and Java) and in GNU/Linux administration.
-
-Consulting rates: $150/hour, or $100/hour for non-profits
-
-Updated: 2001-05-09
-^_
-Richard Levitte             (in TeX: Richard Levitte
-Levitte Programming                  Levitte Programming
-Spannvagen 38, I                     Spannv\"agen 28, I
-S-168 35  Bromma                     S-168 35  Bromma
-Sweden                               Sweden)
-Tel.nr.:  +46 (8) 26 52 47      (there is an answering machine)
-Cellular: +46 (708) 26 53 44
-e-mail:   <levitte@lp.se>
-
-What I do:
-        Primarily I work on GNU software for VMS, both VAX and AXP.  I've
-        been porting GNU Emacs to VMS since spring 1991.  I've  ported a
-        bunch of other GNU programs as well.  I maintain GNU vmslib.
-        For further info, see http://www.lp.se/~levitte/prof/resume.html
-
-Programs supported:
-        To a varying degree (ranging from extension and porting to
-        installation and simple questions) at the time of updating this
-        entry:
-        - GNU vmslib, emacs, autoconf, zip, diffutils, m4, patch, texinfo,
-          C/C++; on both VMS and Unix.
-        - Other GNU programs to a small degree; on Unix.
-        For further info, look at http://www.lp.se/products/gnu.html
-
-Experience:
-        Fluent in TeX/LaTeX and many programming languages.
-        Modified key elements in Emacs (e.g., memory and process management)
-        to work transparently on VMS.  I have very good knowledge in the VMS
-        operating system.  I'm also knowledged in the a few Unix flavors.
-        For further info, see http://www.lp.se/~levitte/prof/resume.html
-
-Your Rate:
-        $70-$100/hour (500-800 SEK in sweden), plus expenses.  My rates
-        are negotiable, depending on how interesting the project is to me.
-
-Updated: 2000-05-28
-^_
-Gordon Matzigkeit                 <gord@gnu.org>
-Box 325                           http://fig.org/~gord/
-Lumsden, Saskatchewan  S0G 3C0    Voice: (306) 731-3011
-CANADA
-
-I will gladly help novice and intermediate computer users to install,
-understand, and use free software, whether or not I have prior
-experience with that software.  I know my limitations well, and will
-freely give other contacts if I cannot solve your problem myself.
-
-I have over 5 years of experience with several of the major free OSes:
-GNU/Linux (Debian, Red Hat), NetBSD, FreeBSD, and GNU/Hurd.  Some of
-my specialties are networking, Emacs, Automake, Autoconf, C, Perl, and
-shell script programming.
-
-My rates are negotiable depending on the task: usually $40-$60
-(Canadian) per hour.  Flat rates preferred.
-
-Updated:  2000-12-19
-^_
- NetGuide Scandinavia AB <info@netg.se>
- Tankeg=E5ngen 4
- S-417 56 G=F6teborg, Sweden
- +46 31 50 79 00 voice
- +46 31 50 79 39 fax
- http://www.netg.se
-
-NetGuide Scandinavia AB is a company that does consultant jobs and holds
-courses in the fields of Unix software, TCP/IP networking and Internet
-applications. The people behind NetGuide Scandinavia AB have many years of
-general Unix experience, both as system administrators and as
-programmers, and also extensive experience in maintaining the GNU
-programs; in administration as well as finding and fixing bugs.
-
-Services offered:
-
- - Installation and customizing GNU and other free software.  We will
-   make free software as easy to install and use as shrink wrapped
-   programs.
- - Service and support subscriptions.
- - Warranty protection.
- - Customization and porting.
- - Subscriptions to new versions which we will send monthly or with
-   any other interval.
- - Finding, recommending and investigating free software in any
-   area of the customers choice.
- - Regular consulting.
- - Support on Internet service software, especially the free
- - Support on GNU/Linux.
- - Freeware based courses in Unix usage, C, C++, or any GNU tools
-
- Rates: For courses, contact us for a quote,
- For consulting, $60-120/hour, depending on contract length.
-
-Updated: 2000-12-13
-^_
-Thien-Thi Nguyen
-ttn@glug.org
-San Diego, CA, USA
-
- - scheme, common lisp, elisp, c, perl, verilog, sh, etc
- - software architecture / implementation / testing
- - hardware design / verification
- - tools flow / environment tweaking / scripting
- - simulators / transactors / stimulus generators
- - glue code / integration
-
-Resume: http://www.glug.org/people/ttn/resume.html
-
-Rate: $100/hr, possibly less
-
-Updated: 2001-05-08
-^_
-David Nicol
-Post office box 45163
-Kansas City, Missouri 64171
-<david@tipjar.com>
-http://www.tipjar.com/dnconsult
-
-Unix, GNU/Linux, Perl installation, C, C++, Lisp, Perl programming.
-
-CGI programming.
-
-Installation, porting.
-
-Specification development, design, implementation, documentation.
-
-Rate: $60/hour, or fixed contract.  On-site support available in
-greater Kansas City area.
-
-Updated: 2001-05-08
-^_
-Jonas Oberg                  (TeX: Jonas \"Oberg
-Skalangsgatan 11B                  Sk\"al\"angsgatan 11B
-S-723 36  Vasteras                 S-723 36 V\"aster\.as
-Sweden                             Sweden)
-
-Phone: +46-21-144831
-E-mail: <jonas@gnu.org>
-
-I offer support for most GNU software including the GNU
-Hurd and also do system administration on GNU systems.
-I can do free software development and have a good
-understanding of automake, autoconf, flex, bison, guile,
-texinfo and much more. Rates around USD$100.
-
-Updated: 2001-05-09
-^_
-  Peter Olsen
-  P.O. Box 410
-  Simpsonville, MD 21150
-
-  <p@sigmaxi.org>
-
-  What I do:  Mathematical modeling and model building using Gnu
-          and other Free Software.  Scientific and engineering
-          analysis, modeling, and programming in FORTRAN, C, LISP,
-          and Java.  Statistical analysis.  Emacs customization.
-
-  Examples of my previous work:
-               1. I built the model used predict the
-          amount of work required to clean up the Exxon Valdez oil
-          spill.  Model was completed in ten days, used to allocate
-          resources for $2 billion summer cleanup, predictions were
-          accurate.
-               2. I built a model applying commercial capital
-          investment standards to a Federal Agency budget, helped
-          support $250 Million budget increase.
-
-  Credo:  Engineering is the art of applying a professional
-          knowledge of mathematics and the physical sciences to
-          improve the quality of life.
-
-  Rates:  $135/hour (+ travel and expenses) on site,
-           $95/hour remote access.
-
-  Notes:  1. Visiting Lecturer for Society for Industrial and Applied
-          Mathematics:  Will speak without fee about Valdez model
-          (or other work) to Educational and not-for-profit
-          organizations (plus most-economical travel and living
-          expenses or travel or living arrangements in kind).
-
-          2. I do not accept offers which pose the danger
-          of conflict of interest with any present or former client
-          or employer.
+Please see <http://www.fsf.org/resources/service/> for a list of
+people who have asked to be listed as offering support services for
+GNU software, including GNU Emacs, for a fee or in some cases at no
+charge.
 
 
-Updated: 2000-12-13
-^_
-    Open Systems Computing AS       Open Systems Computing AS
-    Kongensgate 9                   Rogaland Kunnskapspark, PB 8034
-    N-0153 Oslo                     Prof. Olav Hanssensvei 11
-    Norway                          N-4068 Stavanger
-                                    Norway
-
-Phone:               Fax:
-  +47 22 20 40 50    +47 22 20 02 85
-
-Web:                 E-mail:
-  http://www.osc.no  <gnu-support@osc.no>
-
-Open Systems Computing AS can provide programming support for all
-GNU software -- extending or adopting it to meet customer needs.
-Prices vary with software and project.  Hourly fees are in the $80-120
-range.  Fixed-priced projects are also available.  Phone support is
-available only for customers with support contracts.
-
-Updated:  2001-05-09
-^_
-Francesco Potortì <pot@gnu.org>
-Via S.Stefano, 8
-56123 Pisa, Italy
-Tel. (050)560671
-
-Emacs:	installation and maintenance, training and tutorials,
-	customisation, extensions, troubleshooting.  Author of some of
-	the packages in the emacs distribution, has made the porting
-	of emacs to the Motorola Delta architecture.
-
-Other:	installation and maintenance of GNU software.  Experience with
-	hylafax, RCS, gperf, etags, smail, indent, diff, gawk, gcc,
-	screen.  Is the current maintainer of etags.
-
-Rates:	100 E/hour.
-	Prefer e-mail communication to telephone.
-
-Qualifications: Electronic Engineering degree, Pisa.  Full time
-	researcher in CNUCE-CNR.
-	Familiar with elisp programming, porting of C programs,
-	low-level TCP/IP programming for embedded systems.
-
-Updated:  2001-05-09
-^_
-Quoll Systems Pty Ltd, see http://quoll.com.au
-8 Brown St, Fannie Bay, Darwin, NT, Australia.
-Phone: +61 8 8941 7150 Fax: +61 8 8941 7151 Mobile: 0409 691 399
-e-mail: <pjm@gnu.org> or <info@quoll.com.au>
-
-QS is a small (4 full-time staff + 15 part-timers) which does a variety
-of things in the *IX, technical computing area including:
-
- 	   o Systems development/maintainence (in most programming languages)
- 	   o Training (GNU/Linux, FreeBSD, OpenBSD, Apache, Perl, ...)
- 	   o Consulting in areas such as security, reliability,
-
-Recent projects have included wind turbine generator control, water
-quality databases, remote area satelliate communications, Apache Web
-serving, ISP configurations, *nix training. Staff have provided some
-small contributions to the GNU and BSD projects over the years. We
-also have a bit of expertise in the embedded(inside people) systems
-area in addition to the standard building work.
-
-We can provide local (i.e. southern hemisphere/south east asia) support
-for most of the vast range of free software systems including: GNU/Linux,
-FreeBSD, OpenBSD , OpenSSH, Sendmail, various compilers and networking
-tools. Remote support can also be arranged.
-
-Rates: vary depending on the work, period and staff provided but let
-       us pick 100$US/hr as a starting point for senior staff.
-
-Updated: 2000-12-13
-^_
-Red Hat, Inc.
-<embedded-info@redhat.com>
-1325 Chesapeake Terrace
-Sunnyvale, CA 94089 USA
-Toll free: 866-2REDHAT ext. 3005
-+1 408 542 9600 voice
-+1 408 542 9699 fax
-
-GNUPro Tools
-Red Hat provides supported and maintained versions of gcc, g++, gdb
-with GUI, GNU linker and GNU macro assembler.  In addition, Red Hat
-provides these GNU software development tools for well over many
-popular host-target configurations.  Support includes bug fixes and
-semi-annual releases of the toolset.  Each release is regression
-tested and includes substantial improvements and additions to the
-current release.  Support is available through Incident support
-packages, or Unlimited support for specific user groups.  GNUPro is
-available with standard, custom, and vintage toolchains for both
-native and embedded application development.  New target processors
-are being added regularly.  Rates for support for standard products
-start at $12,500.
-
-Embedded Linux
-Red Hat offers Red Hat Embedded Linux to companies looking for an open
-source and royalty-free runtime solution.  Red Hat Embedded Linux
-currently supports certain ARM, StrongARM, and MIPS families of
-processors.  Embedded Linux supports multiple graphics APIs, is
-compliant with POSIX APIs and thread support, can be configured as low
-as 512k memory footprint including TCP/IP and NFS built into the
-kernel, and supports journaling and transparent compression in
-filesystems.  Support for new processors is available via Red Hat
-Professional Services.
-
-Updated: 2001-05-16
-^_
-Relogic AB
-Pipersgatan 26
-Box 868
-SE-112 28  Stockholm
-SWEDEN
-
-web http://www.relogic.se
-e-mail info@relogic.se
-phone +46 708 800 000
-fax +46 708 800 580
-
-Relogic provides experienced unix developers that know and love GNU
-products. We can take on anything from single contractor support to
-full scale projects. We know all programming languages and all Unix
-dialects.
-
-Updated: 2000-12-14
-^_
-Phillip Rulon
-122 Blossom Rd.
-Westport, MA 02790
-USA
-508.672.3007
-<pjr@gnu.org>
-
-15 years experience with GNU systems and tools.  Available for any free
-software project.  Most useful for network design and construction or
-dynamic web development.  Very good Debian, Perl, and Apache.
-
-Boston, travel OK.
-$100/hr, flat rate possible.
-
-Updated: 2000-12-18
-^_
-Stanislav Shalunov <shalunov@mccme.ru>
-
-Customizing GNU Emacs (new modes OK).  Installing and troubleshooting
-free software.  Rate: $60-100/hour.  NYC area, telecommuting preferred.
-References available.
-
-Updated: 2000-12-12
-^_
-SRA (Software Research Associates, Inc., Japan)      <info-wingnut@sra.co.jp>
-1-1-1, Hirakawa-cho, Chiyoda-ku
-Tokyo 102-8605 Japan
-
-+81-3-3234-5610 voice
-+81-3-3234-5556 fax
-
-http://www.sra.co.jp/wingnut/
-http://www.sra.co.jp/wingnut/chirashi-e.html
-http://www.sra.co.jp/wingnut/service.html
-http://osb.sra.co.jp/WingnutSupport/
-
-We provide GNU software support at a reasonable charge,
-aiming to promote the sound growth of free software and to
-create a new culture in the software world.
-
-News:
-
-   We have just started "GCC and CVS membership support service".
-   We provide various support menus.  Please refer to
-   http://osb.sra.co.jp/WingnutSupport/ for details.
-
-What we provide is:
-
-   1. Research and development of GNU software.
-   2. Development, porting, and customization of GNU software itself.
-   3. Helping people who are willing to port and provide GNU software
-      to their customers, but are unable to do so due to  a lack of resources.
-   4. Providing a variety of educational and training services including
-      how to port or to customize.
-   5. The result of the work will become free software covered under the
-      GNU licenses (GPL or LGPL), so it will be possible not only to share
-      the results with others but to eliminate unnecessary investment also.
-   6. Passing the result to the program package maintainers (if needed).
-   7. Also, making contributions to FSF (Free Software Foundation, Inc.)
-      which is the organization that develops and distributes GNU software
-      worldwide.
-
-   Furthermore, we provide services *native to Japan*, that is,
-   services for Japanese-speaking people --- receiving inquiries and
-   answering in Japanese.
-
-Rates:
-   Determined by estimation.
-
-Updated: 2001-05-21
-^_
-Andre Spiegel    <spiegel@gnu.org>
-Dipl.-Inform.
-Berlin, Germany
-
-Maintainer of the GNU Emacs version control package (VC).
-
-I can provide consulting and practical help for the installation and
-administration of GNU/Linux systems, in particular Debian.  Also
-knowledgeable on many other Unix derivates, and network technology.
-Installation, porting and customization of GNU software is possible; I
-have programming experience in C, C++, Java, and Emacs Lisp, among
-others.  Expertise in version control using RCS or CVS.  I also give
-seminars on the above subjects.
-
-Rates: 150 DM/hr (US$ 85)
-
-Updated: 2001-05-09
-^_
-Name:           Julian Stacey <jhs@freebsd.org> <jhs@bim.bsn.com> <jhs@muc.de>
-Location:       Muenchen, Deutschland   (Munich, Germany).
-Qualifications: University Degree,  BSc Hons Computers & Cybernetics,  1980.
-Phone:          +49.89.268616   Fax: +49.89.2608126   Data: +49.89.26023276
-Resume:         http://bim.bsn.com/~jhs/  Older: http://www.freebsd.org/~jhs/
-Time Zone:      +01:00
-Rate:           DM 200 - DM 160 / Hour.
-Specialisation: Unix (Pref. BSD or Linux), C, X-Windows, FSF tools, firewalls,
-                systems engineering, hardware interfacing, real time/embedded,
-                custom design & porting. No { Emacs, Cobol, Microsoft }.
-Free Sources:   All BSD sources (updated daily), X-Windows, XFree86, FSF.
-                Personal sources are here:  http://bim.bsn.com/~jhs/src/
-                Copy Charge dependent on time+postage+media
-Free GCC-1.40:  For Symmetric Computer Systems Model 375 (native cc is broken).
-Languages:      I am English. Ich verstehe Deutsch. Je comprend Francais,
-                (mais je ecris une response en Anglais).  Avoid dialect,
-                (use Hoch Deutsch,  not Bayerisch);  Spell slowly & clearly,
-                (umlauts are not recognised);  Use single digits:  avoid
-                inverted German pairs (EG "eight hundred, two and thirty",
-                & convoluted French ("four twenties and fifteen").
-Contact:        State aprox. days/weeks/months you want professional
-                consultancy at full commercial rates,  .. OR ..
-Note I am NOT a free help desk !
-                Post your questions to an Internet newsgroup, & let those with
-                most time, best knowledge, & inclination answer.  If you must
-                phone me (& I'd much prefer you did Not), Rules apply: First
-                ask for a few minutes advice "Free Of Charge".  (Do not swamp
-                me with your problem & leave me to deduce you are not a paying
-                customer).  Use some English.  Give an email address for
-                forwarding later info.  Volunteer to phone back later to hear
-                subsequent info/solutions I/friends/net come up with. I do not
-                pay phone charges to call strangers.
-
-Updated: 2001-05-09
-^_
-Richard M. Stallman	<rms@gnu.org>
-545 Tech Sq, Rm 430
-Cambridge, MA 02139
-
-Emacs: anything whatever
-Is anyone interested in courses in using or extending GNU Emacs?
-
-Original inventor of Emacs and main author of GNU Emacs and GCC.
-
-Rates: $6/min or $250/hr.
-
-Updated: 2000-12-13
-^_
-Static Free Software
-4119 Alpine Road
-Portola Valley, Ca 94028
-(650) 851-2927
-http://www.staticfreesoft.com
-
-Static Free Software developed and supports the "Electric VLSI Design
-System".  Steven Rubin, the founder of the company and author of
-Electric, is available for enhancements, support, and training.
-
-Please see our web page at www.staticfreesoft.com for more information
-about our products, services, and prices.
-
-Updated: 2000-12-12
-^_
-Swing Digital Ltd. <hello@swingdigital.com>
-15-17 Middle Street
-Brighton
-BN1 1AL
-United Kingdom
-Tel +44 (0) 1273 20 11 66
-Fax +44 (0) 1273 20 11 68
-http://www.swingdigital.com
-
-Swing Digital actively supports the development of the GNU.FREE
-Internet Voting system. Through this support we have gained the
-unique expertise to support, install and run GUN.FREE-based Internet
-votes. We are also available in a consultancy basis to offer advice
-for organisations wishing to run GNU.FREE themselves.
-
-Our consultancy fees start at 900 Euro (550 UK pounds) per day. We
-are also able to securely host Internet Votes, prices on application.
-
-Updated: 2001-07-23
-^_
-Kayvan A. Sylvan <kayvan@sylvan.com>
-Sylvan Associates, Inc.
-879 Lewiston Drive
-San Jose, CA 95136-1517
-Phone: (408) 978-1407
-Fax:   (408) 978-0472
-
-I will help you port, install and customize GNU Emacs, GCC, G++, GNUmake,
-bison, and other GNU tools on almost any architecture and operating
-system. Questions answered. GNU C/C++, Java and lisp hacking available.
-
-I will also do ongoing support and periodic upgrades if you get on my GNU
-software subscription list.
-
-Rates: $100-$125/hour, depending on type and quantity of work.
-Substantial discounts for long-term contracts and also for educational or
-non-profit institutions.
-
-Experience: Many different Unix systems (2.9BSD to 4.4BSD, Xenix, SVR3 and
-SVR4, Solaris, Linux, FreeBSD). Systems programming and system
-administration on all brands of Unix.
-
-Kernel hacking experience. Lots of porting experience.
-
-Updated:  2001-05-08
-^_
-Alfredo Tomasini
-<alto555@earthlink.net>, <alfredo.tomasini@c-cube.com>
-
-GNU/Linux Intel desktop/laptop installation, setup, and networking.
-Installation of GNU tools on SunOS and GNU/Linux.
-Sed and Gawk script development.
-
-Languages:  English and Italian.
-
-Fee:  $50/hour.
-
-Updated: 2000-12-13
-^_
-Leonard H. Tower Jr.    <tower@ai.mit.edu>      <tower@art.net>
-36 Porter Street
-Somerville, MA  02143-2313
-USA
-+1-617-623-7739
-
-Will work on most GNU, GPLed, and Open Source software.
-Installation, handholding, trouble shooting, extensions, teaching, etc.
-
-Rates: $ 225.00/hour + travel expenses.  Fixed fee quotes available.
-         Negotiable for non-profits.
-
-Experience: Have hacked on over a dozen architectures in many languages.  Have
-system mothered too many varieties of Unixes.  Assisted rms with the front end
-of GCC and its back-end support.  Installed and worked with many GNU
-programs including GNU Emacs.  Resume available on request.
-
-Updated: 2001-05-10
-^_
-Jody Winston
-xprt Computer Consulting, Inc.
-731 Voyager
-Houston, TX, 77062
-(281) 480-UNIX, <josephwinston@mac.com>
-
-We have supported, installed, and used the entire GNU software suite
-for over 10 years on many different Unix platforms.  We have written
-character device drivers and proc file systems for custom hardware
-running on GNU/Linux.  We have developed extensions for tcl and Python.
-In addition, we have developed a custom X11 server and X input
-extensions. Our consulting rate is $150.00 US dollars per hour,
-negotiable, plus a per diem for out of town work.
-
-Updated: 2001-05-08
-^_
-The Written Word
-Web:   http://thewrittenword.com
-Email: info@thewrittenword.com
-Tel:   (800) 372-7476
-
-The Written Word provides CDs of pre-compiled Open Source applications
-on popular UNIX variants.  Clients can purchase a one-time CD set
-($149/set), or a subscription, which provides four quarterly releases.
-Two types of subscription are available: "media only" ($550/year), or
-"media and updates" ($1459/year).  The "media and updates"
-subscription entitles the subscriber, via a web site, to patches,
-security fixes, new releases to existing packages, new packages,
-online documentation, and changelog information, between releases, and
-a central bug tracking system for all packages.
-
-Updated:  2000-11-27
-^_
-
-For a current copy of this directory, or to have yourself listed, ask:
-	fsforder@gnu.org
-
-A current version should be available on our web site at http://www.gnu.org.
-
-** Please keep the entries in this file alphabetical **
-
-
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-Free Software Foundation, Inc.
-
-    Verbatim copying and distribution of this document are permitted
-    worldwide, without royalty, in any medium, provided this notice is
-    preserved.
-
 arch-tag: 1253ce32-1cbd-428a-ac36-70ed9e3999fc
--- a/etc/TODO	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/TODO	Sun Apr 22 12:42:47 2007 +0000
@@ -14,6 +14,10 @@
 
 * Small but important fixes needed in existing features:
 
+** Compute the list of active keymaps *after* reading the first event.
+
+** Avoid using "iff" in doc strings.
+
 ** mouse-autoselect-window should wait to select the window until
 the mouse is put to rest or after a delay or both, so that moving over
 a window doesn't select it.
@@ -82,8 +86,6 @@
 
 ** Add function to redraw the tool bar.
 
-** Modify allout.el to use overlays, like outline.el.
-
 ** M-! M-n should fetch the buffer-file-name as the default.
 
 ** Redesign the load-history data structure so it can cope better
@@ -178,6 +180,8 @@
 
 ** Make byte-compile warn when a doc string is too wide.
 
+** Make byte-optimization warnings issue accurate line numbers.
+
 ** A function to check for customizable options that have been
   set but not saved, and ask the user whether to save them.
   This could go in kill-emacs-query-functions, to remind people
@@ -232,6 +236,24 @@
   user-selected input method, with the default being the union of
   latin-1-prefix and latin-1-postfix.
 
+** Switch the Windows port to using Unicode keyboard input (maybe).
+  Based on http://msdn2.microsoft.com/en-us/library/ms633586.aspx,
+  this boils down to (1) calling RegisterClassW function to register
+  Emacs windows, and (2) modifying ALL system messages to use Unicode.
+  In particular, WM_CHAR messages, which result from keyboard input,
+  will then come in encoded in UTF-16.
+
+  One advantage of switching to Unicode is to toss encoded-kbd usage,
+  which will solve the problem with binding non-ASCII keys with
+  modifiers.
+
+  Problem: using this on Windows 9x/ME requires installing the
+  Microsoft Layer for Unicode (MSLU), which might not implement all
+  the required functionality that is available built-in on Windows XP
+  and later.  We should not make this change if it would pressure
+  users of unauthorized copies of older versions of Windows to
+  downgrade to versions that require activation.
+
 ** Implement a clean way to use different major modes for
   different parts of a buffer.  This could be useful in editing
   Bison input files, for instance, or other kinds of text
@@ -287,7 +309,7 @@
   what else ?
 
 ** Provide real menus on ttys.  The MS-DOS implementation can serve as
-  an example how to do part of this.
+  an example how to do part of this; see the XMenu* functions on msdos.c.
 
 ** Implement popular parts of the rest of the CL functions as compiler
   macros in cl-macs.
@@ -489,9 +511,6 @@
 ** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\
 but which can also be used as a modifier).
 
-** Provide the toolbar on ttys. This could map a bit like tmm-menubar
-   for the menubar and buttons could look a bit like those used by customize.
-
 ** Improve Help buffers: Change the face of previously visited links (like
    Info, but also with regard to namespace), add a forward button to make the
    Help buffer more browser like and gives the value of lisp expressions
@@ -509,7 +528,7 @@
 
 * Internal changes
 
-** Cleanup all the GC_ mark bit stuff -- there is no longer any distiction
+** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction
    since the mark bit is no longer stored in the Lisp_Object itself.
 
 ** Merge ibuffer.el and buff-menu.el.
--- a/etc/calccard.ps	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/calccard.ps	Sun Apr 22 12:42:47 2007 +0000
@@ -4,15 +4,15 @@
 %%Pages: 2
 %%PageOrder: Ascend
 %%Orientation: Landscape
-%%BoundingBox: 0 0 595 842
+%%BoundingBox: 0 0 612 792
 %%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8 CMSY8
 %%+ CMMI5 CMR5 CMMI7
-%%DocumentPaperSizes: a4
+%%DocumentPaperSizes: Letter
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape calccard.dvi
+%DVIPSCommandLine: dvips -t letter -t landscape calccard.dvi
 %DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.02.22:0040
+%DVIPSSource:  TeX output 2007.03.22:0020
 %%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -2583,7 +2583,7 @@
 0000000000000000000000000000000000000000000000000000000000000000
 cleartomark
 %%EndFont 
-TeXDict begin 55387786 39139632 1000 600 600 (calccard.dvi)
+TeXDict begin 52099146 40258431 1000 600 600 (calccard.dvi)
 @start /Fa 135[38 21[29 74[33 23[{}3 58.1154 /CMMI7 rf
 /Fb 204[28 28 28 28 48[{}4 41.511 /CMR5 rf /Fc 145[37
 31[45 19[19 58[{}3 41.511 /CMMI5 rf /Fd 143[59 75[71
@@ -2616,7 +2616,9 @@
 %%BeginSetup
 %%Feature: *Resolution 600dpi
 TeXDict begin
-%%PaperSize: A4
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
  @landscape end
 %%EndSetup
 %%Page: 1 1
--- a/etc/dired-ref.ps	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/dired-ref.ps	Sun Apr 22 12:42:47 2007 +0000
@@ -1,16 +1,16 @@
 %!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
+%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
 %%Title: dired-ref.dvi
 %%Pages: 1
 %%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
+%%BoundingBox: 0 0 612 792
 %%DocumentFonts: CMBX10 CMR8 CMBX8 CMTT8 CMR6 CMSY6
-%%DocumentPaperSizes: a4
+%%DocumentPaperSizes: Letter
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips dired-ref.dvi
+%DVIPSCommandLine: dvips -t letter dired-ref.dvi
 %DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.03.19:1902
+%DVIPSSource:  TeX output 2007.03.22:2035
 %%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -1723,7 +1723,7 @@
 0000000000000000000000000000000000000000000000000000000000000000
 cleartomark
 %%EndFont 
-TeXDict begin 39139632 55387786 1000 600 600 (dired-ref.dvi)
+TeXDict begin 40258431 52099146 1000 600 600 (dired-ref.dvi)
 @start /Fa 242[61 13[{}1 49.8132 /CMSY6 rf /Fb 134[32
 32 43 32 34 24 24 24 1[34 30 34 50 18 32 1[18 34 30 19
 27 34 27 34 30 11[45 1[34 44 1[41 1[45 54 3[22 1[47 39
@@ -1748,7 +1748,9 @@
 %%BeginSetup
 %%Feature: *Resolution 600dpi
 TeXDict begin
-%%PaperSize: A4
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
  end
 %%EndSetup
 %%Page: 1 1
--- a/etc/emacs.1	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/emacs.1	Sun Apr 22 12:42:47 2007 +0000
@@ -19,8 +19,7 @@
 .\" Boston, MA 02110-1301, USA.
 .\"
 '\" t
-.TH EMACS 1 "2001 November 23"
-.UC 4
+.TH EMACS 1 "2007 April 13" "GNU Emacs 22.1"
 .SH NAME
 emacs \- GNU project Emacs
 .SH SYNOPSIS
@@ -40,11 +39,11 @@
 Richard Stallman.
 .br
 The primary documentation of GNU Emacs is in the GNU Emacs Manual,
-which you can read on line using Info, a subsystem of Emacs.  Please
-look there for complete and up-to-date documentation.  This man page
-is updated only when someone volunteers to do so; the Emacs
-maintainers' priority goal is to minimize the amount of time this man
-page takes away from other more useful projects.
+which you can read using Info, either from Emacs or as a standalone
+program.  Please look there for complete and up-to-date documentation.
+This man page is updated only when someone volunteers to do so; the
+Emacs maintainers' priority goal is to minimize the amount of time
+this man page takes away from other more useful projects.
 .br
 The user functionality of GNU Emacs encompasses
 everything other
@@ -58,7 +57,7 @@
 .I Emacs
 windows and buffers.
 CTRL-h or F1 enters the Help facility.  Help Tutorial (CTRL-h t)
-requests an interactive tutorial which can teach beginners the fundamentals
+starts an interactive tutorial which can teach beginners the fundamentals
 of
 .I Emacs
 in a few minutes.
@@ -77,7 +76,7 @@
 within
 .I Emacs
 windows (Shell), running a Lisp read-eval-print loop
-(Lisp-Interaction-Mode), and automated psychotherapy (Doctor).
+(Lisp-Interaction-Mode), automated psychotherapy (Doctor), and much more.
 .PP
 There is an extensive reference manual, but
 users of other Emacses
@@ -201,11 +200,6 @@
 .I Emacs
 window in reverse video.
 .TP
-.B \-i
-Use the "kitchen sink" bitmap icon when iconifying the
-.I Emacs
-window.
-.TP
 .BI \-font " font, " \-fn " font"
 Set the
 .I Emacs
@@ -262,8 +256,8 @@
 .BI \-fg " color"
 On color displays, sets the color of the text.
 
-See the file
-.I /usr/lib/X11/rgb.txt
+Use the command
+.I M-x list-colors-display
 for a list of valid
 color names.
 .TP
@@ -299,7 +293,6 @@
 from an
 .IR xterm (1)
 window, display is done in that window.
-This must be the first option specified in the command line.
 .PP
 You can set
 .I X
@@ -431,43 +424,31 @@
 manual is also included in the Emacs source distribution.
 .PP
 .SH FILES
-/usr/local/share/info - files for the Info documentation browser
-(a subsystem of Emacs) to refer to.  Currently not much of Unix
-is documented here, but the complete text of the Emacs reference
-manual is included in a convenient tree structured form.
-
-/usr/local/share/emacs/$VERSION/src - C source files and object files
+/usr/local/share/info - files for the Info documentation browser.
+The complete text of the Emacs reference manual is included in a
+convenient tree structured form.  Also includes the Emacs Lisp
+Reference Manual, useful to anyone wishing to write programs in the
+Emacs Lisp extension language.
 
 /usr/local/share/emacs/$VERSION/lisp - Lisp source files and compiled files
 that define most editing commands.  Some are preloaded;
 others are autoloaded from this directory when used.
 
-/usr/local/share/emacs/$VERSION/etc - various programs that are used with
-GNU Emacs, and some files of information.
+/usr/local/libexec/emacs/$VERSION/$ARCH - various programs that are
+used with GNU Emacs.
+
+/usr/local/share/emacs/$VERSION/etc - various files of information.
 
 /usr/local/share/emacs/$VERSION/etc/DOC.* - contains the documentation
 strings for the Lisp primitives and preloaded Lisp functions
 of GNU Emacs.  They are stored here to reduce the size of
 Emacs proper.
 
-/usr/local/share/emacs/$VERSION/etc/OTHER.EMACSES discusses GNU Emacs
-vs. other versions of Emacs.
 .br
 /usr/local/share/emacs/$VERSION/etc/SERVICE lists people offering
 various services to assist users of GNU Emacs, including education,
 troubleshooting, porting and customization.
-.br
-These files also have information useful to anyone wishing to write
-programs in the Emacs Lisp extension language, which has not yet been fully
-documented.
 
-/usr/local/com/emacs/lock - holds lock files that are made for all
-files being modified in Emacs, to prevent simultaneous modification
-of one file by two users.
-
-.\" START DELETING HERE IF YOU'RE NOT USING X
-/usr/lib/X11/rgb.txt - list of valid X color names.
-.\" STOP DELETING HERE IF YOU'RE NOT USING X
 .PP
 .SH BUGS
 There is a mailing list, bug-gnu-emacs@gnu.org, for reporting Emacs
@@ -488,9 +469,6 @@
 file /usr/local/emacs/etc/MAILINGLISTS.  Bugs tend actually to be
 fixed if they can be isolated, so it is in your interest to report
 them in such a way that they can be easily reproduced.
-.PP
-Bugs that I know about are: shell will not work with programs
-running in Raw mode on some Unix versions.
 .SH UNRESTRICTIONS
 .PP
 .I Emacs
@@ -519,11 +497,10 @@
 .I Emacs,
 and urges that
 you contribute your extensions to the GNU library.  Eventually GNU
-(Gnu's Not Unix) will be a complete replacement for Berkeley
-Unix.
+(Gnu's Not Unix) will be a complete replacement for Unix.
 Everyone will be free to use, copy, study and change the GNU system.
 .SH SEE ALSO
-X(1), xlsfonts(1), xterm(1), xrdb(1)
+emacsclient(1), etags(1), X(1), xlsfonts(1), xterm(1), xrdb(1)
 .SH AUTHORS
 .PP
 .I Emacs
@@ -532,7 +509,7 @@
 .SH COPYING
 Copyright
 .if t \(co
-.if n (c)
+.if n (C)
 1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
       2006, 2007 Free Software Foundation, Inc.
 .PP
--- a/etc/emacs.py	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/emacs.py	Sun Apr 22 12:42:47 2007 +0000
@@ -25,20 +25,56 @@
 
 __all__ = ["eexecfile", "eargs", "complete", "ehelp", "eimport", "modpath"]
 
+def format_exception (filename, should_remove_self):
+    type, value, tb = sys.exc_info ()
+    sys.last_type = type
+    sys.last_value = value
+    sys.last_traceback = tb
+    if type is SyntaxError:
+        try: # parse the error message
+            msg, (dummy_filename, lineno, offset, line) = value
+        except:
+            pass # Not the format we expect; leave it alone
+        else:
+            # Stuff in the right filename
+            value = SyntaxError(msg, (filename, lineno, offset, line))
+            sys.last_value = value
+    res = traceback.format_exception_only (type, value)
+    # There are some compilation errors which do not provide traceback so we
+    # should not massage it.
+    if should_remove_self:
+        tblist = traceback.extract_tb (tb)
+        del tblist[:1]
+        res = traceback.format_list (tblist)
+        if res:
+            res.insert(0, "Traceback (most recent call last):\n")
+        res[len(res):] = traceback.format_exception_only (type, value)
+    # traceback.print_exception(type, value, tb)
+    for line in res: print line,
+
 def eexecfile (file):
     """Execute FILE and then remove it.
     Execute the file within the __main__ namespace.
     If we get an exception, print a traceback with the top frame
     (ourselves) excluded."""
+    # We cannot use real execfile since it has a bug where the file stays
+    # locked forever (under w32) if SyntaxError occurs.
+    # --- code based on code.py and PyShell.py.
     try:
-       try: execfile (file, __main__.__dict__)
-       except:
-	    (type, value, tb) = sys.exc_info ()
-	    # Lose the stack frame for this location.
-	    tb = tb.tb_next
-	    if tb is None:	# print_exception won't do it
-		print "Traceback (most recent call last):"
-	    traceback.print_exception (type, value, tb)
+        try:
+            source = open (file, "r").read()
+            code = compile (source, file, "exec")
+        # Other exceptions (shouldn't be any...) will (correctly) fall
+        # through to "final".
+        except (OverflowError, SyntaxError, ValueError):
+            # FIXME: When can compile() raise anything else than
+            # SyntaxError ????
+            format_exception (file, False)
+            return
+        try:
+            exec code in __main__.__dict__
+        except:
+            format_exception (file, True)
     finally:
 	os.remove (file)
 
--- a/etc/fr-refcard.ps	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/fr-refcard.ps	Sun Apr 22 12:42:47 2007 +0000
@@ -1,17 +1,18 @@
 %!PS-Adobe-2.0
-%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
+%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
 %%Title: fr-refcard.dvi
 %%Pages: 3
 %%PageOrder: Ascend
 %%Orientation: Landscape
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMTI8 CMMI8 CMR6 CMSY6
+%%BoundingBox: 0 0 595 842
+%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8
+%%DocumentPaperSizes: a4
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape fr-refcard.dvi
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2007.03.20:1952
-%%BeginProcSet: texc.pro
+%DVIPSCommandLine: dvips -t a4 -t landscape fr-refcard.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource:  TeX output 2007.03.22:0018
+%%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
 N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
@@ -30,22 +31,10 @@
 definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
 }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
 B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
 /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
 }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
 bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
@@ -69,202 +58,7 @@
 rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
 
 %%EndProcSet
-%%BeginProcSet: f7b6d320.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
-%     cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
-%     cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
-%     cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
-%
-/TeXf7b6d320Encoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
-/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
-/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
-/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
-/period /slash /zero /one /two /three /four /five /six /seven /eight
-/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
-/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
-/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
-/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
-/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
-/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: 09fbbfac.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
-/TeX09fbbfacEncoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
-/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
-/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
-/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
-/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
-/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
-/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
-/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
-/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
-/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
-/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
-/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
-/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
-/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: 74afc74c.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
-%
-/TeX74afc74cEncoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
-/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
-/suppress /exclam /quotedblright /numbersign /sterling /percent
-/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
-/hyphen /period /slash /zero /one /two /three /four /five /six /seven
-/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
-/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
-/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
-/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
-/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
-/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: aae443f0.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10
-%
-/TeXaae443f0Encoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa
-/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi
-/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf
-/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft
-/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle
-/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle
-/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash
-/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N
-/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow
-/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p
-/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector
-/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
-/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta
-/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon
-/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: bbad153f.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
-%
-/TeXbbad153fEncoding [
-/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
-/plusminus /minusplus /circleplus /circleminus /circlemultiply
-/circledivide /circledot /circlecopyrt /openbullet /bullet
-/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
-/greaterequal /precedesequal /followsequal /similar /approxequal
-/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
-/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
-/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
-/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
-/prime /infinity /element /owner /triangle /triangleinv /negationslash
-/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
-/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
-/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
-/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
-/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
-/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
-/backslash /wreathproduct /radical /coproduct /nabla /integral
-/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
-/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
-/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
-/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
-/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
-/lessequal /greaterequal /precedesequal /followsequal /similar
-/approxequal /propersubset /propersuperset /lessmuch /greatermuch
-/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: texps.pro
+%%BeginProcSet: texps.pro 0 0
 %!
 TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
@@ -281,6 +75,256 @@
 end
 
 %%EndProcSet
+%%BeginFont: CMMI8
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
+4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
+788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
+C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
+617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
+D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
+532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
+5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
+4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
+DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
+B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
+A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
+8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
+D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
+AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
+AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
+A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
+AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
+85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA
+3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF
+68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409
+FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C
+B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0
+F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A
+B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
+%%BeginFont: CMTI8
+%!PS-AdobeFont-1.1: CMTI8 1.0
+%%CreationDate: 1991 Aug 18 21:07:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 45 /hyphen put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 121 /y put
+readonly def
+/FontBBox{-35 -250 1190 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
+F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
+84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
+0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
+06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
+5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
+D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
+93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
+FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
+E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
+46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
+8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
+4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
+1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
+9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
+BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
+09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
+3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
+E8929A4BB6D48613A88F926E0EB1BE5F6E29CA5350841244E1718987727B7245
+E7DDE2528073015C64AEE3BF18734A0C48AFF16A354C14E1A6D9D5DC96C06E02
+3A1FE4AF93E8349C3293F62C3466B67D25A9533C6DAA4514EA201B79042CB220
+43B3B60E13200B4F47011F95BA2EF1D6548218DCDBC1B00CCAE375F91EB60E32
+9F1198D74BC3768101AB5F2E7BDEA9FE5C1379341C604D835B50B671793DD7EF
+605F60048FC9761FE50647C15C2424EABDC9AF4257F915282EFF1CF447EA3F0B
+EE81FB67B04703215DB6AB3E47B7EE06435234C834DF84A3E0F99D753D596305
+85DD514BA3C5ACCD8BF6BC804AEA170A32B2080B694CF7FE994228ECCAD86C4B
+CB8B963E84D46ED86B2D43DADB277A79DD100777CB0F2022C8AC9DA77D500C73
+D6E15540121B6D82457096083526C7E2697F776239E02C3E64D25AFBFB58474E
+E82672F2FBEA78ED5DCA1BB4FCD627BAAB6AB50232EDBE99D6CC51A287F80DCF
+14CC7DE3DCFF47A1DFA130CF7F502193C6C00B1A7A1515FF7374351238158B97
+AA26F0F2773E81CD03F4A398BEFBDCB450F0FA6450FD48B5A69E37B036BE5F85
+0F0B1AAAB2CF3098AEF32B0902398A6A9E1DB5A0C42DD39E3208C4F8BBEC0A98
+35FC84FF5EB2293644F7E6EF28FAF5F6E5205029CCFF7342BC276958EFFD7817
+5D9F367C6FF151B12353BE9DDCF75196F2C8C8C889BB097A3D9D8FF5D77A7184
+D9F3EAC4493E94DC73886AFD7652ADBF562189B0B85FA5AEA4CA44558D70A408
+4A276D6B0BCF6ED2F5E42E97933AEC978D286B3D0A99C6C7AB10AC6D1C36B07D
+EA2F47489D4C2A55A6902C665B7321DD5324C6CE172349E5C6561B5F1CBBFD6E
+B5FBBB914307020B218D68C45BB2E9A0BE81C9E8D5D71BC7851CD2922656337A
+9659E8E0A8F240903FC34DA589EC6D1FE6CF17D238576472C0CD1E0EB21A46B5
+5B9DACB6CA3B094E51386E45C506D55EE3AC95AF333EBD0305084697383F054D
+61680900B82CB80D030270CA9C614A373B0B5B26F8465AE581967C6A336D8C44
+21CED60606DF99F05AFC4C37F53D2D97450B78F1211A2682414780DFF7F6AC6E
+750071385D6DC87B58D3D13E286F70B11A692F4BF57BC828C6AA98C44EFE13F8
+44535F79F5458B03AAE3ECEBF2EFD4AA83316E839EF7EBADEA22C17FF039FA85
+498379D857AE78AC68CCC7D1EB2FE84D465AA452F43EC1AFEFE568E42F13E0BC
+1CDF5C873F8E3952713BD9A472E6FC9CDE8DDD9281EE3554C22A0D591C91D3E4
+0B3162930BB6F0AC229EE1C847EC39BF81DDDE1A0B0EC7BC51A05AE93B3A891A
+3FEB85C68C88AADD29FD39F9DB30FB250D41EBB1124ED0069CDC49B3359D8689
+05DCE2A27EFF35751E51E2C4AEA7DC8B2AF546AB58D6BE81DDD38A3A0833AB62
+E54F54ABC2BB67EF06678D0AA3AB0B240FDFD510404D87A1EA75D5005984B7D0
+DE9EE818E8F99BA9FD646FEAB795E5048E0710CEB0CBD8CA39754BCF7957C646
+532525C2B94D55B1AF534778D653BD50DCECF8DFA4CFD08092AA4DD3D8BB43E9
+6F40CE1B0B25287C46AA961061A0AE3714A465E39694B6E62410ECB1F409F939
+51CE57A12C3CB5B4332A3BDEF4C13917982A0A4527440CAD427F1284E6534D68
+201DA7E10B4DC25CCD025DB0D7E0906C59E235CBF747ED10C3300C1BA42BF434
+1A3C9605F0D568CD938B0DEB5C5E8390309BDFA89EFA3E5F226A24910EAB3791
+0361A08FE539B158072E96BC988AB061736F7DD19DEB61DB5738F2B43682C3E7
+12D709F9E149DA4602201AD24F42BBBEDA49118A93A7F26B703AECDE574441EE
+DAF7C634669C0D907B18BF4EAE198E9F3DD8F743FDBDBB2FF8C6650F17115FFF
+890F0FA7B873022FABADAD05C42B65FE98E870568D2CF828CDFF7C1EEEB5BF4B
+5E695EA05518191A5E8D34EB22091935E0816F8B49AFDCC44811D12D3CA85A57
+8C67D67D400ECEBADAABDC5F7D4E1DE4E330FD1A954B925E2A5B1D0CFF2D80D5
+F668367C28480C7EC3359C781279E8928DB03E274855F7001ABCCE243ED7C259
+67D4705EE2211FEF30D8E82F9EA0838B905A9FB986D1DD200524B74EC4B1AF8B
+A0216BBCE594588D8C28A527BC85306960D73D85D96B652B88462881EA065E0C
+84485D21B22E71768A81037FA08C48EA83AEC7118DA808CC62783E7DFB121A87
+0A8DA5BC6AD5B8C8ABD057D94DCD627E2CF3D6AACC031BCD50FF49C658EABCF1
+E6ED48E7B3A550782F077CCE21EFB7368B0D12EDF21BDA1DCD30D523A8B94729
+1E339B18677721963F0F9FF961CA6B065A881546683125114FB8BFBF996BA299
+9CA4E3F5BD5C0D614E2515BB6AAFD9D16E1F0C0409A524D91DAD55BB9630C810
+B1DF32BC5820AA059559A5095BF09750F21E3AECAD39CDB3277D06B78E2A0A08
+533EF557F6815F1C361B2417D27F7D9EFA5C2DB0B2655938C8E9E1E36C411E70
+7D57FD9EAFA6FD2C4D3A40D2F35C176E0522C6D0969A2DB598553D9C0A1940D2
+F3D8241AB8DB63E8426BF19B093D99DECC9E2633FE5C77EE55951036A7E19CC6
+27A2DDA74A95F870306ACF9945AA4FE9E10F1FBC43830B2D817016290E50F988
+7283F8E409B5BD2048CF8E8465DC3EC57EE47A7BB678093183B453FC60A8CD67
+6CE6E21A859B1EEACCB9E0A3DC1AEF41C74FE0E0245587A5E1F107BBA11C2B86
+91690DB7158BDAA3F2D82A820A36B3684CC11CCC4802C5F8135FAABDDD50091E
+97AE58FE38F088A7348D08F1B9A14BFEB8E97D81066D5C244DBDD9ABECECE72C
+6A91E31A815E2B22652F7813BDF07DEF9CBD0E8BB6E7999511289A0CE3CCF502
+14D9A77E29615479657F8BE9AA3EBAC9DD08A04EE7A160A1C528BD6C2CE79E67
+8913543117C32977841E710DCE7C0DAE68888C8EBEBD9883B9F9AF86B1C5790E
+E520337D14F18FB14686356E4F1248B3E884634480E683DDDFE4B0221AF0825C
+AF3B27DC3156F1E0B5E8D75063A10A81A78698BE4E1A4C2F49D2E530AF1ED966
+8EF252D3CBEACAD0394B9546D51768C195A23A041EC1E3F21AC91C498515EDCF
+5A9977F9D72ADBBED88D5E3FFEC64A087FAB9DBDB268608247B977E435E4CE34
+F0C543383384541FF88669E53446065864769D5D3957C64011D7C93FC147B093
+9FA961A60BDDF97F1A3BF53CC18D306DFCFE04DF980F026428E84140542171F0
+F706A48EDEC416DC58F006761686EBA99598962F6E1BEC8E78AEA474CF0AD890
+A72B9906BC891564ECD5440FE6047DB452171AF35C33C24D8A23E41C112D93B5
+F1B422386DFBE80ABBF7BD43F152F0451B7B0DB2D71B75575CB5256C94F40AE2
+E8DB4CABF990502BD74BE028E14C1972E666932E04E79B743B3357737F31D08B
+EB9755DF6C89C185A7F13DA21A6E6E526A9089B11C6BB1F5247E31685B028F52
+555F98CAB929558BA7BCDEAE76F93E7B00B214543EBEA0FA375B624B4553C133
+16D6E2B846FAA862F9DCBD8FCB2A59EADE462BC8FDF8DC56B888C6C5ECF9BBB2
+4197F4DDA197A9405F639643A4334545A8004F05963A05747B4905A319411086
+9A691FF410F400E7E569CF8EA99102A57A569C223B8CF8A4B285ADAEDB238FB4
+5FCCC3A9EB063BFB1F9263D8B31D8AE580B6B8F1F311388B509E224F7E600A98
+DE394C80D1CC6391D45160FC7CE92B0CD7E74B0844DD0F3562B14833A563FE6A
+E5942191AA6BAE176278E9EC30533FE310F0694745C024929A65E4C411DAAF0C
+F3539203284EDADDC1E27FF0EC2FED41AAD7A3CDCBF2B4177647CAEFA2FDD380
+F6483BB02F87E1B66F1F5F8B23DE0ED2EAF4C540A5D392D6B49B0BDF15DEDC09
+13DF0F14E0E49389A82445230CB58704CDF21591EC4E721119F4786523A16BA1
+95F9288C0704DE543FD38496FC59B15143CA8BA06584BE7E6C9F09DD4F207C09
+F2086D39D48B652E45BD2FC4E2C4BC1FE534CC1109E177C7494E0914CD0E45BB
+C8461B6A6FEAC2A2742CB9B3441DB0340DA91F6C6BA5EF79D6363F68A52F3300
+7CF46E9F6D5A7E33762852D4BA13A1825AFCF10B00CF175EB0059D272DBAB911
+30D027A1C1AAF745E0D69B71FB455C1363AF42B7A00B142D9C8ADDF4CE9801AF
+71C666C1A6773BF48F35076FED27423E1CD18139F3D8B0A3E1AE44C55382FC66
+942021B7C1E3451D679218810F816DA083A644A378D6ADEECCC212169B96FEBF
+744AD8C249E092F87CE696C926ED9E61B728674F39DFB645FF5AA6D742B73CF3
+37536ABDB80094DD7CB7D0FC30B6370F8CF9B145F65F4220FA592AF67383108C
+3739E4FD2E0878AF00DDEE092CCD14B1E749941F342701F07097A4DF0EE5AB3A
+B3D9BFE0B1060ADAFA7D4E3392218E5A7AEFE4CC01827ACD6903C2412270367B
+FC75D8C1E290C5489BF2ADE1B3FA6E11B5BCF37FFBC42D0B3E7A7435D6AA7E8F
+62B96A05C15CF7025EE1B0D9CC2580A11A1F187DE686E6F8ABBE658382B212CC
+D9BAB099DD7ED5EC269FF8CAC8C16E101B7AFE3BF9854884FF0746A1B0423FFC
+468342D5D31CEA0EDD7EB5FEEDDB129B7C55DDA20291A18592079BD75D8DCFA1
+2182EB1AB128A319FFB027164B5F9505754A4B1C8DFAD7FF0C892D97FEA8F506
+C65585142BB9F986886117C7CFC66EE962D1609DC1DD36930A6525D1ED03AA93
+282605FCC5C7C651D657EB8ED0A55EE348994C18FF6AEF1D8D669273B6EE450E
+709E6F60358F225E209AD70E96778E8375F41BCEFF74D46D595C0819C85E60DC
+DB702C6AB7E90FEA2EB9EC299FDA15BE8A807EEBEB1BAFD628BB94B1E28EBD60
+B6DAFF828C2C80821C8ECE963DC90E750EB00E3418BD0858AC6595012D32C308
+DDF9F30191779BFD58D93AF0DFEDE67AD6902FCF8C953CF52188311EDD0D005C
+BD31ADEE0825CE1C25725EA2D6C9E5D8D9034C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont 
 %%BeginFont: CMSY6
 %!PS-AdobeFont-1.1: CMSY6 1.0
 %%CreationDate: 1991 Aug 15 07:21:34
@@ -301,10 +345,9 @@
 /FontMatrix [0.001 0 0 0.001 0 0] readonly def
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 13 /circlecopyrt put
 readonly def
 /FontBBox{-4 -948 1329 786}readonly def
-/UniqueID 5000816 def
 currentdict end
 currentfile eexec
 D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
@@ -358,10 +401,60 @@
 /FontMatrix [0.001 0 0 0.001 0 0] readonly def
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 18 /grave put
+dup 19 /acute put
+dup 24 /cedilla put
+dup 39 /quoteright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 74 /J put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 83 /S put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 122 /z put
 readonly def
 /FontBBox{-20 -250 1193 750}readonly def
-/UniqueID 5000789 def
 currentdict end
 currentfile eexec
 D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -645,241 +738,6 @@
 0000000000000000000000000000000000000000000000000000000000000000
 cleartomark
 %%EndFont 
-%%BeginFont: CMMI8
-%!PS-AdobeFont-1.1: CMMI8 1.100
-%%CreationDate: 1996 Jul 23 07:53:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-24 -250 1110 750}readonly def
-/UniqueID 5087383 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
-4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
-788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
-C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
-617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
-D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
-532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
-5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
-4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
-DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
-B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
-A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
-8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
-D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
-AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
-AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
-A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
-AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
-85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA
-3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF
-68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409
-FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C
-B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0
-F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A
-B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-/UniqueID 5000826 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
-BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
-09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
-3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4BB6D48613A88F926E0EB1BE5F6E29CA5350841244E1718987727B7245
-E7DDE2528073015C64AEE3BF18734A0C48AFF16A354C14E1A6D9D5DC96C06E02
-3A1FE4AF93E8349C3293F62C3466B67D25A9533C6DAA4514EA201B79042CB220
-43B3B60E13200B4F47011F95BA2EF1D6548218DCDBC1B00CCAE375F91EB60E32
-9F1198D74BC3768101AB5F2E7BDEA9FE5C1379341C604D835B50B671793DD7EF
-605F60048FC9761FE50647C15C2424EABDC9AF4257F915282EFF1CF447EA3F0B
-EE81FB67B04703215DB6AB3E47B7EE06435234C834DF84A3E0F99D753D596305
-85DD514BA3C5ACCD8BF6BC804AEA170A32B2080B694CF7FE994228ECCAD86C4B
-CB8B963E84D46ED86B2D43DADB277A79DD100777CB0F2022C8AC9DA77D500C73
-D6E15540121B6D82457096083526C7E2697F776239E02C3E64D25AFBFB58474E
-E82672F2FBEA78ED5DCA1BB4FCD627BAAB6AB50232EDBE99D6CC51A287F80DCF
-14CC7DE3DCFF47A1DFA130CF7F502193C6C00B1A7A1515FF7374351238158B97
-AA26F0F2773E81CD03F4A398BEFBDCB450F0FA6450FD48B5A69E37B036BE5F85
-0F0B1AAAB2CF3098AEF32B0902398A6A9E1DB5A0C42DD39E3208C4F8BBEC0A98
-35FC84FF5EB2293644F7E6EF28FAF5F6E5205029CCFF7342BC276958EFFD7817
-5D9F367C6FF151B12353BE9DDCF75196F2C8C8C889BB097A3D9D8FF5D77A7184
-D9F3EAC4493E94DC73886AFD7652ADBF562189B0B85FA5AEA4CA44558D70A408
-4A276D6B0BCF6ED2F5E42E97933AEC978D286B3D0A99C6C7AB10AC6D1C36B07D
-EA2F47489D4C2A55A6902C665B7321DD5324C6CE172349E5C6561B5F1CBBFD6E
-B5FBBB914307020B218D68C45BB2E9A0BE81C9E8D5D71BC7851CD2922656337A
-9659E8E0A8F240903FC34DA589EC6D1FE6CF17D238576472C0CD1E0EB21A46B5
-5B9DACB6CA3B094E51386E45C506D55EE3AC95AF333EBD0305084697383F054D
-61680900B82CB80D030270CA9C614A373B0B5B26F8465AE581967C6A336D8C44
-21CED60606DF99F05AFC4C37F53D2D97450B78F1211A2682414780DFF7F6AC6E
-750071385D6DC87B58D3D13E286F70B11A692F4BF57BC828C6AA98C44EFE13F8
-44535F79F5458B03AAE3ECEBF2EFD4AA83316E839EF7EBADEA22C17FF039FA85
-498379D857AE78AC68CCC7D1EB2FE84D465AA452F43EC1AFEFE568E42F13E0BC
-1CDF5C873F8E3952713BD9A472E6FC9CDE8DDD9281EE3554C22A0D591C91D3E4
-0B3162930BB6F0AC229EE1C847EC39BF81DDDE1A0B0EC7BC51A05AE93B3A891A
-3FEB85C68C88AADD29FD39F9DB30FB250D41EBB1124ED0069CDC49B3359D8689
-05DCE2A27EFF35751E51E2C4AEA7DC8B2AF546AB58D6BE81DDD38A3A0833AB62
-E54F54ABC2BB67EF06678D0AA3AB0B240FDFD510404D87A1EA75D5005984B7D0
-DE9EE818E8F99BA9FD646FEAB795E5048E0710CEB0CBD8CA39754BCF7957C646
-532525C2B94D55B1AF534778D653BD50DCECF8DFA4CFD08092AA4DD3D8BB43E9
-6F40CE1B0B25287C46AA961061A0AE3714A465E39694B6E62410ECB1F409F939
-51CE57A12C3CB5B4332A3BDEF4C13917982A0A4527440CAD427F1284E6534D68
-201DA7E10B4DC25CCD025DB0D7E0906C59E235CBF747ED10C3300C1BA42BF434
-1A3C9605F0D568CD938B0DEB5C5E8390309BDFA89EFA3E5F226A24910EAB3791
-0361A08FE539B158072E96BC988AB061736F7DD19DEB61DB5738F2B43682C3E7
-12D709F9E149DA4602201AD24F42BBBEDA49118A93A7F26B703AECDE574441EE
-DAF7C634669C0D907B18BF4EAE198E9F3DD8F743FDBDBB2FF8C6650F17115FFF
-890F0FA7B873022FABADAD05C42B65FE98E870568D2CF828CDFF7C1EEEB5BF4B
-5E695EA05518191A5E8D34EB22091935E0816F8B49AFDCC44811D12D3CA85A57
-8C67D67D400ECEBADAABDC5F7D4E1DE4E330FD1A954B925E2A5B1D0CFF2D80D5
-F668367C28480C7EC3359C781279E8928DB03E274855F7001ABCCE243ED7C259
-67D4705EE2211FEF30D8E82F9EA0838B905A9FB986D1DD200524B74EC4B1AF8B
-A0216BBCE594588D8C28A527BC85306960D73D85D96B652B88462881EA065E0C
-84485D21B22E71768A81037FA08C48EA83AEC7118DA808CC62783E7DFB121A87
-0A8DA5BC6AD5B8C8ABD057D94DCD627E2CF3D6AACC031BCD50FF49C658EABCF1
-E6ED48E7B3A550782F077CCE21EFB7368B0D12EDF21BDA1DCD30D523A8B94729
-1E339B18677721963F0F9FF961CA6B065A881546683125114FB8BFBF996BA299
-9CA4E3F5BD5C0D614E2515BB6AAFD9D16E1F0C0409A524D91DAD55BB9630C810
-B1DF32BC5820AA059559A5095BF09750F21E3AECAD39CDB3277D06B78E2A0A08
-533EF557F6815F1C361B2417D27F7D9EFA5C2DB0B2655938C8E9E1E36C411E70
-7D57FD9EAFA6FD2C4D3A40D2F35C176E0522C6D0969A2DB598553D9C0A1940D2
-F3D8241AB8DB63E8426BF19B093D99DECC9E2633FE5C77EE55951036A7E19CC6
-27A2DDA74A95F870306ACF9945AA4FE9E10F1FBC43830B2D817016290E50F988
-7283F8E409B5BD2048CF8E8465DC3EC57EE47A7BB678093183B453FC60A8CD67
-6CE6E21A859B1EEACCB9E0A3DC1AEF41C74FE0E0245587A5E1F107BBA11C2B86
-91690DB7158BDAA3F2D82A820A36B3684CC11CCC4802C5F8135FAABDDD50091E
-97AE58FE38F088A7348D08F1B9A14BFEB8E97D81066D5C244DBDD9ABECECE72C
-6A91E31A815E2B22652F7813BDF07DEF9CBD0E8BB6E7999511289A0CE3CCF502
-14D9A77E29615479657F8BE9AA3EBAC9DD08A04EE7A160A1C528BD6C2CE79E67
-8913543117C32977841E710DCE7C0DAE68888C8EBEBD9883B9F9AF86B1C5790E
-E520337D14F18FB14686356E4F1248B3E884634480E683DDDFE4B0221AF0825C
-AF3B27DC3156F1E0B5E8D75063A10A81A78698BE4E1A4C2F49D2E530AF1ED966
-8EF252D3CBEACAD0394B9546D51768C195A23A041EC1E3F21AC91C498515EDCF
-5A9977F9D72ADBBED88D5E3FFEC64A087FAB9DBDB268608247B977E435E4CE34
-F0C543383384541FF88669E53446065864769D5D3957C64011D7C93FC147B093
-9FA961A60BDDF97F1A3BF53CC18D306DFCFE04DF980F026428E84140542171F0
-F706A48EDEC416DC58F006761686EBA99598962F6E1BEC8E78AEA474CF0AD890
-A72B9906BC891564ECD5440FE6047DB452171AF35C33C24D8A23E41C112D93B5
-F1B422386DFBE80ABBF7BD43F152F0451B7B0DB2D71B75575CB5256C94F40AE2
-E8DB4CABF990502BD74BE028E14C1972E666932E04E79B743B3357737F31D08B
-EB9755DF6C89C185A7F13DA21A6E6E526A9089B11C6BB1F5247E31685B028F52
-555F98CAB929558BA7BCDEAE76F93E7B00B214543EBEA0FA375B624B4553C133
-16D6E2B846FAA862F9DCBD8FCB2A59EADE462BC8FDF8DC56B888C6C5ECF9BBB2
-4197F4DDA197A9405F639643A4334545A8004F05963A05747B4905A319411086
-9A691FF410F400E7E569CF8EA99102A57A569C223B8CF8A4B285ADAEDB238FB4
-5FCCC3A9EB063BFB1F9263D8B31D8AE580B6B8F1F311388B509E224F7E600A98
-DE394C80D1CC6391D45160FC7CE92B0CD7E74B0844DD0F3562B14833A563FE6A
-E5942191AA6BAE176278E9EC30533FE310F0694745C024929A65E4C411DAAF0C
-F3539203284EDADDC1E27FF0EC2FED41AAD7A3CDCBF2B4177647CAEFA2FDD380
-F6483BB02F87E1B66F1F5F8B23DE0ED2EAF4C540A5D392D6B49B0BDF15DEDC09
-13DF0F14E0E49389A82445230CB58704CDF21591EC4E721119F4786523A16BA1
-95F9288C0704DE543FD38496FC59B15143CA8BA06584BE7E6C9F09DD4F207C09
-F2086D39D48B652E45BD2FC4E2C4BC1FE534CC1109E177C7494E0914CD0E45BB
-C8461B6A6FEAC2A2742CB9B3441DB0340DA91F6C6BA5EF79D6363F68A52F3300
-7CF46E9F6D5A7E33762852D4BA13A1825AFCF10B00CF175EB0059D272DBAB911
-30D027A1C1AAF745E0D69B71FB455C1363AF42B7A00B142D9C8ADDF4CE9801AF
-71C666C1A6773BF48F35076FED27423E1CD18139F3D8B0A3E1AE44C55382FC66
-942021B7C1E3451D679218810F816DA083A644A378D6ADEECCC212169B96FEBF
-744AD8C249E092F87CE696C926ED9E61B728674F39DFB645FF5AA6D742B73CF3
-37536ABDB80094DD7CB7D0FC30B6370F8CF9B145F65F4220FA592AF67383108C
-3739E4FD2E0878AF00DDEE092CCD14B1E749941F342701F07097A4DF0EE5AB3A
-B3D9BFE0B1060ADAFA7D4E3392218E5A7AEFE4CC01827ACD6903C2412270367B
-FC75D8C1E290C5489BF2ADE1B3FA6E11B5BCF37FFBC42D0B3E7A7435D6AA7E8F
-62B96A05C15CF7025EE1B0D9CC2580A11A1F187DE686E6F8ABBE658382B212CC
-D9BAB099DD7ED5EC269FF8CAC8C16E101B7AFE3BF9854884FF0746A1B0423FFC
-468342D5D31CEA0EDD7EB5FEEDDB129B7C55DDA20291A18592079BD75D8DCFA1
-2182EB1AB128A319FFB027164B5F9505754A4B1C8DFAD7FF0C892D97FEA8F506
-C65585142BB9F986886117C7CFC66EE962D1609DC1DD36930A6525D1ED03AA93
-282605FCC5C7C651D657EB8ED0A55EE348994C18FF6AEF1D8D669273B6EE450E
-709E6F60358F225E209AD70E96778E8375F41BCEFF74D46D595C0819C85E60DC
-DB702C6AB7E90FEA2EB9EC299FDA15BE8A807EEBEB1BAFD628BB94B1E28EBD60
-B6DAFF828C2C80821C8ECE963DC90E750EB00E3418BD0858AC6595012D32C308
-DDF9F30191779BFD58D93AF0DFEDE67AD6902FCF8C953CF52188311EDD0D005C
-BD31ADEE0825CE1C25725EA2D6C9E5D8D9034C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
 %%BeginFont: CMBX8
 %!PS-AdobeFont-1.1: CMBX8 1.0
 %%CreationDate: 1991 Aug 20 16:36:07
@@ -900,10 +758,34 @@
 /FontMatrix [0.001 0 0 0.001 0 0] readonly def
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 12 /fi put
+dup 18 /grave put
+dup 19 /acute put
+dup 39 /quoteright put
+dup 45 /hyphen put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
 readonly def
 /FontBBox{-59 -250 1235 750}readonly def
-/UniqueID 5000766 def
 currentdict end
 currentfile eexec
 D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -1079,10 +961,82 @@
 /FontMatrix [0.001 0 0 0.001 0 0] readonly def
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 58 /colon put
+dup 60 /less put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 76 /L put
+dup 77 /M put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 87 /W put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
 readonly def
 /FontBBox{-5 -232 545 699}readonly def
-/UniqueID 5000830 def
 currentdict end
 currentfile eexec
 D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -1481,10 +1435,54 @@
 /FontMatrix [0.001 0 0 0.001 0 0] readonly def
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 12 /fi put
+dup 18 /grave put
+dup 19 /acute put
+dup 39 /quoteright put
+dup 45 /hyphen put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 94 /circumflex put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
 readonly def
 /FontBBox{-301 -250 1164 946}readonly def
-/UniqueID 5000768 def
 currentdict end
 currentfile eexec
 D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -1794,10 +1792,69 @@
 /FontMatrix [0.001 0 0 0.001 0 0] readonly def
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 11 /ff put
+dup 12 /fi put
+dup 14 /ffi put
+dup 16 /dotlessi put
+dup 18 /grave put
+dup 19 /acute put
+dup 27 /oe put
+dup 34 /quotedblright put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 49 /one put
+dup 50 /two put
+dup 57 /nine put
+dup 58 /colon put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 76 /L put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 85 /U put
+dup 88 /X put
+dup 92 /quotedblleft put
+dup 94 /circumflex put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
 readonly def
 /FontBBox{-36 -250 1070 750}readonly def
-/UniqueID 5000791 def
 currentdict end
 currentfile eexec
 D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -2130,496 +2187,496 @@
 0000000000000000000000000000000000000000000000000000000000000000
 cleartomark
 %%EndFont 
-TeXDict begin 52099146 40258431 1000 600 600 (fr-refcard.dvi)
-@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
-49.8132 /CMSY6 rf /Fb 133[27 32 1[43 32 34 24 24 24 32
+TeXDict begin 55387786 39139632 1000 600 600 (fr-refcard.dvi)
+@start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 134[35
+3[38 24 29 30 1[36 36 40 58 18 2[22 1[33 1[33 36 33 33
+36 51[26 45[{}18 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
+49.8132 /CMSY6 rf /Fd 133[27 32 1[43 32 34 24 24 24 32
 34 30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 10[45
 45 1[34 2[41 1[45 54 2[31 22 1[47 39 41 1[43 42 45 9[30
-30 30 1[30 30 30 30 1[18 21 18 4[18 14[27 4[30 30 18[{
- TeXf7b6d320Encoding ReEncodeFont }52 49.8132 /CMR6 rf
-/Fc 197[20 58[{ TeXaae443f0Encoding ReEncodeFont }1 66.4176
-/CMMI8 rf /Fd 134[35 3[38 24 29 30 1[36 36 40 58 18 2[22
-1[33 1[33 36 33 33 36 51[26 45[{ TeX74afc74cEncoding ReEncodeFont }18
-66.4176 /CMTI8 rf /Fe 135[43 1[43 45 32 32 34 43 45 41
+30 30 1[30 30 30 30 1[18 21 18 4[18 14[27 4[30 30 18[{}52
+49.8132 /CMR6 rf /Fe 135[43 1[43 45 32 32 34 43 45 41
 45 68 23 2[23 45 41 25 37 45 36 45 40 51[27 5[23 19[41
-41 5[45 12[{ TeXf7b6d320Encoding ReEncodeFont }26 66.4176
-/CMBX8 rf /Ff 130[35 35 35 35 35 35 35 35 35 35 35 35
+41 5[45 12[{}26 66.4176 /CMBX8 rf /Ff 130[35 35 35 35
 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 3[35 2[35 35 35 1[35 2[35 35 4[35 35 35
-35 35 35 35 35 35 35 1[35 1[35 4[35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 1[35 35 35 35 35 33[{
- TeX09fbbfacEncoding ReEncodeFont }74 66.4176 /CMTT8
-rf /Fg 135[60 1[60 64 45 45 47 60 64 57 64 95 32 2[32
-64 57 35 53 64 51 64 56 2[57 7[87 1[80 64 86 86 78 86
-1[109 69 1[59 43 2[72 75 88 83 1[87 19[38 5[32 19[57
-57 5[64 12[{ TeXf7b6d320Encoding ReEncodeFont }43 99.6264
+35 35 35 35 35 35 35 35 35 35 35 35 35 3[35 2[35 35 35
+1[35 2[35 35 4[35 35 35 35 35 35 35 35 35 35 1[35 1[35
+4[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35 35
+35 35 35 33[{}74 66.4176 /CMTT8 rf /Fg 135[60 1[60 64
+45 45 47 60 64 57 64 95 32 2[32 64 57 35 53 64 51 64
+56 2[57 7[87 1[80 64 86 86 78 86 1[109 69 1[59 43 2[72
+75 88 83 1[87 19[38 5[32 19[57 57 5[64 12[{}43 99.6264
 /CMBX10 rf /Fh 132[35 31 37 37 51 37 39 27 28 28 37 39
 35 39 59 20 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35
 3[53 2[53 1[39 52 1[48 1[53 1[44 2[25 1[55 46 48 54 51
 1[53 6[20 35 6[35 35 2[20 24 20 2[27 27 20 4[35 6[55
-7[35 35 1[20 1[59 1[39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }61
-66.4176 /CMR8 rf /Fi 139[53 54 57 3[76 115 6[42 63 76
-61 1[67 11[106 6[108 6[108 1[90 1[99 47[69 19[{
- TeXf7b6d320Encoding ReEncodeFont }16 119.552 /CMBX10
-rf end
+7[35 35 1[20 1[59 1[39 41 11[{}61 66.4176 /CMR8 rf /Fi
+139[53 54 57 3[76 115 6[42 63 76 61 1[67 11[106 6[108
+6[108 1[90 1[99 47[69 19[{}16 119.552 /CMBX10 rf end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 600dpi
 TeXDict begin
+%%BeginPaperSize: a4
+a4
+%%EndPaperSize
  @landscape end
 %%EndSetup
 %%Page: 1 1
 TeXDict begin @landscape 1 0 bop -540 -364 a Fi(Carte)46
 b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46 b(de)g(GNU)f(Emacs)205
--272 y Fh(\(p)r(our)24 b(la)f(v)n(ersion)h(22\))-450
--65 y Fg(Lancemen)m(t)36 b(d'Emacs)-450 85 y Fh(P)n(our)22
+-280 y Fh(\(p)r(our)24 b(la)f(v)n(ersion)h(22\))-450
+-101 y Fg(Lancemen)m(t)36 b(d'Emacs)-450 12 y Fh(P)n(our)22
 b(lancer)h(GNU)g(Emacs)f(22,)h(il)f(su\016t)h(de)g(tap)r(er)g(son)f
-(nom)h(:)31 b Ff(emacs)-450 177 y Fh(P)n(our)24 b(c)n(harger)g(un)g
+(nom)h(:)31 b Ff(emacs)-450 106 y Fh(P)n(our)24 b(c)n(harger)g(un)g
 (\014c)n(hier)f(\022)-35 b(a)22 b(\023)-33 b(editer,)24
-b(v)n(oir)f(Fic)n(hiers,)g(ci-dessous.)-450 380 y Fg(Quitter)37
-b(Emacs)-450 563 y Fh(susp)r(end)24 b(Emacs)g(\(ou)h(l'iconi\014e)e
-(sous)h(X\))379 b Ff(C-z)-450 669 y Fh(quitter)24 b(d)n(\023)-33
+b(v)n(oir)f(Fic)n(hiers,)g(ci-dessous.)-450 280 y Fg(Quitter)37
+b(Emacs)-450 434 y Fh(susp)r(end)24 b(Emacs)g(\(ou)h(l'iconi\014e)e
+(sous)h(X\))379 b Ff(C-z)-450 540 y Fh(quitter)24 b(d)n(\023)-33
 b(e\014nitiv)n(emen)n(t)26 b(Emacs)616 b Ff(C-x)36 b(C-c)-450
-888 y Fg(Fic)m(hiers)-450 1051 y Fe(lire)23 b Fh(un)h(\014c)n(hier)f
-(dans)h(Emacs)694 b Ff(C-x)36 b(C-f)-450 1157 y Fe(sauv)n(egarder)22
+731 y Fg(Fic)m(hiers)-450 866 y Fe(lire)23 b Fh(un)h(\014c)n(hier)f
+(dans)h(Emacs)694 b Ff(C-x)36 b(C-f)-450 972 y Fe(sauv)n(egarder)22
 b Fh(un)i(\014c)n(hier)g(sur)f(disque)439 b Ff(C-x)36
-b(C-s)-450 1264 y Fh(sauv)n(egarder)25 b Fe(tous)e Fh(les)g(\014c)n
-(hiers)633 b Ff(C-x)36 b(s)-450 1370 y Fe(ins)n(\023)-39
+b(C-s)-450 1078 y Fh(sauv)n(egarder)25 b Fe(tous)e Fh(les)g(\014c)n
+(hiers)633 b Ff(C-x)36 b(s)-450 1184 y Fe(ins)n(\023)-39
 b(erer)23 b Fh(le)h(con)n(ten)n(u)h(d'un)f(autre)g(\014c)n(hier)g(dans)
-g(ce)-379 1476 y(tamp)r(on)1204 b Ff(C-x)36 b(i)-450
-1582 y Fh(remplacer)24 b(ce)g(\014c)n(hier)g(par)f(le)h(\014c)n(hier)f
-(v)n(oulu)312 b Ff(C-x)36 b(C-v)-452 1689 y Fh(\023)-33
+g(ce)-379 1291 y(tamp)r(on)1204 b Ff(C-x)36 b(i)-450
+1397 y Fh(remplacer)24 b(ce)g(\014c)n(hier)g(par)f(le)h(\014c)n(hier)f
+(v)n(oulu)312 b Ff(C-x)36 b(C-v)-452 1503 y Fh(\023)-33
 b(ecrire)23 b(le)h(tamp)r(on)g(dans)g(un)g(\014c)n(hier)g(donn)n(\023)
--33 b(e)324 b Ff(C-x)36 b(C-w)-450 1795 y Fh(bascule)24
+-33 b(e)324 b Ff(C-x)36 b(C-w)-450 1609 y Fh(bascule)24
 b(du)g(mo)r(de)g(lecture-seule)h(du)f(tamp)r(on)229 b
-Ff(C-x)36 b(C-q)-450 2014 y Fg(Obtenir)h(de)g(l'aide)-450
-2164 y Fh(Le)27 b(syst)n(\022)-33 b(eme)27 b(d'aide)g(est)g(simple.)40
+Ff(C-x)36 b(C-q)-450 1800 y Fg(Obtenir)h(de)g(l'aide)-450
+1913 y Fh(Le)27 b(syst)n(\022)-33 b(eme)27 b(d'aide)g(est)g(simple.)40
 b(F)-6 b(aites)27 b Ff(C-h)h Fh(\(ou)f Ff(F1)p Fh(\))h(et)f(suiv)n(ez)g
-(les)-450 2228 y(instructions.)38 b(Si)26 b(v)n(ous)g(d)n(\023)-33
+(les)-450 1982 y(instructions.)38 b(Si)26 b(v)n(ous)g(d)n(\023)-33
 b(ebutez,)28 b(faites)e Ff(C-h)36 b(t)26 b Fh(p)r(our)g(suivre)g(un)g
-Fe(di-)-450 2291 y(dacticiel)p Fh(.)-450 2397 y(supprimer)d(la)g(fen)n
-(^)-33 b(etre)24 b(d'aide)682 b Ff(C-x)36 b(1)-450 2503
+Fe(di-)-450 2048 y(dacticiel)p Fh(.)-450 2154 y(supprimer)d(la)g(fen)n
+(^)-33 b(etre)24 b(d'aide)682 b Ff(C-x)36 b(1)-450 2260
 y Fh(faire)23 b(d)n(\023)-33 b(e\014ler)24 b(la)f(fen)n(^)-33
-b(etre)24 b(d'aide)645 b Ff(C-M-v)-450 2638 y Fh(aprop)r(os)24
+b(etre)24 b(d'aide)645 b Ff(C-M-v)-450 2395 y Fh(aprop)r(os)24
 b(:)35 b(mon)n(trer)24 b(les)f(commandes)i(con)n(tenan)n(t)-379
-2745 y(une)f(certaine)h(c)n(ha)-8 b(^)-27 b(\020ne)847
-b Ff(C-h)36 b(a)-450 2851 y Fh(d)n(\023)-33 b(ecrire)23
+2501 y(une)f(certaine)h(c)n(ha)-8 b(^)-27 b(\020ne)847
+b Ff(C-h)36 b(a)-450 2608 y Fh(d)n(\023)-33 b(ecrire)23
 b(la)h(fonction)g(lanc)n(\023)-33 b(ee)25 b(par)f(une)g(touc)n(he)258
-b Ff(C-h)36 b(k)-450 2957 y Fh(d)n(\023)-33 b(ecrire)23
-b(une)i(fonction)898 b Ff(C-h)36 b(f)-450 3063 y Fh(obtenir)24
+b Ff(C-h)36 b(k)-450 2714 y Fh(d)n(\023)-33 b(ecrire)23
+b(une)i(fonction)898 b Ff(C-h)36 b(f)-450 2820 y Fh(obtenir)24
 b(des)g(informations)f(sp)n(\023)-33 b(eci\014ques)25
-b(au)f(mo)r(de)124 b Ff(C-h)36 b(m)-450 3283 y Fg(R)n(\023)-55
-b(ecup)n(\023)g(eration)36 b(des)h(erreurs)-450 3465
+b(au)f(mo)r(de)124 b Ff(C-h)36 b(m)-450 3011 y Fg(R)n(\023)-55
+b(ecup)n(\023)g(eration)36 b(des)h(erreurs)-450 3165
 y Fe(a)n(v)n(orter)21 b Fh(une)k(commande)f(partiellemen)n(t)h(tap)n
-(\023)-33 b(ee)-379 3571 y(ou)24 b(ex)n(\023)-33 b(ecut)n(\023)g(ee)
-1084 b Ff(C-g)-450 3678 y Fe(r)n(\023)-39 b(ecup)n(\023)g(erer)24
-b Fh(les)f(\014c)n(hier)h(p)r(erdus)g(par)f(un)-379 3784
+(\023)-33 b(ee)-379 3271 y(ou)24 b(ex)n(\023)-33 b(ecut)n(\023)g(ee)
+1084 b Ff(C-g)-450 3377 y Fe(r)n(\023)-39 b(ecup)n(\023)g(erer)24
+b Fh(les)f(\014c)n(hier)h(p)r(erdus)g(par)f(un)-379 3483
 y(crash)g(du)h(syst)n(\022)-33 b(eme)669 b Ff(M-x)36
-b(recover-session)-450 3890 y Fe(ann)n(uler)23 b Fh(une)h(mo)r
+b(recover-session)-450 3590 y Fe(ann)n(uler)23 b Fh(une)h(mo)r
 (di\014cation)h(non)f(souhait)n(\023)-33 b(ee)16 b Ff(C-x)36
-b(u,)g(C-_)g Fh(ou)g Ff(C-/)-450 3996 y Fh(restaurer)24
+b(u,)g(C-_)g Fh(ou)g Ff(C-/)-450 3696 y Fh(restaurer)24
 b(un)f(tamp)r(on)i(a)n(v)n(ec)g(son)f(con)n(ten)n(u)-379
-4103 y(initial)1015 b Ff(M-x)36 b(revert-buffer)-450
-4209 y Fh(r)n(\023)-33 b(ea\016c)n(her)24 b(un)e(\023)-33
-b(ecran)24 b(p)r(erturb)n(\023)-33 b(e)653 b Ff(C-l)1746
--364 y Fg(Rec)m(herc)m(he)36 b(incr)n(\023)-55 b(emen)m(tale)1746
--201 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'a)n(v)l(an)n(t)823
-b Ff(C-s)1746 -95 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'arri)n(\022)
--33 b(ere)787 b Ff(C-r)1746 12 y Fh(rec)n(herc)n(her)24
+3802 y(initial)1015 b Ff(M-x)36 b(revert-buffer)-450
+3908 y Fh(r)n(\023)-33 b(ea\016c)n(her)24 b(un)e(\023)-33
+b(ecran)24 b(p)r(erturb)n(\023)-33 b(e)653 b Ff(C-l)-341
+4131 y Fd(c)-358 4133 y Fc(\015)20 b Fd(2007)j(F)-5 b(ree)21
+b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)27 b(P)n(ermissions)21
+b(au)g(dos.)27 b(v2.3)1746 -364 y Fg(Rec)m(herc)m(he)36
+b(incr)n(\023)-55 b(emen)m(tale)1746 -230 y Fh(rec)n(herc)n(her)24
+b(v)n(ers)g(l'a)n(v)l(an)n(t)823 b Ff(C-s)1746 -123 y
+Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'arri)n(\022)-33
+b(ere)787 b Ff(C-r)1746 -17 y Fh(rec)n(herc)n(her)24
 b(v)n(ers)g(l'a)n(v)l(an)n(t)g(par)g(expression)1817
-118 y(rationnelle)1115 b Ff(C-M-s)1746 224 y Fh(rec)n(herc)n(her)24
+89 y(rationnelle)1115 b Ff(C-M-s)1746 196 y Fh(rec)n(herc)n(her)24
 b(v)n(ers)g(l'arri)n(\022)-33 b(ere)22 b(par)h(expression)1817
-330 y(rationnelle)1115 b Ff(C-M-r)1746 465 y Fh(s)n(\023)-33
+302 y(rationnelle)1115 b Ff(C-M-r)1746 437 y Fh(s)n(\023)-33
 b(electionner)25 b(la)e(c)n(ha)-8 b(^)-27 b(\020ne)25
 b(de)f(rec)n(herc)n(he)h(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)101
-b Ff(M-p)1746 571 y Fh(s)n(\023)-33 b(electionner)25
+b Ff(M-p)1746 543 y Fh(s)n(\023)-33 b(electionner)25
 b(la)e(c)n(ha)-8 b(^)-27 b(\020ne)25 b(de)f(rec)n(herc)n(he)h(suiv)l
-(an)n(te)176 b Ff(M-n)1746 678 y Fh(sortir)23 b(de)h(la)f(rec)n(herc)n
+(an)n(te)176 b Ff(M-n)1746 649 y Fh(sortir)23 b(de)h(la)f(rec)n(herc)n
 (he)i(incr)n(\023)-33 b(emen)n(tale)451 b Ff(RET)1746
-784 y Fh(ann)n(uler)24 b(l'e\013et)g(du)g(dernier)f(caract)n(\022)-33
-b(ere)446 b Ff(DEL)1746 890 y Fh(ann)n(uler)24 b(la)f(rec)n(herc)n(he)i
-(en)f(cours)615 b Ff(C-g)1746 1001 y Fh(Refaites)17 b
+755 y Fh(ann)n(uler)24 b(l'e\013et)g(du)g(dernier)f(caract)n(\022)-33
+b(ere)446 b Ff(DEL)1746 862 y Fh(ann)n(uler)24 b(la)f(rec)n(herc)n(he)i
+(en)f(cours)615 b Ff(C-g)1746 972 y Fh(Refaites)17 b
 Ff(C-s)g Fh(ou)g Ff(C-r)h Fh(p)r(our)e(r)n(\023)-33 b(ep)n(\023)g(eter)
 18 b(la)e(rec)n(herc)n(he)i(dans)f(une)g(direction)1746
-1064 y(quelconque.)67 b(Si)34 b(Emacs)h(est)h(encore)g(en)f(train)g(de)
-g(c)n(herc)n(her,)j Ff(C-g)1746 1128 y Fh(n'ann)n(ule)24
+1038 y(quelconque.)67 b(Si)34 b(Emacs)h(est)h(encore)g(en)f(train)g(de)
+g(c)n(herc)n(her,)j Ff(C-g)1746 1105 y Fh(n'ann)n(ule)24
 b(que)h(ce)f(qui)f(n'a)h(pas)e(\023)-33 b(et)n(\023)g(e)25
-b(fait.)1746 1331 y Fg(D)n(\023)-55 b(eplacemen)m(ts)1746
-1489 y Fe(en)n(tit)n(\023)-39 b(e)26 b(sur)i(laquelle)e(se)h(d)n(\023)
+b(fait.)1746 1280 y Fg(D)n(\023)-55 b(eplacemen)m(ts)1746
+1409 y Fe(en)n(tit)n(\023)-39 b(e)26 b(sur)i(laquelle)e(se)h(d)n(\023)
 -39 b(eplacer)210 b(en)28 b(arri)n(\022)-39 b(ere)69
-b(en)27 b(a)n(v)-5 b(an)n(t)1746 1553 y Fh(caract)n(\022)-33
-b(ere)992 b Ff(C-b)313 b(C-f)1746 1617 y Fh(mot)1148
-b Ff(M-b)313 b(M-f)1746 1681 y Fh(ligne)1124 b Ff(C-p)313
-b(C-n)1746 1752 y Fh(aller)23 b(au)h(d)n(\023)-33 b(ebut)25
+b(en)27 b(a)n(v)-5 b(an)n(t)1746 1475 y Fh(caract)n(\022)-33
+b(ere)992 b Ff(C-b)313 b(C-f)1746 1531 y Fh(mot)1148
+b Ff(M-b)313 b(M-f)1746 1586 y Fh(ligne)1124 b Ff(C-p)313
+b(C-n)1746 1658 y Fh(aller)23 b(au)h(d)n(\023)-33 b(ebut)25
 b(\(ou)f(\022)-35 b(a)24 b(la)g(\014n\))g(de)g(la)f(ligne)105
-b Ff(C-a)313 b(C-e)1746 1816 y Fh(phrase)1069 b Ff(M-a)313
-b(M-e)1746 1879 y Fh(paragraphe)925 b Ff(M-{)313 b(M-})1746
-1943 y Fh(page)1129 b Ff(C-x)36 b([)242 b(C-x)36 b(])1746
-2007 y Fh(s-expression)901 b Ff(C-M-b)243 b(C-M-f)1746
-2071 y Fh(fonction)1021 b Ff(C-M-a)243 b(C-M-e)1746 2134
+b Ff(C-a)313 b(C-e)1746 1727 y Fh(phrase)1069 b Ff(M-a)313
+b(M-e)1746 1793 y Fh(paragraphe)925 b Ff(M-{)313 b(M-})1746
+1858 y Fh(page)1129 b Ff(C-x)36 b([)242 b(C-x)36 b(])1746
+1922 y Fh(s-expression)901 b Ff(C-M-b)243 b(C-M-f)1746
+1988 y Fh(fonction)1021 b Ff(C-M-a)243 b(C-M-e)1746 2044
 y Fh(aller)23 b(au)h(d)n(\023)-33 b(ebut)25 b(\(ou)f(\022)-35
 b(a)24 b(la)g(\014n\))g(du)g(tamp)r(on)84 b Ff(M-<)313
-b(M->)1746 2257 y Fh(passer)24 b(\022)-35 b(a)23 b(l')n(\023)-33
-b(ecran)24 b(suiv)l(an)n(t)793 b Ff(C-v)1746 2363 y Fh(passer)24
+b(M->)1746 2166 y Fh(passer)24 b(\022)-35 b(a)23 b(l')n(\023)-33
+b(ecran)24 b(suiv)l(an)n(t)793 b Ff(C-v)1746 2273 y Fh(passer)24
 b(\022)-35 b(a)23 b(l')n(\023)-33 b(ecran)24 b(pr)n(\023)-33
-b(ec)n(\023)g(eden)n(t)718 b Ff(M-v)1746 2469 y Fh(d)n(\023)-33
+b(ec)n(\023)g(eden)n(t)718 b Ff(M-v)1746 2379 y Fh(d)n(\023)-33
 b(e\014ler)24 b(l')n(\023)-33 b(ecran)23 b(v)n(ers)h(la)f(droite)668
-b Ff(C-x)36 b(<)1746 2576 y Fh(d)n(\023)-33 b(e\014ler)24
+b Ff(C-x)36 b(<)1746 2485 y Fh(d)n(\023)-33 b(e\014ler)24
 b(l')n(\023)-33 b(ecran)23 b(v)n(ers)h(la)f(gauc)n(he)640
-b Ff(C-x)36 b(>)1746 2682 y Fh(placer)24 b(la)f(ligne)h(couran)n(te)h
+b Ff(C-x)36 b(>)1746 2591 y Fh(placer)24 b(la)f(ligne)h(couran)n(te)h
 (au)f(cen)n(tre)h(de)f(l')n(\023)-33 b(ecran)162 b Ff(C-u)36
-b(C-l)1746 2901 y Fg(D)n(\023)-55 b(etruire)36 b(et)i(supprimer)1746
-3059 y Fe(en)n(tit)n(\023)-39 b(e)26 b(\022)-40 b(a)26
+b(C-l)1746 2782 y Fg(D)n(\023)-55 b(etruire)36 b(et)i(supprimer)1746
+2911 y Fe(en)n(tit)n(\023)-39 b(e)26 b(\022)-40 b(a)26
 b(supprimer)648 b(en)28 b(arri)n(\022)-39 b(ere)69 b(en)28
-b(a)n(v)-5 b(an)n(t)1746 3123 y Fh(caract)n(\022)-33
+b(a)n(v)-5 b(an)n(t)1746 2981 y Fh(caract)n(\022)-33
 b(ere)25 b(\(suppression,)f(pas)g(destruction\))84 b
-Ff(DEL)313 b(C-d)1746 3187 y Fh(mot)1187 b Ff(M-DEL)243
-b(M-d)1746 3250 y Fh(ligne)24 b(\(jusqu'\022)-35 b(a)23
-b(la)h(\014n\))685 b Ff(M-0)37 b(C-k)171 b(C-k)1746 3314
-y Fh(phrase)1108 b Ff(C-x)37 b(DEL)171 b(M-k)1746 3378
+Ff(DEL)313 b(C-d)1746 3045 y Fh(mot)1187 b Ff(M-DEL)243
+b(M-d)1746 3101 y Fh(ligne)24 b(\(jusqu'\022)-35 b(a)23
+b(la)h(\014n\))685 b Ff(M-0)37 b(C-k)171 b(C-k)1746 3170
+y Fh(phrase)1108 b Ff(C-x)37 b(DEL)171 b(M-k)1746 3234
 y Fh(s-expression)940 b Ff(M--)37 b(C-M-k)101 b(C-M-k)1746
-3497 y Fh(d)n(\023)-33 b(etruire)24 b(une)g Fe(r)n(\023)-39
-b(egion)890 b Ff(C-w)1746 3603 y Fh(copier)24 b(une)g(r)n(\023)-33
+3353 y Fh(d)n(\023)-33 b(etruire)24 b(une)g Fe(r)n(\023)-39
+b(egion)890 b Ff(C-w)1746 3459 y Fh(copier)24 b(une)g(r)n(\023)-33
 b(egion)24 b(dans)g(le)f(kill)g(ring)477 b Ff(M-w)1746
-3709 y Fh(d)n(\023)-33 b(etruire)24 b(jusqu'\022)-35
-b(a)23 b(l'o)r(ccurrence)h(suiv)l(an)n(te)h(de)f Fd(c)l(ar)147
-b Ff(M-z)36 b Fd(c)l(ar)1746 3844 y Fh(r)n(\023)-33 b(ecup)n(\023)g
+3565 y Fh(d)n(\023)-33 b(etruire)24 b(jusqu'\022)-35
+b(a)23 b(l'o)r(ccurrence)h(suiv)l(an)n(te)h(de)f Fb(c)l(ar)147
+b Ff(M-z)36 b Fb(c)l(ar)1746 3700 y Fh(r)n(\023)-33 b(ecup)n(\023)g
 (erer)24 b(la)f(derni)n(\022)-33 b(ere)24 b(c)n(hose)h(d)n(\023)-33
-b(etruite)423 b Ff(C-y)1746 3950 y Fh(remplacer)24 b(la)f(derni)n(\022)
+b(etruite)423 b Ff(C-y)1746 3807 y Fh(remplacer)24 b(la)f(derni)n(\022)
 -33 b(ere)24 b(r)n(\023)-33 b(ecup)n(\023)g(eration)24
-b(par)g(ce)g(qui)1817 4057 y(a)d(\023)-33 b(et)n(\023)g(e)25
+b(par)g(ce)g(qui)1817 3913 y(a)d(\023)-33 b(et)n(\023)g(e)25
 b(d)n(\023)-33 b(etruit)24 b(a)n(v)l(an)n(t)868 b Ff(M-y)3942
--364 y Fg(Marquer)3942 -182 y Fh(placer)24 b(la)f(marque)h(ici)901
-b Ff(C-@)36 b Fh(ou)f Ff(C-SPC)3940 -75 y Fh(\023)-33
+-364 y Fg(Marquer)3942 -210 y Fh(placer)24 b(la)f(marque)h(ici)901
+b Ff(C-@)36 b Fh(ou)f Ff(C-SPC)3940 -104 y Fh(\023)-33
 b(ec)n(hanger)25 b(le)f(p)r(oin)n(t)g(et)g(la)g(marque)570
-b Ff(C-x)36 b(C-x)3942 60 y Fh(placer)24 b(la)f(marque)h
-Fd(ar)l(g)30 b Fe(mots)23 b Fh(plus)g(loin)388 b Ff(M-@)3942
-166 y Fh(marquer)23 b(le)h Fe(paragraphe)755 b Ff(M-h)3942
-272 y Fh(marquer)23 b(la)h Fe(page)989 b Ff(C-x)36 b(C-p)3942
-378 y Fh(marquer)23 b(la)h Fe(s-expression)724 b Ff(C-M-@)3942
-485 y Fh(marquer)23 b(la)h Fe(fonction)864 b Ff(C-M-h)3942
-591 y Fh(marquer)23 b(tout)i(le)f Fe(tamp)r(on)730 b
-Ff(C-x)36 b(h)3942 810 y Fg(Remplacemen)m(t)g(in)m(teractif)3942
-993 y Fh(remplacer)24 b(in)n(teractiv)n(emen)n(t)h(une)g(c)n(ha)-8
+b Ff(C-x)36 b(C-x)3942 31 y Fh(placer)24 b(la)f(marque)h
+Fb(ar)l(g)30 b Fe(mots)23 b Fh(plus)g(loin)388 b Ff(M-@)3942
+137 y Fh(marquer)23 b(le)h Fe(paragraphe)755 b Ff(M-h)3942
+243 y Fh(marquer)23 b(la)h Fe(page)989 b Ff(C-x)36 b(C-p)3942
+350 y Fh(marquer)23 b(la)h Fe(s-expression)724 b Ff(C-M-@)3942
+456 y Fh(marquer)23 b(la)h Fe(fonction)864 b Ff(C-M-h)3942
+562 y Fh(marquer)23 b(tout)i(le)f Fe(tamp)r(on)730 b
+Ff(C-x)36 b(h)3942 753 y Fg(Remplacemen)m(t)g(in)m(teractif)3942
+907 y Fh(remplacer)24 b(in)n(teractiv)n(emen)n(t)h(une)g(c)n(ha)-8
 b(^)-27 b(\020ne)24 b(de)g(texte)86 b Ff(M-\045)3942
-1099 y Fh(en)24 b(utilisan)n(t)g(les)f(expressions)4013
-1205 y(rationnelles)594 b Ff(M-x)36 b(query-replace-regexp)3942
-1315 y Fh(Les)22 b(r)n(\023)-33 b(ep)r(onses)23 b(admises)f(dans)h(le)f
+1013 y Fh(en)24 b(utilisan)n(t)g(les)f(expressions)4013
+1119 y(rationnelles)594 b Ff(M-x)36 b(query-replace-regexp)3942
+1230 y Fh(Les)22 b(r)n(\023)-33 b(ep)r(onses)23 b(admises)f(dans)h(le)f
 (mo)r(de)h(de)g(remplacemen)n(t)h(in)n(teractif)3942
-1379 y(son)n(t)g(:)3942 1485 y Fe(remplacer)f Fh(celle-l\022)-35
+1285 y(son)n(t)g(:)3942 1391 y Fe(remplacer)f Fh(celle-l\022)-35
 b(a,)22 b(passer)i(\022)-35 b(a)24 b(la)f(suiv)l(an)n(te)280
-b Ff(SPC)3942 1591 y Fh(remplacer)24 b(celle-l\022)-35
-b(a,)22 b(rester)i(l\022)-35 b(a)679 b Ff(,)3942 1698
+b Ff(SPC)3942 1498 y Fh(remplacer)24 b(celle-l\022)-35
+b(a,)22 b(rester)i(l\022)-35 b(a)679 b Ff(,)3942 1604
 y Fe(passer)23 b Fh(\022)-35 b(a)24 b(la)g(suiv)l(an)n(te)g(sans)g
-(remplacer)400 b Ff(DEL)3942 1804 y Fh(remplacer)24 b(toutes)h(les)e
-(corresp)r(ondances)4013 1910 y(suiv)l(an)n(tes)1162
-b Ff(!)3942 2016 y Fe(rev)n(enir)23 b Fh(\022)-35 b(a)24
+(remplacer)400 b Ff(DEL)3942 1710 y Fh(remplacer)24 b(toutes)h(les)e
+(corresp)r(ondances)4013 1816 y(suiv)l(an)n(tes)1162
+b Ff(!)3942 1923 y Fe(rev)n(enir)23 b Fh(\022)-35 b(a)24
 b(la)f(corresp)r(ondance)i(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)279
-b Ff(^)3942 2123 y Fe(sortir)22 b Fh(du)i(remplacemen)n(t)h(in)n
-(teractif)460 b Ff(RET)3942 2229 y Fh(en)n(trer)24 b(dans)g(l')n(\023)
+b Ff(^)3942 2029 y Fe(sortir)22 b Fh(du)i(remplacemen)n(t)h(in)n
+(teractif)460 b Ff(RET)3942 2135 y Fh(en)n(trer)24 b(dans)g(l')n(\023)
 -33 b(edition)23 b(r)n(\023)-33 b(ecursiv)n(e)24 b(\()p
-Ff(C-M-c)h Fh(p)r(our)4013 2335 y(sortir\))1247 b Ff(C-r)3942
-2554 y Fg(F)-10 b(en)n(^)-55 b(etres)37 b(m)m(ultiples)3942
-2712 y Fh(Lorsqu'il)25 b(y)i(a)f(deux)i(commandes,)g(la)e(seconde)i
-(est)f(une)g(commande)3942 2776 y(iden)n(tique)e(\022)-35
+Ff(C-M-c)h Fh(p)r(our)4013 2241 y(sortir\))1247 b Ff(C-r)3942
+2432 y Fg(F)-10 b(en)n(^)-55 b(etres)37 b(m)m(ultiples)3942
+2561 y Fh(Lorsqu'il)25 b(y)i(a)f(deux)i(commandes,)g(la)e(seconde)i
+(est)f(une)g(commande)3942 2627 y(iden)n(tique)e(\022)-35
 b(a)24 b(la)f(premi)n(\022)-33 b(ere)23 b(p)r(our)h(un)g(cadre)g(au)g
-(lieu)f(d'une)i(fen)n(^)-33 b(etre.)3942 2868 y(supprimer)23
+(lieu)f(d'une)i(fen)n(^)-33 b(etre.)3942 2721 y(supprimer)23
 b(toutes)i(les)e(autres)h(fen)n(^)-33 b(etres)117 b Ff(C-x)36
-b(1)212 b(C-x)37 b(5)e(1)3942 2932 y Fh(diviser)23 b(la)g(fen)n(^)-33
+b(1)212 b(C-x)37 b(5)e(1)3942 2787 y Fh(diviser)23 b(la)g(fen)n(^)-33
 b(etre)25 b(horizon)n(talemen)n(t)184 b Ff(C-x)36 b(2)212
-b(C-x)37 b(5)e(2)3942 2996 y Fh(supprimer)23 b(cette)i(fen)n(^)-33
+b(C-x)37 b(5)e(2)3942 2843 y Fh(supprimer)23 b(cette)i(fen)n(^)-33
 b(etre)499 b Ff(C-x)36 b(0)212 b(C-x)37 b(5)e(0)3942
-3115 y Fh(diviser)23 b(la)g(fen)n(^)-33 b(etre)25 b(v)n(erticalemen)n
-(t)561 b Ff(C-x)36 b(3)3942 3250 y Fh(faire)23 b(d)n(\023)-33
+2962 y Fh(diviser)23 b(la)g(fen)n(^)-33 b(etre)25 b(v)n(erticalemen)n
+(t)561 b Ff(C-x)36 b(3)3942 3096 y Fh(faire)23 b(d)n(\023)-33
 b(e\014ler)24 b(l'autre)f(fen)n(^)-33 b(etre)708 b Ff(C-M-v)3942
-3360 y Fh(placer)24 b(le)f(curseur)h(dans)g(une)g(autre)h(fen)n(^)-33
-b(etre)25 b Ff(C-x)36 b(o)212 b(C-x)37 b(5)e(o)3942 3424
+3207 y Fh(placer)24 b(le)f(curseur)h(dans)g(une)g(autre)h(fen)n(^)-33
+b(etre)25 b Ff(C-x)36 b(o)212 b(C-x)37 b(5)e(o)3942 3273
 y Fh(s)n(\023)-33 b(electionner)25 b(le)e(tamp)r(on)i(dans)4025
-3488 y(l'autre)f(fen)n(^)-33 b(etre)731 b Ff(C-x)36 b(4)g(b)141
-b(C-x)37 b(5)e(b)3942 3551 y Fh(a\016c)n(her)24 b(le)g(tamp)r(on)g
+3338 y(l'autre)f(fen)n(^)-33 b(etre)731 b Ff(C-x)36 b(4)g(b)141
+b(C-x)37 b(5)e(b)3942 3394 y Fh(a\016c)n(her)24 b(le)g(tamp)r(on)g
 (dans)g(l'autre)g(fen)n(^)-33 b(etre)69 b Ff(C-x)36 b(4)g(C-o)71
-b(C-x)37 b(5)e(C-o)3942 3615 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g
+b(C-x)37 b(5)e(C-o)3942 3460 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g
 (dans)g(l'autre)f(fen)n(^)-33 b(etre)89 b Ff(C-x)36 b(4)g(f)141
-b(C-x)37 b(5)e(f)3942 3679 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g(en)
-g(lecture)g(seule)4025 3743 y(dans)g(l'autre)g(fen)n(^)-33
+b(C-x)37 b(5)e(f)3942 3525 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g(en)
+g(lecture)g(seule)4025 3591 y(dans)g(l'autre)g(fen)n(^)-33
 b(etre)566 b Ff(C-x)36 b(4)g(r)141 b(C-x)37 b(5)e(r)3942
-3806 y Fh(lancer)24 b(Dired)f(dans)h(l'autre)g(fen)n(^)-33
+3647 y Fh(lancer)24 b(Dired)f(dans)h(l'autre)g(fen)n(^)-33
 b(etre)246 b Ff(C-x)36 b(4)g(d)141 b(C-x)37 b(5)e(d)3942
-3870 y Fh(trouv)n(er)24 b(un)g(tag)h(dans)f(l'autre)f(fen)n(^)-33
+3703 y Fh(trouv)n(er)24 b(un)g(tag)h(dans)f(l'autre)f(fen)n(^)-33
 b(etre)179 b Ff(C-x)36 b(4)g(.)141 b(C-x)37 b(5)e(.)3942
-3989 y Fh(agrandir)23 b(la)h(fen)n(^)-33 b(etre)941 b
-Ff(C-x)36 b(^)3942 4095 y Fh(rap)r(etisser)23 b(la)h(fen)n(^)-33
-b(etre)903 b Ff(C-x)36 b({)3940 4201 y Fh(\023)-33 b(elargir)23
+3821 y Fh(agrandir)23 b(la)h(fen)n(^)-33 b(etre)941 b
+Ff(C-x)36 b(^)3942 3928 y Fh(rap)r(etisser)23 b(la)h(fen)n(^)-33
+b(etre)903 b Ff(C-x)36 b({)3940 4034 y Fh(\023)-33 b(elargir)23
 b(la)g(fen)n(^)-33 b(etre)1004 b Ff(C-x)36 b(})p eop
 end
 %%Page: 2 2
 TeXDict begin @landscape 2 1 bop -450 -364 a Fg(F)-10
-b(ormater)-450 -233 y Fh(inden)n(ter)24 b(la)g Fe(ligne)f
+b(ormater)-450 -268 y Fh(inden)n(ter)24 b(la)g Fe(ligne)f
 Fh(couran)n(te)i(\(d)n(\023)-33 b(ep)r(end)25 b(du)f(mo)r(de\))109
-b Ff(TAB)-450 -127 y Fh(inden)n(ter)24 b(la)g Fe(r)n(\023)-39
+b Ff(TAB)-450 -161 y Fh(inden)n(ter)24 b(la)g Fe(r)n(\023)-39
 b(egion)22 b Fh(couran)n(te)k(\(d)n(\023)-33 b(ep)r(end)25
-b(du)-379 -21 y(mo)r(de\))1247 b Ff(C-M-\\)-450 86 y
+b(du)-379 -55 y(mo)r(de\))1247 b Ff(C-M-\\)-450 51 y
 Fh(inden)n(ter)24 b(la)g Fe(s-expression)g Fh(couran)n(te)h(\(d)n(\023)
--33 b(ep)r(end)-379 192 y(du)24 b(mo)r(de\))1145 b Ff(C-M-q)-450
-298 y Fh(inden)n(ter)24 b(la)g(r)n(\023)-33 b(egion)24
-b(sur)f Fd(ar)l(g)30 b Fh(colonnes)443 b Ff(C-x)36 b(TAB)-450
-425 y Fh(ins)n(\023)-33 b(erer)23 b(un)h(newline)g(apr)n(\022)-33
-b(es)23 b(le)h(p)r(oin)n(t)507 b Ff(C-o)-450 531 y Fh(d)n(\023)-33
+-33 b(ep)r(end)-379 157 y(du)24 b(mo)r(de\))1145 b Ff(C-M-q)-450
+264 y Fh(inden)n(ter)24 b(la)g(r)n(\023)-33 b(egion)24
+b(sur)f Fb(ar)l(g)30 b Fh(colonnes)443 b Ff(C-x)36 b(TAB)-450
+389 y Fh(ins)n(\023)-33 b(erer)23 b(un)h(newline)g(apr)n(\022)-33
+b(es)23 b(le)h(p)r(oin)n(t)507 b Ff(C-o)-450 495 y Fh(d)n(\023)-33
 b(eplacer)24 b(le)g(reste)g(de)g(la)f(ligne)h(v)n(ers)g(le)f(bas)326
-b Ff(C-M-o)-450 637 y Fh(supprimer)23 b(les)g(lignes)g(blanc)n(hes)i
+b Ff(C-M-o)-450 601 y Fh(supprimer)23 b(les)g(lignes)g(blanc)n(hes)i
 (autour)g(du)e(p)r(oin)n(t)105 b Ff(C-x)36 b(C-o)-450
-744 y Fh(joindre)23 b(la)h(ligne)f(\022)-35 b(a)24 b(la)f(pr)n(\023)-33
+708 y Fh(joindre)23 b(la)h(ligne)f(\022)-35 b(a)24 b(la)f(pr)n(\023)-33
 b(ec)n(\023)g(eden)n(te)26 b(\(\022)-35 b(a)25 b(la)e(suiv)l(an)n(te)
--379 850 y(a)n(v)n(ec)h(arg\))1161 b Ff(M-^)-450 956
+-379 814 y(a)n(v)n(ec)h(arg\))1161 b Ff(M-^)-450 920
 y Fh(supprimer)23 b(tous)h(les)f(espaces)i(autour)g(du)f(p)r(oin)n(t)
-184 b Ff(M-\\)-450 1062 y Fh(mettre)24 b(exactemen)n(t)j(un)d(espace)h
-(\022)-35 b(a)24 b(l'emplacemen)n(t)-379 1169 y(du)g(p)r(oin)n(t)1178
-b Ff(M-SPC)-450 1295 y Fh(remplir)22 b(le)i(paragraphe)845
-b Ff(M-q)-450 1402 y Fh(placer)24 b(la)f(marge)h(droite)833
-b Ff(C-x)36 b(f)-450 1508 y Fh(d)n(\023)-33 b(e\014nir)24
+184 b Ff(M-\\)-450 1027 y Fh(mettre)24 b(exactemen)n(t)j(un)d(espace)h
+(\022)-35 b(a)24 b(l'emplacemen)n(t)-379 1133 y(du)g(p)r(oin)n(t)1178
+b Ff(M-SPC)-450 1258 y Fh(remplir)22 b(le)i(paragraphe)845
+b Ff(M-q)-450 1364 y Fh(placer)24 b(la)f(marge)h(droite)833
+b Ff(C-x)36 b(f)-450 1471 y Fh(d)n(\023)-33 b(e\014nir)24
 b(le)f(pr)n(\023)-33 b(e\014xe)24 b(par)g(lequel)g(commencera)-379
-1614 y(c)n(haque)h(ligne)1060 b Ff(C-x)36 b(.)-450 1741
+1577 y(c)n(haque)h(ligne)1060 b Ff(C-x)36 b(.)-450 1702
 y Fh(d)n(\023)-33 b(e\014nir)24 b(la)f(fon)n(te)1061
-b Ff(M-o)-450 1920 y Fg(Mo)s(di\014er)37 b(la)h(casse)-450
-2051 y Fh(mettre)24 b(le)g(mot)g(en)g(ma)t(juscules)634
-b Ff(M-u)-450 2157 y Fh(mettre)24 b(le)g(mot)g(en)g(min)n(uscules)638
-b Ff(M-l)-450 2263 y Fh(mettre)24 b(le)g(mot)g(en)g(capitales)704
-b Ff(M-c)-450 2390 y Fh(mettre)24 b(la)g(r)n(\023)-33
+b Ff(M-o)-450 1845 y Fg(Mo)s(di\014er)37 b(la)h(casse)-450
+1941 y Fh(mettre)24 b(le)g(mot)g(en)g(ma)t(juscules)634
+b Ff(M-u)-450 2048 y Fh(mettre)24 b(le)g(mot)g(en)g(min)n(uscules)638
+b Ff(M-l)-450 2154 y Fh(mettre)24 b(le)g(mot)g(en)g(capitales)704
+b Ff(M-c)-450 2279 y Fh(mettre)24 b(la)g(r)n(\023)-33
 b(egion)24 b(en)g(ma)t(juscules)563 b Ff(C-x)36 b(C-u)-450
-2496 y Fh(mettre)24 b(la)g(r)n(\023)-33 b(egion)24 b(en)g(min)n
-(uscules)567 b Ff(C-x)36 b(C-l)-450 2675 y Fg(Le)i(mini-tamp)s(on)-450
-2801 y Fh(Les)24 b(touc)n(hes)h(suiv)l(an)n(tes)g(son)n(t)f
-(utilisables)f(dans)h(le)g(mini-tamp)r(on)f(:)-450 2911
+2386 y Fh(mettre)24 b(la)g(r)n(\023)-33 b(egion)24 b(en)g(min)n
+(uscules)567 b Ff(C-x)36 b(C-l)-450 2529 y Fg(Le)i(mini-tamp)s(on)-450
+2620 y Fh(Les)24 b(touc)n(hes)h(suiv)l(an)n(tes)g(son)n(t)f
+(utilisables)f(dans)h(le)g(mini-tamp)r(on)f(:)-450 2729
 y(compl)n(\023)-33 b(eter)24 b(autan)n(t)i(que)e(p)r(ossible)587
-b Ff(TAB)-450 3018 y Fh(compl)n(\023)-33 b(eter)24 b(un)g(mot)963
-b Ff(SPC)-450 3124 y Fh(compl)n(\023)-33 b(eter)24 b(et)h(ex)n(\023)-33
-b(ecuter)848 b Ff(RET)-450 3230 y Fh(mon)n(trer)24 b(les)f(compl)n
+b Ff(TAB)-450 2835 y Fh(compl)n(\023)-33 b(eter)24 b(un)g(mot)963
+b Ff(SPC)-450 2941 y Fh(compl)n(\023)-33 b(eter)24 b(et)h(ex)n(\023)-33
+b(ecuter)848 b Ff(RET)-450 3048 y Fh(mon)n(trer)24 b(les)f(compl)n
 (\023)-33 b(etions)25 b(p)r(ossibles)481 b Ff(?)-450
-3336 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)-33
+3154 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)-33
 b(ee)24 b(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)26 b(du)e(mini-tamp)r
-(on)74 b Ff(M-p)-450 3443 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)
+(on)74 b Ff(M-p)-450 3260 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)
 -33 b(ee)24 b(suiv)l(an)n(te)h(du)f(mini-tamp)r(on)-379
-3549 y(ou)g(le)f(d)n(\023)-33 b(efaut)1075 b Ff(M-n)-450
-3655 y Fh(rec)n(herc)n(her)24 b(\022)-35 b(a)24 b(reb)r(ours)g(par)f
-(expr.)35 b(rationnelle)-379 3761 y(dans)24 b(l'historique)931
-b Ff(M-r)-450 3868 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'a)n(v)l(an)n
-(t)g(par)g(expr.)35 b(rationnelle)-379 3974 y(dans)24
-b(l'historique)931 b Ff(M-s)-450 4080 y Fh(ann)n(uler)24
-b(la)f(commande)852 b Ff(C-g)-450 4183 y Fh(F)-6 b(aites)39
+3367 y(ou)g(le)f(d)n(\023)-33 b(efaut)1075 b Ff(M-n)-450
+3473 y Fh(rec)n(herc)n(her)24 b(\022)-35 b(a)24 b(reb)r(ours)g(par)f
+(expr.)35 b(rationnelle)-379 3579 y(dans)24 b(l'historique)931
+b Ff(M-r)-450 3685 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'a)n(v)l(an)n
+(t)g(par)g(expr.)35 b(rationnelle)-379 3792 y(dans)24
+b(l'historique)931 b Ff(M-s)-450 3898 y Fh(ann)n(uler)24
+b(la)f(commande)852 b Ff(C-g)-450 3999 y Fh(F)-6 b(aites)39
 b Ff(C-x)d(ESC)g(ESC)j Fh(p)r(our)d(\023)-33 b(editer)39
 b(et)g(r)n(\023)-33 b(ep)n(\023)g(eter)39 b(la)f(derni)n(\022)-33
-b(ere)38 b(com-)-450 4246 y(mande)33 b(a)n(y)n(an)n(t)g(utilis)n(\023)
+b(ere)38 b(com-)-450 4064 y(mande)33 b(a)n(y)n(an)n(t)g(utilis)n(\023)
 -33 b(e)32 b(le)g(minitamp)r(on.)56 b(F)-6 b(aites)32
-b Ff(F10)h Fh(p)r(our)f(activ)n(er)-450 4310 y(la)23
+b Ff(F10)h Fh(p)r(our)f(activ)n(er)-450 4130 y(la)23
 b(barre)h(de)g(men)n(u)g(utilisan)n(t)g(le)f(minitamp)r(on.)1656
 -364 y Fi(Carte)46 b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46
-b(de)g(GNU)f(Emacs)1746 -146 y Fg(T)-10 b(amp)s(ons)1746
-36 y Fh(s)n(\023)-33 b(electionner)25 b(un)f(autre)g(tamp)r(on)604
-b Ff(C-x)36 b(b)1744 143 y Fh(\023)-33 b(en)n(um)n(\023)g(erer)24
+b(de)g(GNU)f(Emacs)1746 -175 y Fg(T)-10 b(amp)s(ons)1746
+-21 y Fh(s)n(\023)-33 b(electionner)25 b(un)f(autre)g(tamp)r(on)604
+b Ff(C-x)36 b(b)1744 85 y Fh(\023)-33 b(en)n(um)n(\023)g(erer)24
 b(tous)g(les)f(tamp)r(ons)684 b Ff(C-x)36 b(C-b)1746
-249 y Fh(supprimer)23 b(un)h(tamp)r(on)839 b Ff(C-x)36
-b(k)1746 467 y Fg(T)-10 b(ransp)s(oser)1746 650 y Fh(transp)r(oser)24
+192 y Fh(supprimer)23 b(un)h(tamp)r(on)839 b Ff(C-x)36
+b(k)1746 382 y Fg(T)-10 b(ransp)s(oser)1746 535 y Fh(transp)r(oser)24
 b(des)g Fe(caract)n(\022)-39 b(eres)687 b Ff(C-t)1746
-756 y Fh(transp)r(oser)24 b(des)g Fe(mots)872 b Ff(M-t)1746
-862 y Fh(transp)r(oser)24 b(des)g Fe(lignes)844 b Ff(C-x)36
-b(C-t)1746 969 y Fh(transp)r(oser)24 b(des)g Fe(s-expressions)585
-b Ff(C-M-t)1746 1188 y Fg(V)n(\023)-55 b(eri\014er)37
-b(l'orthographe)1746 1370 y Fh(v)n(\023)-33 b(eri\014er)23
+642 y Fh(transp)r(oser)24 b(des)g Fe(mots)872 b Ff(M-t)1746
+748 y Fh(transp)r(oser)24 b(des)g Fe(lignes)844 b Ff(C-x)36
+b(C-t)1746 854 y Fh(transp)r(oser)24 b(des)g Fe(s-expressions)585
+b Ff(C-M-t)1746 1045 y Fg(V)n(\023)-55 b(eri\014er)37
+b(l'orthographe)1746 1199 y Fh(v)n(\023)-33 b(eri\014er)23
 b(l'orthographe)i(du)f(mot)g(couran)n(t)359 b Ff(M-$)1746
-1476 y Fh(v)n(\023)-33 b(eri\014er)23 b(l'orthographe)i(de)f(tous)g
-(les)f(mots)1817 1583 y(d'une)h(r)n(\023)-33 b(egion)816
-b Ff(M-x)36 b(ispell-region)1746 1689 y Fh(v)n(\023)-33
+1305 y Fh(v)n(\023)-33 b(eri\014er)23 b(l'orthographe)i(de)f(tous)g
+(les)f(mots)1817 1411 y(d'une)h(r)n(\023)-33 b(egion)816
+b Ff(M-x)36 b(ispell-region)1746 1517 y Fh(v)n(\023)-33
 b(eri\014er)23 b(l'orthographe)i(de)f(tout)h(le)e(tamp)r(on)37
-b Ff(M-x)f(ispell-buffer)1746 1907 y Fg(T)-10 b(ags)1746
-2090 y Fh(trouv)n(er)24 b(un)g(tag)h(\(une)f(d)n(\023)-33
-b(e\014nition\))564 b Ff(M-.)1746 2196 y Fh(trouv)n(er)24
+b Ff(M-x)f(ispell-buffer)1746 1707 y Fg(T)-10 b(ags)1746
+1861 y Fh(trouv)n(er)24 b(un)g(tag)h(\(une)f(d)n(\023)-33
+b(e\014nition\))564 b Ff(M-.)1746 1967 y Fh(trouv)n(er)24
 b(l'o)r(ccurrence)g(suiv)l(an)n(te)h(du)f(tag)400 b Ff(C-u)36
-b(M-.)1746 2302 y Fh(sp)n(\023)-33 b(eci\014er)24 b(un)g(nouv)n(eau)h
+b(M-.)1746 2074 y Fh(sp)n(\023)-33 b(eci\014er)24 b(un)g(nouv)n(eau)h
 (\014c)n(hier)f(de)g(tags)187 b Ff(M-x)36 b(visit-tags-table)1746
-2437 y Fh(rec)n(herc)n(her)24 b(par)g(expr.)35 b(rationnelles)24
-b(dans)1817 2543 y(tous)g(les)f(\014c)n(hiers)h(du)g(tableau)h(de)f
-(tags)131 b Ff(M-x)36 b(tags-search)1746 2650 y Fh(lancer)24
-b(un)g(remplacemen)n(t)h(in)n(teractif)f(sur)1817 2756
+2208 y Fh(rec)n(herc)n(her)24 b(par)g(expr.)35 b(rationnelles)24
+b(dans)1817 2315 y(tous)g(les)f(\014c)n(hiers)h(du)g(tableau)h(de)f
+(tags)131 b Ff(M-x)36 b(tags-search)1746 2421 y Fh(lancer)24
+b(un)g(remplacemen)n(t)h(in)n(teractif)f(sur)1817 2527
 y(tous)g(les)f(\014c)n(hiers)652 b Ff(M-x)37 b(tags-query-replace)1746
-2862 y Fh(con)n(tin)n(uer)25 b(la)e(derni)n(\022)-33
+2633 y Fh(con)n(tin)n(uer)25 b(la)e(derni)n(\022)-33
 b(ere)24 b(rec)n(herc)n(he)h(de)f(tags)g(ou)g(le)1817
-2969 y(remplacemen)n(t)g(in)n(teractif)710 b Ff(M-,)1746
-3188 y Fg(Shells)1746 3351 y Fh(ex)n(\023)-33 b(ecuter)25
-b(une)g(commande)g(shell)606 b Ff(M-!)1746 3457 y Fh(lancer)24
+2740 y(remplacemen)n(t)g(in)n(teractif)710 b Ff(M-,)1746
+2930 y Fg(Shells)1746 3065 y Fh(ex)n(\023)-33 b(ecuter)25
+b(une)g(commande)g(shell)606 b Ff(M-!)1746 3171 y Fh(lancer)24
 b(une)g(commande)h(shell)e(sur)g(la)h(r)n(\023)-33 b(egion)271
-b Ff(M-|)1746 3563 y Fh(\014ltrer)23 b(la)h(r)n(\023)-33
+b Ff(M-|)1746 3277 y Fh(\014ltrer)23 b(la)h(r)n(\023)-33
 b(egion)23 b(a)n(v)n(ec)i(une)f(commande)h(shell)246
-b Ff(C-u)36 b(M-|)1746 3670 y Fh(lancer)24 b(un)g(shell)f(dans)h(la)f
+b Ff(C-u)36 b(M-|)1746 3384 y Fh(lancer)24 b(un)g(shell)f(dans)h(la)f
 (fen)n(^)-33 b(etre)25 b Ff(*shell*)318 b(M-x)36 b(shell)3942
--364 y Fg(Rectangles)3942 -182 y Fh(copier)24 b(le)f(rectangle)i(dans)f
-(le)g(registre)459 b Ff(C-x)36 b(r)f(r)3942 -75 y Fh(d)n(\023)-33
+-364 y Fg(Rectangles)3942 -210 y Fh(copier)24 b(le)f(rectangle)i(dans)f
+(le)g(registre)459 b Ff(C-x)36 b(r)f(r)3942 -104 y Fh(d)n(\023)-33
 b(etruire)24 b(le)f(rectangle)893 b Ff(C-x)36 b(r)f(k)3942
-31 y Fh(r)n(\023)-33 b(ecup)n(\023)g(erer)24 b(le)f(rectangle)850
-b Ff(C-x)36 b(r)f(y)3942 137 y Fh(ouvrir)23 b(le)g(rectangle,)i(en)f(d)
+2 y Fh(r)n(\023)-33 b(ecup)n(\023)g(erer)24 b(le)f(rectangle)850
+b Ff(C-x)36 b(r)f(y)3942 109 y Fh(ouvrir)23 b(le)g(rectangle,)i(en)f(d)
 n(\023)-33 b(ecalan)n(t)25 b(le)f(texte)h(\022)-35 b(a)4013
-243 y(droite)1260 b Ff(C-x)36 b(r)f(o)3942 350 y Fh(vider)23
-b(le)h(rectangle)981 b Ff(C-x)36 b(r)f(c)3942 456 y Fh(pr)n(\023)-33
+215 y(droite)1260 b Ff(C-x)36 b(r)f(o)3942 321 y Fh(vider)23
+b(le)h(rectangle)981 b Ff(C-x)36 b(r)f(c)3942 427 y Fh(pr)n(\023)-33
 b(e\014xer)24 b(c)n(haque)h(ligne)f(a)n(v)n(ec)h(une)f(c)n(ha)-8
-b(^)-27 b(\020ne)369 b Ff(C-x)36 b(r)f(t)3942 675 y Fg(Abr)n(\023)-55
-b(eviations)3942 838 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33
+b(^)-27 b(\020ne)369 b Ff(C-x)36 b(r)f(t)3942 618 y Fg(Abr)n(\023)-55
+b(eviations)3942 752 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33
 b(eviation)25 b(globale)547 b Ff(C-x)36 b(a)f(g)3942
-945 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33 b(eviation)25
+859 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33 b(eviation)25
 b(lo)r(cale)f(au)g(mo)r(de)300 b Ff(C-x)36 b(a)f(l)3942
-1051 y Fh(a)t(jouter)24 b(une)g(expansion)h(globale)f(p)r(our)g(cette)
-4013 1157 y(abr)n(\023)-33 b(eviation)1094 b Ff(C-x)36
-b(a)f(i)h(g)3942 1263 y Fh(a)t(jouter)24 b(une)g(expansion)h(lo)r(cale)
-f(au)g(mo)r(de)g(p)r(our)4013 1370 y(cette)h(abr)n(\023)-33
-b(eviation)922 b Ff(C-x)36 b(a)f(i)h(l)3942 1476 y Fh(faire)23
-b(une)h(expansion)h(explicite)f(de)g(cette)4013 1582
+965 y Fh(a)t(jouter)24 b(une)g(expansion)h(globale)f(p)r(our)g(cette)
+4013 1071 y(abr)n(\023)-33 b(eviation)1094 b Ff(C-x)36
+b(a)f(i)h(g)3942 1178 y Fh(a)t(jouter)24 b(une)g(expansion)h(lo)r(cale)
+f(au)g(mo)r(de)g(p)r(our)4013 1284 y(cette)h(abr)n(\023)-33
+b(eviation)922 b Ff(C-x)36 b(a)f(i)h(l)3942 1390 y Fh(faire)23
+b(une)h(expansion)h(explicite)f(de)g(cette)4013 1496
 y(abr)n(\023)-33 b(eviation)1094 b Ff(C-x)36 b(a)f(e)3942
-1717 y Fh(faire)23 b(une)h(expansion)h(dynamique)g(du)f(mot)4013
-1823 y(pr)n(\023)-33 b(ec)n(\023)g(eden)n(t)1146 b Ff(M-/)3942
-2043 y Fg(Expressions)39 b(rationnelles)3942 2225 y Fh(un)24
+1631 y Fh(faire)23 b(une)h(expansion)h(dynamique)g(du)f(mot)4013
+1737 y(pr)n(\023)-33 b(ec)n(\023)g(eden)n(t)1146 b Ff(M-/)3942
+1928 y Fg(Expressions)39 b(rationnelles)3942 2082 y Fh(un)24
 b(unique)g(caract)n(\022)-33 b(ere)25 b(quelconque,)g(sauf)f(une)g
-(\014n)4013 2331 y(de)g(ligne)1201 b Ff(.)70 b Fh(\(p)r(oin)n(t\))3942
-2437 y(z)n(\023)-33 b(ero)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)25
-b(ou)f(plus)816 b Ff(*)3942 2544 y Fh(une)24 b(r)n(\023)-33
+(\014n)4013 2188 y(de)g(ligne)1201 b Ff(.)70 b Fh(\(p)r(oin)n(t\))3942
+2294 y(z)n(\023)-33 b(ero)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)25
+b(ou)f(plus)816 b Ff(*)3942 2401 y Fh(une)24 b(r)n(\023)-33
 b(ep)n(\023)g(etition)25 b(ou)f(plus)832 b Ff(+)3942
-2650 y Fh(z)n(\023)-33 b(ero)24 b(ou)g(une)g(r)n(\023)-33
-b(ep)n(\023)g(etition)834 b Ff(?)3942 2756 y Fh(caract)n(\022)-33
+2507 y Fh(z)n(\023)-33 b(ero)24 b(ou)g(une)g(r)n(\023)-33
+b(ep)n(\023)g(etition)834 b Ff(?)3942 2613 y Fh(caract)n(\022)-33
 b(ere)25 b(sp)n(\023)-33 b(ecial)24 b(p)r(our)f(quoter)i(l'expression)e
-(ra-)4013 2863 y(tionnelle)h Fd(c)1121 b Ff(\\)p Fd(c)3942
-2969 y Fh(alternativ)n(e)25 b(\(\\ou"\))960 b Ff(\\|)3942
-3075 y Fh(regroup)r(emen)n(t)1089 b Ff(\\\()35 b Fc(:)12
-b(:)f(:)35 b Ff(\\\))3942 3181 y Fh(le)23 b(m)n(^)-33
-b(eme)24 b(texte)i(que)e(dans)g(le)g Fd(n)5 b Fh(i)n(\022)-33
-b(eme)24 b(group)r(e)264 b Ff(\\)p Fd(n)3942 3288 y Fh(limite)23
-b(de)h(mot)1096 b Ff(\\b)3942 3394 y Fh(non)24 b(limite)f(de)h(mot)959
-b Ff(\\B)3942 3504 y Fe(en)n(tit)n(\023)-39 b(e)499 b(d)n(\023)-39
-b(ebut)258 b(\014n)3942 3568 y Fh(ligne)558 b Ff(^)427
-b($)3942 3632 y Fh(mot)582 b Ff(\\<)392 b(\\>)3942 3696
-y Fh(tamp)r(on)467 b Ff(\\`)392 b(\\')3942 3759 y Fe(classe)27
+(ra-)4013 2720 y(tionnelle)h Fb(c)1121 b Ff(\\)p Fb(c)3942
+2826 y Fh(alternativ)n(e)25 b(\(\\ou"\))960 b Ff(\\|)3942
+2932 y Fh(regroup)r(emen)n(t)1089 b Ff(\\\()35 b Fa(:)12
+b(:)f(:)35 b Ff(\\\))3942 3038 y Fh(le)23 b(m)n(^)-33
+b(eme)24 b(texte)i(que)e(dans)g(le)g Fb(n)5 b Fh(i)n(\022)-33
+b(eme)24 b(group)r(e)264 b Ff(\\)p Fb(n)3942 3145 y Fh(limite)23
+b(de)h(mot)1096 b Ff(\\b)3942 3251 y Fh(non)24 b(limite)f(de)h(mot)959
+b Ff(\\B)3942 3361 y Fe(en)n(tit)n(\023)-39 b(e)499 b(d)n(\023)-39
+b(ebut)258 b(\014n)3942 3417 y Fh(ligne)558 b Ff(^)427
+b($)3942 3483 y Fh(mot)582 b Ff(\\<)392 b(\\>)3942 3539
+y Fh(tamp)r(on)467 b Ff(\\`)392 b(\\')3942 3604 y Fe(classe)27
 b(de)g(caract)n(\022)-39 b(ere)41 b(corresp)r(ond)70
 b(corresp)r(ond)27 b(\022)-40 b(a)26 b(d'autres)3942
-3823 y Fh(ensem)n(ble)e(explicite)147 b Ff([)35 b Fc(:)12
-b(:)f(:)35 b Ff(])239 b([^)36 b Fc(:)12 b(:)f(:)35 b
-Ff(])3942 3887 y Fh(caract)n(\022)-33 b(ere)25 b(de)f(mot)186
-b Ff(\\w)392 b(\\W)3942 3951 y Fh(caract)n(\022)-33 b(ere)25
-b(a)n(v)n(ec)g(la)3984 4014 y(syn)n(taxe)g Fd(c)371 b
-Ff(\\s)p Fd(c)359 b Ff(\\S)p Fd(c)p eop end
+3670 y Fh(ensem)n(ble)e(explicite)147 b Ff([)35 b Fa(:)12
+b(:)f(:)35 b Ff(])239 b([^)36 b Fa(:)12 b(:)f(:)35 b
+Ff(])3942 3736 y Fh(caract)n(\022)-33 b(ere)25 b(de)f(mot)186
+b Ff(\\w)392 b(\\W)3942 3791 y Fh(caract)n(\022)-33 b(ere)25
+b(a)n(v)n(ec)g(la)3984 3847 y(syn)n(taxe)g Fb(c)371 b
+Ff(\\s)p Fb(c)359 b Ff(\\S)p Fb(c)p eop end
 %%Page: 3 3
 TeXDict begin @landscape 3 2 bop -450 -364 a Fg(Jeux)38
 b(de)f(caract)n(\022)-55 b(eres)37 b(in)m(ternationaux)-450
--201 y Fh(indiquer)23 b(la)h(langue)g(principale)631
-b Ff(C-x)36 b(RET)g(l)-450 -95 y Fh(mon)n(trer)24 b(toutes)h(les)e(m)n
+-230 y Fh(indiquer)23 b(la)h(langue)g(principale)631
+b Ff(C-x)36 b(RET)g(l)-450 -123 y Fh(mon)n(trer)24 b(toutes)h(les)e(m)n
 (\023)-33 b(etho)r(des)25 b(de)f(saisie)29 b Ff(M-x)36
-b(list-input-methods)-450 12 y Fh(activ)n(er)24 b(ou)g(d)n(\023)-33
+b(list-input-methods)-450 -17 y Fh(activ)n(er)24 b(ou)g(d)n(\023)-33
 b(esactiv)n(er)25 b(la)f(m)n(\023)-33 b(etho)r(de)25
-b(de)f(saisie)229 b Ff(C-\\)-450 118 y Fh(c)n(hoisir)23
+b(de)f(saisie)229 b Ff(C-\\)-450 89 y Fh(c)n(hoisir)23
 b(le)g(syst)n(\022)-33 b(eme)25 b(de)f(co)r(dage)h(p)r(our)f(la)f(com-)
--379 224 y(mande)h(suiv)l(an)n(te)963 b Ff(C-x)36 b(RET)g(c)-450
-330 y Fh(mon)n(trer)24 b(tous)g(les)f(syst)n(\022)-33
+-379 196 y(mande)h(suiv)l(an)n(te)963 b Ff(C-x)36 b(RET)g(c)-450
+302 y Fh(mon)n(trer)24 b(tous)g(les)f(syst)n(\022)-33
 b(emes)25 b(de)f(co)r(dage)64 b Ff(M-x)36 b(list-coding-systems)-450
-437 y Fh(c)n(hoisir)23 b(le)g(syst)n(\022)-33 b(eme)25
+408 y Fh(c)n(hoisir)23 b(le)g(syst)n(\022)-33 b(eme)25
 b(de)f(co)r(dage)h(pr)n(\023)-33 b(ef)n(\023)g(er)n(\023)g(e)85
-b Ff(M-x)36 b(prefer-coding-system)-450 656 y Fg(Info)-450
-819 y Fh(en)n(trer)24 b(dans)g(le)f(visualisateur)h(de)g(la)g(do)r
-(cumen)n(ta-)-379 925 y(tion)g(Info)1174 b Ff(C-h)36
-b(i)-450 1031 y Fh(c)n(herc)n(her)24 b(une)h(fonction)f(ou)g(une)h(v)l
-(ariable)e(pr)n(\023)-33 b(ecise)-379 1138 y(dans)24
-b(Info)1154 b Ff(C-h)36 b(S)-450 1248 y Fh(Se)24 b(d)n(\023)-33
-b(eplacer)25 b(dans)f(un)f(n\033ud)i(:)-379 1367 y(une)f(page)h(plus)e
-(bas)891 b Ff(SPC)-379 1473 y Fh(une)24 b(page)h(plus)e(haut)853
-b Ff(DEL)-379 1579 y Fh(d)n(\023)-33 b(ebut)25 b(du)e(n\033ud)967
-b Ff(.)70 b Fh(\(p)r(oin)n(t\))-450 1690 y(P)n(asser)23
-b(de)h(n\033ud)g(en)h(n\033ud)f(:)-379 1796 y(n\033ud)g
-Fe(suiv)-5 b(an)n(t)991 b Ff(n)-379 1902 y Fh(n\033ud)24
+b Ff(M-x)36 b(prefer-coding-system)-450 599 y Fg(Info)-450
+733 y Fh(en)n(trer)24 b(dans)g(le)f(visualisateur)h(de)g(la)g(do)r
+(cumen)n(ta-)-379 839 y(tion)g(Info)1174 b Ff(C-h)36
+b(i)-450 946 y Fh(c)n(herc)n(her)24 b(une)h(fonction)f(ou)g(une)h(v)l
+(ariable)e(pr)n(\023)-33 b(ecise)-379 1052 y(dans)24
+b(Info)1154 b Ff(C-h)36 b(S)-450 1162 y Fh(Se)24 b(d)n(\023)-33
+b(eplacer)25 b(dans)f(un)f(n\033ud)i(:)-379 1281 y(une)f(page)h(plus)e
+(bas)891 b Ff(SPC)-379 1387 y Fh(une)24 b(page)h(plus)e(haut)853
+b Ff(DEL)-379 1494 y Fh(d)n(\023)-33 b(ebut)25 b(du)e(n\033ud)967
+b Ff(.)70 b Fh(\(p)r(oin)n(t\))-450 1604 y(P)n(asser)23
+b(de)h(n\033ud)g(en)h(n\033ud)f(:)-379 1710 y(n\033ud)g
+Fe(suiv)-5 b(an)n(t)991 b Ff(n)-379 1816 y Fh(n\033ud)24
 b Fe(pr)n(\023)-39 b(ec)n(\023)g(eden)n(t)898 b Ff(p)-379
-2008 y Fh(aller)22 b Fe(plus)i(haut)953 b Ff(u)-379 2114
+1922 y Fh(aller)22 b Fe(plus)i(haut)953 b Ff(u)-379 2029
 y Fh(c)n(hoisir)23 b(un)g(sujet)h(de)g(men)n(u)h(par)e(son)h(nom)277
-b Ff(m)-379 2221 y Fh(c)n(hoisir)23 b(le)g Fd(n)5 b Fh(i)n(\022)-33
-b(eme)24 b(sujet)g(de)g(men)n(u)g(par)g(son)-379 2327
-y(n)n(um)n(\023)-33 b(ero)23 b(\(1{9\))1029 b Fd(n)-379
-2433 y Fh(suivre)23 b(une)h(r)n(\023)-33 b(ef)n(\023)g(erence)24
+b Ff(m)-379 2135 y Fh(c)n(hoisir)23 b(le)g Fb(n)5 b Fh(i)n(\022)-33
+b(eme)24 b(sujet)g(de)g(men)n(u)g(par)g(son)-379 2241
+y(n)n(um)n(\023)-33 b(ero)23 b(\(1{9\))1029 b Fb(n)-379
+2347 y Fh(suivre)23 b(une)h(r)n(\023)-33 b(ef)n(\023)g(erence)24
 b(crois)n(\023)-33 b(ee)24 b(\(on)h(revien)n(t)f(a)n(v)n(ec)-379
-2539 y Ff(l)p Fh(\))1378 b Ff(f)-379 2646 y Fh(rev)n(enir)23
+2454 y Ff(l)p Fh(\))1378 b Ff(f)-379 2560 y Fh(rev)n(enir)23
 b(au)h(dernier)f(n\033ud)h(visit)n(\023)-33 b(e)509 b
-Ff(l)-379 2752 y Fh(rev)n(enir)23 b(au)h(n\033ud)g(du)g(r)n(\023)-33
-b(ep)r(ertoire)509 b Ff(d)-379 2858 y Fh(aller)22 b(au)i(n\033ud)g(de)h
-(plus)e(haut)i(niv)n(eau)f(du)-379 2965 y(\014c)n(hier)f(Info)1110
-b Ff(t)-379 3071 y Fh(aller)22 b(sur)i(n'imp)r(orte)f(quel)h(n\033ud)g
-(par)f(son)h(nom)111 b Ff(g)-450 3181 y Fh(Autres)24
-b(:)-379 3286 y(lancer)f(le)h Fe(didacticiel)e Fh(Info)652
-b Ff(h)-379 3393 y Fh(c)n(herc)n(her)24 b(un)g(sujet)g(dans)g(l'index)
-518 b Ff(i)-379 3499 y Fh(rec)n(herc)n(her)24 b(les)f(n\033uds)h(a)n(v)
-n(ec)h(une)f(expression)-379 3605 y(rationnelle)1115
-b Ff(s)-379 3711 y Fe(quitter)22 b Fh(Info)1051 b Ff(q)1746
--364 y Fg(Registres)1746 -227 y Fh(sauv)n(er)24 b(la)f(r)n(\023)-33
+Ff(l)-379 2666 y Fh(rev)n(enir)23 b(au)h(n\033ud)g(du)g(r)n(\023)-33
+b(ep)r(ertoire)509 b Ff(d)-379 2773 y Fh(aller)22 b(au)i(n\033ud)g(de)h
+(plus)e(haut)i(niv)n(eau)f(du)-379 2879 y(\014c)n(hier)f(Info)1110
+b Ff(t)-379 2985 y Fh(aller)22 b(sur)i(n'imp)r(orte)f(quel)h(n\033ud)g
+(par)f(son)h(nom)111 b Ff(g)-450 3095 y Fh(Autres)24
+b(:)-379 3201 y(lancer)f(le)h Fe(didacticiel)e Fh(Info)652
+b Ff(h)-379 3307 y Fh(c)n(herc)n(her)24 b(un)g(sujet)g(dans)g(l'index)
+518 b Ff(i)-379 3413 y Fh(rec)n(herc)n(her)24 b(les)f(n\033uds)h(a)n(v)
+n(ec)h(une)f(expression)-379 3519 y(rationnelle)1115
+b Ff(s)-379 3626 y Fe(quitter)22 b Fh(Info)1051 b Ff(q)1746
+-364 y Fg(Registres)1746 -244 y Fh(sauv)n(er)24 b(la)f(r)n(\023)-33
 b(egion)24 b(dans)g(un)g(registre)506 b Ff(C-x)36 b(r)f(s)1746
--121 y Fh(ins)n(\023)-33 b(erer)23 b(le)g(con)n(ten)n(u)j(du)e
+-138 y Fh(ins)n(\023)-33 b(erer)23 b(le)g(con)n(ten)n(u)j(du)e
 (registre)f(dans)h(le)g(tamp)r(on)117 b Ff(C-x)36 b(r)f(i)1746
-2 y Fh(sauv)n(er)24 b(la)f(v)l(aleur)h(du)g(p)r(oin)n(t)g(dans)g(un)g
-(registre)222 b Ff(C-x)36 b(r)f(SPC)1746 109 y Fh(sauter)24
+-11 y Fh(sauv)n(er)24 b(la)f(v)l(aleur)h(du)g(p)r(oin)n(t)g(dans)g(un)g
+(registre)222 b Ff(C-x)36 b(r)f(SPC)1746 95 y Fh(sauter)24
 b(au)g(p)r(oin)n(t)g(sauv)n(\023)-33 b(e)25 b(dans)f(le)f(registre)355
-b Ff(C-x)36 b(r)f(j)1746 271 y Fg(Macros)j(cla)m(vier)1746
-388 y Fe(lancer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
+b Ff(C-x)36 b(r)f(j)1746 244 y Fg(Macros)j(cla)m(vier)1746
+344 y Fe(lancer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
 b(d'une)f(macro)g(cla)n(vier)277 b Ff(C-x)36 b(\()1746
-494 y Fe(terminer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
+451 y Fe(terminer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
 b(d'une)f(macro)f(cla)n(vier)183 b Ff(C-x)36 b(\))1746
-601 y Fe(ex)n(\023)-39 b(ecuter)24 b Fh(la)f(derni)n(\022)-33
+557 y Fe(ex)n(\023)-39 b(ecuter)24 b Fh(la)f(derni)n(\022)-33
 b(ere)24 b(macro)g(cla)n(vier)f(d)n(\023)-33 b(e\014nie)203
-b Ff(C-x)36 b(e)1746 707 y Fh(a)t(jouter)24 b(\022)-35
+b Ff(C-x)36 b(e)1746 663 y Fh(a)t(jouter)24 b(\022)-35
 b(a)24 b(la)f(derni)n(\022)-33 b(ere)24 b(macro)g(cla)n(vier)446
-b Ff(C-u)36 b(C-x)g(\()1746 813 y Fh(donner)24 b(un)g(nom)g(\022)-35
+b Ff(C-u)36 b(C-x)g(\()1746 770 y Fh(donner)24 b(un)g(nom)g(\022)-35
 b(a)24 b(la)f(derni)n(\022)-33 b(ere)24 b(macro)1817
-919 y(cla)n(vier)996 b Ff(M-x)36 b(name-last-kbd-macro)1746
-1026 y Fh(ins)n(\023)-33 b(erer)23 b(une)h(d)n(\023)-33
-b(e\014nition)25 b(Lisp)e(dans)h(le)1817 1132 y(tamp)r(on)960
-b Ff(M-x)36 b(insert-kbd-macro)1746 1294 y Fg(Commandes)i(de)f(gestion)
-h(d'Emacs)g(Lisp)1744 1431 y Fh(\023)-33 b(ev)l(aluer)24
+876 y(cla)n(vier)996 b Ff(M-x)36 b(name-last-kbd-macro)1746
+982 y Fh(ins)n(\023)-33 b(erer)23 b(une)h(d)n(\023)-33
+b(e\014nition)25 b(Lisp)e(dans)h(le)1817 1088 y(tamp)r(on)960
+b Ff(M-x)36 b(insert-kbd-macro)1746 1237 y Fg(Commandes)i(de)f(gestion)
+h(d'Emacs)g(Lisp)1744 1357 y Fh(\023)-33 b(ev)l(aluer)24
 b(la)g Fe(s-expression)f Fh(situ)n(\023)-33 b(ee)25 b(a)n(v)l(an)n(t)g
-(le)e(p)r(oin)n(t)115 b Ff(C-x)36 b(C-e)1744 1537 y Fh(\023)-33
+(le)e(p)r(oin)n(t)115 b Ff(C-x)36 b(C-e)1744 1463 y Fh(\023)-33
 b(ev)l(aluer)24 b(la)g Fe(defun)g Fh(couran)n(te)707
-b Ff(C-M-x)1744 1643 y Fh(\023)-33 b(ev)l(aluer)24 b(la)g
+b Ff(C-M-x)1744 1570 y Fh(\023)-33 b(ev)l(aluer)24 b(la)g
 Fe(r)n(\023)-39 b(egion)726 b Ff(M-x)36 b(eval-region)1746
-1750 y Fh(lire)23 b(et)f(\023)-33 b(ev)l(aluer)24 b(le)g(mini-tamp)r
-(on)593 b Ff(M-:)1746 1856 y Fh(c)n(harger)24 b(\022)-35
+1676 y Fh(lire)23 b(et)f(\023)-33 b(ev)l(aluer)24 b(le)g(mini-tamp)r
+(on)593 b Ff(M-:)1746 1782 y Fh(c)n(harger)24 b(\022)-35
 b(a)24 b(partir)f(du)h(r)n(\023)-33 b(ep)r(ertoire)23
-b(syst)n(\022)-33 b(eme)1817 1962 y(standard)926 b Ff(M-x)36
-b(load-library)1746 2124 y Fg(P)m(ersonnalisation)g(simple)1746
-2261 y Fh(p)r(ersonnaliser)23 b(les)h(v)l(ariables)f(et)h(les)g(fon)n
-(tes)81 b Ff(M-x)36 b(customize)1746 2364 y Fh(Cr)n(\023)-33
+b(syst)n(\022)-33 b(eme)1817 1888 y(standard)926 b Ff(M-x)36
+b(load-library)1746 2037 y Fg(P)m(ersonnalisation)g(simple)1746
+2157 y Fh(p)r(ersonnaliser)23 b(les)h(v)l(ariables)f(et)h(les)g(fon)n
+(tes)81 b Ff(M-x)36 b(customize)1746 2263 y Fh(Cr)n(\023)-33
 b(eation)23 b(de)g(liaisons)f(de)h(touc)n(hes)h(globales)f(en)g(Emacs)g
-(Lisp)f(\(exem-)1746 2437 y(ples\):)1746 2518 y Ff(\(global-set-key)40
-b("\\C-cg")d('goto-line\))1746 2581 y(\(global-set-key)j("\\M-#")d
-('query-replace-regexp\))1755 2729 y Fg(\023)1746 2753
-y(Ecriture)g(de)h(commandes)1746 2857 y Ff(\(defun)f
-Fd(nom-c)l(ommande)43 b Ff(\()p Fd(ar)l(gs)5 b Ff(\))1817
-2921 y(")p Fd(do)l(cumentation)g Ff(")38 b(\(interactive)g(")p
-Fd(template)5 b Ff("\))1817 2985 y Fd(b)l(o)l(dy)h Ff(\))1746
-3066 y Fh(Exemple)24 b(:)1746 3146 y Ff(\(defun)37 b
+(Lisp)f(\(exem-)1746 2336 y(ples\):)1746 2425 y Ff(\(global-set-key)40
+b("\\C-cg")d('goto-line\))1746 2493 y(\(global-set-key)j("\\M-#")d
+('query-replace-regexp\))1755 2627 y Fg(\023)1746 2651
+y(Ecriture)g(de)h(commandes)1746 2731 y Ff(\(defun)f
+Fb(nom-c)l(ommande)43 b Ff(\()p Fb(ar)l(gs)5 b Ff(\))1817
+2796 y(")p Fb(do)l(cumentation)g Ff(")38 b(\(interactive)g(")p
+Fb(template)5 b Ff("\))1817 2862 y Fb(b)l(o)l(dy)h Ff(\))1746
+2948 y Fh(Exemple)24 b(:)1746 3034 y Ff(\(defun)37 b
 (cette-ligne-en-haut-de-)q(la-f)q(ene)q(tre)42 b(\(line\))1746
-3210 y("Repositionne)d(la)d(ligne)h(du)e(point)i(en)f(haut)g(de)g(la)g
-(fenetre.)1746 3274 y(Avec)g(ARG,)h(place)g(le)e(point)i(sur)f(la)g
-(ligne)h(ARG.")1817 3338 y(\(interactive)h("P"\))1817
-3401 y(\(recenter)f(\(if)g(\(null)f(line\))2311 3465
-y(0)2240 3529 y(\(prefix-numeric-value)41 b(line\)\)\)\))1746
-3610 y Fh(La)21 b(sp)n(\023)-33 b(eci\014cation)23 b
+3090 y("Repositionne)d(la)d(ligne)h(du)e(point)i(en)f(haut)g(de)g(la)g
+(fenetre.)1746 3145 y(Avec)g(ARG,)h(place)g(le)e(point)i(sur)f(la)g
+(ligne)h(ARG.")1817 3213 y(\(interactive)h("P"\))1817
+3269 y(\(recenter)f(\(if)g(\(null)f(line\))2311 3324
+y(0)2240 3380 y(\(prefix-numeric-value)41 b(line\)\)\)\))1746
+3468 y Fh(La)21 b(sp)n(\023)-33 b(eci\014cation)23 b
 Ff(interactive)h Fh(indique)d(commen)n(t)h(lire)e(in)n(teractiv)n(e-)
-1746 3674 y(men)n(t)28 b(les)f(param)n(\022)-33 b(etres.)42
+1746 3534 y(men)n(t)28 b(les)f(param)n(\022)-33 b(etres.)42
 b(F)-6 b(aites)28 b Ff(C-h)36 b(f)f(interactive)30 b
-Fh(p)r(our)e(plus)e(de)1746 3737 y(pr)n(\023)-33 b(ecisions.)2039
-3817 y Fb(Cop)n(yrigh)n(t)2342 3815 y(c)2325 3817 y Fa(\015)21
-b Fb(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
-b(Inc.)2179 3868 y(v2.3)h(p)r(our)f(GNU)g(Emacs)h(v)n(ersion)h(22,)f
-(2006)2309 3919 y(conception)g(de)f(Stephen)g(Gildea)2220
-3983 y(traduction)h(fran\030)-27 b(caise)21 b(d')2831
-3970 y(\023)2826 3983 y(Eric)f(Jacob)r(oni)1746 4051
+Fh(p)r(our)e(plus)e(de)1746 3599 y(pr)n(\023)-33 b(ecisions.)2039
+3682 y Fd(Cop)n(yrigh)n(t)2342 3680 y(c)2325 3682 y Fc(\015)21
+b Fd(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
+b(Inc.)2179 3727 y(v2.3)h(p)r(our)f(GNU)g(Emacs)h(v)n(ersion)h(22,)f
+(2006)2309 3771 y(conception)g(de)f(Stephen)g(Gildea)2220
+3835 y(traduction)h(fran\030)-27 b(caise)21 b(d')2831
+3822 y(\023)2826 3835 y(Eric)f(Jacob)r(oni)1746 3900
 y(V)-5 b(ous)22 b(p)r(ouv)n(ez)g(faire)g(et)g(distribuer)f(des)h
 (copies)g(de)f(cette)i(carte,)f(p)r(ourvu)f(que)h(la)1746
-4102 y(note)16 b(de)g(cop)n(yrigh)n(t)g(et)h(cette)f(note)g(de)g(p)r
+3944 y(note)16 b(de)g(cop)n(yrigh)n(t)g(et)h(cette)f(note)g(de)g(p)r
 (ermission)f(soien)n(t)h(conserv)n(\023)-29 b(ees)19
-b(sur)c(toutes)1746 4153 y(les)21 b(copies.)1746 4221
+b(sur)c(toutes)1746 3989 y(les)21 b(copies.)1746 4054
 y(P)n(our)e(les)g(copies)g(du)f(man)n(uel)g(GNU)g(Emacs,)g(\023)-29
 b(ecriv)n(ez)20 b(\022)-30 b(a)19 b(la)g(F)-5 b(ree)19
-b(Soft)n(w)n(are)i(F)-5 b(oun-)1746 4272 y(dation,)29
+b(Soft)n(w)n(are)i(F)-5 b(oun-)1746 4098 y(dation,)29
 b(Inc.,)g(51)g(F)-5 b(ranklin)28 b(Street,)h(Fifth)f(Flo)r(or,)h
-(Boston,)i(MA)d(02110-1301)1746 4323 y(USA.)p eop end
+(Boston,)i(MA)d(02110-1301)1746 4143 y(USA.)p eop end
 %%Trailer
 
 userdict /end-hook known{end-hook}if
--- a/etc/fr-refcard.tex	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/fr-refcard.tex	Sun Apr 22 12:42:47 2007 +0000
@@ -11,7 +11,7 @@
 % Set letterpaper to 0 for A4 paper, 1 for letter (US) paper.  Useful
 % only when columnsperpage is 2 or 3.
 
-\letterpaper=1
+\letterpaper=0
 
 % Nothing else needs to be changed below this line.
 % Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
@@ -216,8 +216,8 @@
 
 % section - new major section.  Argument is section name.
 \outer\def\section#1{\par\filbreak
-  \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
-  \vskip 2ex plus 1ex minus 1.5ex}
+  \vskip 2ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
+  \vskip 1ex plus 1ex minus 1.5ex}
 
 \newdimen\keyindent
 
@@ -327,6 +327,8 @@
 \metax{restaurer un tampon avec son contenu initial}{M-x revert-buffer}
 \key{r\'eafficher un \'ecran perturb\'e}{C-l}
 
+\shortcopyrightnotice
+
 \section{Recherche incr\'ementale}
 
 \key{rechercher vers l'avant}{C-s}
@@ -345,9 +347,6 @@
 Si Emacs est encore en train de chercher, \kbd{C-g} n'annule que ce
 qui n'a pas \'et\'e fait.
 
-%% Why was this here?
-%\shortcopyrightnotice
-
 \section{D\'eplacements}
 
 \paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
--- a/etc/refcard.ps	Sun Apr 22 12:12:29 2007 +0000
+++ b/etc/refcard.ps	Sun Apr 22 12:42:47 2007 +0000
@@ -4,14 +4,14 @@
 %%Pages: 2
 %%PageOrder: Ascend
 %%Orientation: Landscape
-%%BoundingBox: 0 0 595 842
+%%BoundingBox: 0 0 612 792
 %%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8
-%%DocumentPaperSizes: a4
+%%DocumentPaperSizes: Letter
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape refcard.dvi
+%DVIPSCommandLine: dvips -t letter -t landscape refcard.dvi
 %DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2007.01.20:1513
+%DVIPSSource:  TeX output 2007.03.22:0022
 %%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -2140,7 +2140,7 @@
 0000000000000000000000000000000000000000000000000000000000000000
 cleartomark
 %%EndFont 
-TeXDict begin 55387786 39139632 1000 600 600 (refcard.dvi)
+TeXDict begin 52099146 40258431 1000 600 600 (refcard.dvi)
 @start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 134[35
 3[38 24 29 30 1[36 36 40 58 18 2[22 36 33 1[33 36 33
 33 36 51[26 45[{}19 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
@@ -2169,7 +2169,9 @@
 %%BeginSetup
 %%Feature: *Resolution 600dpi
 TeXDict begin
-%%PaperSize: A4
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
  @landscape end
 %%EndSetup
 %%Page: 1 1
--- a/lib-src/makefile.w32-in	Sun Apr 22 12:12:29 2007 +0000
+++ b/lib-src/makefile.w32-in	Sun Apr 22 12:42:47 2007 +0000
@@ -24,7 +24,7 @@
 
 .PHONY: $(ALL)
 
-VERSION		= 22.0.96
+VERSION		= 22.0.98
 
 LOCAL_FLAGS	= -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
 		  -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
--- a/lisp/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,694 @@
+2007-04-17  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/cal-dst.el (calendar-dst-find-startend): If YEAR cannot
+	be encoded, fall back to current year.
+
+2007-04-14  Kevin Ryde  <user42@zip.com.au>
+
+	* arc-mode.el (archive-lzh-summarize): Only apply the "downcase if
+	all upcase" rule to OS-ID 0 "generic".  Always downcase for OS-ID
+	M "MSDOS".
+
+2007-04-16  Chong Yidong  <cyd@stupidchicken.com>
+
+	* progmodes/python.el (python-end-of-block): Avoid looping forever
+	if python-next-statement fails.
+
+2007-04-16  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+	* textmodes/bibtex.el (bibtex-entry-field-alist): Use defcustom.
+
+2007-04-16  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* progmodes/perl-mode.el (perl-indent-level): Mark as safe local var.
+	* progmodes/cperl-mode.el (cperl-indent-level): Likewise.
+
+2007-04-15  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc.el (calc-version): New function.
+	(calc-trail-mode): Shorten the title.
+
+2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* mail/footnote.el (footnote-style): Clarify docstring to state
+	that customizing this only applies to future footnotes.
+
+2007-04-15  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+	* textmodes/bibtex.el (bibtex-field-list): Use functionp.
+	(bibtex-make-field): Check that INIT is a string. Use functionp.
+
+2007-04-14  Glenn Morris  <rgm@gnu.org>
+
+	* complete.el (PC-goto-end): New buffer-local variable.
+	(PC-do-completion-end): Make buffer-local.
+	(partial-completion-mode) <choose-completion-string-functions>:
+	Do not go to the end of the minibuffer if PC-goto-end is non-nil.
+	(PC-do-completion): New optional fourth argument GOTO-END.  Add a
+	doc string.  Set PC-goto-end for choose-completion.
+	(PC-lisp-complete-symbol): Pass non-nil GOTO-END arg to
+	PC-do-completion.
+
+	* textmodes/bibtex.el (bibtex-insert-kill): Pass non-nil NODELIM
+	arg to bibtex-make-field.
+	(bibtex-make-field): Add optional fourth arg NODELIM.  Insert
+	delimiters around INIT unless this arg is non-nil.
+
+2007-04-14  Nick Roberts  <nickrob@snap.net.nz>
+
+	* tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the
+	global map isn't modified
+
+2007-04-14  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/appt.el (appt-disp-window): Do not split small windows.
+	Suggested by Jeff Miller <jmiller@cablespeed.com>.
+
+2007-04-13  Chong Yidong  <cyd@stupidchicken.com>
+
+	* progmodes/compile.el (compilation-start): Revert 2007-03-25
+	change.
+
+	* files.el: Ditto.
+
+2007-04-13  Juanma Barranquero  <lekktu@gmail.com>
+
+	* cus-edit.el (minibuffer, auto-save): Fix typos in docstrings.
+
+	* term.el (term-buffer-maximum-size, term-exec, term-escape-char)
+	(term-set-escape-char, term-termcap-format, term-get-old-input-default)
+	(term-skip-prompt, term-send-string, term-send-region, term-pager-page)
+	(term-pager-help): Fix typos in docstrings.
+
+	* wid-edit.el (widget-documentation): Fix typo in docstring.
+
+	* progmodes/ebnf2ps.el (ebnf-insert-style, ebnf-merge-style):
+	Fix typos in error messages.
+
+2007-04-13  Martin Rudalics  <rudalics@gmx.at>
+
+	* emacs-lisp/edebug.el (edebug-pop-to-buffer): Don't select
+	window marked as dedicated.
+
+	* mail/footnote.el (footnote-latin-string): New variable.
+	(footnote-latin-regexp): Redefined as regexp alternative.
+	(Footnote-latin): Use footnote-latin-string instead of
+	footnote-latin-regexp.
+
+2007-04-13  Glenn Morris  <rgm@gnu.org>
+
+	* tmm.el (tmm-get-keybind): Use car-safe to avoid errors with
+	inherited keymaps.
+
+2007-04-12  Chong Yidong  <cyd@stupidchicken.com>
+
+	* outline.el (outline-get-next-sibling): Clarify docstring.
+	(outline-get-last-sibling): Handle case where we are at the first
+	heading.  Clarify docstring.
+
+2007-04-12  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gud.el (gud-minor-mode-map): Make go button same
+	length as stop button to lessen flicker.
+	(jdb): Add gud-print.
+	(gud-find-expr): Jdb prints the expression with the value, so
+	don't insert it in the output.
+
+2007-04-11  Jason Rumney  <jasonr@gnu.org>
+
+	* dnd.el (dnd-get-local-file-name): Decode both upper and lower
+	case hex.  Do not try to decode non-hex letters.
+
+2007-04-11  Markus Triska  <markus.triska@gmx.at>
+
+        * emacs-lisp/byte-opt.el (byte-optimize-backward-char)
+        (byte-optimize-backward-word): Remove (move to bytecomp.el).
+	(byte-optimize-form-code-walker): Evaluate pure function calls if
+	possible.
+	(byte-optimize-all-constp): New function.
+
+        * emacs-lisp/bytecomp.el (byte-compile-char-before): Improve
+        numeric argument case.
+        (byte-compile-backward-char, byte-compile-backward-word): New
+        functions, performing rewriting previously done in byte-opt.el.
+        Fix their "Fixme" item (restriction to numeric arguments).
+
+2007-04-11  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* desktop.el (desktop-save, desktop-create-buffer): Replace mapcar with
+	dolist.
+	(after-init-hook): Don't quote lambda.
+	(desktop-first-buffer): Don't wrap it in eval-when-compile.
+	(desktop-internal-v2s): Remove unused var `el'.
+	(desktop-buffer-major-mode, desktop-buffer-locals): Move out of
+	desktop-restore-file-buffer.
+	(desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of
+	desktop-create-buffer.
+
+2007-04-10  Chong Yidong  <cyd@stupidchicken.com>
+
+	* woman.el (woman-decode-buffer): Postpone macro-set check...
+	(woman-decode-region): ...to here.
+
+2007-04-10  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* startup.el (tty-handle-args): Use %S to log ARGS.
+
+2007-04-10  Glenn Morris  <rgm@gnu.org>
+
+	* dframe.el (dframe-frame-mode): Do not set auto-show-mode, since
+	it is obsolete and has no effect.
+
+	* dos-w32.el (default-buffer-file-type): Add defvar to quieten
+	byte-compiler.
+
+	* progmodes/cperl-mode.el (cperl-mode): Remove unnecessary call to
+	obsolete function make-local-hook.
+
+	* progmodes/dcl-mode.el (top-level): Move (require 'tempo) to
+	start to quieten byte-compiler.
+
+2007-04-10  Markus Triska  <markus.triska@gmx.at>
+
+	* emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move
+	to bytecomp.el as byte-compile-char-before).
+	* emacs-lisp/bytecomp.el (byte-compile-char-before):
+	New function (modified replacement for byte-optimize-char-before in
+	byte-opt.el).
+
+2007-04-09  Alan Mackenzie  <acm@muc.de>
+
+	* startup.el (inhibit-splash-screen): Emphatically state that it
+	can't be set in site-start.el.
+
+2007-04-09  Masatake YAMATO  <jet@gyve.org>
+
+	* progmodes/cc-subword.el (c-capitalize-subword): More closely
+	mimic the behavior of `capitalize-word'.  Do not move point with a
+	negative argument.  Based on tiny change by Paul Curry.
+
+2007-04-09  Paul Curry  <dashteacup@gmail.com>  (tiny change)
+
+	* progmodes/cc-subword.el (c-downcase-subword, c-upcase-subword):
+	Don't move point if ARG is negative.
+
+2007-04-09  Alan Mackenzie  <acm@muc.de>
+
+	Changes to make `narrow-to-defun' and `mark-defun' work properly
+	in CC Mode:
+
+	* progmodes/cc-defs.el (c-beginning-of-defun-1):
+	* progmodes/cc-cmds.el (c-beginning-of-defun, c-end-of-defun):
+	Bind beginning/end-of-defun-function to nil around calls to
+	beginning/end-of-defun.
+
+	* progmodes/cc-langs.el (beginning-of-defun-function)
+	(end-of-defun-function): New c-lang-setvar's.
+
+	* progmodes/cc-awk.el (c-awk-beginning-of-defun): Add "(or arg
+	(setq arg 1))" to enable non-interactive call.
+
+2007-04-09  Eli Zaretskii  <eliz@gnu.org>
+
+	* simple.el (set-mark-command): Doc fix.
+
+2007-04-09  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gud.el (gdb): Restore existing session if user
+	tries to start a second one in graphical mode.
+
+2007-04-08  Martin Rudalics  <rudalics@gmx.at>
+
+	* cus-start.el <scroll-preserve-screen-position>: Add choices.
+
+2007-04-08  Johan Bockg,Ae(Brd  <bojohan+news@dd.chalmers.se>
+
+	* term/xterm.el (terminal-init-xterm): Fix key definitions.
+	Add binding for C-M-SPC.
+
+2007-04-08  Richard Stallman  <rms@gnu.org>
+
+	* pcomplete.el (pcomplete-read-event): One single definition,
+	and not a defsubst.
+
+2007-04-08  Chong Yidong  <cyd@stupidchicken.com>
+
+	* progmodes/cc-cmds.el (c-end-of-defun): Tidy up, to eliminate
+	byte-compiler warning "value unused".
+
+2007-04-08  Andreas Schwab  <schwab@suse.de>
+
+	* term/xterm.el (terminal-init-xterm): Add bindings for keypad keys.
+
+2007-04-07  Glenn Morris  <rgm@gnu.org>
+
+	* calendar/calendar.el (diary-font-lock-keywords, diary-live-p):
+	Autoload these functions.
+	(diary-date-forms): Add a custom :set form.
+
+	* calendar/diary-lib.el (diary-set-maybe-redraw): Move definition
+	before first use.
+	(diary-font-lock-keywords): New function with old code for
+	initialization of variable of same name.
+
+2007-04-07  David Hansen  <david.hansen@gmx.net>  (tiny change)
+
+	* progmodes/cc-cmds.el (c-electric-paren): Fix space-before-funcall
+	clean-up: only insert space when on identifier, etc.
+
+2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
+
+	* progmodes/grep.el (grep-find-use-xargs): Rewrite docstring.
+
+	* net/tls.el (open-tls-stream): Properly handle case where there
+	is no associated buffer.
+
+2007-04-07  Glenn Morris  <rgm@gnu.org>
+
+	* ffap.el (ffap-file-at-point): Lower the priority of the
+	ffap-ftp-sans-slash-regexp check.
+
+2007-04-06  Alan Mackenzie  <acm@muc.de>
+
+	Fix fontification of labels, and other things with ":".
+
+	* progmodes/cc-engine.el (c-forward-label): The function now
+	returns 'goto-target, 'qt-2kwds-colon, 'qt-1kwd-colon, as well as
+	the former t.
+
+	* progmodes/cc-fonts.el (c-font-lock-declarations): Interpret the
+	new return code from c-forward-label, fontifying tokens properly.
+	Add some general comments throughout the file.
+
+2007-04-06  Chong Yidong  <cyd@stupidchicken.com>
+
+	* textmodes/flyspell.el (flyspell-duplicate, flyspell-incorrect):
+	Revert 2006-01-27 change.
+
+	* diff-mode.el (diff-mode): Revert 2007-03-04 change.
+
+	* menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change.
+
+	* desktop.el (desktop-create-buffer, desktop-save):
+	Revert 2004-11-12 change for lack of copyright papers.
+
+	* dired-x.el (dired-guess-shell-case-fold-search): Delete var.
+	(dired-guess-default): Respect case.
+
+	* isearch.el (isearch-forward): Revert 1998-08-26 doc change.
+
+	* emacs-lisp/byte-opt.el (byte-optimize-pure-func): Remove function;
+	was originally checked in as byte-optimize-concat on 1997-11-02.
+
+	* mail/sendmail.el (mail-text, mail-mode): Revert extant pieces of
+	1995-05-19 doc changes.
+
+2007-04-06  Kim F. Storm  <storm@cua.dk>
+
+	* loadhist.el (read-feature): Reimplement.  New optional arg LOADED-P.
+	(unload-feature): Update interactive spec accordingly.
+
+	* progmodes/grep.el (grep-program): Remove commentary about zgrep.
+
+2007-04-06  John Paul Wallington  <jpw@pobox.com>
+
+	* subr.el (with-case-table): Use `make-symbol' to avoid variable
+	capture.  Restore the table in the same buffer.
+
+	* font-lock.el (lisp-font-lock-keywords-2): Add `with-case-table'.
+
+2007-04-05  Chong Yidong  <cyd@stupidchicken.com>
+
+	* emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
+	Print entire form.
+
+2007-04-05  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gdb-ui.el (breakpoint-disabled): Tweak face (again)
+	for low-color displays.
+
+2007-04-05  Glenn Morris  <rgm@gnu.org>
+
+	* play/5x5.el, play/animate.el, play/dissociate.el, play/doctor.el,
+	* play/gomoku.el, play/landmark.el, play/tetris.el, play/zone.el:
+	Seed random number generator on loading.
+
+	* emacs-lisp/authors.el (top-level): Provide self.
+
+	* play/animate.el (top-level): Provide self.
+
+2007-04-04  Alan Mackenzie  <acm@muc.de>
+
+	* progmodes/cc-vars.el (c-special-indent-hook): Amend doc-string
+	to mention c-syntactic-indentation.
+
+2007-04-04  Chong Yidong  <cyd@stupidchicken.com>
+
+	* subr.el (with-case-table): New macro.
+
+	* international/mule.el (ascii-case-table): New var.
+
+	* mail/smtpmail.el (smtpmail-via-smtp): Use ascii-case-table when
+	downcasing.
+
+2007-04-03  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gud.el (gud-minor-mode-map): Simplify.
+
+	* t-mouse.el (t-mouse-make-event-element): Don't use the left edge
+	of the window if we're outside it e.g menu-bar.
+
+	* xt-mouse.el (xterm-mouse-event): Don't use the left edge of the
+	window if we're outside it e.g menu-bar.
+
+2007-04-03  Eli Zaretskii  <eliz@gnu.org>
+
+	* mail/rmail.el (rmail-convert-to-babyl-format): Don't try to
+	decode base-64 encoded body if its content-type is something other
+	than text/* or message/*.
+
+2007-04-03  Juanma Barranquero  <lekktu@gmail.com>
+
+	* simple.el (activate-mark-hook): Fix typo in docstring.
+
+2007-04-03  Nick Roberts  <nickrob@snap.net.nz>
+
+	* tmm.el (tmm-c-prompt): Initialize.
+	(tmm-menubar): Deal with extended menu-items at top level.
+	(tmm-get-keybind): Handle bindings redefined/undefined locally.
+	(tmm-prompt): Handle visibility of top level menu-items.
+
+	* progmodes/gud.el (gud-menu-map): Simplify.
+	(gud-minor-mode-map): Add tool-bar like bindings to the text mode
+	menubar.
+
+2007-04-02  Chong Yidong  <cyd@stupidchicken.com>
+
+	* mail/smtpmail.el (smtpmail-via-smtp): Revert last change.
+
+	* comint.el (comint-send-input): Widen the buffer first.
+
+	* info.el (Info-fontify-maximum-menu-size): Revert to 100000.
+
+2007-04-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Only obey
+	emacs-lisp-docstring-fill-column in emacs-lisp-mode.
+
+	* newcomment.el (comment-search-forward): Discard comment starters
+	before point.
+
+2007-04-01  Guanpeng Xu  <herberteuler@hotmail.com>
+
+	* mouse.el (mouse-set-secondary): Update mouse-secondary-overlay.
+
+2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
+
+	* mail/smtpmail.el (smtpmail-via-smtp): Use standard case table
+	when downcasing.
+
+	* button.el (previous-button): Rewrite to account for adjacent buttons.
+
+2007-04-01  J.D. Smith  <jdsmith@as.arizona.edu>
+
+	* progmodes/idlwave.el (idlwave-auto-fill):
+	Revert paragraph-separate change.
+
+	* progmodes/idlw-shell.el (idlwave-shell-break-in):
+	Simplify module calc.
+	(idlwave-shell-set-bp-in-module): Compute module.
+
+2007-03-31  Glenn Morris  <rgm@gnu.org>
+
+	* emacs-lisp/timer.el (run-at-time): Doc fix.
+
+	* emacs-lisp/warnings.el (display-warning): If we create the
+	buffer displaying the warning, disable undo there.
+
+2007-03-31  Michael Albinus  <michael.albinus@gmx.de>
+
+	* net/tramp.el (tramp-register-file-name-handler)
+	(tramp-register-completion-file-name-handler): New defsubst,
+	derived from `tramp-register-file-name-handlers'.  The split is
+	necessary because Tramp's file name handlers must be registered at
+	different startup places.
+
+2007-03-31  Chong Yidong  <cyd@stupidchicken.com>
+
+	* progmodes/hideshow.el (turn-off-hideshow): New function.
+	(hs-minor-mode): Use it instead of a lambda expression in
+	change-major-mode-hook.
+
+2007-03-31  David Kastrup  <dak@gnu.org>
+
+	* woman.el (woman-Cyg-to-Win): Don't convert cons cells
+	corresponding to MANPATH_MAP entries.
+	(woman-man.conf-path, woman-parse-man.conf): Doc fix.
+	(woman-parse-man.conf): Use more discriminating man.conf name.
+	(woman-parse-man.conf): Parse MANPATH_MAP entries.
+	(woman-manpath): Doc fix and type fix.
+	(woman-cached-data): Check for MANPATH_MAP entries.
+	(woman-expand-directory-path): Treat MANPATH_MAP entries.
+
+2007-03-31  Stuart Herring  <herring@lanl.gov>
+
+	* emacs-lisp/sregex.el (sregexq): Doc fix.
+
+2007-03-31  Markus Triska  <markus.triska@gmx.at>
+
+	* flymake.el (flymake-err-line-patterns): Doc fix.
+
+2007-03-30  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* info.el (info-tool-bar-map): Use "exit" for Info-exit.
+	Move to the right.
+
+2007-03-30  Alan Mackenzie  <acm@muc.de>
+
+	* progmodes/cc-cmds.el (c-forward-to-nth-EOF-}): Fix EOB bug.
+
+2007-03-30  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* emacs-lisp/ewoc.el (ewoc--insert-new-node): Take additional arg DLL.
+	Use it, passed in explicitly, instead of from the dynamic binding.
+	(ewoc-create, ewoc-enter-before): Update to use new call sequence.
+
+2007-03-30  Juanma Barranquero  <lekktu@gmail.com>
+
+	* simple.el (blink-matching-open): When in minibuffer, don't
+	search for a match inside the prompt.
+
+2007-03-30  Nick Roberts  <nickrob@snap.net.nz>
+
+	* tmm.el (tmm-menubar): Select the right menu item with the mouse.
+	(tmm-prompt): Don't make the mouse user select the first menu
+	item twice.
+
+2007-03-30  Chong Yidong  <cyd@stupidchicken.com>
+
+	* eshell/esh-proc.el (eshell/kill): Tweak regexp to recognize
+	SIGUSR1 and SIGUSR2.
+
+2007-03-29  Kim F. Storm  <storm@cua.dk>
+
+	* ido.el (ido-read-internal): When reading file or dir, only override
+	minibuffer-local-filename-completion-map, otherwise only override
+	minibuffer-local-completion-map.
+
+2007-03-29  Glenn Morris  <rgm@gnu.org>
+
+	* complete.el (partial-completion-mode): Set PC-do-completion-end
+	to nil after use.
+	(PC-lisp-complete-symbol): Create and use a marker at `end',
+	rather than using point-marker.
+
+2007-03-28  Chong Yidong  <cyd@stupidchicken.com>
+
+	* simple.el (next-error-highlight): Doc fix.
+	(compose-mail): Revert 2007-03-19 change.
+
+2007-03-28  Richard Stallman  <rms@gnu.org>
+
+	* emacs-lisp/edebug.el (edebug-display): Don't go to
+	edebug-outside-buffer if it is dead.
+
+2007-03-28  Juanma Barranquero  <lekktu@gmail.com>
+
+	* view.el (view-mode): Fix typos in docstring.
+
+2007-03-28  Stephen Berman  <Stephen.Berman@gmx.net>
+
+	* recentf.el (recentf-save-file): Add a custom :set function.
+
+2007-03-28  Glenn Morris  <rgm@gnu.org>
+
+	* complete.el (PC-do-completion-end): New variable.
+	(partial-completion-mode) <choose-completion-string-functions>:
+	Use PC-do-completion-end in the non-minibuffer case to replace the
+	correct amount of text.
+	(PC-do-completion): Set PC-do-completion-end for c-c-s-f.
+	(PC-lisp-complete-symbol): Give marker the after-insertion type,
+	to deal with improvements inserted after point.
+
+2007-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* button.el (make-text-button): Add explicit `button' property.
+	(default-button): Don't put a `button' property on it.
+
+	* progmodes/python.el (python-mode): Skip comments when parsing.
+
+	* vc-arch.el (vc-with-current-file-buffer): New macro.
+	(vc-arch-file-source-p): Use it to avoid infloop.
+
+2007-03-28  David Hansen  <david.hansen@gmx.net>  (tiny change)
+
+	* emacs-lisp/lisp.el (lisp-complete-symbol):
+	Fix call to get-buffer-window to find windows in other frames.
+
+2007-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* comint.el (comint-proc-query, comint-dynamic-list-completions):
+	Fix calls to get-buffer-window to find windows in other frames.
+	Reported by David Hansen <david.hansen@gmx.net>.
+
+2007-03-27   Kevin Ryde  <user42@zip.com.au>
+
+	* info.el (Info-display-images-node): On a text-only terminal,
+	show the "text" or "alt" parts of the image blobs.
+
+2007-03-27  Glenn Morris  <rgm@gnu.org>
+
+	* complete.el (PC-do-completion): Compute completion-base-size in
+	the non-filename case, rather than setting to nil.
+	(PC-lisp-complete-end): New variable.
+	(PC-lisp-complete-symbol): Use PC-lisp-complete-end to store the
+	original end in a series of consecutive invocations.
+
+	* calendar/calendar.el (calendar-mode-hook): Declare it.
+
+	* calendar/diary-lib.el (diary-live-p): Do not check for
+	diary-selective-display.
+
+2007-03-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* replace.el (occur-next-error): *Occur* might not be displayed in the
+	selected frame.  Reported by David Hansen <david.hansen@gmx.net>.
+
+2007-03-26  Richard Stallman  <rms@gnu.org>
+
+	* textmodes/flyspell.el (flyspell-large-region):
+	Use ispell-call-process-region.
+
+2007-03-26  Johan Bockg,Ae(Brd  <bojohan+sf@dd.chalmers.se>
+
+	* emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble):
+	Use prin1 instead of princ.
+
+2007-03-25  Chong Yidong  <cyd@stupidchicken.com>
+
+	* faces.el (face-set-after-frame-default): Revert 2007-03-10 change.
+	Merge in X resources before global face.
+
+	* progmodes/compile.el (compilation-start): Save compilation-directory
+	rather than default-directory as local var.
+	(compilation-directory): Mark as safe local var.
+
+	* files.el: Don't mark default-directory as a safe local var.
+
+2007-03-25  Alan Mackenzie  <acm@muc.de>
+
+	* progmodes/cc-mode.el (c-before-change): Fix BOB bug.
+	* progmodes/cc-engine.el: Fix typo.
+
+2007-03-25  Juri Linkov  <juri@jurta.org>
+
+	* compare-w.el (compare-windows): Rename customization group
+	`compare-w' to `compare-windows'.
+	(compare-windows-whitespace, compare-ignore-whitespace)
+	(compare-ignore-case, compare-windows-sync)
+	(compare-windows-sync-string-size, compare-windows-recenter)
+	(compare-windows-highlight, compare-windows): Change group name in
+	the `group' tag from `compare-w' to `compare-windows'.
+	(compare-windows-sync): Add option `nil' for no sync.  Doc fix.
+
+2007-03-24  Markus Triska  <markus.triska@gmx.at>
+
+	* expand.el: Change example to always enable abbrev-mode,
+	and remove redundant `function'.
+	(expand-abbrev-hook): Add autoload cookie.
+
+2007-03-24  Ryan Yeske  <rcyeske@gmail.com>
+
+	* emacs-lisp/testcover.el (testcover-start, testcover-end)
+	(testcover-mark-all, testcover-unmark-all): Add prompts to
+	interactive specs.
+
+2007-03-24  Jason Rumney  <jasonr@gnu.org>
+
+	* autorevert.el (find-file-hook, auto-revert-tail-mode):
+	Use file size in bytes for auto-revert-tail-pos not characters.
+
+2007-03-24  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* vc-rcs.el (vc-rcs-annotate-command):
+	Set text property :vc-annotate-prefix on the annotation text.
+	(vc-rcs-annotate-time): Instead of searching for ": ",
+	search for end of text propertized with :vc-annotate-prefix.
+
+2007-03-24  Martin Rudalics  <rudalics@gmx.at>
+
+	* whitespace.el (top level): Remove calls putting
+	permanent-local nil property since these are no-ops.
+
+	* man.el (Man-support-local-filenames): Assure that
+	default-directory exists when doing call-process.
+
+2007-03-23  David Vazquez  <xeos00@gmail.com>  (tiny change)
+
+	* progmodes/m4-mode.el (m4-m4-buffer, m4-m4-region):
+	Fix omission bug: Use m4-program-options to construct shell command.
+
+2007-03-23  David Kastrup  <dak@gnu.org>
+
+	* progmodes/cc-mode.el (c-make-emacs-variables-local):
+	Use `mapcar' rather than `mapcan' to silence compiler warning.
+
+2007-03-22  Ralf Angeli  <angeli@caeruleus.net>
+
+	* textmodes/reftex.el, textmodes/reftex-vars.el,
+	* textmodes/reftex-toc.el, textmodes/reftex-sel.el,
+	* textmodes/reftex-ref.el, textmodes/reftex-parse.el,
+	* textmodes/reftex-index.el, textmodes/reftex-global.el,
+	* textmodes/reftex-dcr.el, textmodes/reftex-cite.el,
+	* textmodes/reftex-auc.el: Add maintainer address.
+
+2007-03-22  Carsten Dominik  <dominik@science.uva.nl>
+
+	* textmodes/org.el (org-agenda-mode, org-table-edit-formulas):
+	Make sure that `global-font-lock-mode' does not turn on font-lock
+	in these buffers.
+
+2007-03-21  Kim F. Storm  <storm@cua.dk>
+
+	* xt-mouse.el (xt-mouse-epoch): New variable.
+	(xterm-mouse-event): Use float-time.
+
+2007-03-21  Nick Roberts  <nickrob@snap.net.nz>
+
+	* xt-mouse.el (xterm-mouse-event): Compute a timestamp using
+	current-time.
+
+2007-03-21  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* complete.el (read-file-name-internal): Don't add the final > if the
+	completion is not finished (re-application of this patch, which was
+	accidentally undone by Eli).
+
+2007-03-21  Chong Yidong  <cyd@stupidchicken.com>
+
+	* emulation/viper.el (viper-non-hook-settings): Handle mouse
+	clicks in describe-key and describe-key-briefly advice a little better.
+
 2007-03-21  Juanma Barranquero  <lekktu@gmail.com>
 
 	* server.el (server-process-filter): Cancel any pending isearch.
@@ -71,8 +762,8 @@
 
 2007-03-19  Martin Rudalics  <rudalics@gmx.at>
 
-	* font-lock.el (lisp-font-lock-keywords-1): Highlight
-	define-globalized-minor-mode as a keyword.
+	* font-lock.el (lisp-font-lock-keywords-1):
+	Highlight define-globalized-minor-mode as a keyword.
 
 2007-03-19  Kim F. Storm  <storm@cua.dk>
 
@@ -110,8 +801,7 @@
 2007-03-18  Detlev Zundel  <dzu@gnu.org>
 
 	* emacs-lisp/re-builder.el (reb-update-overlays): Do not mark
-	zero-width regexps as invalid but rather at least count them
-	correctly.
+	zero-width regexps as invalid but rather at least count them correctly.
 
 2007-03-18  Thien-Thi Nguyen  <ttn@gnu.org>
 
@@ -143,8 +833,8 @@
 
 2007-03-17  Chong Yidong  <cyd@stupidchicken.com>
 
-	* simple.el (line-move-1): Respect
-	`inhibit-line-move-field-capture' property.
+	* simple.el (line-move-1):
+	Respect `inhibit-line-move-field-capture' property.
 
 2007-03-13  Chong Yidong  <cyd@stupidchicken.com>
 
@@ -157,7 +847,7 @@
 2007-03-12  Lawrence Mitchell  <wence@gmx.li>  (tiny change)
 
 	* tempo.el (tempo-insert): Deal with 'r> if it appears
- 	specified with a prompt argument.
+	specified with a prompt argument.
 
 2007-03-12  Carsten Dominik  <dominik@science.uva.nl>
 
@@ -403,7 +1093,7 @@
 	* emacs-lisp/lisp-mode.el (calculate-lisp-indent):
 	Redo previous change.
 
-2007-03-04  Kevin Rodgers  <kevin.d.rodgers@gmail.com> (tiny change)
+2007-03-04  Kevin Rodgers  <kevin.d.rodgers@gmail.com>  (tiny change)
 
 	* diff-mode.el (diff-mode): Doc fix.
 
@@ -493,7 +1183,7 @@
 	* ps-print.el: Replace (defvar VAR nil) by (defvar VAR).
 	(ps-setup): Print which Emacsen is running ps-print package.
 
-2007-03-01  Stuart Herring  <herring@lanl.gov>  (tiny change)
+2007-03-01  Stuart Herring  <herring@lanl.gov>
 
 	* files.el (set-auto-mode-0): Use `indirect-function'.
 	(hack-one-local-variable): Don't reapply current major mode.
@@ -537,7 +1227,7 @@
 
 	* help.el (where-is): Fail gracefully when not passed a command.
 
-2007-02-28  Stuart Herring  <herring@lanl.gov>  (tiny change)
+2007-02-28  Stuart Herring  <herring@lanl.gov>
 
 	* find-lisp.el (find-lisp-default-directory-predicate):
 	Fix bug: Do symlink check on expanded filename.
@@ -1437,7 +2127,7 @@
 2007-01-27  Guanpeng Xu  <herberteuler@hotmail.com>
 
 	* add-log.el (add-log-current-defun): Skip the semicolon ``;'' for
-        enum/union/struct/class definition.
+	enum/union/struct/class definition.
 	Revert change to call `forward-sexp' multiple times.
 
 2007-01-27  Chong Yidong  <cyd@stupidchicken.com>
@@ -2044,7 +2734,7 @@
 	* international/mule-cmds.el (select-safe-coding-system-interactively):
 	Fix message.
 
-2006-12-30  Kevin Rodgers  <kevin.d.rodgers@gmail.com> (tiny change)
+2006-12-30  Kevin Rodgers  <kevin.d.rodgers@gmail.com>  (tiny change)
 
 	* files.el (backup-buffer): Show entire backup file name in msg.
 
@@ -2501,20 +3191,20 @@
 2006-12-09  Martin Rudalics  <rudalics@gmx.at>
 
 	* wdired.el (wdired-change-to-wdired-mode, wdired-finish-edit)
-        (wdired-search-and-rename): Simplify code.
+	(wdired-search-and-rename): Simplify code.
 	(wdired-preprocess-files, wdired-preprocess-perms): Make
-        read-only property of preceding character rear-nonsticky to
-        avoid that it can be modified.  Put old-name and old-link
-        properties on character preceding name and replace
-        put-text-property by add-text-properties.
-        (wdired-get-filename, wdired-get-previous-link): Get old-name
-        and old-link properties from character preceding name and
-        simplify code.
+	read-only property of preceding character rear-nonsticky to
+	avoid that it can be modified.	Put old-name and old-link
+	properties on character preceding name and replace
+	put-text-property by add-text-properties.
+	(wdired-get-filename, wdired-get-previous-link): Get old-name
+	and old-link properties from character preceding name and
+	simplify code.
 	(wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit)
-        (wdired-perms-to-number): Make local-map property
-        rear-nonsticky to avoid that text following permissions may be
-        modified.  Use add-text-properties instead of put-text-property
-        when changing a permission bit.
+	(wdired-perms-to-number): Make local-map property
+	rear-nonsticky to avoid that text following permissions may be
+	modified.  Use add-text-properties instead of put-text-property
+	when changing a permission bit.
 	(wdired-change-to-dired-mode): Remove stickiness properties.
 
 2006-12-09  Juanma Barranquero  <lekktu@gmail.com>
@@ -12650,7 +13340,7 @@
 	English aspell dictionary is installed, use the first entry of
 	ispell-dictionary-alist-1.
 
-2006-01-27  Kevin Rodgers  <ihs_4664@yahoo.com> (tiny change)
+2006-01-27  Kevin Rodgers  <ihs_4664@yahoo.com>  (tiny change)
 
 	* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
 	Doc fix.
@@ -14672,7 +15362,7 @@
 	(hi-lock-find-patterns, hi-lock-font-lock-hook):
 	Replace hi-lock-buffer-mode with hi-lock-mode.
 
-2005-12-10  Kevin Rodgers  <ihs_4664@yahoo.com> (tiny change)
+2005-12-10  Kevin Rodgers  <ihs_4664@yahoo.com>  (tiny change)
 
 	* emacs-lisp/lisp.el (lisp-complete-symbol): Regenerate the
 	completion list, even after a partial completion has been
--- a/lisp/arc-mode.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/arc-mode.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1415,7 +1415,7 @@
 	     (time2   (archive-l-e (+ p 17) 2))	;and UNIX format in level 2 header.)
 	     (hdrlvl  (char-after (+ p 20))) ;header level
 	     thsize		;total header size (base + extensions)
-	     fnlen efnname fiddle ifnname width p2
+	     fnlen efnname osid fiddle ifnname width p2
 	     neh	;beginning of next extension header (level 1 and 2)
 	     mode modestr uid gid text dir prname
 	     gname uname modtime moddate)
@@ -1474,7 +1474,22 @@
 	      (setq thsize (- neh p))))
 	(if (= hdrlvl 0)  ;total header size
 	    (setq thsize hsize))
-	(setq fiddle  (if efnname (string= efnname (upcase efnname))))
+        ;; OS ID field not present in level 0 header, use code 0 "generic"
+        ;; in that case as per lha program header.c get_header()
+	(setq osid (cond ((= hdrlvl 0)  0)
+                         ((= hdrlvl 1)  (char-after (+ p 22 fnlen 2)))
+                         ((= hdrlvl 2)  (char-after (+ p 23)))))
+        ;; Filename fiddling must follow the lha program, otherwise the name
+        ;; passed to "lha pq" etc won't match (which for an extract silently
+        ;; results in no output).  As of version 1.14i it goes from the OS ID,
+        ;; - For 'M' MSDOS: msdos_to_unix_filename() downcases always, and
+        ;;   converts "\" to "/".
+        ;; - For 0 generic: generic_to_unix_filename() downcases if there's
+        ;;   no lower case already present, and converts "\" to "/".
+        ;; - For 'm' MacOS: macos_to_unix_filename() changes "/" to ":" and
+        ;;   ":" to "/"
+	(setq fiddle (cond ((= ?M osid) t)
+                           ((= 0 osid)  (string= efnname (upcase efnname)))))
 	(setq ifnname (if fiddle (downcase efnname) efnname))
 	(setq prname (if dir (concat dir ifnname) ifnname))
 	(setq width (if prname (string-width prname) 0))
--- a/lisp/autorevert.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/autorevert.el	Sun Apr 22 12:42:47 2007 +0000
@@ -278,7 +278,7 @@
 (add-hook 'find-file-hook
 	  (lambda ()
 	    (set (make-local-variable 'auto-revert-tail-pos)
-		 (save-restriction (widen) (1- (point-max))))))
+		 (nth 7 (file-attributes buffer-file-name)))))
 
 ;; Functions:
 
@@ -341,7 +341,7 @@
       (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t)
       (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position
 	  (set (make-local-variable 'auto-revert-tail-pos)
-	       (save-restriction (widen) (1- (point-max)))))
+	       (nth 7 (file-attributes buffer-file-name))))
       ;; let auto-revert-mode set up the mechanism for us if it isn't already
       (or auto-revert-mode
 	  (let ((auto-revert-tail-mode t))
--- a/lisp/button.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/button.el	Sun Apr 22 12:42:47 2007 +0000
@@ -89,9 +89,6 @@
 ;; Prevent insertions adjacent to the text-property buttons from
 ;; inheriting its properties.
 (put 'default-button 'rear-nonsticky t)
-;; Text property buttons don't have a `button' property of their own, so
-;; they inherit this.
-(put 'default-button 'button t)
 
 ;; A `category-symbol' property for the default button type
 (put 'button 'button-category-symbol 'default-button)
@@ -316,7 +313,11 @@
       (setcar (cdr type-entry)
 	      (button-category-symbol (car (cdr type-entry))))))
   ;; Now add all the text properties at once
-  (add-text-properties beg end properties)
+  (add-text-properties beg end
+                       ;; Each button should have a non-eq `button'
+                       ;; property so that next-single-property-change can
+                       ;; detect boundaries reliably.
+                       (cons 'button (cons (list t) properties)))
   ;; Return something that can be used to get at the button.
   beg)
 
@@ -365,16 +366,29 @@
 	     (next-button pos))))
 
 (defun previous-button (pos &optional count-current)
-  "Return the Nth button before position POS in the current buffer.
+  "Return the previous button before position POS in the current buffer.
 If COUNT-CURRENT is non-nil, count any button at POS in the search,
 instead of starting at the next button."
-  (unless count-current
-    (setq pos (previous-single-char-property-change pos 'button)))
-  (and (> pos (point-min))
-       (or (button-at (1- pos))
-	   ;; We must have originally been on a button, and are now in
-	   ;; the inter-button space.  Recurse to find a button.
-	   (previous-button pos))))
+  (let ((button (button-at pos)))
+    (if button
+	(if count-current
+	    button
+	  ;; We started out on a button, so move to its start and look
+	  ;; for the previous button boundary.
+	  (setq pos (previous-single-char-property-change
+		     (button-start button) 'button))
+	  (let ((new-button (button-at pos)))
+	    (if new-button
+		;; We are in a button again; this can happen if there
+		;; are adjacent buttons (or at bob).
+		(unless (= pos (button-start button)) new-button)
+	      ;; We are now in the space between buttons.
+	      (previous-button pos))))
+      ;; We started out in the space between buttons.
+      (setq pos (previous-single-char-property-change pos 'button))
+      (or (button-at pos)
+	  (and (> pos (point-min))
+	       (button-at (1- pos)))))))
 
 
 ;; User commands
--- a/lisp/calc/calc.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calc/calc.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1148,6 +1148,11 @@
 
 (defvar calc-alg-map) ; Defined in calc-ext.el
 
+(defun calc-version ()
+  "Return version of this version of Calc."
+  (interactive)
+  (message (concat "Calc version " calc-version)))
+
 (defun calc-mode ()
   "Calculator major mode.
 
@@ -1258,8 +1263,7 @@
     (set (make-local-variable 'calc-main-buffer) buf))
   (when (= (buffer-size) 0)
     (let ((buffer-read-only nil))
-      (insert (propertize (concat "Emacs Calculator v" calc-version
-				  " by Dave Gillespie\n")
+      (insert (propertize (concat "Emacs Calculator Trail\n")
 			  'font-lock-face 'italic))))
   (run-mode-hooks 'calc-trail-mode-hook))
 
--- a/lisp/calendar/appt.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/appt.el	Sun Apr 22 12:42:47 2007 +0000
@@ -233,8 +233,8 @@
   ;; vars appt-msg-window and appt-visible are dropped.
   (let ((appt-display-format
          (if (eq appt-display-format 'ignore)
-             (cond (appt-msg-window 'window)
-                   (appt-visible 'echo))
+               (cond (appt-msg-window 'window)
+                     (appt-visible 'echo))
            appt-display-format)))
     (cond ((eq appt-display-format 'window)
            (funcall appt-disp-window-function
@@ -457,7 +457,9 @@
 		  (same-window-p (buffer-name appt-disp-buf)))
 	;; By default, split the bottom window and use the lower part.
 	(appt-select-lowest-window)
-        (select-window (split-window)))
+        ;; Split the window, unless it's too small to do so.
+        (when (>= (window-height) (* 2 window-min-height))
+          (select-window (split-window))))
       (switch-to-buffer appt-disp-buf))
     (calendar-set-mode-line
      (format " Appointment in %s minutes. %s " min-to-app new-time))
--- a/lisp/calendar/cal-china.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-china.el	Sun Apr 22 12:42:47 2007 +0000
@@ -43,12 +43,6 @@
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/cal-coptic.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-coptic.el	Sun Apr 22 12:42:47 2007 +0000
@@ -34,12 +34,6 @@
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/cal-dst.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-dst.el	Sun Apr 22 12:42:47 2007 +0000
@@ -31,12 +31,6 @@
 ;; This collection of functions implements the features of calendar.el and
 ;; holiday.el that deal with daylight saving time.
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (require 'calendar)
@@ -266,12 +260,20 @@
 expressions that when evaluated return the start and end dates,
 respectively. This function first attempts to use pre-calculated
 data from `calendar-dst-transition-cache', otherwise it calls
-`calendar-dst-find-data' (and adds the results to the cache)."
+`calendar-dst-find-data' (and adds the results to the cache).
+If dates in YEAR cannot be handled by `encode-time' (e.g. if they
+are too large to be represented as a lisp integer), then rather
+than an error this function returns the result appropriate for
+the current year."
   (let ((e (assoc year calendar-dst-transition-cache))
         f)
     (or e
         (progn
-          (setq e (calendar-dst-find-data (encode-time 1 0 0 1 1 year))
+          (setq e (calendar-dst-find-data
+                   (condition-case nil
+                       (encode-time 1 0 0 1 1 year)
+                     (error
+                      (encode-time 1 0 0 1 1 (nth 5 (decode-time))))))
                 f (nth 4 e)
                 e (list year f (nth 5 e))
                 calendar-dst-transition-cache
--- a/lisp/calendar/cal-french.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-french.el	Sun Apr 22 12:42:47 2007 +0000
@@ -37,12 +37,6 @@
 ;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and
 ;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404.
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/cal-hebrew.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-hebrew.el	Sun Apr 22 12:42:47 2007 +0000
@@ -35,12 +35,6 @@
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/cal-islam.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-islam.el	Sun Apr 22 12:42:47 2007 +0000
@@ -34,12 +34,6 @@
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/cal-iso.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-iso.el	Sun Apr 22 12:42:47 2007 +0000
@@ -34,12 +34,6 @@
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/cal-julian.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-julian.el	Sun Apr 22 12:42:47 2007 +0000
@@ -34,12 +34,6 @@
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/cal-mayan.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-mayan.el	Sun Apr 22 12:42:47 2007 +0000
@@ -43,8 +43,6 @@
 ;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
 ;;                                   Urbana, Illinois 61801
 
-;; Comments, improvements, and bug reports should be sent to Reingold.
-
 ;; Technical details of the Mayan calendrical calculations can be found in
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001), and in
--- a/lisp/calendar/cal-menu.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-menu.el	Sun Apr 22 12:42:47 2007 +0000
@@ -31,12 +31,6 @@
 ;; This collection of functions implements menu bar and popup menu support for
 ;; calendar.el.
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar displayed-month)
--- a/lisp/calendar/cal-move.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-move.el	Sun Apr 22 12:42:47 2007 +0000
@@ -30,12 +30,6 @@
 ;; This collection of functions implements movement in the calendar for
 ;; calendar.el.
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar displayed-month)
--- a/lisp/calendar/cal-persia.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-persia.el	Sun Apr 22 12:42:47 2007 +0000
@@ -30,16 +30,6 @@
 ;; This collection of functions implements the features of calendar.el and
 ;; diary.el that deal with the Persian calendar.
 
-;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
-;; and Nachum Dershowitz, Cambridge University Press (2001).
-
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/cal-x.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/cal-x.el	Sun Apr 22 12:42:47 2007 +0000
@@ -31,12 +31,6 @@
 ;; This collection of functions implements dedicated frames in X for
 ;; calendar.el.
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (require 'calendar)
--- a/lisp/calendar/calendar.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/calendar.el	Sun Apr 22 12:42:47 2007 +0000
@@ -90,12 +90,6 @@
 ;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
 ;; the message BODY containing your mailing address (snail).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar displayed-month)
@@ -301,6 +295,11 @@
   :type 'boolean
   :group 'holidays)
 
+(defcustom calendar-mode-hook nil
+  "Hook run when entering `calendar-mode'."
+  :type 'hook
+  :group 'calendar-hooks)
+
 ;;;###autoload
 (defcustom calendar-load-hook nil
   "List of functions to be called after the calendar is first loaded.
@@ -624,6 +623,10 @@
 				       (choice symbol regexp)))))
   :group 'diary)
 
+(autoload 'diary-font-lock-keywords "diary-lib")
+(autoload 'diary-live-p "diary-lib")
+(defvar diary-font-lock-keywords)
+
 (defcustom diary-date-forms
   (if european-calendar-style
       european-date-diary-pattern
@@ -661,6 +664,15 @@
 			 (repeat (list :inline t :format "%v"
 				       (symbol :tag "Keyword")
 				       (choice symbol regexp)))))
+  :initialize 'custom-initialize-default
+  :set (lambda (symbol value)
+         (unless (equal value (eval symbol))
+           (custom-set-default symbol value)
+           (setq diary-font-lock-keywords (diary-font-lock-keywords))
+           ;; Need to redraw not just to get new font-locking, but also
+           ;; to pick up any newly recognized entries.
+           (and (diary-live-p)
+                (diary))))
   :group 'diary)
 
 ;;;###autoload
--- a/lisp/calendar/diary-lib.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/diary-lib.el	Sun Apr 22 12:42:47 2007 +0000
@@ -29,12 +29,6 @@
 ;; This collection of functions implements the diary features as described
 ;; in calendar.el.
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (require 'calendar)
@@ -263,6 +257,16 @@
 	    (setq attr-list (cdr attr-list)))))
       (list entry ret-attr))))
 
+(defun diary-set-maybe-redraw (symbol value)
+  "Set SYMBOL's value to VALUE, and redraw the diary if necessary.
+Redraws the diary if it is being displayed (note this is not the same as
+just visiting the `diary-file'), and SYMBOL's value is to be changed."
+  (let ((oldvalue (eval symbol)))
+    (custom-set-default symbol value)
+    (and (not (equal value oldvalue))
+         (diary-live-p)
+         ;; Note this assumes diary was called without prefix arg.
+         (diary))))
 
 ;; This can be removed once the kill/yank treatment of invisible text
 ;; (see etc/TODO) is fixed. -- gm
@@ -292,27 +296,22 @@
 
 (defvar diary-saved-point)		; internal
 
+;; The first version of this also checked for diary-selective-display
+;; in the non-fancy case. This was an attempt to distinguish between
+;; displaying the diary and just visiting the diary file. However,
+;; when using fancy diary, calling diary when there are no entries to
+;; display does not create the fancy buffer, nor does it switch on
+;; selective-display in the diary buffer. This means some
+;; customizations will not take effect, eg:
+;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-03/msg00466.html
+;; So the check for selective-display was dropped. This means the
+;; diary will be displayed if one customizes a diary variable while
+;; just visiting the diary-file. This is i) unlikely, and ii) no great loss.
 (defun diary-live-p ()
-  "Return non-nil if the diary is being displayed.
-This is not the same as just visiting the `diary-file'."
+  "Return non-nil if the diary is being displayed."
   (or (get-buffer fancy-diary-buffer)
-      (when diary-file
-        (let ((dbuff (find-buffer-visiting
-                      (substitute-in-file-name diary-file))))
-          (when dbuff
-            (with-current-buffer dbuff
-              diary-selective-display))))))
-
-(defun diary-set-maybe-redraw (symbol value)
-  "Set SYMBOL's value to VALUE, and redraw the diary if necessary.
-Redraws the diary if it is being displayed (note this is not the same as
-just visiting the `diary-file'), and SYMBOL's value is to be changed."
-  (let ((oldvalue (eval symbol)))
-    (custom-set-default symbol value)
-    (and (not (equal value oldvalue))
-         (diary-live-p)
-         ;; Note this assumes diary was called without prefix arg.
-         (diary))))
+      (and diary-file
+           (find-buffer-visiting (substitute-in-file-name diary-file)))))
 
 (defcustom number-of-diary-entries 1
   "Specifies how many days of diary entries are to be displayed initially.
@@ -1990,51 +1989,53 @@
 (eval-when-compile (require 'cal-hebrew)
                    (require 'cal-islam))
 
-(defvar diary-font-lock-keywords
-      (append
-       (diary-font-lock-date-forms calendar-month-name-array
-                                   nil calendar-month-abbrev-array)
-       (when (or (memq 'mark-hebrew-diary-entries
-                       nongregorian-diary-marking-hook)
-                 (memq 'list-hebrew-diary-entries
-                       nongregorian-diary-listing-hook))
-         (require 'cal-hebrew)
-         (diary-font-lock-date-forms
-          calendar-hebrew-month-name-array-leap-year
-          hebrew-diary-entry-symbol))
-       (when (or (memq 'mark-islamic-diary-entries
-                       nongregorian-diary-marking-hook)
-                 (memq 'list-islamic-diary-entries
-                       nongregorian-diary-listing-hook))
-         (require 'cal-islam)
-         (diary-font-lock-date-forms
-          calendar-islamic-month-name-array
-          islamic-diary-entry-symbol))
-       (list
-        (cons
-         (concat "^" (regexp-quote diary-include-string) ".*$")
-         'font-lock-keyword-face)
-        (cons
-         (concat "^" (regexp-quote diary-nonmarking-symbol)
-                 "?\\(" (regexp-quote sexp-diary-entry-symbol) "\\)")
-         '(1 font-lock-reference-face))
-        (cons
-         (concat "^" (regexp-quote diary-nonmarking-symbol))
-         'font-lock-reference-face)
-        (cons
-         (concat "^" (regexp-quote diary-nonmarking-symbol)
-                 "?\\(" (regexp-quote hebrew-diary-entry-symbol) "\\)")
-         '(1 font-lock-reference-face))
-        (cons
-         (concat "^" (regexp-quote diary-nonmarking-symbol)
-                 "?\\(" (regexp-quote islamic-diary-entry-symbol) "\\)")
-         '(1 font-lock-reference-face))
-        '(diary-font-lock-sexps . font-lock-keyword-face)
-        `(,(concat "\\(^\\|\\s-\\)"
-                   diary-time-regexp "\\(-" diary-time-regexp "\\)?")
-          . 'diary-time)))
-      "Forms to highlight in `diary-mode'.")
+(defun diary-font-lock-keywords ()
+  "Return a value for the variable `diary-font-lock-keywords'."
+  (append
+   (diary-font-lock-date-forms calendar-month-name-array
+                               nil calendar-month-abbrev-array)
+   (when (or (memq 'mark-hebrew-diary-entries
+                   nongregorian-diary-marking-hook)
+             (memq 'list-hebrew-diary-entries
+                   nongregorian-diary-listing-hook))
+     (require 'cal-hebrew)
+     (diary-font-lock-date-forms
+      calendar-hebrew-month-name-array-leap-year
+      hebrew-diary-entry-symbol))
+   (when (or (memq 'mark-islamic-diary-entries
+                   nongregorian-diary-marking-hook)
+             (memq 'list-islamic-diary-entries
+                   nongregorian-diary-listing-hook))
+     (require 'cal-islam)
+     (diary-font-lock-date-forms
+      calendar-islamic-month-name-array
+      islamic-diary-entry-symbol))
+   (list
+    (cons
+     (concat "^" (regexp-quote diary-include-string) ".*$")
+     'font-lock-keyword-face)
+    (cons
+     (concat "^" (regexp-quote diary-nonmarking-symbol)
+             "?\\(" (regexp-quote sexp-diary-entry-symbol) "\\)")
+     '(1 font-lock-reference-face))
+    (cons
+     (concat "^" (regexp-quote diary-nonmarking-symbol))
+     'font-lock-reference-face)
+    (cons
+     (concat "^" (regexp-quote diary-nonmarking-symbol)
+             "?\\(" (regexp-quote hebrew-diary-entry-symbol) "\\)")
+     '(1 font-lock-reference-face))
+    (cons
+     (concat "^" (regexp-quote diary-nonmarking-symbol)
+             "?\\(" (regexp-quote islamic-diary-entry-symbol) "\\)")
+     '(1 font-lock-reference-face))
+    '(diary-font-lock-sexps . font-lock-keyword-face)
+    `(,(concat "\\(^\\|\\s-\\)"
+               diary-time-regexp "\\(-" diary-time-regexp "\\)?")
+      . 'diary-time))))
 
+(defvar diary-font-lock-keywords (diary-font-lock-keywords)
+  "Forms to highlight in `diary-mode'.")
 
 ;; Following code from Dave Love <fx@gnu.org>.
 ;; Import Outlook-format appointments from mail messages in Gnus or
--- a/lisp/calendar/holidays.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/holidays.el	Sun Apr 22 12:42:47 2007 +0000
@@ -45,12 +45,6 @@
 ;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
 ;; the message BODY containing your mailing address (snail).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar displayed-month)
--- a/lisp/calendar/lunar.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/lunar.el	Sun Apr 22 12:42:47 2007 +0000
@@ -43,12 +43,6 @@
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/calendar/solar.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/calendar/solar.el	Sun Apr 22 12:42:47 2007 +0000
@@ -53,12 +53,6 @@
 ;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
 ;; and Nachum Dershowitz, Cambridge University Press (2001).
 
-;; Comments, corrections, and improvements should be sent to
-;;  Edward M. Reingold               Department of Computer Science
-;;  (217) 333-6733                   University of Illinois at Urbana-Champaign
-;;  reingold@cs.uiuc.edu             1304 West Springfield Avenue
-;;                                   Urbana, Illinois 61801
-
 ;;; Code:
 
 (defvar date)
--- a/lisp/comint.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/comint.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1502,6 +1502,7 @@
   ;; Note that the input string does not include its terminal newline.
   (let ((proc (get-buffer-process (current-buffer))))
     (if (not proc) (error "Current buffer has no process")
+        (widen)
 	(let* ((pmark (process-mark proc))
 	       (intxt (if (>= (point) (marker-position pmark))
 			  (progn (if comint-eol-on-send (end-of-line))
@@ -1646,8 +1647,8 @@
     (let ((inhibit-read-only t)
 	  (inhibit-modification-hooks t))
       (add-text-properties (overlay-start comint-last-prompt-overlay)
-                           (overlay-end comint-last-prompt-overlay)
-                           (overlay-properties comint-last-prompt-overlay)))))
+			   (overlay-end comint-last-prompt-overlay)
+			   (overlay-properties comint-last-prompt-overlay)))))
 
 (defun comint-carriage-motion (start end)
   "Interpret carriage control characters in the region from START to END.
@@ -2593,7 +2594,7 @@
 	 (proc-mark (process-mark proc)))
     (display-buffer proc-buf)
     (set-buffer proc-buf) ; but it's not the selected *window*
-    (let ((proc-win (get-buffer-window proc-buf))
+    (let ((proc-win (get-buffer-window proc-buf 0))
 	  (proc-pt (marker-position proc-mark)))
       (comint-send-string proc str) ; send the query
       (accept-process-output proc)  ; wait for some output
@@ -2959,7 +2960,7 @@
 (defun comint-dynamic-list-completions (completions)
   "List in help buffer sorted COMPLETIONS.
 Typing SPC flushes the help buffer."
-  (let ((window (get-buffer-window "*Completions*")))
+  (let ((window (get-buffer-window "*Completions*" 0)))
     (setq completions (sort completions 'string-lessp))
     (if (and (eq last-command this-command)
 	     window (window-live-p window) (window-buffer window)
--- a/lisp/compare-w.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/compare-w.el	Sun Apr 22 12:42:47 2007 +0000
@@ -32,7 +32,7 @@
 
 ;;; Code:
 
-(defgroup compare-w nil
+(defgroup compare-windows nil
   "Compare text between windows."
   :prefix "compare-"
   :group 'tools)
@@ -52,18 +52,18 @@
 If the function returns the same value for both windows, then the
 whitespace is considered to match, and is skipped."
   :type '(choice regexp function)
-  :group 'compare-w)
+  :group 'compare-windows)
 
 (defcustom compare-ignore-whitespace nil
   "*Non-nil means `compare-windows' ignores whitespace."
   :type 'boolean
-  :group 'compare-w
+  :group 'compare-windows
   :version "22.1")
 
 (defcustom compare-ignore-case nil
   "*Non-nil means `compare-windows' ignores case differences."
   :type 'boolean
-  :group 'compare-w)
+  :group 'compare-windows)
 
 (defcustom compare-windows-sync 'compare-windows-sync-default-function
   "*Function or regexp that is used to synchronize points in two
@@ -87,10 +87,11 @@
 the nature of the difference units separator.  The variable can
 be made buffer-local.
 
-If the value of this variable is `nil', then function `ding' is
-called to beep or flash the screen when points are mismatched."
-  :type '(choice regexp function)
-  :group 'compare-w
+If the value of this variable is `nil' (option \"No sync\"), then
+no synchronization is performed, and the function `ding' is called
+to beep or flash the screen when points are mismatched."
+  :type '(choice function regexp (const :tag "No sync" nil))
+  :group 'compare-windows
   :version "22.1")
 
 (defcustom compare-windows-sync-string-size 32
@@ -102,7 +103,7 @@
 
 The default value 32 is good for the most cases."
   :type 'integer
-  :group 'compare-w
+  :group 'compare-windows
   :version "22.1")
 
 (defcustom compare-windows-recenter nil
@@ -113,7 +114,7 @@
 The value `(-1 0)' is useful if windows are split vertically,
 and the value `((4) (4))' for horizontally split windows."
   :type '(list sexp sexp)
-  :group 'compare-w
+  :group 'compare-windows
   :version "22.1")
 
 (defcustom compare-windows-highlight t
@@ -125,13 +126,13 @@
   :type '(choice (const :tag "No highlighting" nil)
 		 (const :tag "Persistent highlighting" persistent)
 		 (other :tag "Highlight until next command" t))
-  :group 'compare-w
+  :group 'compare-windows
   :version "22.1")
 
 (defface compare-windows
   '((t :inherit lazy-highlight))
   "Face for highlighting of compare-windows difference regions."
-  :group 'compare-w
+  :group 'compare-windows
   :version "22.1")
 
 (defvar compare-windows-overlay1 nil)
--- a/lisp/complete.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/complete.el	Sun Apr 22 12:42:47 2007 +0000
@@ -187,6 +187,17 @@
 
 	   (define-key global-map [remap lisp-complete-symbol]	'PC-lisp-complete-symbol)))))
 
+(defvar PC-do-completion-end nil
+  "Internal variable used by `PC-do-completion'.")
+
+(make-variable-buffer-local 'PC-do-completion-end)
+
+(defvar PC-goto-end nil
+   "Internal variable set in `PC-do-completion', used in
+`choose-completion-string-functions'.")
+
+(make-variable-buffer-local 'PC-goto-end)
+
 ;;;###autoload
 (define-minor-mode partial-completion-mode
   "Toggle Partial Completion mode.
@@ -239,7 +250,16 @@
    (if partial-completion-mode 'add-hook 'remove-hook)
    'choose-completion-string-functions
    (lambda (choice buffer mini-p base-size)
-     (if mini-p (goto-char (point-max)))
+     ;; When completing M-: (lisp- ) with point before the ), it is
+     ;; not appropriate to go to point-max (unlike the filename case).
+     (if (and (not PC-goto-end)
+              mini-p)
+         (goto-char (point-max))
+       ;; Need a similar hack for the non-minibuffer-case -- gm.
+       (when PC-do-completion-end
+         (goto-char PC-do-completion-end)
+         (setq PC-do-completion-end nil)))
+     (setq PC-goto-end nil)
      nil))
   ;; Build the env-completion and mapping table.
   (when (and partial-completion-mode (null PC-env-vars-alist))
@@ -410,13 +430,19 @@
   (let ((result (try-completion string alist predicate)))
     (if (eq result t) string result)))
 
-(defun PC-do-completion (&optional mode beg end)
+;; TODO document MODE magic...
+(defun PC-do-completion (&optional mode beg end goto-end)
+  "Internal function to do the work of partial completion.
+Text to be completed lies between BEG and END.  Normally when
+replacing text in the minibuffer, this function replaces up to
+point-max (as is appropriate for completing a file name).  If
+GOTO-END is non-nil, however, it instead replaces up to END."
   (or beg (setq beg (minibuffer-prompt-end)))
   (or end (setq end (point-max)))
   (let* ((table minibuffer-completion-table)
 	 (pred minibuffer-completion-predicate)
 	 (filename (funcall PC-completion-as-file-name-predicate))
-	 (dirname nil)		; non-nil only if a filename is being completed
+	 (dirname nil) ; non-nil only if a filename is being completed
 	 ;; The following used to be "(dirlength 0)" which caused the erasure of
 	 ;; the entire buffer text before `point' when inserting a completion
 	 ;; into a buffer.
@@ -681,7 +707,7 @@
 				      (forward-char 1)
 				    (if (and (< (point) end)
 					     (and (looking-at " ")
-						      (memq (aref prefix i)
+                                                  (memq (aref prefix i)
 							PC-delims-list)))
 					;; replace " " by the actual delimiter
 					(progn
@@ -689,12 +715,12 @@
 					  (insert (substring prefix i (1+ i))))
 				      ;; insert a new character
 				      (progn
-				      (and filename (looking-at "\\*")
-					   (progn
-					     (delete-char 1)
-					     (setq end (1- end))))
+                                        (and filename (looking-at "\\*")
+                                             (progn
+                                               (delete-char 1)
+                                               (setq end (1- end))))
 					(setq improved t)
-				    (insert (substring prefix i (1+ i)))
+                                        (insert (substring prefix i (1+ i)))
 					(setq end (1+ end)))))
 				  (setq i (1+ i)))
 				(or pt (setq pt (point)))
@@ -729,7 +755,7 @@
 
 		    ;; We changed it... would it be complete without the space?
 		    (if (test-completion (buffer-substring 1 (1- end))
-					  table pred)
+                                         table pred)
 			(delete-region (1- end) end)))
 
 	      (if improved
@@ -743,13 +769,30 @@
 			(and completion-auto-help
 			     (eq last-command this-command))
 			(eq mode 'help))
-		    (with-output-to-temp-buffer "*Completions*"
-		      (display-completion-list (sort helpposs 'string-lessp))
-		      (with-current-buffer standard-output
-			;; Record which part of the buffer we are completing
-			;; so that choosing a completion from the list
-			;; knows how much old text to replace.
-			(setq completion-base-size dirlength)))
+                    (let ((prompt-end (minibuffer-prompt-end)))
+                      (with-output-to-temp-buffer "*Completions*"
+                        (display-completion-list (sort helpposs 'string-lessp))
+                        (setq PC-do-completion-end end
+                              PC-goto-end goto-end)
+                        (with-current-buffer standard-output
+                          ;; Record which part of the buffer we are completing
+                          ;; so that choosing a completion from the list
+                          ;; knows how much old text to replace.
+                          ;; This was briefly nil in the non-dirname case.
+                          ;; However, if one calls PC-lisp-complete-symbol
+                          ;; on "(ne-f" with point on the hyphen, PC offers
+                          ;; all completions starting with "(ne", some of
+                          ;; which do not match the "-f" part (maybe it
+                          ;; should not, but it does). In such cases,
+                          ;; completion gets confused trying to figure out
+                          ;; how much to replace, so we tell it explicitly
+                          ;; (ie, the number of chars in the buffer before beg).
+                          ;;
+                          ;; Note that choose-completion-string-functions
+                          ;; plays around with point.
+                          (setq completion-base-size (if dirname
+                                                         dirlength
+                                                       (- beg prompt-end))))))
 		  (PC-temp-minibuffer-message " [Next char not unique]"))
 		nil)))))
 
@@ -799,6 +842,10 @@
 	       (setq quit-flag nil
 		     unread-command-events '(7))))))))
 
+;; Does not need to be buffer-local (?) because only used when one
+;; PC-l-c-s immediately follows another.
+(defvar PC-lisp-complete-end nil
+  "Internal variable used by `PC-lisp-complete-symbol'.")
 
 (defun PC-lisp-complete-symbol ()
   "Perform completion on Lisp symbol preceding point.
@@ -811,6 +858,12 @@
 or properties are considered."
   (interactive)
   (let* ((end (point))
+         ;; To complete the word under point, rather than just the portion
+         ;; before point, use this:
+;;;           (save-excursion
+;;;             (with-syntax-table lisp-mode-syntax-table
+;;;               (forward-sexp 1)
+;;;               (point))))
 	 (beg (save-excursion
                 (with-syntax-table lisp-mode-syntax-table
                   (backward-sexp 1)
@@ -825,7 +878,39 @@
 			(or (boundp sym) (fboundp sym)
 			    (symbol-plist sym))))))
 	 (PC-not-minibuffer t))
-    (PC-do-completion nil beg end)))
+    ;; http://lists.gnu.org/archive/html/emacs-devel/2007-03/msg01211.html
+    ;;
+    ;; This deals with cases like running PC-l-c-s on "M-: (n-f".
+    ;; The first call to PC-l-c-s expands this to "(ne-f", and moves
+    ;; point to the hyphen [1]. If one calls PC-l-c-s immediately after,
+    ;; then without the last-command check, one is offered all
+    ;; completions of "(ne", which is presumably not what one wants.
+    ;;
+    ;; This is arguably (at least, it seems to be the existing intended
+    ;; behaviour) what one _does_ want if point has been explicitly
+    ;; positioned on the hyphen. Note that if PC-do-completion (qv) binds
+    ;; completion-base-size to nil, then completion does not replace the
+    ;; correct amount of text in such cases.
+    ;;
+    ;; Neither of these problems occur when using PC for filenames in the
+    ;; minibuffer, because in that case PC-do-completion is called without
+    ;; an explicit value for END, and so uses (point-max). This is fine for
+    ;; a filename, because the end of the filename must be at the end of
+    ;; the minibuffer. The same is not true for lisp symbols.
+    ;;
+    ;; [1] An alternate fix would be to not move point to the hyphen
+    ;; in such cases, but that would make the behaviour different from
+    ;; that for filenames. It seems PC moves point to the site of the
+    ;; first difference between the possible completions.
+    ;;
+    ;; Alternatively alternatively, maybe end should be computed in
+    ;; the same way as beg. That would change the behaviour though.
+    (if (equal last-command 'PC-lisp-complete-symbol)
+        (PC-do-completion nil beg PC-lisp-complete-end t)
+      (if PC-lisp-complete-end
+          (move-marker PC-lisp-complete-end end)
+        (setq PC-lisp-complete-end (copy-marker end t)))
+      (PC-do-completion nil beg end t))))
 
 (defun PC-complete-as-file-name ()
    "Perform completion on file names preceding point.
@@ -1026,10 +1111,11 @@
   (if (string-match "<\\([^\"<>]*\\)>?\\'" (ad-get-arg 0))
       (let* ((string (ad-get-arg 0))
              (action (ad-get-arg 2))
-             (name (substring string (match-beginning 1) (match-end 1)))
+             (name (match-string 1 string))
 	     (str2 (substring string (match-beginning 0)))
 	     (completion-table
-	      (mapcar (lambda (x) (format "<%s>" x))
+	      (mapcar (lambda (x)
+                        (format (if (string-match "/\\'" x) "<%s" "<%s>") x))
 		      (PC-include-file-all-completions
 		       name (PC-include-file-path)))))
         (setq ad-return-value
--- a/lisp/cus-edit.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/cus-edit.el	Sun Apr 22 12:42:47 2007 +0000
@@ -422,7 +422,7 @@
   :group 'development)
 
 (defgroup minibuffer nil
-  "Controling the behavior of the minibuffer."
+  "Controlling the behavior of the minibuffer."
   :link '(custom-manual "(emacs)Minibuffer")
   :group 'environment)
 
@@ -443,7 +443,7 @@
   :group 'environment)
 
 (defgroup auto-save nil
-  "Preventing accidential loss of data."
+  "Preventing accidental loss of data."
   :group 'files)
 
 (defgroup processes-basics nil
--- a/lisp/cus-start.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/cus-start.el	Sun Apr 22 12:42:47 2007 +0000
@@ -338,7 +338,11 @@
 	     (split-height-threshold windows integer)
 	     (window-min-height windows integer)
 	     (window-min-width windows integer)
-	     (scroll-preserve-screen-position windows boolean)
+ 	     (scroll-preserve-screen-position
+ 	      windows (choice
+ 		       (const :tag "Off (nil)" :value nil)
+ 		       (const :tag "Full screen (t)" :value t)
+ 		       (other :tag "Always" 1)))
 	     (display-buffer-reuse-frames windows boolean "21.1")
 	     ;; xdisp.c
 	     (scroll-step windows integer)
--- a/lisp/desktop.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/desktop.el	Sun Apr 22 12:42:47 2007 +0000
@@ -45,9 +45,9 @@
 ;; "Saving Emacs Sessions" in the GNU Emacs Manual.
 
 ;; When the desktop module is loaded, the function `desktop-kill' is
-;; added to the `kill-emacs-hook'. This function is responsible for
+;; added to the `kill-emacs-hook'.  This function is responsible for
 ;; saving the desktop when Emacs is killed.  Furthermore an anonymous
-;; function is added to the `after-init-hook'. This function is
+;; function is added to the `after-init-hook'.  This function is
 ;; responsible for loading the desktop when Emacs is started.
 
 ;; Special handling.
@@ -55,12 +55,12 @@
 ;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers'
 ;; are supplied to handle special major and minor modes respectively.
 ;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions
-;; to restore a desktop buffer. Elements must have the form
+;; to restore a desktop buffer.  Elements must have the form
 ;;
 ;;    (MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
 ;;
 ;; Functions listed are called by `desktop-create-buffer' when `desktop-read'
-;; evaluates the desktop file. Buffers with a major mode not specified here,
+;; evaluates the desktop file.  Buffers with a major mode not specified here,
 ;; are restored by the default handler `desktop-restore-file-buffer'.
 ;; `desktop-minor-mode-handlers' is an alist of functions to restore
 ;; non-standard minor modes.  Elements must have the form
@@ -85,7 +85,7 @@
 ;;                 '(bar-mode . bar-desktop-restore))
 
 ;; in the module itself, and make shure that the mode function is
-;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and
+;; autoloaded.  See the docstrings of `desktop-buffer-mode-handlers' and
 ;; `desktop-minor-mode-handlers' for more info.
 
 ;; Minor modes.
@@ -100,7 +100,7 @@
 ;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers'
 ;; are used to handle non-conventional minor modes.  `desktop-save' uses
 ;; `desktop-minor-mode-table' to map minor mode variables to minor mode
-;; functions before writing `desktop-minor-modes'. If a minor mode has a
+;; functions before writing `desktop-minor-modes'.  If a minor mode has a
 ;; variable name that is different form its function name, an entry
 
 ;;    (NAME RESTORE-FUNCTION)
@@ -619,8 +619,7 @@
 	  (setq newlist (cons q.txt newlist)))
 	(setq p (cdr p)))
       (if p
-	  (let ((last (desktop-internal-v2s p))
-		(el (car newlist)))
+	  (let ((last (desktop-internal-v2s p)))
 	    (or anynil (setq anynil (null (car last))))
 	    (or anynil
 		(setq newlist (cons '(must . ".") newlist)))
@@ -782,7 +781,8 @@
          ";; Desktop file format version " desktop-file-version "\n"
          ";; Emacs version " emacs-version "\n\n"
          ";; Global section:\n")
-        (mapc (function desktop-outvar) desktop-globals-to-save)
+        (dolist (varspec desktop-globals-to-save)
+          (desktop-outvar varspec))
         (if (memq 'kill-ring desktop-globals-to-save)
             (insert
              "(setq kill-ring-yank-pointer (nthcdr "
@@ -790,22 +790,20 @@
              " kill-ring))\n"))
 
         (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
-        (mapc #'(lambda (l)
-                  (when (apply 'desktop-save-buffer-p l)
-                    (insert "("
-                            (if (or (not (integerp eager))
-                                    (unless (zerop eager)
-                                      (setq eager (1- eager))
-                                      t))
-                                "desktop-create-buffer"
-                              "desktop-append-buffer-args")
-                            " "
-                            desktop-file-version)
-                    (mapc #'(lambda (e)
-                              (insert "\n  " (desktop-value-to-string e)))
-                          l)
-                    (insert ")\n\n")))
-              info)
+        (dolist (l info)
+          (when (apply 'desktop-save-buffer-p l)
+            (insert "("
+                    (if (or (not (integerp eager))
+                            (unless (zerop eager)
+                              (setq eager (1- eager))
+                              t))
+                        "desktop-create-buffer"
+                      "desktop-append-buffer-args")
+                    " "
+                    desktop-file-version)
+            (dolist (e l)
+              (insert "\n  " (desktop-value-to-string e)))
+            (insert ")\n\n")))
         (setq default-directory dirname)
         (let ((coding-system-for-write 'emacs-mule))
           (write-region (point-min) (point-max) filename nil 'nomessage)))))
@@ -941,14 +939,13 @@
   (desktop-clear)
   (desktop-read desktop-dirname))
 
+(defvar desktop-buffer-major-mode)
+(defvar desktop-buffer-locals)
 ;; ----------------------------------------------------------------------------
 (defun desktop-restore-file-buffer (desktop-buffer-file-name
                                     desktop-buffer-name
                                     desktop-buffer-misc)
   "Restore a file buffer."
-  (eval-when-compile ; Just to silence the byte compiler
-    (defvar desktop-buffer-major-mode)
-    (defvar desktop-buffer-locals))
   (if desktop-buffer-file-name
       (if (or (file-exists-p desktop-buffer-file-name)
               (let ((msg (format "Desktop: File \"%s\" no longer exists."
@@ -985,8 +982,12 @@
 ;; called from Desktop file only.
 
 ;; Just to silence the byte compiler.
-(eval-when-compile
-  (defvar desktop-first-buffer)) ; Dynamically bound in `desktop-read'
+
+(defvar desktop-first-buffer)          ; Dynamically bound in `desktop-read'
+
+;; Bound locally in `desktop-read'.
+(defvar desktop-buffer-ok-count)
+(defvar desktop-buffer-fail-count)
 
 (defun desktop-create-buffer
   (desktop-file-version
@@ -1000,10 +1001,6 @@
    desktop-buffer-misc
    &optional
    desktop-buffer-locals)
-  ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
-  (eval-when-compile
-    (defvar desktop-buffer-ok-count)
-    (defvar desktop-buffer-fail-count))
   ;; To make desktop files with relative file names possible, we cannot
   ;; allow `default-directory' to change. Therefore we save current buffer.
   (save-current-buffer
@@ -1045,21 +1042,22 @@
               ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
                (auto-fill-mode 0))
               (t
-               (mapc #'(lambda (minor-mode)
-                         ;; Give minor mode module a chance to add a handler.
-                         (desktop-load-file minor-mode)
-                         (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers))))
-                           (if handler
-                               (funcall handler desktop-buffer-locals)
-                             (when (functionp minor-mode)
-                               (funcall minor-mode 1)))))
-		     desktop-buffer-minor-modes)))
-        ;; Even though point and mark are non-nil when written by `desktop-save',
-        ;; they may be modified by handlers wanting to set point or mark themselves.
+               (dolist (minor-mode desktop-buffer-minor-modes)
+                 ;; Give minor mode module a chance to add a handler.
+                 (desktop-load-file minor-mode)
+                 (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers))))
+                   (if handler
+                       (funcall handler desktop-buffer-locals)
+                     (when (functionp minor-mode)
+                       (funcall minor-mode 1)))))))
+        ;; Even though point and mark are non-nil when written by
+        ;; `desktop-save', they may be modified by handlers wanting to set
+        ;; point or mark themselves.
         (when desktop-buffer-point
           (goto-char
             (condition-case err
-                ;; Evaluate point. Thus point can be something like '(search-forward ...
+                ;; Evaluate point.  Thus point can be something like
+                ;; '(search-forward ...
                 (eval desktop-buffer-point)
               (error (message "%s" (error-message-string err)) 1))))
         (when desktop-buffer-mark
@@ -1167,7 +1165,7 @@
 ;; functions are processed after `after-init-hook'.
 (add-hook
   'after-init-hook
-  '(lambda ()
+  (lambda ()
     (let ((key "--no-desktop"))
       (when (member key command-line-args)
         (setq command-line-args (delete key command-line-args))
@@ -1176,5 +1174,5 @@
 
 (provide 'desktop)
 
-;;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
+;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
 ;;; desktop.el ends here
--- a/lisp/dframe.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/dframe.el	Sun Apr 22 12:42:47 2007 +0000
@@ -354,9 +354,7 @@
 			  t))))
 	;; Enable mouse tracking in emacs
 	(if dframe-track-mouse-function
-	    (set (make-local-variable 'track-mouse) t))	;this could be messy.
-	;; disable auto-show-mode for Emacs
-	(setq auto-show-mode nil))
+	    (set (make-local-variable 'track-mouse) t))) ;this could be messy.
 ;;;; DISABLED: This causes problems for users with multiple frames.
 ;;;;       ;; Set this up special just for the passed in buffer
 ;;;;       ;; Terminal minibuffer stuff does not require this.
--- a/lisp/diff-mode.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/diff-mode.el	Sun Apr 22 12:42:47 2007 +0000
@@ -985,8 +985,7 @@
 (define-derived-mode diff-mode fundamental-mode "Diff"
   "Major mode for viewing/editing context diffs.
 Supports unified and context diffs as well as (to a lesser extent)
-normal diffs.  If you edit the buffer manually, diff-mode will try
-to update the hunk headers for you on-the-fly.
+normal diffs.
 
 When the buffer is read-only, the ESC prefix is not necessary.
 If you edit the buffer manually, diff-mode will try to update the hunk
@@ -996,9 +995,6 @@
 or vice versa with \\[diff-unified->context] and you can also reverse the direction of
 a diff with \\[diff-reverse-direction].
 
-When the buffer is read-only, the Meta- modifier is not necessary
-to run the Diff mode commands:
-
    \\{diff-mode-map}"
 
   (set (make-local-variable 'font-lock-defaults) diff-font-lock-defaults)
--- a/lisp/dired-x.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/dired-x.el	Sun Apr 22 12:42:47 2007 +0000
@@ -45,12 +45,8 @@
 ;; (add-hook 'dired-load-hook
 ;;           (function (lambda ()
 ;;                       (load "dired-x")
-;;                       ;; Set global variables here.  For example:
+;;                       ;; Set variables here.  For example:
 ;;                       ;; (setq dired-guess-shell-gnutar "gtar")
-;;                       )))
-;; (add-hook 'dired-mode-hook
-;;           (function (lambda ()
-;;                       ;; Set buffer-local variables here.  For example:
 ;;                       ;; (dired-omit-mode 1)
 ;;                       )))
 ;;
@@ -1130,17 +1126,11 @@
   :group 'dired-x
   :type '(alist :key-type regexp :value-type (repeat sexp)))
 
-(defcustom dired-guess-shell-case-fold-search t
-  "If non-nil, `dired-guess-shell-alist-default' and
-`dired-guess-shell-alist-user' are matched case-insensitively."
-  :group 'dired-x
-  :type 'boolean)
-
 (defun dired-guess-default (files)
   "Guess a shell commands for FILES.  Return command or list of commands.
 See `dired-guess-shell-alist-user'."
 
-  (let* ((case-fold-search dired-guess-shell-case-fold-search)
+  (let* ((case-fold-search t)
          ;; Prepend the user's alist to the default alist.
          (alist (append dired-guess-shell-alist-user
                         dired-guess-shell-alist-default))
--- a/lisp/dnd.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/dnd.el	Sun Apr 22 12:42:47 2007 +0000
@@ -146,7 +146,7 @@
 		  (substring uri (match-end 0))))))
     (when (and f must-exist)
       (setq f (replace-regexp-in-string
-	       "%[A-Z0-9][A-Z0-9]"
+	       "%[A-Fa-f0-9][A-Fa-f0-9]"
 	       (lambda (arg)
 		 (format "%c" (string-to-number (substring arg 1) 16)))
 	       f nil t))
--- a/lisp/dos-w32.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/dos-w32.el	Sun Apr 22 12:42:47 2007 +0000
@@ -74,6 +74,9 @@
 	(setq alist (cdr alist)))
       found)))
 
+;; Silence compiler. Defined in src/buffer.c on DOS_NT.
+(defvar default-buffer-file-type)
+
 ;; Don't check for untranslated file systems here.
 (defun find-buffer-file-type (filename)
   (let ((match (find-buffer-file-type-match filename))
--- a/lisp/emacs-lisp/authors.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/authors.el	Sun Apr 22 12:42:47 2007 +0000
@@ -688,5 +688,7 @@
     (authors root)
     (write-file file)))
 
+(provide 'authors)
+
 ;;; arch-tag: 659d5900-5ff2-43b0-954c-a315cc1e4dc1
 ;;; authors.el ends here
--- a/lisp/emacs-lisp/byte-opt.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/byte-opt.el	Sun Apr 22 12:42:47 2007 +0000
@@ -545,8 +545,8 @@
 				(eq (car-safe (nth 2 last)) 'cdr)
 				(eq (cadr (nth 2 last)) var))))
 		    (progn
-		      (byte-compile-warn "value returned by `%s' is not used"
-					 (prin1-to-string (car form)))
+		      (byte-compile-warn "value returned from %s is unused"
+					 (prin1-to-string form))
 		      nil)))
 	   (byte-compile-log "  %s called for effect; deleted" fn)
 	   ;; appending a nil here might not be necessary, but it can't hurt.
@@ -557,8 +557,20 @@
 	   ;; Otherwise, no args can be considered to be for-effect,
 	   ;; even if the called function is for-effect, because we
 	   ;; don't know anything about that function.
-	   (cons fn (mapcar 'byte-optimize-form (cdr form)))))))
+	   (let ((args (mapcar #'byte-optimize-form (cdr form))))
+	     (if (and (get fn 'pure)
+		      (byte-optimize-all-constp args))
+		   (list 'quote (apply fn (mapcar #'eval args)))
+	       (cons fn args)))))))
 
+(defun byte-optimize-all-constp (list)
+  "Non-nil iff all elements of LIST satisfy `byte-compile-constp'."
+  (let ((constant t))
+    (while (and list constant)
+      (unless (byte-compile-constp (car list))
+	(setq constant nil))
+      (setq list (cdr list)))
+    constant))
 
 (defun byte-optimize-form (form &optional for-effect)
   "The source-level pass of the optimizer."
@@ -1117,55 +1129,6 @@
 	(byte-optimize-predicate form))
     form))
 
-(put 'concat 'byte-optimizer 'byte-optimize-pure-func)
-(put 'symbol-name 'byte-optimizer 'byte-optimize-pure-func)
-(put 'regexp-opt 'byte-optimizer 'byte-optimize-pure-func)
-(put 'regexp-quote 'byte-optimizer 'byte-optimize-pure-func)
-(put 'string-to-syntax 'byte-optimizer 'byte-optimize-pure-func)
-(defun byte-optimize-pure-func (form)
-  "Do constant folding for pure functions.
-This assumes that the function will not have any side-effects and that
-its return value depends solely on its arguments.
-If the function can signal an error, this might change the semantics
-of FORM by signaling the error at compile-time."
-  (let ((args (cdr form))
-	(constant t))
-    (while (and args constant)
-      (or (byte-compile-constp (car args))
-	  (setq constant nil))
-      (setq args (cdr args)))
-    (if constant
-	(list 'quote (eval form))
-      form)))
-
-;; Avoid having to write forward-... with a negative arg for speed.
-;; Fixme: don't be limited to constant args.
-(put 'backward-char 'byte-optimizer 'byte-optimize-backward-char)
-(defun byte-optimize-backward-char (form)
-  (cond ((and (= 2 (safe-length form))
-	      (numberp (nth 1 form)))
-	 (list 'forward-char (eval (- (nth 1 form)))))
-	((= 1 (safe-length form))
-	 '(forward-char -1))
-	(t form)))
-
-(put 'backward-word 'byte-optimizer 'byte-optimize-backward-word)
-(defun byte-optimize-backward-word (form)
-  (cond ((and (= 2 (safe-length form))
-	      (numberp (nth 1 form)))
-	 (list 'forward-word (eval (- (nth 1 form)))))
-	((= 1 (safe-length form))
-	 '(forward-word -1))
-	(t form)))
-
-(put 'char-before 'byte-optimizer 'byte-optimize-char-before)
-(defun byte-optimize-char-before (form)
-  (cond ((= 2 (safe-length form))
-	 `(char-after (1- ,(nth 1 form))))
-	((= 1 (safe-length form))
-	 '(char-after (1- (point))))
-	(t form)))
-
 ;; Fixme: delete-char -> delete-region (byte-coded)
 ;; optimize string-as-unibyte, string-as-multibyte, string-make-unibyte,
 ;; string-make-multibyte for constant args.
@@ -1290,6 +1253,18 @@
     (setq side-effect-and-error-free-fns (cdr side-effect-and-error-free-fns)))
   nil)
 
+
+;; pure functions are side-effect free functions whose values depend
+;; only on their arguments. For these functions, calls with constant
+;; arguments can be evaluated at compile time. This may shift run time
+;; errors to compile time.
+
+(let ((pure-fns
+       '(concat symbol-name regexp-opt regexp-quote string-to-syntax)))
+  (while pure-fns
+    (put (car pure-fns) 'pure t)
+    (setq pure-fns (cdr pure-fns)))
+  nil)
 
 (defun byte-compile-splice-in-already-compiled-code (form)
   ;; form is (byte-code "..." [...] n)
--- a/lisp/emacs-lisp/bytecomp.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Sun Apr 22 12:42:47 2007 +0000
@@ -2341,7 +2341,7 @@
 		    (eq (car (car (cdr tail))) 'declare))
 	  (let ((declaration (car (cdr tail))))
 	    (setcdr tail (cdr (cdr tail)))
-	    (princ `(if macro-declaration-function
+	    (prin1 `(if macro-declaration-function
 			(funcall macro-declaration-function
 				 ',name ',declaration))
 		   outbuffer)))))
@@ -3148,6 +3148,9 @@
 
 ;; more complicated compiler macros
 
+(byte-defop-compiler char-before)
+(byte-defop-compiler backward-char)
+(byte-defop-compiler backward-word)
 (byte-defop-compiler list)
 (byte-defop-compiler concat)
 (byte-defop-compiler fset)
@@ -3159,6 +3162,34 @@
 (byte-defop-compiler19 (/ byte-quo) byte-compile-quo)
 (byte-defop-compiler19 nconc)
 
+(defun byte-compile-char-before (form)
+  (cond ((= 2 (length form))
+	 (byte-compile-form (list 'char-after (if (numberp (nth 1 form))
+						  (1- (nth 1 form))
+						`(1- ,(nth 1 form))))))
+	((= 1 (length form))
+	 (byte-compile-form '(char-after (1- (point)))))
+	(t (byte-compile-subr-wrong-args form "0-1"))))
+
+;; backward-... ==> forward-... with negated argument.
+(defun byte-compile-backward-char (form)
+  (cond ((= 2 (length form))
+	 (byte-compile-form (list 'forward-char (if (numberp (nth 1 form))
+						    (- (nth 1 form))
+						  `(- ,(nth 1 form))))))
+	((= 1 (length form))
+	 (byte-compile-form '(forward-char -1)))
+	(t (byte-compile-subr-wrong-args form "0-1"))))
+
+(defun byte-compile-backward-word (form)
+  (cond ((= 2 (length form))
+	 (byte-compile-form (list 'forward-word (if (numberp (nth 1 form))
+						    (- (nth 1 form))
+						  `(- ,(nth 1 form))))))
+	((= 1 (length form))
+	 (byte-compile-form '(forward-word -1)))
+	(t (byte-compile-subr-wrong-args form "0-1"))))
+
 (defun byte-compile-list (form)
   (let ((count (length (cdr form))))
     (cond ((= count 0)
--- a/lisp/emacs-lisp/edebug.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/edebug.el	Sun Apr 22 12:42:47 2007 +0000
@@ -364,31 +364,39 @@
 
 (defun edebug-pop-to-buffer (buffer &optional window)
   ;; Like pop-to-buffer, but select window where BUFFER was last shown.
-  ;; Select WINDOW if it provided and it still exists.  Otherwise,
+  ;; Select WINDOW if it is provided and still exists.  Otherwise,
   ;; if buffer is currently shown in several windows, choose one.
   ;; Otherwise, find a new window, possibly splitting one.
-  (setq window (if (and (windowp window) (edebug-window-live-p window)
-			(eq (window-buffer window) buffer))
-		   window
-		 (if (eq (window-buffer (selected-window)) buffer)
-		     (selected-window)
-		   (edebug-get-buffer-window buffer))))
-  (if window
-      (select-window window)
-    (if (one-window-p)
-	(split-window))
-    ;;      (message "next window: %s" (next-window)) (sit-for 1)
-    (if (eq (get-buffer-window edebug-trace-buffer) (next-window))
-	;; Don't select trace window
-	nil
-      (select-window (next-window))))
-  (set-window-buffer (selected-window) buffer)
-  (set-window-hscroll (selected-window) 0);; should this be??
+  (setq window
+	(cond
+	 ((and (windowp window) (edebug-window-live-p window)
+	       (eq (window-buffer window) buffer))
+	  window)
+	 ((eq (window-buffer (selected-window)) buffer)
+	  ;; Selected window already displays BUFFER.
+	  (selected-window))
+	 ((edebug-get-buffer-window buffer))
+	 ((one-window-p 'nomini)
+	  ;; When there's one window only, split it.
+	  (split-window))
+	 ((let ((trace-window (get-buffer-window edebug-trace-buffer)))
+	    (catch 'found
+	      (dolist (elt (window-list nil 'nomini))
+		(unless (or (eq elt (selected-window)) (eq elt trace-window)
+			    (window-dedicated-p elt))
+		  ;; Found a non-dedicated window not showing
+		  ;; `edebug-trace-buffer', use it.
+		  (throw 'found elt))))))
+	 ;; All windows are dedicated or show `edebug-trace-buffer', split
+	 ;; selected one.
+	 (t (split-window))))
+  (select-window window)
+  (set-window-buffer window buffer)
+  (set-window-hscroll window 0);; should this be??
   ;; Selecting the window does not set the buffer until command loop.
   ;;(set-buffer buffer)
   )
 
-
 (defun edebug-get-displayed-buffer-points ()
   ;; Return a list of buffer point pairs, for all displayed buffers.
   (let (list)
@@ -2755,7 +2763,8 @@
 	      )				; if edebug-save-windows
 
 	    ;; Restore current buffer always, in case application needs it.
-	    (set-buffer edebug-outside-buffer)
+	    (if (buffer-name edebug-outside-buffer)
+		(set-buffer edebug-outside-buffer))
 	    ;; Restore point, and mark.
 	    ;; Needed even if restoring windows because
 	    ;; that doesn't restore point and mark in the current buffer.
--- a/lisp/emacs-lisp/ewoc.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/ewoc.el	Sun Apr 22 12:42:47 2007 +0000
@@ -191,8 +191,9 @@
                     (not (eq dll node))))
         (setq node (ewoc--node-right node))))))
 
-(defun ewoc--insert-new-node (node data pretty-printer)
+(defun ewoc--insert-new-node (node data pretty-printer dll)
   "Insert before NODE a new node for DATA, displayed by PRETTY-PRINTER.
+Fourth arg DLL -- from `(ewoc--dll EWOC)' -- is for internal purposes.
 Call PRETTY-PRINTER with point at NODE's start, thus pushing back
 NODE and leaving the new node's start there.  Return the new node."
   (save-excursion
@@ -262,8 +263,8 @@
       (unless header (setq header ""))
       (unless footer (setq footer ""))
       (setf (ewoc--node-start-marker dll) (copy-marker pos)
-            foot (ewoc--insert-new-node  dll footer hf-pp)
-            head (ewoc--insert-new-node foot header hf-pp)
+            foot (ewoc--insert-new-node  dll footer hf-pp dll)
+            head (ewoc--insert-new-node foot header hf-pp dll)
             (ewoc--hf-pp new-ewoc) hf-pp
             (ewoc--footer new-ewoc) foot
             (ewoc--header new-ewoc) head))
@@ -301,7 +302,7 @@
   "Enter a new element DATA before NODE in EWOC.
 Return the new node."
   (ewoc--set-buffer-bind-dll ewoc
-    (ewoc--insert-new-node node data (ewoc--pretty-printer ewoc))))
+    (ewoc--insert-new-node node data (ewoc--pretty-printer ewoc) dll)))
 
 (defun ewoc-next (ewoc node)
   "Return the node in EWOC that follows NODE.
--- a/lisp/emacs-lisp/lisp-mode.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/lisp-mode.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1280,7 +1280,8 @@
 				     "\\|\\s-*\\([(;:\"]\\|`(\\|#'(\\)"))
 	    (paragraph-separate
 	     (concat paragraph-separate "\\|\\s-*\".*[,\\.]$"))
-            (fill-column (if (integerp emacs-lisp-docstring-fill-column)
+            (fill-column (if (and (integerp emacs-lisp-docstring-fill-column)
+                                  (derived-mode-p 'emacs-lisp-mode))
                              emacs-lisp-docstring-fill-column
                            fill-column)))
 	(fill-paragraph justify))
--- a/lisp/emacs-lisp/lisp.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/lisp.el	Sun Apr 22 12:42:47 2007 +0000
@@ -582,8 +582,7 @@
 symbols with function definitions, values or properties are
 considered."
   (interactive)
-
-  (let ((window (get-buffer-window "*Completions*")))
+  (let ((window (get-buffer-window "*Completions*" 0)))
     (if (and (eq last-command this-command)
 	     window (window-live-p window) (window-buffer window)
 	     (buffer-name (window-buffer window)))
--- a/lisp/emacs-lisp/sregex.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/sregex.el	Sun Apr 22 12:42:47 2007 +0000
@@ -425,7 +425,7 @@
   Stands for \"\\\\'\", matching the empty string at the end of text.
 
 - the symbol `point'
-  Stands for \"\\\\=\", matching the empty string at point.
+  Stands for \"\\\\=\\=\", matching the empty string at point.
 
 - the symbol `word-boundary'
   Stands for \"\\\\b\", matching the empty string at the beginning or
--- a/lisp/emacs-lisp/testcover.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/testcover.el	Sun Apr 22 12:42:47 2007 +0000
@@ -190,7 +190,7 @@
 changes the instrumentation from edebug to testcover--much faster, no
 problems with type-ahead or post-command-hook, etc.  If BYTE-COMPILE is
 non-nil, byte-compiles each function after instrumenting."
-  (interactive "f")
+  (interactive "fStart covering file: ")
   (let ((buf                (find-file filename))
 	(load-read-function 'testcover-read)
 	(edebug-all-defs t))
@@ -428,10 +428,10 @@
 	  list)
     result))
 
-(defun testcover-end (buffer)
+(defun testcover-end (filename)
   "Turn off instrumentation of all macros and functions in FILENAME."
-  (interactive "b")
-  (let ((buf (find-file-noselect buffer)))
+  (interactive "fStop covering file: ")
+  (let ((buf (find-file-noselect filename)))
     (eval-buffer buf t)))
 
 
@@ -513,7 +513,7 @@
 (defun testcover-mark-all (&optional buffer)
   "Mark all forms in BUFFER that did not get completley tested during
 coverage tests.  This function creates many overlays."
-  (interactive "b")
+  (interactive "bMark forms in buffer: ")
   (if buffer
       (switch-to-buffer buffer))
   (goto-char 1)
@@ -523,7 +523,7 @@
 
 (defun testcover-unmark-all (buffer)
   "Remove all overlays from FILENAME."
-  (interactive "b")
+  (interactive "bUnmark forms in buffer: ")
   (condition-case nil
       (progn
 	(set-buffer buffer)
--- a/lisp/emacs-lisp/timer.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/timer.el	Sun Apr 22 12:42:47 2007 +0000
@@ -360,11 +360,16 @@
 (defun run-at-time (time repeat function &rest args)
   "Perform an action at time TIME.
 Repeat the action every REPEAT seconds, if REPEAT is non-nil.
-TIME should be a string like \"11:23pm\", nil meaning now, a number of seconds
-from now, a value from `current-time', or t (with non-nil REPEAT)
-meaning the next integral multiple of REPEAT.
-REPEAT may be an integer or floating point number.
-The action is to call FUNCTION with arguments ARGS.
+TIME should be one of: a string giving an absolute time like
+\"11:23pm\" (the acceptable formats are those recognized by
+`diary-entry-time'; note that such times are interpreted as times
+today, even if in the past); a string giving a relative time like
+\"2 hours 35 minutes\" (the acceptable formats are those
+recognized by `timer-duration'); nil meaning now; a number of
+seconds from now; a value from `encode-time'; or t (with non-nil
+REPEAT) meaning the next integral multiple of REPEAT.  REPEAT may
+be an integer or floating point number.  The action is to call
+FUNCTION with arguments ARGS.
 
 This function returns a timer object which you can use in `cancel-timer'."
   (interactive "sRun at time: \nNRepeat interval: \naFunction: ")
@@ -385,7 +390,7 @@
   (if (numberp time)
       (setq time (timer-relative-time (current-time) time)))
 
-  ;; Handle relative times like "2 hours and 35 minutes"
+  ;; Handle relative times like "2 hours 35 minutes"
   (if (stringp time)
       (let ((secs (timer-duration time)))
 	(if secs
--- a/lisp/emacs-lisp/warnings.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emacs-lisp/warnings.el	Sun Apr 22 12:42:47 2007 +0000
@@ -218,8 +218,9 @@
 	      but raise suspicion of a possible problem.
 :debug     -- info for debugging only.
 
-BUFFER-NAME, if specified, is the name of the buffer for logging the
-warning.  By default, it is `*Warnings*'.
+BUFFER-NAME, if specified, is the name of the buffer for logging
+the warning.  By default, it is `*Warnings*'.  If this function
+has to create the buffer, it disables undo in the buffer.
 
 See the `warnings' custom group for user customization features.
 
@@ -227,16 +228,22 @@
 `warning-fill-prefix' for additional programming features."
   (unless level
     (setq level :warning))
+  (unless buffer-name
+    (setq buffer-name "*Warnings*"))
   (if (assq level warning-level-aliases)
       (setq level (cdr (assq level warning-level-aliases))))
   (or (< (warning-numeric-level level)
          (warning-numeric-level warning-minimum-log-level))
       (warning-suppress-p type warning-suppress-log-types)
       (let* ((typename (if (consp type) (car type) type))
-	     (buffer (get-buffer-create (or buffer-name "*Warnings*")))
+             (old (get-buffer buffer-name))
+	     (buffer (get-buffer-create buffer-name))
 	     (level-info (assq level warning-levels))
 	     start end)
 	(with-current-buffer buffer
+          ;; If we created the buffer, disable undo.
+          (unless old
+            (setq buffer-undo-list t))
 	  (goto-char (point-max))
 	  (when (and warning-series (symbolp warning-series))
 	    (setq warning-series
--- a/lisp/emulation/viper.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/emulation/viper.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1027,14 +1027,46 @@
 
   (defadvice describe-key (before viper-describe-key-ad protect activate)
     "Force to read key via `viper-read-key-sequence'."
-    (interactive (list (viper-read-key-sequence "Describe key: "))
-		 ))
+    (interactive (let (key)
+		   (setq key (viper-read-key-sequence
+			      "Describe key (or click or menu item): "))
+		   (list key
+			 (prefix-numeric-value current-prefix-arg)
+			 ;; If KEY is a down-event, read also the
+			 ;; corresponding up-event.
+			 (and (vectorp key)
+			      (let ((last-idx (1- (length key))))
+				(and (eventp (aref key last-idx))
+				     (memq 'down (event-modifiers
+						  (aref key last-idx)))))
+			      (or (and (eventp (aref key 0))
+				       (memq 'down (event-modifiers
+						    (aref key 0)))
+				       ;; For the C-down-mouse-2 popup
+				       ;; menu, there is no subsequent up-event.
+				       (= (length key) 1))
+				  (and (> (length key) 1)
+				       (eventp (aref key 1))
+				       (memq 'down (event-modifiers (aref key 1)))))
+			      (read-event))))))
 
   (defadvice describe-key-briefly
     (before viper-describe-key-briefly-ad protect activate)
     "Force to read key via `viper-read-key-sequence'."
-    (interactive (list (viper-read-key-sequence "Describe key briefly: "))))
-
+    (interactive (let (key)
+		   (setq key (viper-read-key-sequence
+			      "Describe key (or click or menu item): "))
+		   ;; If KEY is a down-event, read and discard the
+		   ;; corresponding up-event.
+		   (and (vectorp key)
+			(let ((last-idx (1- (length key))))
+			  (and (eventp (aref key last-idx))
+			       (memq 'down (event-modifiers (aref key last-idx)))))
+			(read-event))
+		   (list key
+			 (if current-prefix-arg
+			     (prefix-numeric-value current-prefix-arg))
+			 1))))
 
   (defadvice find-file (before viper-add-suffix-advice activate)
     "Use `read-file-name' for reading arguments."
--- a/lisp/erc/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,259 @@
+2007-04-01  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-version-string): Release ERC 5.2.
+
+	* erc-auto.in, erc-chess.el, erc-list.el, erc-speak.el:
+	* erc-viper.el: Update copyright notices.
+
+	* erc.texi: Make Emacs Lisp source code in this document
+	essentially public domain.  Update version to 5.2.
+	(Obtaining ERC): Mention extras tarball.
+	(Releases): Mention local GNU mirror.
+	(Sample Configuration): Remove notice.
+
+	* FOR-RELEASE (5.3): Add item for erc-nicklist.
+	Mark NEWS as done.  Mark extras tarball as done.
+
+	* Makefile (VERSION): Increment to 5.2.
+	(TESTING): Remove.
+	(EXTRAS): New variable containing the contents of our "Emacs 22
+	extras" tarball.
+	(SOURCE): Remove $(TESTING).
+	(MISC): Add COPYING and ChangeLog.06.  Fix ChangeLog.NNNN ->
+	ChangeLog.NN.
+	(release): Use $(SNAPDIR) instead of erc-$(VERSION).
+	(extras): New rule which implements the building of the extras
+	tarball.
+	(upload-extras): New rule to upload the extras tarball.  It's
+	yucky to replicate upload, but oh well.
+
+	* NEWS: Mention extras tarball.  Note which files have been
+	renamed.  Note that erc-list is enabled by default, except in
+	Emacs 22.
+
+	* README.extras: New file which serves as a README for the extras
+	tarball.
+
+2007-03-31  Michael Olson  <mwolson@gnu.org>
+
+	* NEWS: Update for the 5.2 release.
+
+	* FOR-RELEASE: Finish up 5.2 manual item.  Add documentation item
+	for 5.3.
+
+	* erc.texi (Sample Session): Flesh out.  Mention #erc.
+	(Modules): Defer to 5.3 release.
+	(Advanced Usage): Move Sample Configuration chapter ahead of
+	unfinished chapters.
+	(Sample Configuration): Write.
+	(Options): Mention how to see available ERC options.  Defer to 5.3
+	release.
+	(Tips and Tricks): Remove, since it seems better to just include
+	tips and tricks in the sample configuration, commented out.
+
+	* erc-bbdb.el (erc-bbdb-search-name-and-create): Make prompt more
+	informative about how to skip merging.
+	(erc-bbdb-insinuate-and-show-entry-1): Move contents of
+	erc-bbdb-insinuate-and-show-entry here.
+	(erc-bbdb-insinuate-and-show-entry): Run
+	erc-bbdb-insinuate-and-show-entry-1 "outside" of the calling
+	function, so that we can avoid triggering a process-filter error
+	if the user hits C-g.
+
+2007-03-30  Michael Olson  <mwolson@gnu.org>
+
+	* FOR-RELEASE: Solve C-c C-SPC keybinding dilemma.
+
+	* erc-autoaway.el (erc-autoaway-idle-method): Use `if' rather than
+	`cond' and `set' rather than `set-default'.
+
+	* erc-log.el: Avoid compiler warning by requiring erc-network
+	during compilation.
+	(erc-generate-log-file-name-function): Add tag to each option.
+	Add erc-generate-log-file-name-network.
+	(erc-generate-log-file-name-network): New function which generates
+	a log file name that uses network name rather than server name,
+	when possible.
+
+	* erc-track.el (track): Assimilate track-when-inactive module,
+	since there's no need to have two modules in one file -- an option
+	will do.  Remove track-modified-channels alias.  Call
+	erc-track-minor-mode-maybe, and tear down the minor mode when
+	disabling.
+	(erc-track-when-inactive): New option which determines whether to
+	track visible buffers when inactive.  The default is not to do so.
+	(erc-track-visibility): Mention erc-track-when-inactive.
+	(erc-buffer-visible): Use erc-track-when-inactive.
+	(erc-track-enable-keybindings): New option which determines
+	whether to enable the global-level tracking keybindings.  The
+	default is to do so, unless they would override another binding,
+	in which case we prompt the user about it.
+	(erc-track-minor-mode-map): Move global keybindings here.
+	(erc-track-minor-mode): New minor mode which only enables the
+	keybindings and does nothing else.
+	(erc-track-minor-mode-maybe): New function which starts
+	erc-track-minor-mode, but only if it hasn't already been started,
+	an ERC buffer exists, and the user OK's it, depending on the value
+	of `erc-track-enable-keybindings'.
+	(erc-track-switch-buffer): Display a message if someone calls this
+	without first enabling erc-track-mode.
+
+2007-03-17  Michael Olson  <mwolson@gnu.org>
+
+	* erc.texi (Development): Mention ErcDevelopment page on
+	emacswiki.
+	(Getting Started): Mention ~/.emacs.d/.ercrc.el and the Customize
+	interface.
+	(Sample Session): New section that has a very rough draft for a
+	sample ERC session.
+	(Special Features): New section that explains some of the special
+	features of ERC.  Taken from ErcFeatures on emacswiki, with
+	enhancements.
+
+2007-03-12  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-autoaway.el (erc-autoaway-idle-method): When setting the new
+	value, disable and re-enable `erc-autoaway-mode' only if it was
+	already enabled.  This fixes a bug where autoaway was enabled just
+	by loading the file.
+
+2007-03-10  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-capab.el: Added more information to the Usage section.
+	(erc-capab-identify-prefix): Doc fix.
+	(erc-capab-identify-unidentified): New face.
+	(290): Removed.  Definition moved to erc-backend.el.
+	(erc-capab-identify-send-messages): Renamed from
+	`erc-capab-send-identify-messages'.
+	(erc-capab-identify-setup): Use it.
+	(erc-capab-identify-get-unidentified-nickname): Renamed from
+	`erc-capab-get-unidentified-nickname'.
+	(erc-capab-identify-add-prefix): Use it.  Use
+	`erc-capab-identify-unidentified' as the face.
+
+	* erc-backend.el (290): Moved here from erc-capab.el.
+
+	* erc.el (erc-select): Added an autoload cookie.
+	(erc-message-type-member, erc-restore-text-properties): Use
+	`erc-get-parsed-vector'.
+	(erc-auto-query): Set the default to 'bury since many new users
+	expect private messages from others to be in dedicated query
+	buffers, not the server buffer.
+	(erc-common-server-suffixes): Use "freenode" for freenode.net, not
+	"OPN".  Added oftc.net.
+
+	* NEWS: Added note about erc-auto-query's new default setting.
+
+2007-03-03  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-open, erc): Docfixes.
+
+2007-03-02  Michael Olson  <mwolson@gnu.org>
+
+	* FOR-RELEASE: Make section for 5.3 release and move erc-backend
+	cleanup there.  Awaiting discussion before doing other things.
+	Add tasks for merging filename changes from the 5.2 release
+	branch, and for making a tarball of modules not in Emacs 22.  Add
+	item to remind me to update NEWS.  Mark backtab entry as done.
+
+	* erc-button.el (button): Add call to `erc-button-add-keys'.
+	(erc-button-keys-added): New variable tracking whether we've added
+	the keys yet.
+	(erc-button-add-keys): New function that adds the <backtab> key to
+	erc-mode-map.
+
+	* erc.texi: Change version to 5.2 (pre-release).
+
+2007-02-15  Michael Olson  <mwolson@gnu.org>
+
+	* CREDITS: Update.
+
+	* erc-backend.el (erc-server-send-ping-interval): Change to use a
+	default of 30 seconds.  Improve customize interface.
+	(erc-server-send-ping-timeout): New option that determines when to
+	consider a connection stalled and restart it.  The default is
+	after 120 seconds.
+	(erc-server-send-ping): Use erc-server-send-ping-timeout instead
+	of erc-server-send-ping-interval.  If
+	erc-server-send-ping-timeout is nil, do not ever kill and restart
+	a hung IRC process.
+
+	* erc.el (erc-modules): Include the name of the module in its
+	description.  This should make it easier for people to find and
+	enable a particular module.
+
+2007-02-15  Vivek Dasmohapatra  <vivek@etla.org>
+
+	* erc.el (erc-cmd-RECONNECT): Kill old process if it is still
+	alive.
+	(erc-message-english-PART): Properly escape "%" characters in
+	reason.
+
+	* erc-backend.el (erc-server-reconnecting): New variable that is
+	set when the user requests a reconnect, but the old process is
+	still alive.  This forces the reconnect to work even though the
+	process is killed manually during reconnect.
+	(erc-server-connect): Initialize it.
+	(erc-server-reconnect-p): Use it.
+	(erc-process-sentinel-1): Set it to nil after the first reconnect
+	attempt.
+
+2007-02-07  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-menu.el (erc-menu-definition): Fixed so that the separator
+	is between "Current channel" and "Pals, fools and other keywords",
+	not at the bottom of the "Current channel" submenu.
+
+2007-01-25  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-networks.el (erc-server-alist): Removed SSL server for now
+	since `erc-server-select' doesn't know to use `erc-ssl'.
+
+	* erc-networks.el (erc-server-alist, erc-networks-alist): Added
+	definitions for oftc.net.
+
+	* erc-services.el (erc-nickserv-alist): Fixed OFTC message regexp.
+
+2007-01-22  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-server-error-occurred): New variable that
+	indicates when an error has been signaled by the server.  This
+	should fix an infinite reconnect bug when giving some servers a
+	bogus :full-name.  Thanks to Angelina Carlton for the report.
+	(erc-server-connect): Initialize erc-server-error-occurred.
+	(erc-server-reconnect-p): Use it.
+	(ERROR): Set it.
+
+	* erc-services.el (erc-nickserv-alist): Alphabetize and add Ars
+	and QuakeNet.  Standardize look of entries.  Fix type mismatch
+	error in customize interface.
+	(erc-nickserv-passwords): Alphabetize and add missing entries from
+	erc-nickserv-alist.
+
+2007-01-21  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-header-line-format): Document how to disable the
+	header line, and add a customization type for it.  Also, make the
+	changes take effect immediately.
+
+2007-01-19  Michael Olson  <mwolson@gnu.org>
+
+	* erc.texi (Modules): Document new menu module.  Thanks to Leo
+	for noticing.
+
+2007-01-16  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-stamp.el (erc-insert-timestamp-left): Fixed so that the
+	whitespace string filler is hidden correctly when timestamps are
+	hidden.
+	(erc-toggle-timestamps): New function to use instead of
+	`erc-show-timestamps' and `erc-hide-timestamps'.
+
+	* erc.el (erc-restore-text-properties): Moved here from
+	erc-fill.el since it could be useful in general.
+
+	* erc-fill.el (erc-restore-text-properties): Removed.
+
 2007-01-13  Michael Olson  <mwolson@gnu.org>
 
 	* erc.el (erc-command-regexp): New variable that is used to match
@@ -73,6 +329,10 @@
 	(erc-format-lag-time): New function.
 	(erc-update-mode-line-buffer): Use it.
 
+2007-01-10  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el: Fix typo in url-irc-function instructions.
+
 2007-01-09  Michael Olson  <mwolson@gnu.org>
 
 	* erc.el (erc-system-name): New option that determines the system
@@ -89,1260 +349,10 @@
 	(erc-menu-add, erc-menu-remove): New functions that add and remove
 	the ERC menu.
 
-2006-12-28  Michael Olson  <mwolson@gnu.org>
-
-	* erc-list.el: Change header to mention that this is part of ERC,
-	rather than GNU Emacs.
-
-	* erc-networks.el (erc-server-alist): Add Ars OpenIRC and
-	LinuxChix networks.  Thanks to Angelina Carlton for mentioning
-	them.  Properly escape periods in Konfido.Net and Kewl.Org.
-	(erc-networks-alist): Add entries for Ars and LinuxChix, though
-	the latter does not actually provide an announced network name.
-
-	* erc-services.el (erc-nickserv-identify-mode): Add 'both method,
-	which waits for a NickServ message if the network supports it,
-	otherwise sends the password after connecting.
-	(erc-nickserv-identify-mode): Default to 'both.
-	(erc-nickserv-passwords): Add OFTC and Azzurra to custom options.
-	(erc-nickserv-alist): Indentation fix.
-	(erc-nickserv-identify-on-connect)
-	(erc-nickserv-identify-on-nick-change): Handle 'both method.
-
-2006-12-28  Leo  <sdl.web@gmail.com>  (tiny change)
-
-	* erc.el (erc-iswitchb): Wrap body in unwind-protect so that
-	hitting C-g does not leave iswitchb-mode on.
-
-2006-12-27  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-cmd-RECONNECT): New command that calls
-	erc-server-reconnect.
-
-	* erc-backend.el (erc-server-reconnect-count): New server variable
-	that keeps track of reconnection attempts.
-	(erc-server-reconnect-attempts): New option that determines the
-	number of reconnection attempts that ERC will make per server.
-	(erc-server-reconnect-timeout): New option that determines the
-	amount of time, in seconds, that ERC will wait between successive
-	reconnect attempts.
-	(erc-server-reconnect): New function that reestablishes the
-	current IRC connection.  Move some commands from
-	erc-process-sentinel-1 here.
-	(erc-process-sentinel-1): If we have been disconnected, loop until
-	we either reconnect or run out of attempts.
-	(erc-server-reconnect-p): Move higher and make this a defsubst,
-	since I'm worried about the current buffer changing from
-	underneath us.  Implement limit of number of reconnect attempts..
-
-	* erc.texi (Getting Started): Update for /RECONNECT command.
-
-2006-12-26  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-open): Restore old point correctly, or at least get
-	closer to doing so than before.
-
-2006-12-13  Leo  <sdl.web@gmail.com>  (tiny change)
-
-	* erc.el (erc-iswitchb): Temporarily enable iswitchb mode if it
-	isn't active already, instead of leaving it on.
-
-2006-12-10  Juanma Barranquero  <lekktu@gmail.com>
-
-	* erc-ezbounce.el (erc-ezb-init-session-list): Doc fix.
-
-2006-12-08  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el: Re-evaluate contributions from a contributor, and found
-	them under 15 lines of non-obvious code, so it is safe to remove
-	the copyright notice.
-	(erc-modules): Remove list module.
-
-	* erc-list.el: Remove, since a contributor who has not completed
-	their assignment has contributed significantly more than 15 lines
-	of code to this file.
-
-2006-11-28  Juanma Barranquero  <lekktu@gmail.com>
-
-	* erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
-	(erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
-	(erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
-	(erc-modules, erc-display-message-highlight, erc-process-input-line)
-	(erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
-	(erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
-	(erc-echo-notice-in-first-user-buffer, erc-connection-established)
-	(erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
-	(erc-command-symbol, erc-add-query, erc-process-script-line)
-	(erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
-	(erc-script-echo): Fix typos in docstrings.
-	(erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
-	(define-erc-module, erc-once-with-server-event)
-	(erc-once-with-server-event-global, erc-debug-irc-protocol)
-	(erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
-	(erc-update-current-channel-member, erc-load-script):
-	(erc-mode-line-away-status-format): Doc fixes.
-
-2006-11-20  Andrea Russo  <rastandy@inventati.org>  (tiny change)
-
-	* erc-dcc.el (erc-dcc-chat-setup): Initialize `erc-input-marker'
-	before calling `erc-display-prompt'.
-
-2006-11-24  Juanma Barranquero  <lekktu@gmail.com>
-
-	* erc.el (erc-after-connect, erc-open-ssl-stream)
-	(erc-display-line-1, erc-display-line):
-	* erc-backend.el (005): Fix space/tab mixup in docstrings.
-
-2006-11-20  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-version-string): Call this Version 5.2 stable
-	pre-release, since it diverges slightly from our 5.2 branch, in
-	that unstable features are not included.
-	(erc-update-modules): Display better error message when module not
-	found.
-
-2006-11-12  Michael Olson  <mwolson@gnu.org>
-
-	* erc-log.el: Save all log buffers when Emacs exits, in case
-	someone ignores the warning about open processes.  Remove the
-	advice code in the commentary.
-	(erc-save-query-buffers): Docfix.
-	(erc-log-save-all-buffers): New function that saves all ERC
-	buffers to logs.
-	(erc-current-logfile): Fix bug in filename selection, where the
-	current buffer was erroneously being preferred over the given
-	buffer.
-
-2006-11-08  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-string-to-port): Avoid error when a numerical port
-	is passed.  Thanks to Zekeriya KOÇ for the report.
-
-2006-11-08  Åukasz Demianiuk  <ldemianiuk@gmail.com>  (tiny change)
-
-	* erc.el (erc-header-line): Fix typo.
-
-2006-11-06  Juanma Barranquero  <lekktu@gmail.com>
-
-	* erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
-
-	* erc.el (read-passwd):
-	* erc-autoaway.el (erc-autoaway-reestablish-idletimer):
-	* erc-truncate.el (truncate): Fix typo in docstring.
-
-2006-10-21  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
-	first loading iswitchb.  Thanks to Leo for the report.
-
-2006-10-10  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-default-port): Make the default be 6667 instead of
-	ircd. since Mac OS X apparently has problems with looking up that
-	port name.
-
-	* erc-backend.el (353): Receive names after displaying the initial
-	message, instead of before.
-
-2006-10-05  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc.el (erc-my-nick-face): New face.
-	(erc): Use FULL-NAME argument, not `erc-user-full-name'.  This
-	fixes a bug where the :full-name argument passed to the function
-	was not respected.
-	(erc-format-my-nick): Use `erc-my-nick-face'.  This should help
-	make it easier to find messages you sent in conversations when
-	`erc-show-my-nick' is non-nil.
-	(erc-compute-server): Doc fix.
-
-2006-10-01  John J Foerch  <jjfoerch@earthlink.net>  (tiny change)
-
-	* erc-stamp.el (erc-insert-timestamp-right): Exclude the newline
-	from the erc-timestamp field.
-
-2006-09-11  Michael Olson  <mwolson@gnu.org>
-
-	* erc-nicklist.el (erc-nicklist-insert-contents): Add missing
-	parenthesis.  Thanks to Stephan Stahl for the report.
-
-2006-09-10  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
-
-	* erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
-	instead of a single user.
-
-2006-09-10  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-generate-new-buffer-name): If this is a server
-	buffer and a process exists already, create a new buffer.
-	(erc-open): If the IRC session was continued, restore the old
-	point.  Thanks to Stephan Stahl for the report.
-	(erc-member-ignore-case): Coding style tweak.
-	(erc-cmd-UNIGNORE): Quote the user before comparison.  If we don't
-	find the user listed verbatim, try to match them against the list
-	using string-match.  In this case, prompt as to whether the regexp
-	should be removed.
-	(erc-ignored-user-p): Remove CL-ism.
-
-	* erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
-	whether we are already away.
-
-	* erc-menu.el: Fix potential compiler warning.
-
-2006-09-07  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc.el: Updated Commentary and URL.
-	(erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
-	(erc-arrange-session-in-multiple-windows): No need to check if
-	`erc-server-process' is bound.
-	(erc-server-buffer-live-p): Doc fix.
-	(erc-part-from-channel): Don't use any initial contents at prompt.
-	(erc-format-nick, erc-format-@nick): Doc fix.  Use `when'.
-	(s367): Fixed to support only banmask and channel which is the
-	standard.  Also, there's no reason to add a message to each banned
-	user entry trying to persuade the user to use /banlist instead of
-	/mode #channel +b.  That part of the message was a little
-	confusing, anyways.
-	(s367-set-by): New catalog entry.  The user who set the ban and
-	the time of ban seem to be specific to only certain servers such
-	as freenode.
-
-	* erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
-
-	* erc-backend.el (erc-server-process-alive): No need to check if
-	`erc-server-process' is bound.
-	(367): Use s367 or s367-set-by where appropriate.
-
-	* erc-compat.el: Fixed URL.
-
-	* erc-dcc.el: Updated copyright years.  Added Usage section.
-	Changed supported Emacs version number from 21.3.50 to 22 in
-	Commentary.
-
-	* erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
-	to check if `erc-server-process' is bound.
-
-	* erc-nicklist.el: Added to the Commentary section an explanation
-	that `erc-nicklist-quit' should be called from within the nicklist
-	buffer.  Set file coding to utf-8 so a contributor's name is
-	displayed correctly.
-	(erc-nicklist-icons-directory): Use customize type directory
-	instead of string.
-	(erc-nicklist-insert-contents): Set bbdb-nick to an empty string
-	if it wasn't found.  This fixes a bug where an error would occur
-	when using `string=' on bbdb-nick if it was nil.
-
-	* erc-replace.el: Removed URL from file information since it
-	doesn't exist.
-
-	* erc-sound.el: Updated copyright years.  Fixed Commentary and
-	added Usage section.
-	(define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
-	`erc-ctcp-query-SOUND-hook' here.  Removed the keybinding
-	definitions.
-	(erc-play-sound, erc-default-sound, erc-cmd-SOUND)
-	(erc-ctcp-query-SOUND): Doc fix.
-	(erc-play-command): Removed, not necessary anymore.
-	(erc-ctcp-query-SOUND-hook): Set to nil as default.  Moved up
-	higher in code, added docstring.
-	(erc-play-sound): Use `play-sound-file'.  It exists in GNU Emacs
-	as well since version 21 or earlier.  Removed commented-out older
-	version of function.
-
-	* NEWS: Fixed formatting, added channel tracking change.
-
-2006-09-03  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc.el: M-x erc RET can now be used to start ERC.
-	(erc-open): Renamed from `erc'.
-	(erc-before-connect): Change erc-select to erc.
-	(erc): Renamed from `erc-select'.  Use `erc-open'.
-	(erc-select): Defined as alias of `erc'.
-	(erc-ssl): Renamed from `erc-select-ssl'.  Use `erc'.
-	(erc-select-ssl): Defined as alias of `erc-ssl'.
-	(erc-cmd-SERVER): Use `erc'.
-	(erc-query, erc-handle-irc-url): Use `erc-open'.
-
-	* erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
-
-	* erc-menu.el (erc-menu-definition): Use `erc'.
-
-	* erc-networks.el: Updated copyright years.
-	(erc-server-select): Use keyword arguments when calling `erc'.
-
-	* erc.texi (Getting Started, Connecting): Changed erc-select to
-	erc.
-
-	* NEWS: Added note about these changes.
-
-2006-08-20  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-backend.el (erc-process-sentinel-1): Doc fix.  Let
-	`erc-server-reconnect-p' check all condition cases.
-	(erc-server-reconnect-p): Moved rest of checks from
-	`erc-process-sentinel-1' to here.  Now takes an argument, EVENT.
-
-2006-08-21  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-track.el (erc-track-mode-line-mouse-face): New variable.
-	(erc-make-mode-line-buffer-name): Add help-echo and mouse-face
-	properties to channel name.
-
-2006-08-20  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-with-server-buffer): New macro that switches to the
-	current ERC server buffer and runs some code.  If no server buffer
-	is available, return nil.  This is a useful way to access
-	variables in the server buffer.
-	(erc-open-server-buffer-p): New function that returns non-nil if
-	the given buffer is an ERC server buffer that has an open IRC
-	process.
-
-2006-08-14  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-menu.el: Updated copyright years.  Removed EmacsWiki URL.
-	(erc-menu-definition): Name the menu "ERC" instead of "IRC" to
-	avoid confusion with rcirc and other clients.
-
-	* erc-backend.el (erc-server-banned): New variable.
-	(erc-server-connect): Set `erc-server-banned' to nil.
-	(erc-process-sentinel-1): Use `erc-server-reconnect-p'.
-	(erc-server-reconnect-p): New function.  Return non-nil if the
-	user wants automatic reconnects and if the user has not been
-	banned from the server.  This should fix a bug where ERC gets into
-	a loop trying to reconnect with no way to stop it when the user is
-	denied access to the server due to a server ban.  It might also
-	help when Tor users are blocked from freenode if freenode servers
-	send the 465 message before disconnecting.
-	(465): Handle "banned from server" error notices.
-
-2006-08-13  Romain Francoise  <romain@orebokech.com>
-
-	* erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
-	prompt with a space.
-
-2006-08-11  Michael Olson  <mwolson@gnu.org>
-
-	* erc-fill.el (erc-fill): Skip any initial empty lines so that we
-	avoid errors when inserting disconnect messages and other messages
-	that begin with newlines.
-
-2006-08-07  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el (erc-process-sentinel-1): Use erc-display-message
-	in several places instead of inserting text.
-	(erc-process-sentinel): Move to the input-marker before removing
-	the prompt.
-
-	* erc.el (erc-port): Fix customization options.
-	(erc-display-message): Handle null type explicitly.  Previously,
-	this was relying on a chance side-effect.  Cosmetic indentation
-	tweak.
-	(english): Add 'finished and 'terminated entries to the catalog.
-	Add initial and terminal newlines to 'disconnected and
-	'disconnected-noreconnect entries.  Avoid long lines.
-
-2006-08-06  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el (erc-server-send-queue): Update from Circe
-	version of this function.
-
-	* erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
-	multi-tty Emacs.
-	(erc-select-startup-file): Fix bug introduced by recent change.
-
-2006-08-05  Michael Olson  <mwolson@gnu.org>
-
-	* erc-log.el (erc-log-standardize-name): New function that returns
-	a filename that is safe for use for a log file.
-	(erc-current-logfile): Use it.
-
-	* erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
-	since that is a fairly standard directory.
-	(erc-select-startup-file): Re-write to use
-	convert-standard-filename, which will ensure that MS-DOS systems
-	look for the _ercrc.el file.
-
-2006-08-02  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-version-string): Release ERC 5.1.4.
-
-	* Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
-
-	* erc.el (erc-active-buffer): Fix bug that caused messages to go
-	to the wrong buffer.  Thanks to offby1 for the report.
-
-	* erc-backend.el (erc-coding-system-for-target): Handle case where
-	target is nil.  Thanks to Kai Fan for the patch.
-
-2006-07-29  Michael Olson  <mwolson@gnu.org>
-
-	* erc-log.el (erc-log-setup-logging): Don't offer to save the
-	buffer.  It will be saved automatically killed.  Thanks to Johan
-	Bockgård and Tassilo Horn for pointing this out.
-
-2006-07-27  Johan Bockgård  <bojohan@users.sourceforge.net>
-
-	* erc.el (define-erc-module): Make find-function and find-variable
-	find the names constructed by `define-erc-module' in Emacs 22.
-
-2006-07-14  Michael Olson  <mwolson@gnu.org>
-
-	* erc-log.el (log): Make sure that we enable logging on
-	already-opened buffers as well, in case the user toggles this
-	module after loading ERC.  Also be sure to remove logging ability
-	from all ERC buffers when the module is disabled.
-	(erc-log-setup-logging): Set buffer-file-name to nil rather than
-	the empty string.  This should fix some errors that occur when
-	quitting Emacs without first killing all ERC buffers.
-	(erc-log-disable-logging): New function that removes the logging
-	ability from the current buffer.
-
-	* erc-spelling.el (spelling): Use dolist and buffer-live-p.
-
-2006-07-12  Michael Olson  <mwolson@gnu.org>
-
-	* erc-match.el (erc-log-matches): Bind inhibit-read-only rather
-	than call toggle-read-only.
-
-	* erc.el (erc-handle-irc-url): Move here from erc-goodies.el and
-	add autoload cookie.
-
-2006-07-09  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-version-string): Release ERC 5.1.3.
-
-	* erc.texi: Update for the 5.1.3 release.
-
-	* erc-autoaway.el (erc-autoaway-set-back): Fix bug after returning
-	from being set automatically away and current buffer is not an ERC
-	buffer.
-
-	* erc-identd.el: Fix compiler error.
-
-	* erc.texi (Development): Use @subheading instead of @subsection.
-	(Advanced Usage): Add menu.
-	(Connecting): Fully document how to connect to an IRC server.
-	(Options, Tips and Tricks, Sample Configuration): New unwritten
-	sections.
-
-	* erc.el (erc-server, erc-port, erc-nick, erc-nick-uniquifier)
-	(erc-user-full-name, erc-password): Docfixes and customization
-	interface tweaks.
-	(erc-try-new-nick-p): Rename from
-	`erc-manual-set-nick-on-bad-nick-p' and invert meaning.
-	(erc-nickname-in-use): Use `erc-try-new-nick-p'.  Check the length
-	of `erc-nick-uniquifier', in case someone wants multiple
-	characters.
-	(erc-compute-server, erc-compute-nick, erc-compute-full-name)
-	(erc-compute-port): Docfixes.
-
-	* erc-log.el (log): Move all add-hook calls here, rather than
-	executing them immediately, and also cause them to be un-hooked
-	when the module is removed.
-	(erc-save-buffer-on-part): Move next to
-	`erc-save-queries-on-quit'.
-	(erc-save-buffer-on-quit, erc-save-queries-on-quit): Default to t.
-	(erc-log-write-after-send, erc-log-write-after-insert): Default to
-	nil.  This makes things fast, but reasonably failsafe, by default.
-
-2006-07-08  Michael Olson  <mwolson@gnu.org>
-
-	* erc-log.el (erc-log-insert-log-on-open): Make this nil by
-	default, since most IRC clients don't do this.
-	(erc-log-write-after-send): New option that determines whether the
-	log file will be written to after every sent message.
-	(erc-log-write-after-insert): New option that determines whether
-	the log file will be written to when new text is added to a logged
-	ERC buffer.
-	(log): Use the aforementioned options.
-
-	* erc.texi (Modules): Document the "completion" module.
-
-	* erc-pcomplete.el (pcomplete-erc-nicks): Make sure that we don't
-	have a nil element in the list when ignore-self is non-nil.
-
-2006-07-05  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-modules): Add the `page' module to the list.
-
-	* erc.texi (Modules): Add entries for `list' and `page' modules.
-	Change "spell" to "spelling".
-	(History): Use past tense throughout.
-
-2006-07-02  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el (erc-call-hooks): Fix (stringp nil) error that
-	can happen when doing /PART.
-
-	* erc.el (erc-quit-reason-various-alist)
-	(erc-part-reason-various-alist): In the example, use "^$" as an
-	example, since "" matches anything.
-	(erc-quit-reason-various, erc-part-reason-various): If no argument
-	is given, and no matches are found, use our default reason instead
-	of "nil".
-
-2006-06-30  Michael Olson  <mwolson@gnu.org>
-
-	* erc.texi (Modules): Mention identd.
-	(Releases): Update mailing list address and download location.
-	(Development): Refactor.  Provide updated directions for Arch.
-	Make URLs clickable.
-	(Keystroke Summary): Typo fix.  Use more Texinfo syntax.
-	(Getting Started): Give simpler example.  We do not need to
-	explicitly load every module.
-	(History): Update.
-
-	* erc.el (erc-version-modules): Remove, since we do not use this
-	function anymore.
-	(erc-latest-version, erc-ediff-latest-version): Remove, since this
-	was only useful back when ERC consisted of one file.
-	(erc-modules): Add line for identd.
-	(erc-get-channel-mode-from-keypress): Typo fix.
-
-	* erc-imenu.el: Remove unnecessary lines in header.
-
-	* erc-goodies.el (erc-handle-irc-url): Docfix.
-
-	* erc-identd.el: Define an ERC module for this.
-	(erc-identd-start): Don't create a process buffer if possible.
-	Otherwise, use conventional hidden names for process buffers.
-
-2006-06-29  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el (erc-coding-system-for-target): Match
-	case-insensitively.  Use a pattern match instead of `assoc', as
-	per the documentation for `erc-encoding-coding-alist'.
-
-	* erc-track.el (erc-track-shorten-aggressively): Fix typo.
-
-2006-06-27  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el: Update maintainer information and URLs.
-
-2006-06-14  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-active-buffer): If the active buffer has been
-	deleted, default to the server buffer.
-	(erc-toggle-flood-control): When the user hits C-c C-f, make flood
-	control really toggle, not unconditionally turn off.
-
-2006-06-12  Michael Olson  <mwolson@gnu.org>
-
-	* NEWS: Add items since the 5.1.2 release.
-
-	* erc-autoaway.el (erc-autoaway-caused-away): New variable that
-	indicates whether the current away status was caused by this
-	module.
-	(erc-autoaway-set-back): Only set back if this module set the user
-	away.
-	(erc-autoaway-set-away): Update `erc-autoaway-caused-away'.
-	(erc-autoaway-reset-indicators): New function that resets some
-	indicators when the user is no longer away.
-	(autoaway): Add the above function to the 305 hook.
-
-2006-06-05  Romain Francoise  <romain@orebokech.com>
-
-	* erc.texi (History): Fix various typos.
-
-2006-06-04  Michael Olson  <mwolson@gnu.org>
-
-	* erc-autoaway.el (erc-autoaway-idle-method): Move after the
-	definition of the autoaway module.
-	(autoaway): Don't do anything if erc-autoaway-idle-method is
-	unbound.  This prevents an error on startup.
-
-2006-06-03  Michael Olson  <mwolson@gnu.org>
-
-	* erc-autoaway.el: Thanks to Mark Plaksin for the ideas and patch.
-	(erc-autoaway-idle-method): Renamed from
-	`erc-autoaway-use-emacs-idle'.  We have more than two choices for
-	how to do this, so it's best to make this take symbol values.
-	Improve documentation.  Remove warning against Emacs idle-time;
-	the point is moot now that we get user idle time via a different
-	method.  Make sure we disable and re-enable the module when
-	changing this value.
-	(autoaway): Conditionalize on the above option.  If using the idle
-	timer or user idle methods, don't add anything to the
-	send-completed or server-001 hooks, since it is unnecessary.
-	(erc-autoaway-reestablish-idletimer, erc-autoaway-message):
-	Docfix.
-	(erc-autoaway-idle-seconds): Use erc-autoaway-idle-method.
-	(erc-autoaway-reset-idle-irc): Renamed from
-	`erc-autoaway-reset-idle'.  Don't pass line to
-	`erc-autoaway-set-away', since it is not used.
-	(erc-autoaway-reset-idle-user): New function that resets the idle
-	state for user idle time.
-	(erc-autoaway-set-back): Remove line argument, since it is not
-	used.
-
-2006-06-01  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-buffer-filter): Make sure all buffers returned from
-	this are live.
-
-2006-05-01  Edward O'Connor  <ted@oconnor.cx>
-
-	* erc-goodies.el (erc-handle-irc-url): New function, suitable as
-	a value for `url-irc-function'.
-
-2006-04-18  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-pcomplete.el (pcomplete-erc-nicks): Added new optional
-	argument IGNORE-SELF.  If this is non-nil, don't return the user's
-	current nickname.  Doc fix.
-	(pcomplete/erc-mode/complete-command): Don't complete the current
-	nickname.
-
-2006-04-05  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc.el (erc-cmd-SV): Removed the exclamation point.  Show the
-	build date as it's shown in `emacs-version'.
-
-	* erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix
-	with the same face property as the previous character.
-
-2006-04-02  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el,
-	erc.el: Make sure to include a newline inside of negated classes,
-	so that a newline is not matched.
-
-2006-04-01  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el (erc-server-connect-function): Don't try to
-	detect the existence of the `open-network-stream-nowait' function,
-	since I can't find it in Emacs21, XEmacs21, or Emacs22.
-
-2006-03-26  Michael Olson  <mwolson@gnu.org>
 
-	* erc.el (erc-header-line): New face that will be used to colorize
-	the text of the header-line, provided that
-	`erc-header-line-face-method' is non-nil.
-	(erc-prompt-face): Fix formatting.
-	(erc-header-line-face-method): New option that determines the
-	method used for colorizing header-line text.  This may be a
-	function, nil, or non-nil.
-	(erc-update-mode-line-buffer): Use the aforementioned option and
-	face to colorize the header-line text, if that is what the user
-	wants.
-	(erc-send-input): If flood control is not activated, don't split
-	the input line.
-
-2006-03-25  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-cmd-QUOTE): Install patch from Aravind Gottipati
-	that fixes the case where there is no leading whitespace.  Only
-	remove the first space character, though.
-
-	* erc-identd.el (erc-identd-start): Fix a bug by making sure that
-	erc-identd-process is set properly.
-	(erc-identd-start, erc-identd-stop): Add autoload cookies.
-	(erc-identd-start): Pass :host parameter so this works with Emacs
-	22.
-
-2006-03-09  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-button.el (erc-button-keymap): Use <backtab> rather than
-	<C-tab> for `erc-button-previous' as it is a more standard key
-	binding for this type of function.
-
-2006-02-28  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-capab.el: Removed things that were accidentally committed on
-	2006-02-20.  Removed Todo section.
-	(erc-capab-unidentified): Removed.
-
-2006-02-26  Michael Olson  <mwolson@gnu.org>
-
-	* erc-capab.el: Use (eval-when-compile (require 'cl)).
-	(erc-capab-unidentified): Fix compiler warning by specifying
-	group.
-
-2006-02-20  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-capab.el (erc-capab-send-identify-messages): Fixed comment
-	to explain thoughts better.  `erc-server-parameters' is an
-	associated list when it's set, not a string.
-
-2006-02-19  Michael Olson  <mwolson@gnu.org>
-
-	* erc-capab.el (erc-capab-send-identify-messages): Make sure some
-	parameters are strings before using them.  Thanks to Alejandro
-	Benitez for the report.
-
-	* erc.el (erc-version-string): Release ERC 5.1.2.
-
-2006-02-19  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-button.el (erc-button-keymap): Bind `erc-button-previous' to
-	<C-tab>.
-	(erc-button-previous): New function.
-
-2006-02-15  Michael Olson  <mwolson@gnu.org>
-
-	* NEWS: Add category for ERC 5.2.
-
-	* erc.el (erc): Move to the end of the buffer when a continued
-	session is detected.  Thanks to e1f and indio for the report and
-	testing a potential fix.
-
-2006-02-14  Michael Olson  <mwolson@gnu.org>
-
-	* debian/changelog: Prepare a new Debian package.
-
-	* Makefile (debprepare): New rule that creates an ERC snapshot
-	directory for use in both new Debian releases and revisions for
-	Debian packages.
-	(debrelease, debrevision-mwolson): Use debprepare.
-
-	* NEWS: Bring up-to-date.
-
-	* erc-stamp.el (erc-insert-timestamp-right): For now, put
-	timestamps before rather than after erc-fill-column when
-	erc-timestamp-right-column is nil.  This way we won't surprise
-	anyone unpleasantly, or so it is hoped.
-
-2006-02-13  Michael Olson  <mwolson@gnu.org>
-
-	* erc-dcc.el: Use (eval-when-compile (require 'cl)).
-
-2006-02-12  Michael Olson  <mwolson@gnu.org>
-
-	* erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
-	* erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
-	* erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
-	* erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
-	* erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
-	* erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
-	* erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
-	Add 2006 to copyright years, to comply with the changed guidelines.
-
-2006-02-11  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-update-modules): Handle erc-capab-identify
-	correctly.  Make some requirements shorter, so that it's easier to
-	see why they are needed.
-
-	* erc-capab.el: Add autoload cookie for capab-identify.
-	(erc-capab-send-identify-messages, erc-capab-identify-activate):
-	Minor whitespace fix in code.
-
-	* erc-stamp.el (erc-timestamp-use-align-to): Renamed from
-	`erc-timestamp-right-align-by-pixel'.  Set the default based on
-	whether we are in Emacs 22, and using X.  Improve documentation.
-	(erc-insert-aligned): Remove calculation of offset, since
-	:align-to pos works after all.  Unlike the previous solution, this
-	one works when erc-stamp.el is compiled.
-	(erc-insert-timestamp-right): Don't add length of string, and then
-	later remove its displayed width.  This puts timestamps after
-	erc-fill-column when erc-timestamp-right-column is nil, rather
-	than before it.  It also fixes a subtle bug.  Remove use of
-	`current-window', since there is no variable by that name in
-	Emacs21, Emacs22, or XEmacs21 beta.  Check to see whether
-	`erc-fill-column' is non-nil before using it.
-
-2006-02-11  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-list.el: Define `list' module which sets the alias
-	`erc-cmd-LIST' to `erc-list-channels' when enabled and
-	`erc-list-channels-simple' when disabled.
-	(erc-list-channels): Was `erc-cmd-LIST', renamed.
-	(erc-list-channels-simple): New function.
-
-	* erc.el (erc-modules): Added `list' to enabled modules.  Changed
-	`capab-identify' description.  Moved customization options left in
-	source code.
-
-	* erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
-
-	* erc-capab.el: Put a little more detail into Usage section.
-	(define-erc-module): Run `erc-capab-identify-setup' in all open
-	server buffers when enabling.
-	(erc-capab-identify-setup): Make PROC and PARSED optional
-	arguments.
-	(erc-capab-identify-add-prefix): Simplified nickname regexp.  This
-	should now also match nicknames that are formatted differently
-	than the default.
-
-	* erc-spelling.el (define-erc-module): Make sure there's a buffer
-	before calling `with-current-buffer'.
-
-2006-02-10  Michael Olson  <mwolson@gnu.org>
-
-	* Makefile (debbuild): Split from debrelease.
-	(debrevision-mwolson): New rule that causes a Debian revision to
-	be built.
-
-	* erc.el (erc-migrate-modules): Use a better algorithm.  Thanks to
-	Johan Bockgård.
-	(erc-modules): Change use of 'pcomplete to 'completion.
-
-2006-02-09  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
-	* erc-capab.el: Require erc.
-	(erc-capab-send-identify-messages): Use `erc-server-send'.
-	(erc-capab-identify-remove/set-identified-flag): Use 1 and 0 as
-	the flags so we can also check whether the `erc-identified' text
-	property is there at all.
-	(erc-capab-identify-add-prefix): Use `erc-capab-find-parsed'.
-	This fixes a bug where the prefix wasn't inserted when timestamps
-	are inserted on the right.  Tweaked nickname regexp.
-	(erc-capab-find-parsed): New function.
-	(erc-capab-get-unidentified-nickname): Updated to check for 0
-	flag.  Only get nickname if there's a nickuserhost associated with
-	this message.
-
-	* erc-capab.el: New file.  Adds the new module
-	`erc-capab-identify', which allows flagging of unidentified users
-	on servers running an ircd based on dancer - irc.freenode.net, for
-	example.
-
-	* erc.el (erc-modules): Added `capab-identify' to options.
-	(erc-get-parsed-vector, erc-get-parsed-vector-nick)
-	(erc-get-parsed-vector-type): Moved here from erc-match.el.
-
-	* erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
-	(erc-get-parsed-vector-type): Moved these functions to erc.el
-	since they can be useful outside of the text matching module.
-
-	* NEWS: Added erc-capab.el.
-
-	* erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
-	to "ERC".
-
-2006-02-07  Michael Olson  <mwolson@gnu.org>
-
-	* ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
-	ChangeLog.05: Rename from ChangeLog.NNNN in order to disambiguate
-	the filenames in DOS.
-
-	* erc-goodies.el: Comment fix.
-
-	* erc-hecomplete.el: Rename from erc-complete.el.  Update
-	commentary.  Use define-erc-module so that it's possible to
-	actually use this.
-	(erc-hecomplete): Rename function from `erc-complete'.
-	(erc-hecomplete): Rename group from `erc-old-complete'.  Docfix.
-
-	* erc-join.el: Rename from erc-autojoin.el.
-
-	* erc-networks.el: Rename from erc-nets.el.
-
-	* erc-services.el: Rename from erc-nickserv.el.
-
-	* erc-stamp.el (erc-insert-aligned): Don't take 3rd argument.  Use
-	the simpler `indent-to' function when
-	`erc-timestamp-right-align-by-pixel' is nil.
-	(erc-insert-timestamp-right): If the timestamp goes on the
-	following line, don't add timestamp properties to the spaces in
-	front of it.
-
-	* erc.el (erc-migrate-modules): New function that eases migration
-	of module names.
-	(erc-modules): Call erc-migrate-modules in the :get accessor.
-	(erc-modules, erc-update-modules): Update for new modules names.
-	(erc-cmd-SMV): Remove, since this does not give useful output due
-	to the version strings being removed from ERC modules.
-
-2006-02-05  Michael Olson  <mwolson@gnu.org>
-
-	* erc-spelling.el (erc-spelling-init): If
-	`erc-spelling-dictionaries' is nil, do not set
-	ispell-local-dictionary.  Before, it was being set to nil, which
-	was causing a long delay while the ispell process restarted.
-	(erc-spelling-unhighlight-word): New function that removes
-	flyspell properties from a spell-checked word.
-	(erc-spelling-flyspell-verify): Don't spell-check nicks or words
-	that have '/' before them.
-
-2006-02-04  Michael Olson  <mwolson@gnu.org>
-
-	* erc-autojoin.el: Use (eval-when-compile (require 'cl)).
-
-	* erc-complete.el (erc-nick-completion-exclude-myself)
-	(erc-try-complete-nick): Use better function for getting list of
-	channel users.
-
-	* erc-goodies.el: Docfix.
-
-	* erc-stamp.el: Use new arch tagline, since the other one wasn't
-	being treated properly.
-
-	* erc.el (erc-version-string): Release ERC 5.1.1.
-
-2006-02-03  Zhang Wei  <id.brep@gmail.com>
-
-	* erc.el (erc-version-string): Don't hard-code Emacs version.
-	(erc-version): Use emacs-version.
-
-2006-01-31  Michael Olson  <mwolson@gnu.org>
-
-	* erc-stamp.el: Update copyright years.
-
-2006-01-30  Simon Josefsson  <jas@extundo.com>
-
-	* erc.el (erc-open-ssl-stream): Use tls.el.
-
-2006-01-30  Michael Olson  <mwolson@gnu.org>
-
-	* erc-stamp.el (erc-timestamp-right-align-by-pixel): New option
-	that determines whether to use pixel values to align right
-	timestamps.  The default is not to do so, since it only works with
-	Emacs22 on X, and even then some people have trouble.
-	(erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
-
-2006-01-29  Michael Olson  <mwolson@gnu.org>
-
-	* ChangeLog, ChangeLog.2005, ChangeLog.2004, ChangeLog.2003,
-	ChangeLog.2002, ChangeLog.2001: Add "See ChangeLog.NNNN" line for
-	earlier changes.  Use utf-8 encoding.  Fix some accent typos.
-
-	* erc-speedbar.el (erc-speedbar-buttons): Fix reference to free
-	variable.
-	(erc-speedbar-goto-buffer): Fix compiler warning.
-
-	* erc-ibuffer.el: Use `define-ibuffer-filter' instead of
-	`ibuffer-degine-limiter'.  Use `define-ibuffer-column' instead of
-	`ibuffer-define-column'.  Require 'ibuf-ext so that the macros
-	work without compiler warnings.
-
-	* man/erc.texi (Obtaining ERC, Installation): Note that these
-	sections may be skipped if using the version of ERC that comes
-	with Emacs.
-
-2006-01-29  Edward O'Connor  <ted@oconnor.cx>
-
-	* erc-viper.el: Remove.  Now that ERC is included in Emacs, these
-	work-arounds live in Viper itself.
-
-2006-01-28  Michael Olson  <mwolson@gnu.org>
-
-	* erc-*.el, erc.texi, NEWS: Add Arch taglines as per Emacs
-	guidelines.
-
-	* erc-*.el: Space out copyright years like the rest of Emacs.  Use
-	the Emacs copyright statement.  Refer to ourselves as ERC rather
-	than "Emacs IRC Client", since there are now several IRC clients
-	for Emacs.
-
-	* erc-compat.el (erc-emacs-build-time): Define as a variable.
+See ChangeLog.06 for earlier changes.
 
-	* erc-log.el (erc-log-setup-logging): Use write-file-functions.
-
-	* erc-ibuffer.el: Require 'erc.
-
-	* erc-stamp.el (erc-insert-aligned): Only use the special text
-	property when window-system is X.
-
-	* erc.texi: Adapt for inclusion in Emacs.
-
-2006-01-28  Johan Bockgård  <bojohan@users.sourceforge.net>
-
-	* erc.el (erc-format-message): More `cl' breakage; don't use
-	`oddp'.
-
-2006-01-27  Michael Olson  <mwolson@gnu.org>
-
-	* debian/changelog: Update for new release.
-
-	* debian/control (Description): Update.
-
-	* debian/rules: Concatenate ChangeLog for 2005.
-
-	* Makefile (MISC): Include ChangeLog.2005 and erc.texi.
-	(debrelease, release): Copy images directory.
-
-	* NEWS: Spelling fixes.  Add items for recent changes.
-
-	* erc.el (erc): Move call to erc-update-modules before the call to
-	erc-mode.  This should fix a timestamp display issue.
-	(erc-version-string): Release ERC 5.1.
-
-2006-01-26  Michael Olson  <mwolson@gnu.org>
-
-	* erc-stamp.el (erc-insert-aligned): New function that inserts
-	text in an perfectly-aligned way relative to the right margin.  It
-	only works well with Emacs22.  A sane fallback is provided for
-	other versions of Emacs.
-	(erc-insert-timestamp-right): Use the new function.
-
-2006-01-25  Edward O'Connor  <ted@oconnor.cx>
-
-	* erc.el (erc-modules): Ensure that `erc-button-mode' gets enabled
-	before `erc-match-mode'.
-
-	* erc-match.el (match): Append `erc-match-message' to
-	`erc-insert-modify-hook'.
-
-2006-01-25  Michael Olson  <mwolson@gnu.org>
-
-	* FOR-RELEASE: Mark last release requirement as done.
-
-	* Makefile (realclean, distclean): Remove docs.
-
-	* erc.texi: Take care of all pre-5.1 items.
-
-	* erc-backend.el (erc-server-send, erc-server-send-queue): Wrap
-	`process-send-string' in `condition-case' to avoid an error when
-	quitting ERC.
-
-	* erc-stamp.el (erc-insert-timestamp-right): Try to deal with
-	variable-width characters in the timestamp and on the same line.
-	The latter is a kludge, but it seems to work with most of the
-	input I've thrown at it so far.  It's certainly better than going
-	past the end of line consistently when we have variable-width
-	characters on the same line.  When `erc-timestamp-intangible' is
-	non-nil, add intangible properties to the whitespace as well, so
-	that hitting <end> does what you'd expect.
-
-	* erc.el (erc-flood-protect, erc-toggle-flood-control): Update
-	this to only use boolean values for `erc-flood-protect'.  Update
-	documentation.
-	(erc-cmd-QUIT): Set the active buffer to be the server buffer, so
-	that any QUIT-related messages go there.
-	(erc): Try to be more clever about re-using channel buffers when
-	automatically re-connecting.  Thanks to e1f for noticing.
-
-2006-01-23  Michael Olson  <mwolson@gnu.org>
-
-	* ChangeLog.2005: Remove erroneous line.
-
-	* FOR-RELEASE: Make that the Makefile tweaking is complete.
-	(NEWS): Mark as done.
-
-	* Makefile (MANUAL): New option indicating the name of the manual.
-	(PREFIX, ELISPDIR, INFODIR): New options that specify the
-	directories to install lisp code and info manuals to.  PREFIX is
-	used only by ELISPDIR and INFODIR.
-	(all): Call `lisp' and create the manual.
-	(lisp): Compile lisp code.
-	(%.info, %.html): New rules that make Info files and HTML files,
-	respectively, from a TexInfo source.
-	(doc): Create both the Info and HTML versions of the manual.  This
-	is for the user -- we never call it automatically.
-	(install-info): Install Info files.
-	(install-bin): Install compiled and source Lisp files.
-	(todo): Remove, since it seems pointless.
-
-	* NEWS: Update.
-
-	* README: Add Installation instructions.  Tweak layout.
-
-	* erc.texi: Work on some pre-5.1 items.
-
-	* erc-stamp.el, erc-track.el: Move some functions and options in
-	order to get rid of a few compiler warnings.
-
-	* erc.el (erc-modules): Enable readonly by default.  This will
-	prevent new users from accidentally removing old messages, which
-	could be disconcerting.  Also enable stamp by default, since
-	timestamps are a fairly standard feature among IRC clients.
-
-	* erc-button.el: Munge whitespace.
-
-	* erc-identd.el (erc-identd-start): Instead of throwing an error,
-	just try to use the obsolete function.
-
-2006-01-22  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el (erc-decode-string-from-target): Make sure that
-	we have a string as an argument.  If not, coerce it to the empty
-	string.  Hopefully, this will work painlessly around an edge case
-	related to quitting ERC around the same time a message comes in.
-
-2006-01-22  Johan Bockgård  <bojohan@users.sourceforge.net>
-
-	* erc-track.el: Use `(eval-when-compile (require 'cl))' (for
-	`case').  Doc fixes.
-	(erc-find-parsed-property): Simplify.
-	(erc-track-get-active-buffer): Fix logic.  Simplify.
-	(erc-track-switch-buffer): Remove unused variable `dir'.  Simplify.
-
-	* erc-speak.el: Doc fixes.
-	(erc-speak-region): `propertize' --> `erc-propertize'.
-
-	* erc-dcc.el (erc-dcc-chat-parse-output): `propertize' -->
-	`erc-propertize'.
-
-	* erc-button.el (erc-button-add-button): Take erc-fill-prefix into
-	account when wrapping URLs.
-
-	* erc-bbdb.el (erc-bbdb-elide-display): Doc fix.
-
-	* erc-backend.el (define-erc-response-handler): Doc fix.
-
-2006-01-22  Michael Olson  <mwolson@gnu.org>
-
-	* erc.el (erc-update-modules): Use `require' instead of `load',
-	but prevent it from causing errors, in order to preserve the
-	previous behavior.
-
-2006-01-21  Michael Olson  <mwolson@gnu.org>
-
-	* FOR-RELEASE (Source): Mark cl task as done.
-
-	* Makefile (erc-auto.el): Call erc-generate-autoloads rather than
-	generate-autoloads.
-	(erc-auto.el, %.elc): Don't show command, just its output.
-
-	* NEWS: Add items from 2005-01-01 to 2005-08-13.
-
-	* debian/copyright (Copyright): Update.
-
-	* erc-auto.in (erc-generate-autoloads): Rename from
-	generate-autoloads.
-
-	* erc.el, erc-autoaway.el, erc-backend.el: Use
-	erc-server-process-alive instead of erc-process-alive.
-
-	* erc.el, erc-backend.el, erc-ezbounce.el, erc-list.el,
-	erc-log.el, erc-match.el, erc-nets.el, erc-netsplit.el,
-	erc-nicklist.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el:
-	Use (eval-when-compile (require 'cl)), so that compilation doesn't
-	fail.
-
-	* erc-fill.el, erc-truncate.el: Whitespace munging.
-
-	* erc.el: Update copyright notice.  Remove eval-after-load code.
-	(erc-with-buffer): Docfix.
-	(erc-once-with-server-event, erc-once-with-server-event-global)
-	(erc-with-buffer, erc-with-all-buffers-of-server): Use erc-gensym
-	instead of gensym.
-	(erc-banlist-update): Use erc-delete-if instead of delete-if.
-	(erc): Call `erc-update-modules' here.
-
-	* erc-backend.el: Require 'erc-compat to minimize compiler
-	warnings.
-	(erc-decode-parsed-server-response): Docfix.
-	(erc-server-process-alive): Move here from erc.el and rename from
-	`erc-process-alive'.
-	(erc-server-send, erc-remove-channel-users): Make sure process is
-	alive before sending data to it.
-
-	* erc-bbdb.el: Update copyright years.
-	(erc-bbdb-whois): Remove overexuberant comment.
-
-	* erc-button.el: Require erc-fill, since we make liberal use of
-	`erc-fill-column'.
-
-	* erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): New
-	functions, the latter of which provides an `assert' equivalent.
-	(erc-remove-if-not): New function that provides a simple
-	implementation of `remove-if-not'.
-	(erc-gensym): New function that provides a simple implementation
-	of `gensym'.
-	(erc-delete-if): New function that provides a simple
-	implementation of `delete-if'.
-	(erc-member-if): New function that provides a simple
-	implementation of `member-if'.
-	(field-end): Remove this, since it is unused, and later versions
-	of XEmacs have this function already.
-	(erc-function-arglist): Moved here from erc.el.
-	(erc-delete-dups): New compatibility function for dealing with
-	XEmacs.
-	(erc-subseq): New function copied from cl-extra.el.
-
-	* erc-dcc.el: Require pcomplete during compilation to avoid
-	compiler warnings.
-	(erc-unpack-int, erc-dcc-send-filter)
-	(erc-dcc-get-filter): Use erc-assert instead of assert.
-	(pcomplete/erc-mode/DCC): Use erc-remove-if-not instead of
-	remove-if-not.
-
-	* erc-match.el (erc-log-matches): Fix compiler warning.
-
-	* erc-nicklist.el: Update copyright notice.
-	(erc-nicklist-menu): Change use of caadr to (car (cadr ...)).
-	(erc-nicklist-bitlbee-connected-p): Remove.
-	(erc-nicklist-insert-medium-name-or-icon): Accept channel
-	argument.  Use it to determine whether we are on bitlbee.  Now
-	that bitlbee names its channel "&bitlbee", this is trivial.
-	(erc-nicklist-insert-contents): Pass channel as specified above.
-	Don't try to determine whether we are on bitlbee here.
-	(erc-nicklist-channel-users-info): Use erc-remove-if-not instead
-	of remove-if-not.
-	(erc-nicklist-search-for-nick): Use erc-member-if instead of
-	member-if.
-
-	* erc-notify.el (erc-notify-QUIT): Use erc-delete-if with a
-	partially-evaluated lambda expression instead of `delete' and
-	`find'.
-
-	* erc-track.el: Use erc-assert.
-	(erc-track-modified-channels): Remove use of `return'.
-	(erc-track-modified-channels): Use `cadr' instead of `second',
-	since otherwise we would need yet another eval-when-compile line.
-
-2006-01-19  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el (erc-process-sentinel-1): Remove attempt to
-	detect SIGPIPE, since it doesn't work.
-
-2006-01-10  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-spelling.el: Updated copyright years.
-	(define-erc-module): Enable/disable `flyspell-mode' for all open
-	ERC buffers as well.
-	(erc-spelling-dictionaries): Reworded customize description.
-
-	* erc.el (erc-command-symbol): New function.
-	(erc-extract-command-from-line): Use `erc-command-symbol'.  This
-	fixes a bug where "Symbol's function definition is void:
-	erc-cmd-LIST" would be shown after typing /list at the prompt (the
-	command was interned because erc-menu.el uses it and is enabled by
-	default whereas erc-list.el is not).
-
-	* NEWS: Started a list of renamed variables.
-
-	* erc.el: Reworded the message sent when defining variable
-	aliases.
-	(erc-command-indicator-face): Doc fix.
-	(erc-modules): Enable the match module by default which makes
-	current nickname highlighting on as the default.
-
-	* erc-button.el: Updated copyright years.
-	(erc-button): New face.
-	(erc-button-face): Use `erc-button'.
-	(erc-button-nickname-face): New customizable variable.
-	(erc-button-add-nickname-buttons, erc-button-add-buttons-1): Send
-	new argument to `erc-button-add-button'.
-	(erc-button-add-button): Doc fix.  Added new argument to function
-	definition, NICK-P.  If it's a nickname, use
-	`erc-button-nickname-face', otherwise use `erc-button-face'.  This
-	makes channel tracking and buttons work better together when
-	`erc-button-buttonize-nicks' is enabled, since there is a nickname
-	on just about every line.
-
-	* erc-track.el (erc-track-use-faces): Doc fix.
-	(erc-track-faces-priority-list): Added `erc-button' to list.
-	(erc-track-priority-faces-only): Doc fix.
-
-2006-01-09  Diane Murray  <disumu@x3y2z1.net>
-
-	* erc-button.el (erc-button-url-regexp): Use `concat' so the
-	regexp is not one long line.
-	(erc-button-alist): Fixed so that customizing works correctly.
-	Reorganized.  Removed lambda functions with more than two lines.
-	Doc fix.
-	(erc-button-describe-symbol, erc-button-beats-to-time): New
-	functions.  Moved from `erc-button-alist'.
-
-2006-01-07  Michael Olson  <mwolson@gnu.org>
-
-	* erc-backend.el (erc-process-sentinel-1): Don't try to re-open a
-	process if a SIGPIPE occurs.  This happens when a new message
-	comes in at the same time a /quit is requested.
-	(erc-process-sentinel): Use string-match rather than string= to do
-	these comparisons.  Matching literal newlines makes me nervous.
-
-	* erc-track.el (erc-track-remove-from-mode-line): Handle case
-	where global-mode-string is not a list.  Emacs22 permits this.
-
-
-See ChangeLog.05 for earlier changes.
-
-    Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+    Copyright (C) 2007 Free Software Foundation, Inc.
 
   This file is part of GNU Emacs.
 
@@ -1366,4 +376,4 @@
 ;; add-log-time-zone-rule: t
 ;; End:
 
-;; arch-tag: 865a75f6-2bcb-46df-bf0c-b514dadf688a
+;; arch-tag: 3369b6e5-96b1-4b32-96cd-9a905c747496
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/erc/ChangeLog.06	Sun Apr 22 12:42:47 2007 +0000
@@ -0,0 +1,1457 @@
+2006-12-28  Michael Olson  <mwolson@gnu.org>
+
+	* erc-list.el: Change header to mention that this is part of ERC,
+	rather than GNU Emacs.
+
+	* erc-networks.el (erc-server-alist): Add Ars OpenIRC and
+	LinuxChix networks.  Thanks to Angelina Carlton for mentioning
+	them.  Properly escape periods in Konfido.Net and Kewl.Org.
+	(erc-networks-alist): Add entries for Ars and LinuxChix, though
+	the latter does not actually provide an announced network name.
+
+	* erc-services.el (erc-nickserv-identify-mode): Add 'both method,
+	which waits for a NickServ message if the network supports it,
+	otherwise sends the password after connecting.
+	(erc-nickserv-identify-mode): Default to 'both.
+	(erc-nickserv-passwords): Add OFTC and Azzurra to custom options.
+	(erc-nickserv-alist): Indentation fix.
+	(erc-nickserv-identify-on-connect)
+	(erc-nickserv-identify-on-nick-change): Handle 'both method.
+
+2006-12-28  Leo  <sdl.web@gmail.com>  (tiny change)
+
+	* erc.el (erc-iswitchb): Wrap body in unwind-protect so that
+	hitting C-g does not leave iswitchb-mode on.
+
+2006-12-27  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-cmd-RECONNECT): New command that calls
+	erc-server-reconnect.
+
+	* erc-backend.el (erc-server-reconnect-count): New server variable
+	that keeps track of reconnection attempts.
+	(erc-server-reconnect-attempts): New option that determines the
+	number of reconnection attempts that ERC will make per server.
+	(erc-server-reconnect-timeout): New option that determines the
+	amount of time, in seconds, that ERC will wait between successive
+	reconnect attempts.
+	(erc-server-reconnect): New function that reestablishes the
+	current IRC connection.  Move some commands from
+	erc-process-sentinel-1 here.
+	(erc-process-sentinel-1): If we have been disconnected, loop until
+	we either reconnect or run out of attempts.
+	(erc-server-reconnect-p): Move higher and make this a defsubst,
+	since I'm worried about the current buffer changing from
+	underneath us.  Implement limit of number of reconnect attempts..
+
+	* erc.texi (Getting Started): Update for /RECONNECT command.
+
+2006-12-26  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-open): Restore old point correctly, or at least get
+	closer to doing so than before.
+
+2006-12-13  Leo  <sdl.web@gmail.com>  (tiny change)
+
+	* erc.el (erc-iswitchb): Temporarily enable iswitchb mode if it
+	isn't active already, instead of leaving it on.
+
+2006-12-10  Juanma Barranquero  <lekktu@gmail.com>
+
+	* erc-ezbounce.el (erc-ezb-init-session-list): Doc fix.
+
+2006-12-08  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el: Re-evaluate contributions from a contributor, and found
+	them under 15 lines of non-obvious code, so it is safe to remove
+	the copyright notice.
+	(erc-modules): Remove list module.
+
+	* erc-list.el: Remove, since a contributor who has not completed
+	their assignment has contributed significantly more than 15 lines
+	of code to this file.
+
+2006-11-28  Juanma Barranquero  <lekktu@gmail.com>
+
+	* erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
+	(erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
+	(erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
+	(erc-modules, erc-display-message-highlight, erc-process-input-line)
+	(erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
+	(erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
+	(erc-echo-notice-in-first-user-buffer, erc-connection-established)
+	(erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
+	(erc-command-symbol, erc-add-query, erc-process-script-line)
+	(erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
+	(erc-script-echo): Fix typos in docstrings.
+	(erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
+	(define-erc-module, erc-once-with-server-event)
+	(erc-once-with-server-event-global, erc-debug-irc-protocol)
+	(erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
+	(erc-update-current-channel-member, erc-load-script):
+	(erc-mode-line-away-status-format): Doc fixes.
+
+2006-11-20  Andrea Russo  <rastandy@inventati.org>  (tiny change)
+
+	* erc-dcc.el (erc-dcc-chat-setup): Initialize `erc-input-marker'
+	before calling `erc-display-prompt'.
+
+2006-11-24  Juanma Barranquero  <lekktu@gmail.com>
+
+	* erc.el (erc-after-connect, erc-open-ssl-stream)
+	(erc-display-line-1, erc-display-line):
+	* erc-backend.el (005): Fix space/tab mixup in docstrings.
+
+2006-11-20  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-version-string): Call this Version 5.2 stable
+	pre-release, since it diverges slightly from our 5.2 branch, in
+	that unstable features are not included.
+	(erc-update-modules): Display better error message when module not
+	found.
+
+2006-11-12  Michael Olson  <mwolson@gnu.org>
+
+	* erc-log.el: Save all log buffers when Emacs exits, in case
+	someone ignores the warning about open processes.  Remove the
+	advice code in the commentary.
+	(erc-save-query-buffers): Docfix.
+	(erc-log-save-all-buffers): New function that saves all ERC
+	buffers to logs.
+	(erc-current-logfile): Fix bug in filename selection, where the
+	current buffer was erroneously being preferred over the given
+	buffer.
+
+2006-11-08  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-string-to-port): Avoid error when a numerical port
+	is passed.  Thanks to Zekeriya KOÇ for the report.
+
+2006-11-08  Åukasz Demianiuk  <ldemianiuk@gmail.com>  (tiny change)
+
+	* erc.el (erc-header-line): Fix typo.
+
+2006-11-06  Juanma Barranquero  <lekktu@gmail.com>
+
+	* erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
+
+	* erc.el (read-passwd):
+	* erc-autoaway.el (erc-autoaway-reestablish-idletimer):
+	* erc-truncate.el (truncate): Fix typo in docstring.
+
+2006-10-21  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
+	first loading iswitchb.  Thanks to Leo for the report.
+
+2006-10-10  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-default-port): Make the default be 6667 instead of
+	ircd. since Mac OS X apparently has problems with looking up that
+	port name.
+
+	* erc-backend.el (353): Receive names after displaying the initial
+	message, instead of before.
+
+2006-10-05  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc.el (erc-my-nick-face): New face.
+	(erc): Use FULL-NAME argument, not `erc-user-full-name'.  This
+	fixes a bug where the :full-name argument passed to the function
+	was not respected.
+	(erc-format-my-nick): Use `erc-my-nick-face'.  This should help
+	make it easier to find messages you sent in conversations when
+	`erc-show-my-nick' is non-nil.
+	(erc-compute-server): Doc fix.
+
+2006-10-01  John J Foerch  <jjfoerch@earthlink.net>  (tiny change)
+
+	* erc-stamp.el (erc-insert-timestamp-right): Exclude the newline
+	from the erc-timestamp field.
+
+2006-09-11  Michael Olson  <mwolson@gnu.org>
+
+	* erc-nicklist.el (erc-nicklist-insert-contents): Add missing
+	parenthesis.  Thanks to Stephan Stahl for the report.
+
+2006-09-10  Eric Hanchrow  <offby1@blarg.net>  (tiny change)
+
+	* erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
+	instead of a single user.
+
+2006-09-10  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-generate-new-buffer-name): If this is a server
+	buffer and a process exists already, create a new buffer.
+	(erc-open): If the IRC session was continued, restore the old
+	point.  Thanks to Stephan Stahl for the report.
+	(erc-member-ignore-case): Coding style tweak.
+	(erc-cmd-UNIGNORE): Quote the user before comparison.  If we don't
+	find the user listed verbatim, try to match them against the list
+	using string-match.  In this case, prompt as to whether the regexp
+	should be removed.
+	(erc-ignored-user-p): Remove CL-ism.
+
+	* erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
+	whether we are already away.
+
+	* erc-menu.el: Fix potential compiler warning.
+
+2006-09-07  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc.el: Updated Commentary and URL.
+	(erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
+	(erc-arrange-session-in-multiple-windows): No need to check if
+	`erc-server-process' is bound.
+	(erc-server-buffer-live-p): Doc fix.
+	(erc-part-from-channel): Don't use any initial contents at prompt.
+	(erc-format-nick, erc-format-@nick): Doc fix.  Use `when'.
+	(s367): Fixed to support only banmask and channel which is the
+	standard.  Also, there's no reason to add a message to each banned
+	user entry trying to persuade the user to use /banlist instead of
+	/mode #channel +b.  That part of the message was a little
+	confusing, anyways.
+	(s367-set-by): New catalog entry.  The user who set the ban and
+	the time of ban seem to be specific to only certain servers such
+	as freenode.
+
+	* erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
+
+	* erc-backend.el (erc-server-process-alive): No need to check if
+	`erc-server-process' is bound.
+	(367): Use s367 or s367-set-by where appropriate.
+
+	* erc-compat.el: Fixed URL.
+
+	* erc-dcc.el: Updated copyright years.  Added Usage section.
+	Changed supported Emacs version number from 21.3.50 to 22 in
+	Commentary.
+
+	* erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
+	to check if `erc-server-process' is bound.
+
+	* erc-nicklist.el: Added to the Commentary section an explanation
+	that `erc-nicklist-quit' should be called from within the nicklist
+	buffer.  Set file coding to utf-8 so a contributor's name is
+	displayed correctly.
+	(erc-nicklist-icons-directory): Use customize type directory
+	instead of string.
+	(erc-nicklist-insert-contents): Set bbdb-nick to an empty string
+	if it wasn't found.  This fixes a bug where an error would occur
+	when using `string=' on bbdb-nick if it was nil.
+
+	* erc-replace.el: Removed URL from file information since it
+	doesn't exist.
+
+	* erc-sound.el: Updated copyright years.  Fixed Commentary and
+	added Usage section.
+	(define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
+	`erc-ctcp-query-SOUND-hook' here.  Removed the keybinding
+	definitions.
+	(erc-play-sound, erc-default-sound, erc-cmd-SOUND)
+	(erc-ctcp-query-SOUND): Doc fix.
+	(erc-play-command): Removed, not necessary anymore.
+	(erc-ctcp-query-SOUND-hook): Set to nil as default.  Moved up
+	higher in code, added docstring.
+	(erc-play-sound): Use `play-sound-file'.  It exists in GNU Emacs
+	as well since version 21 or earlier.  Removed commented-out older
+	version of function.
+
+	* NEWS: Fixed formatting, added channel tracking change.
+
+2006-09-03  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc.el: M-x erc RET can now be used to start ERC.
+	(erc-open): Renamed from `erc'.
+	(erc-before-connect): Change erc-select to erc.
+	(erc): Renamed from `erc-select'.  Use `erc-open'.
+	(erc-select): Defined as alias of `erc'.
+	(erc-ssl): Renamed from `erc-select-ssl'.  Use `erc'.
+	(erc-select-ssl): Defined as alias of `erc-ssl'.
+	(erc-cmd-SERVER): Use `erc'.
+	(erc-query, erc-handle-irc-url): Use `erc-open'.
+
+	* erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
+
+	* erc-menu.el (erc-menu-definition): Use `erc'.
+
+	* erc-networks.el: Updated copyright years.
+	(erc-server-select): Use keyword arguments when calling `erc'.
+
+	* erc.texi (Getting Started, Connecting): Changed erc-select to
+	erc.
+
+	* README: Changed erc-select to erc.
+
+	* NEWS: Added note about these changes.
+
+	* FOR-RELEASE: Marked this item as done.
+
+2006-08-21  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-track.el (erc-track-mode-line-mouse-face): New variable.
+	(erc-make-mode-line-buffer-name): Add help-echo and mouse-face
+	properties to channel name.
+
+2006-08-20  Michael Olson  <mwolson@gnu.org>
+
+	* erc-identd.el (erc-identd): New customization group.
+	(erc-identd-port): New option that specifies the port to use if
+	none is given as an argument to erc-identd-start.
+	(identd): Place erc-identd-quickstart in erc-connect-pre-hook
+	instead of erc-identd-start so that we deal with the different
+	meaning of the first argument.
+	(erc-identd-start): Use erc-identd-port.
+	(erc-identd-quickstart): New function that ignores any arguments
+	and calls erc-identd-start.
+
+	* erc.el (erc-with-server-buffer): New macro that switches to the
+	current ERC server buffer and runs some code.  If no server buffer
+	is available, return nil.  This is a useful way to access
+	variables in the server buffer.
+	(erc-get-server-user, erc-add-server-user)
+	(erc-remove-server-user, erc-change-user-nickname)
+	(erc-get-server-nickname-list, erc-get-server-nickname-alist)
+	(erc-ison-p, erc-active-buffer, erc-cmd-IGNORE)
+	(erc-cmd-UNIGNORE, erc-cmd-IDLE, erc-cmd-NICK, erc-cmd-BANLIST)
+	(erc-cmd-MASSUNBAN, erc-nickname-in-use, erc-ignored-user-p)
+	(erc-format-channel-modes): Use it.
+	(erc-once-with-server-event, erc-once-with-server-event-global)
+	(erc-with-buffer, erc-with-all-buffers-of-server): Use make-symbol
+	instead of gensym.
+	(erc-open-server-buffer-p): New function that returns non-nil if
+	the given buffer is an ERC server buffer that has an open IRC
+	process.
+	(erc-with-buffer): Use buffer-live-p here to set a good example,
+	though it isn't really needed here.
+	(erc-away): Mention erc-away-time.
+	(erc): Don't propagate the erc-away setting, since it makes more
+	sense to access it from the server buffer.  Set up the prompt
+	before connecting rather than after.  Run erc-connect-pre-hook
+	with the buffer as an argument, instead of no arguments.
+	(erc-cmd-GAWAY): Use erc-open-server-buffer-p instead of
+	erc-server-buffer-p so that only open connections are set away.
+	(erc-cmd-GQUIT): Use erc-open-server-buffer-p.
+	(erc-process-away): Docfix.  Don't set erc-away in channel
+	buffers.
+	(erc-set-current-nick): Make this uniform with the style used in
+	erc-current-nick.
+	(erc-away-time): Rename from erc-away-p, since this is no longer a
+	boolean-style predicate.
+	(erc-format-away-status): Use it.
+	(erc-initialize-log-marker): Accept a `buffer' argument.
+	(erc-connect-pre-hook): Docfix.
+	(erc-connection-established): Make sure this runs in the correct
+	buffer.
+	(erc-set-initial-user-mode): Accept a `buffer' argument.
+
+	* erc-stamp.el (erc-add-timestamp): Use erc-away-time.
+
+	* erc-spelling.el (erc-spelling-init): Use
+	erc-with-server-buffer.  Accept `buffer' argument.
+	(spelling): Call erc-spelling-init with the `buffer' argument.
+
+	* erc-speedbar.el (erc-speedbar-buttons): Use erc-server-buffer-p.
+
+	* erc-pcomplete.el (pcomplete/erc-mode/UNIGNORE)
+	(pcomplete-erc-all-nicks): Use erc-with-server-buffer.
+
+	* erc-notify.el (erc-notify-timer, erc-cmd-NOTIFY): Use
+	erc-with-server-buffer.
+
+	* erc-networks.el (erc-network, erc-current-network)
+	(erc-network-name): Use erc-with-server-buffer.
+
+	* erc-netsplit.el (erc-cmd-WHOLEFT): Use erc-with-server-buffer.
+
+	* erc-match.el (erc-log-matches, erc-log-matches-come-back): Use
+	erc-away-time.
+
+	* erc-log.el (log): Use erc-away-time.  Remove unnecessary check.
+	Pass `buffer' argument to erc-log-setup-logging instead of setting
+	the current buffer.  Ditto for erc-log-disable-logging.
+	(erc-log-setup-logging, erc-log-disable-loggin): Accept a `buffer'
+	argument.
+
+	* erc-list.el (erc-chanlist): Use erc-with-server-buffer.
+
+	* erc-ibuffer.el (erc-away): Use erc-away-time.
+
+	* erc-dcc.el (erc-dcc-get-filter): Temporarily make the buffer
+	read only instead of permanently doing so.
+
+	* erc-compat.el (erc-gensym, *erc-sym-counter*): Remove, since
+	Emacs Lisp has make-symbol, which is better.
+
+	* erc-chess.el (erc-chess-handler, erc-cmd-CHESS): Use
+	erc-with-server-buffer.
+
+	* erc-capab.el (capab-identify): Only deal with server buffers
+	that have an open IRC process.
+	(erc-capab-identify-add-prefix): Use erc-with-server-buffer.
+
+	* erc-backend.el (erc-server-connected): Docfix.  Recommend the
+	`erc-server-process-alive' function.
+	(erc-coding-system-for-target): Supply a default target if one is
+	not given.
+	(erc-server-send): Simplify slightly.
+	(erc-call-hooks): Use erc-with-server-buffer.
+	(erc-server-connect, erc-server-setup-periodical-ping): Accept
+	`buffer' argument.
+
+	* erc-autoaway.el (erc-autoaway-reestablish-idletimer): Move
+	higher to avoid an automatic load snafu.
+	(erc-autoaway-some-server-buffer): New function that returns an
+	ERC server buffer with a live connection, or nil otherwise.
+	(erc-autoaway-insinuate-maybe): New function that adds the
+	autoaway reset function to post-command-hook if at least one ERC
+	process is alive.
+	(erc-autoaway-remove-maybe): New function that removes the
+	autoaway reset function from post-command-hook if no ERC process
+	is alive.
+	(autoaway): Don't touch post-command-hook unless an IRC process is
+	already open.  Remove our addition to post-command-hook as soon as
+	there are no more IRC processes open.  Reset the indicators before
+	connecting to an IRC server, which fixes a bug when re-connecting.
+	(erc-autoaway-reset-idle-user): Call erc-autoaway-remove-maybe if
+	there are no more IRC processes open.
+	(erc-autoaway-set-back): Pick an open IRC process.  Accept an
+	argument which is a function call if we can't find one.
+	(erc-autoaway-some-open-server-buffer): New function which returns
+	an ERC server buffer with an open connection and a user that is
+	not away.
+	(erc-autoaway-possibly-set-away, erc-autoaway-set-away): Use it.
+	(erc-autoaway-set-away): Accept a `notest' argument which is used
+	to avoid testing the same thing twice.
+	(erc-autoaway-last-sent-time, erc-autoaway-caused-away): Move
+	higher in file to fix byte-compile warning.
+
+2006-08-20  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-backend.el (erc-process-sentinel-1): Doc fix.  Let
+	`erc-server-reconnect-p' check all condition cases.
+	(erc-server-reconnect-p): Moved rest of checks from
+	`erc-process-sentinel-1' to here.  Now takes an argument, EVENT.
+
+2006-08-14  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-menu.el: Updated copyright years.  Removed EmacsWiki URL.
+	(erc-menu-definition): Name the menu "ERC" instead of "IRC" to
+	avoid confusion with rcirc and other clients.
+
+	* erc-backend.el (erc-server-banned): New variable.
+	(erc-server-connect): Set `erc-server-banned' to nil.
+	(erc-process-sentinel-1): Use `erc-server-reconnect-p'.
+	(erc-server-reconnect-p): New function.  Return non-nil if the
+	user wants automatic reconnects and if the user has not been
+	banned from the server.  This should fix a bug where ERC gets into
+	a loop trying to reconnect with no way to stop it when the user is
+	denied access to the server due to a server ban.  It might also
+	help when Tor users are blocked from freenode if freenode servers
+	send the 465 message before disconnecting.
+	(465): Handle "banned from server" error notices.
+
+2006-08-13  Romain Francoise  <romain@orebokech.com>
+
+	* erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
+	prompt with a space.
+
+2006-08-13  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-server-timed-out): New variable that
+	indicates whether the current connection has timed out due to
+	failure to respond to a ping.
+	(erc-server-send-ping): Set erc-server-timed-out to t.
+	(erc-server-connect): Initialize erc-server-timed-out to nil.
+	(erc-process-sentinel-1): Consult erc-server-timed-out.
+
+2006-08-11  Michael Olson  <mwolson@gnu.org>
+
+	* erc-fill.el (erc-fill): Skip any initial empty lines so that we
+	avoid errors when inserting disconnect messages and other messages
+	that begin with newlines.
+
+2006-08-07  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-process-sentinel-1): Use erc-display-message
+	in several places instead of inserting text.
+	(erc-process-sentinel): Move to the input-marker before removing
+	the prompt.
+
+	* erc.el (erc-port): Fix customization options.
+	(erc-display-message): Handle null type explicitly.  Previously,
+	this was relying on a chance side-effect.  Cosmetic indentation
+	tweak.
+	(english): Add 'finished and 'terminated entries to the catalog.
+	Add initial and terminal newlines to 'disconnected and
+	'disconnected-noreconnect entries.  Avoid long lines.
+	(erc-cmd-QUIT): Bind the current erc-server-process to
+	server-proc.  If the IRC server responds quickly, it is possible
+	for the connection to close, and hence server buffer to be killed,
+	if erc-kill-server-buffer-on-quit is non-nil.  This avoids that
+	problem.
+
+2006-08-06  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-server-send-queue): Update from Circe
+	version of this function.
+	(erc-server-ping-timer-alist): New variable that keeps track of
+	ping timers according to their associated server.
+	(erc-server-last-received-time): New variable that specifies the
+	time of the last message we received from the server.  This is
+	used to detect hung processes.
+	(erc-server-send-ping): New function that sends a ping to the IRC
+	process corresponding with the given buffer.  Split from
+	erc-server-setup-periodical-ping.  If the server buffer no longer
+	exists, cancel the timer.  If the server process has not given us
+	a message, including PING responses, since the last PING, kill it.
+	This is necessary to deal with some aberrant freenode behavior.
+	Idea taken from rcirc.
+	(erc-server-setup-periodical-ping): Rename from
+	erc-server-setup-periodical-server-ping.
+	(erc-server-filter-function): Use erc-current-time instead of
+	current-time.
+
+	* erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
+	multi-tty Emacs.
+	(erc-select-startup-file): Fix bug introduced by recent change.
+	(erc-cmd-QUIT): If the IRC process has not terminated itself
+	within 4 seconds of completing our quit-hook, kill it manually.
+	Freenode in particular needs this.
+	(erc-connection-established): Use erc-server-setup-periodical-ping
+	instead of erc-server-setup-periodical-server-ping.
+
+2006-08-05  Michael Olson  <mwolson@gnu.org>
+
+	* erc-log.el (erc-log-standardize-name): New function that returns
+	a filename that is safe for use for a log file.
+	(erc-current-logfile): Use it.
+
+	* erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
+	since that is a fairly standard directory.
+	(erc-select-startup-file): Re-write to use
+	convert-standard-filename, which will ensure that MS-DOS systems
+	look for the _ercrc.el file.
+
+2006-08-02  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-version-string): Release ERC 5.1.4.
+
+	* Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
+
+	* erc.el (erc-active-buffer): Fix bug that caused messages to go
+	to the wrong buffer.  Thanks to offby1 for the report.
+
+	* erc-backend.el (erc-coding-system-for-target): Handle case where
+	target is nil.  Thanks to Kai Fan for the patch.
+
+2006-07-29  Michael Olson  <mwolson@gnu.org>
+
+	* erc-log.el (erc-log-setup-logging): Don't offer to save the
+	buffer.  It will be saved automatically killed.  Thanks to Johan
+	Bockgård and Tassilo Horn for pointing this out.
+
+2006-07-27  Johan Bockgård  <bojohan@users.sourceforge.net>
+
+	* erc.el (define-erc-module): Make find-function and find-variable
+	find the names constructed by `define-erc-module' in Emacs 22.
+
+2006-07-14  Michael Olson  <mwolson@gnu.org>
+
+	* erc-log.el (log): Make sure that we enable logging on
+	already-opened buffers as well, in case the user toggles this
+	module after loading ERC.  Also be sure to remove logging ability
+	from all ERC buffers when the module is disabled.
+	(erc-log-setup-logging): Set buffer-file-name to nil rather than
+	the empty string.  This should fix some errors that occur when
+	quitting Emacs without first killing all ERC buffers.
+	(erc-log-disable-logging): New function that removes the logging
+	ability from the current buffer.
+
+	* erc-spelling.el (spelling): Use dolist and buffer-live-p.
+
+2006-07-12  Michael Olson  <mwolson@gnu.org>
+
+	* erc-match.el (erc-log-matches): Bind inhibit-read-only rather
+	than call toggle-read-only.
+
+	* erc.el (erc-handle-irc-url): Move here from erc-goodies.el and
+	add autoload cookie.
+
+2006-07-09  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-version-string): Release ERC 5.1.3.
+
+	* erc.texi: Update for the 5.1.3 release.
+
+	* erc-autoaway.el (erc-autoaway-set-back): Fix bug after returning
+	from being set automatically away and current buffer is not an ERC
+	buffer.
+
+	* erc-identd.el: Fix compiler error.
+
+	* erc.texi (Development): Use @subheading instead of @subsection.
+	(Advanced Usage): Add menu.
+	(Connecting): Fully document how to connect to an IRC server.
+	(Options, Tips and Tricks, Sample Configuration): New unwritten
+	sections.
+
+	* erc.el (erc-server, erc-port, erc-nick, erc-nick-uniquifier)
+	(erc-user-full-name, erc-password): Docfixes and customization
+	interface tweaks.
+	(erc-try-new-nick-p): Rename from
+	`erc-manual-set-nick-on-bad-nick-p' and invert meaning.
+	(erc-nickname-in-use): Use `erc-try-new-nick-p'.  Check the length
+	of `erc-nick-uniquifier', in case someone wants multiple
+	characters.
+	(erc-compute-server, erc-compute-nick, erc-compute-full-name)
+	(erc-compute-port): Docfixes.
+
+	* erc-log.el (log): Move all add-hook calls here, rather than
+	executing them immediately, and also cause them to be un-hooked
+	when the module is removed.
+	(erc-save-buffer-on-part): Move next to
+	`erc-save-queries-on-quit'.
+	(erc-save-buffer-on-quit, erc-save-queries-on-quit): Default to t.
+	(erc-log-write-after-send, erc-log-write-after-insert): Default to
+	nil.  This makes things fast, but reasonably failsafe, by default.
+
+2006-07-08  Michael Olson  <mwolson@gnu.org>
+
+	* erc-log.el (erc-log-insert-log-on-open): Make this nil by
+	default, since most IRC clients don't do this.
+	(erc-log-write-after-send): New option that determines whether the
+	log file will be written to after every sent message.
+	(erc-log-write-after-insert): New option that determines whether
+	the log file will be written to when new text is added to a logged
+	ERC buffer.
+	(log): Use the aforementioned options.
+
+	* erc.texi (Modules): Document the "completion" module.
+
+	* erc-pcomplete.el (pcomplete-erc-nicks): Make sure that we don't
+	have a nil element in the list when ignore-self is non-nil.
+
+2006-07-05  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-modules): Use `set' instead of `set-default', since
+	this setting should never be buffer-local.  Add the `page' module
+	to the list.
+
+	* erc.texi (Modules): Add entries for `list' and `page' modules.
+	Change "spell" to "spelling".
+	(History): Use past tense throughout.
+
+2006-07-02  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-call-hooks): Fix (stringp nil) error that
+	can happen when doing /PART.
+
+	* erc.el (erc-quit-reason-various-alist)
+	(erc-part-reason-various-alist): In the example, use "^$" as an
+	example, since "" matches anything.
+	(erc-quit-reason-various, erc-part-reason-various): If no argument
+	is given, and no matches are found, use our default reason instead
+	of "nil".
+
+2006-06-30  Michael Olson  <mwolson@gnu.org>
+
+	* erc.texi (Modules): Mention identd.
+	(Releases): Update mailing list address and download location.
+	(Development): Refactor.  Provide updated directions for Arch.
+	Make URLs clickable.
+	(Keystroke Summary): Typo fix.  Use more Texinfo syntax.
+	(Getting Started): Give simpler example.  We do not need to
+	explicitly load every module.
+	(History): Update.
+
+	* erc-autoaway.el, erc-join.el, erc-backend.el, erc-bbdb.el:
+	erc-button.el, erc-chess.el, erc-compat.el, erc-hecomplete.el:
+	erc-dcc.el, erc-ezbounce.el, erc-fill.el, erc-ibuffer.el:
+	erc-imenu.el, erc-list.el, erc-log.el, erc-match.el, erc-menu.el:
+	erc-networks.el, erc-netsplit.el, erc-nicklist.el:
+	erc-services.el, erc-pcomplete.el, erc-replace.el, erc-ring.el:
+	erc-speedbar.el, erc-spelling.el, erc-stamp.el, erc-track.el:
+	erc.el: Remove version strings.
+
+	* erc.el (erc-cmd-SMV): Remove, since we do not have meaningful
+	module versions anymore.
+	(erc-version-modules): Remove, since we do not use this function
+	anymore.
+	(erc-latest-version, erc-ediff-latest-version): Remove, since this
+	was only useful back when ERC consisted of one file.
+	(erc-modules): Add line for identd.
+	(erc-get-channel-mode-from-keypress): Typo fix.
+
+	* erc-imenu.el: Remove unnecessary lines in header.
+
+	* erc-goodies.el (erc-handle-irc-url): Docfix.
+
+	* erc-identd.el: Define an ERC module for this.
+	(erc-identd-start): Don't create a process buffer if possible.
+	Otherwise, use conventional hidden names for process buffers.
+
+2006-06-29  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-coding-system-for-target): Match
+	case-insensitively.  Use a pattern match instead of `assoc', as
+	per the documentation for `erc-encoding-coding-alist'.
+
+	* erc-track.el (erc-track-shorten-aggressively): Fix typo.
+
+2006-06-27  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el: Update maintainer information and URLs.
+
+2006-06-14  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-active-buffer): If the active buffer has been
+	deleted, default to the server buffer.
+	(erc-toggle-flood-control): When the user hits C-c C-f, make flood
+	control really toggle, not unconditionally turn off.
+
+2006-06-12  Michael Olson  <mwolson@gnu.org>
+
+	* NEWS: Add items since the 5.1.2 release.
+
+	* erc-autoaway.el (erc-autoaway-caused-away): New variable that
+	indicates whether the current away status was caused by this
+	module.
+	(erc-autoaway-set-back): Only set back if this module set the user
+	away.
+	(erc-autoaway-set-away): Update `erc-autoaway-caused-away'.
+	(erc-autoaway-reset-indicators): New function that resets some
+	indicators when the user is no longer away.
+	(autoaway): Add the above function to the 305 hook.
+
+2006-06-05  Romain Francoise  <romain@orebokech.com>
+
+	* erc.texi (History): Fix various typos.
+
+2006-06-04  Michael Olson  <mwolson@gnu.org>
+
+	* erc-autoaway.el (erc-autoaway-idle-method): Move after the
+	definition of the autoaway module.
+	(autoaway): Don't do anything if erc-autoaway-idle-method is
+	unbound.  This prevents an error on startup.
+
+2006-06-03  Michael Olson  <mwolson@gnu.org>
+
+	* erc-autoaway.el: Thanks to Mark Plaksin for the ideas and patch.
+	(erc-autoaway-idle-method): Renamed from
+	`erc-autoaway-use-emacs-idle'.  We have more than two choices for
+	how to do this, so it's best to make this take symbol values.
+	Improve documentation.  Remove warning against Emacs idle-time;
+	the point is moot now that we get user idle time via a different
+	method.  Make sure we disable and re-enable the module when
+	changing this value.
+	(autoaway): Conditionalize on the above option.  If using the idle
+	timer or user idle methods, don't add anything to the
+	send-completed or server-001 hooks, since it is unnecessary.
+	(erc-autoaway-reestablish-idletimer, erc-autoaway-message):
+	Docfix.
+	(erc-autoaway-idle-seconds): Use erc-autoaway-idle-method.
+	(erc-autoaway-reset-idle-irc): Renamed from
+	`erc-autoaway-reset-idle'.  Don't pass line to
+	`erc-autoaway-set-away', since it is not used.
+	(erc-autoaway-reset-idle-user): New function that resets the idle
+	state for user idle time.
+	(erc-autoaway-set-back): Remove line argument, since it is not
+	used.
+
+2006-06-01  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-buffer-filter): Make sure all buffers returned from
+	this are live.
+
+2006-05-01  Edward O'Connor  <ted@oconnor.cx>
+
+	* erc-goodies.el (erc-handle-irc-url): New function, suitable as
+	a value for `url-irc-function'.
+
+2006-04-18  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-pcomplete.el (pcomplete-erc-nicks): Added new optional
+	argument IGNORE-SELF.  If this is non-nil, don't return the user's
+	current nickname.  Doc fix.
+	(pcomplete/erc-mode/complete-command): Don't complete the current
+	nickname.
+
+2006-04-05  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc.el (erc-cmd-SV): Removed the exclamation point.  Show the
+	build date as it's shown in `emacs-version'.
+
+	* erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix
+	with the same face property as the previous character.
+
+2006-04-02  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el,
+	erc.el: Make sure to include a newline inside of negated classes,
+	so that a newline is not matched.
+
+2006-04-01  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-server-connect-function): Don't try to
+	detect the existence of the `open-network-stream-nowait' function,
+	since I can't find it in Emacs21, XEmacs21, or Emacs22.
+
+2006-03-27  Michael Olson  <mwolson@gnu.org>
+
+	* erc.texi: Update direntry.  Remove unneeded local variables.
+
+2006-03-26  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-header-line): New face that will be used to colorize
+	the text of the header-line, provided that
+	`erc-header-line-face-method' is non-nil.
+	(erc-prompt-face): Fix formatting.
+	(erc-header-line-face-method): New option that determines the
+	method used for colorizing header-line text.  This may be a
+	function, nil, or non-nil.
+	(erc-update-mode-line-buffer): Use the aforementioned option and
+	face to colorize the header-line text, if that is what the user
+	wants.
+	(erc-send-input): If flood control is not activated, don't split
+	the input line.
+
+2006-03-25  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-cmd-QUOTE): Install patch from Aravind Gottipati
+	that fixes the case where there is no leading whitespace.  Only
+	remove the first space character, though.
+
+	* erc-identd.el (erc-identd-start): Fix a bug by making sure that
+	erc-identd-process is set properly.
+	(erc-identd-start, erc-identd-stop): Add autoload cookies.
+	(erc-identd-start): Pass :host parameter so this works with Emacs
+	22.
+
+2006-03-09  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-button.el (erc-button-keymap): Use <backtab> rather than
+	<C-tab> for `erc-button-previous' as it is a more standard key
+	binding for this type of function.
+
+2006-02-28  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-capab.el: Removed things that were accidentally committed on
+	2006-02-20.  Removed Todo section.
+	(erc-capab-unidentified): Removed.
+
+2006-02-26  Michael Olson  <mwolson@gnu.org>
+
+	* erc-capab.el: Use (eval-when-compile (require 'cl)).
+	(erc-capab-unidentified): Fix compiler warning by specifying
+	group.
+
+2006-02-20  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-capab.el (erc-capab-send-identify-messages): Fixed comment
+	to explain thoughts better.  `erc-server-parameters' is an
+	associated list when it's set, not a string.
+
+2006-02-19  Michael Olson  <mwolson@gnu.org>
+
+	* erc-capab.el (erc-capab-send-identify-messages): Make sure some
+	parameters are strings before using them.  Thanks to Alejandro
+	Benitez for the report.
+
+	* erc.el (erc-version-string): Release ERC 5.1.2.
+
+2006-02-19  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-button.el (erc-button-keymap): Bind `erc-button-previous' to
+	<C-tab>.
+	(erc-button-previous): New function.
+
+2006-02-15  Michael Olson  <mwolson@gnu.org>
+
+	* NEWS: Add category for ERC 5.2.
+
+	* erc.el (erc): Move to the end of the buffer when a continued
+	session is detected.  Thanks to e1f and indio for the report and
+	testing a potential fix.
+
+2006-02-14  Michael Olson  <mwolson@gnu.org>
+
+	* debian/changelog: Prepare a new Debian package.
+
+	* Makefile (debprepare): New rule that creates an ERC snapshot
+	directory for use in both new Debian releases and revisions for
+	Debian packages.
+	(debrelease, debrevision-mwolson): Use debprepare.
+
+	* NEWS: Bring up-to-date.
+
+	* erc-stamp.el (erc-insert-timestamp-right): For now, put
+	timestamps before rather than after erc-fill-column when
+	erc-timestamp-right-column is nil.  This way we won't surprise
+	anyone unpleasantly, or so it is hoped.
+
+2006-02-13  Michael Olson  <mwolson@gnu.org>
+
+	* erc-dcc.el: Use (eval-when-compile (require 'cl)).
+
+2006-02-12  Michael Olson  <mwolson@gnu.org>
+
+	* erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
+	* erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
+	* erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
+	* erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
+	* erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
+	* erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
+	* erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
+	Add 2006 to copyright years, to comply with the changed guidelines.
+
+2006-02-11  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-update-modules): Handle erc-capab-identify
+	correctly.  Make some requirements shorter, so that it's easier to
+	see why they are needed.
+
+	* erc-capab.el: Add autoload cookie for capab-identify.
+	(erc-capab-send-identify-messages, erc-capab-identify-activate):
+	Minor whitespace fix in code.
+
+	* erc-stamp.el (erc-timestamp-use-align-to): Renamed from
+	`erc-timestamp-right-align-by-pixel'.  Set the default based on
+	whether we are in Emacs 22, and using X.  Improve documentation.
+	(erc-insert-aligned): Remove calculation of offset, since
+	:align-to pos works after all.  Unlike the previous solution, this
+	one works when erc-stamp.el is compiled.
+	(erc-insert-timestamp-right): Don't add length of string, and then
+	later remove its displayed width.  This puts timestamps after
+	erc-fill-column when erc-timestamp-right-column is nil, rather
+	than before it.  It also fixes a subtle bug.  Remove use of
+	`current-window', since there is no variable by that name in
+	Emacs21, Emacs22, or XEmacs21 beta.  Check to see whether
+	`erc-fill-column' is non-nil before using it.
+
+2006-02-11  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-list.el: Define `list' module which sets the alias
+	`erc-cmd-LIST' to `erc-list-channels' when enabled and
+	`erc-list-channels-simple' when disabled.
+	(erc-list-channels): Was `erc-cmd-LIST', renamed.
+	(erc-list-channels-simple): New function.
+
+	* erc.el (erc-modules): Added `list' to enabled modules.  Changed
+	`capab-identify' description.  Moved customization options left in
+	source code.
+
+	* erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
+
+	* erc-capab.el: Put a little more detail into Usage section.
+	(define-erc-module): Run `erc-capab-identify-setup' in all open
+	server buffers when enabling.
+	(erc-capab-identify-setup): Make PROC and PARSED optional
+	arguments.
+	(erc-capab-identify-add-prefix): Simplified nickname regexp.  This
+	should now also match nicknames that are formatted differently
+	than the default.
+
+	* erc-spelling.el (define-erc-module): Make sure there's a buffer
+	before calling `with-current-buffer'.
+
+2006-02-10  Michael Olson  <mwolson@gnu.org>
+
+	* Makefile (debbuild): Split from debrelease.
+	(debrevision-mwolson): New rule that causes a Debian revision to
+	be built.
+
+	* erc.el (erc-migrate-modules): Use a better algorithm.  Thanks to
+	Johan Bockgård.
+	(erc-modules): Change use of 'pcomplete to 'completion.
+
+2006-02-09  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+	* erc-capab.el: Require erc.
+	(erc-capab-send-identify-messages): Use `erc-server-send'.
+	(erc-capab-identify-remove/set-identified-flag): Use 1 and 0 as
+	the flags so we can also check whether the `erc-identified' text
+	property is there at all.
+	(erc-capab-identify-add-prefix): Use `erc-capab-find-parsed'.
+	This fixes a bug where the prefix wasn't inserted when timestamps
+	are inserted on the right.  Tweaked nickname regexp.
+	(erc-capab-find-parsed): New function.
+	(erc-capab-get-unidentified-nickname): Updated to check for 0
+	flag.  Only get nickname if there's a nickuserhost associated with
+	this message.
+
+	* erc-capab.el: New file.  Adds the new module
+	`erc-capab-identify', which allows flagging of unidentified users
+	on servers running an ircd based on dancer - irc.freenode.net, for
+	example.
+
+	* erc.el (erc-modules): Added `capab-identify' to options.
+	(erc-get-parsed-vector, erc-get-parsed-vector-nick)
+	(erc-get-parsed-vector-type): Moved here from erc-match.el.
+
+	* erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+	(erc-get-parsed-vector-type): Moved these functions to erc.el
+	since they can be useful outside of the text matching module.
+
+	* NEWS: Added erc-capab.el.
+
+	* erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
+	to "ERC".
+
+2006-02-07  Michael Olson  <mwolson@gnu.org>
+
+	* ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
+	ChangeLog.05: Rename from ChangeLog.NNNN in order to disambiguate
+	the filenames in DOS.
+
+	* erc-goodies.el: Comment fix.
+
+	* erc-hecomplete.el: Rename from erc-complete.el.  Update
+	commentary.  Use define-erc-module so that it's possible to
+	actually use this.
+	(erc-hecomplete): Rename function from `erc-complete'.
+	(erc-hecomplete): Rename group from `erc-old-complete'.  Docfix.
+
+	* erc-join.el: Rename from erc-autojoin.el.
+
+	* erc-networks.el: Rename from erc-nets.el.
+
+	* erc-services.el: Rename from erc-nickserv.el.
+
+	* erc-stamp.el (erc-insert-aligned): Don't take 3rd argument.  Use
+	the simpler `indent-to' function when
+	`erc-timestamp-right-align-by-pixel' is nil.
+	(erc-insert-timestamp-right): If the timestamp goes on the
+	following line, don't add timestamp properties to the spaces in
+	front of it.
+
+	* erc.el (erc-migrate-modules): New function that eases migration
+	of module names.
+	(erc-modules): Call erc-migrate-modules in the :get accessor.
+	(erc-modules, erc-update-modules): Update for new modules names.
+	(erc-cmd-SMV): Remove, since this does not give useful output due
+	to the version strings being removed from ERC modules.
+
+2006-02-05  Michael Olson  <mwolson@gnu.org>
+
+	* erc-spelling.el (erc-spelling-init): If
+	`erc-spelling-dictionaries' is nil, do not set
+	ispell-local-dictionary.  Before, it was being set to nil, which
+	was causing a long delay while the ispell process restarted.
+	(erc-spelling-unhighlight-word): New function that removes
+	flyspell properties from a spell-checked word.
+	(erc-spelling-flyspell-verify): Don't spell-check nicks or words
+	that have '/' before them.
+
+2006-02-04  Michael Olson  <mwolson@gnu.org>
+
+	* erc-autojoin.el: Use (eval-when-compile (require 'cl)).
+
+	* erc-complete.el (erc-nick-completion-exclude-myself)
+	(erc-try-complete-nick): Use better function for getting list of
+	channel users.
+
+	* erc-goodies.el: Docfix.
+
+	* erc-stamp.el: Use new arch tagline, since the other one wasn't
+	being treated properly.
+
+	* erc.el (erc-version-string): Release ERC 5.1.1.
+
+2006-02-03  Zhang Wei  <id.brep@gmail.com>
+
+	* erc.el (erc-version-string): Don't hard-code Emacs version.
+	(erc-version): Use emacs-version.
+
+2006-01-31  Michael Olson  <mwolson@gnu.org>
+
+	* erc-stamp.el: Update copyright years.
+
+2006-01-30  Simon Josefsson  <jas@extundo.com>
+
+	* erc.el (erc-open-ssl-stream): Use tls.el.
+
+2006-01-30  Michael Olson  <mwolson@gnu.org>
+
+	* erc-stamp.el (erc-timestamp-right-align-by-pixel): New option
+	that determines whether to use pixel values to align right
+	timestamps.  The default is not to do so, since it only works with
+	Emacs22 on X, and even then some people have trouble.
+	(erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
+
+2006-01-29  Michael Olson  <mwolson@gnu.org>
+
+	* ChangeLog, ChangeLog.2005, ChangeLog.2004, ChangeLog.2003,
+	ChangeLog.2002, ChangeLog.2001: Add "See ChangeLog.NNNN" line for
+	earlier changes.  Use utf-8 encoding.  Fix some accent typos.
+
+	* erc-speedbar.el (erc-speedbar-buttons): Fix reference to free
+	variable.
+	(erc-speedbar-goto-buffer): Fix compiler warning.
+
+	* erc-ibuffer.el: Use `define-ibuffer-filter' instead of
+	`ibuffer-degine-limiter'.  Use `define-ibuffer-column' instead of
+	`ibuffer-define-column'.  Require 'ibuf-ext so that the macros
+	work without compiler warnings.
+
+	* man/erc.texi (Obtaining ERC, Installation): Note that these
+	sections may be skipped if using the version of ERC that comes
+	with Emacs.
+
+2006-01-29  Edward O'Connor  <ted@oconnor.cx>
+
+	* erc-viper.el: Remove.  Now that ERC is included in Emacs, these
+	work-arounds live in Viper itself.
+
+2006-01-28  Michael Olson  <mwolson@gnu.org>
+
+	* erc-*.el, erc.texi, NEWS: Add Arch taglines as per Emacs
+	guidelines.
+
+	* erc-*.el: Space out copyright years like the rest of Emacs.  Use
+	the Emacs copyright statement.  Refer to ourselves as ERC rather
+	than "Emacs IRC Client", since there are now several IRC clients
+	for Emacs.
+
+	* erc-compat.el (erc-emacs-build-time): Define as a variable.
+
+	* erc-log.el (erc-log-setup-logging): Use write-file-functions.
+
+	* erc-ibuffer.el: Require 'erc.
+
+	* erc-stamp.el (erc-insert-aligned): Only use the special text
+	property when window-system is X.
+
+	* erc.texi: Adapt for inclusion in Emacs.
+
+2006-01-28  Johan Bockgård  <bojohan@users.sourceforge.net>
+
+	* erc.el (erc-format-message): More `cl' breakage; don't use
+	`oddp'.
+
+2006-01-27  Michael Olson  <mwolson@gnu.org>
+
+	* debian/changelog: Update for new release.
+
+	* debian/control (Description): Update.
+
+	* debian/rules: Concatenate ChangeLog for 2005.
+
+	* Makefile (MISC): Include ChangeLog.2005 and erc.texi.
+	(debrelease, release): Copy images directory.
+
+	* NEWS: Spelling fixes.  Add items for recent changes.
+
+	* erc.el (erc): Move call to erc-update-modules before the call to
+	erc-mode.  This should fix a timestamp display issue.
+	(erc-version-string): Release ERC 5.1.
+
+2006-01-26  Michael Olson  <mwolson@gnu.org>
+
+	* erc-stamp.el (erc-insert-aligned): New function that inserts
+	text in an perfectly-aligned way relative to the right margin.  It
+	only works well with Emacs22.  A sane fallback is provided for
+	other versions of Emacs.
+	(erc-insert-timestamp-right): Use the new function.
+
+2006-01-25  Edward O'Connor  <ted@oconnor.cx>
+
+	* erc.el (erc-modules): Ensure that `erc-button-mode' gets enabled
+	before `erc-match-mode'.
+
+	* erc-match.el (match): Append `erc-match-message' to
+	`erc-insert-modify-hook'.
+
+2006-01-25  Michael Olson  <mwolson@gnu.org>
+
+	* FOR-RELEASE: Mark last release requirement as done.
+
+	* Makefile (realclean, distclean): Remove docs.
+
+	* erc.texi: Take care of all pre-5.1 items.
+
+	* erc-backend.el (erc-server-send, erc-server-send-queue): Wrap
+	`process-send-string' in `condition-case' to avoid an error when
+	quitting ERC.
+
+	* erc-stamp.el (erc-insert-timestamp-right): Try to deal with
+	variable-width characters in the timestamp and on the same line.
+	The latter is a kludge, but it seems to work with most of the
+	input I've thrown at it so far.  It's certainly better than going
+	past the end of line consistently when we have variable-width
+	characters on the same line.  When `erc-timestamp-intangible' is
+	non-nil, add intangible properties to the whitespace as well, so
+	that hitting <end> does what you'd expect.
+
+	* erc.el (erc-flood-protect, erc-toggle-flood-control): Update
+	this to only use boolean values for `erc-flood-protect'.  Update
+	documentation.
+	(erc-cmd-QUIT): Set the active buffer to be the server buffer, so
+	that any QUIT-related messages go there.
+	(erc): Try to be more clever about re-using channel buffers when
+	automatically re-connecting.  Thanks to e1f for noticing.
+
+2006-01-23  Michael Olson  <mwolson@gnu.org>
+
+	* ChangeLog.2005: Remove erroneous line.
+
+	* FOR-RELEASE: Make that the Makefile tweaking is complete.
+	(NEWS): Mark as done.
+
+	* Makefile (MANUAL): New option indicating the name of the manual.
+	(PREFIX, ELISPDIR, INFODIR): New options that specify the
+	directories to install lisp code and info manuals to.  PREFIX is
+	used only by ELISPDIR and INFODIR.
+	(all): Call `lisp' and create the manual.
+	(lisp): Compile lisp code.
+	(%.info, %.html): New rules that make Info files and HTML files,
+	respectively, from a TexInfo source.
+	(doc): Create both the Info and HTML versions of the manual.  This
+	is for the user -- we never call it automatically.
+	(install-info): Install Info files.
+	(install-bin): Install compiled and source Lisp files.
+	(todo): Remove, since it seems pointless.
+
+	* NEWS: Update.
+
+	* README: Add Installation instructions.  Tweak layout.
+
+	* erc.texi: Work on some pre-5.1 items.
+
+	* erc-stamp.el, erc-track.el: Move some functions and options in
+	order to get rid of a few compiler warnings.
+
+	* erc.el (erc-modules): Enable readonly by default.  This will
+	prevent new users from accidentally removing old messages, which
+	could be disconcerting.  Also enable stamp by default, since
+	timestamps are a fairly standard feature among IRC clients.
+
+	* erc-button.el: Munge whitespace.
+
+	* erc-identd.el (erc-identd-start): Instead of throwing an error,
+	just try to use the obsolete function.
+
+2006-01-22  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-decode-string-from-target): Make sure that
+	we have a string as an argument.  If not, coerce it to the empty
+	string.  Hopefully, this will work painlessly around an edge case
+	related to quitting ERC around the same time a message comes in.
+
+2006-01-22  Johan Bockgård  <bojohan@users.sourceforge.net>
+
+	* erc-track.el: Use `(eval-when-compile (require 'cl))' (for
+	`case').  Doc fixes.
+	(erc-find-parsed-property): Simplify.
+	(erc-track-get-active-buffer): Fix logic.  Simplify.
+	(erc-track-switch-buffer): Remove unused variable `dir'.  Simplify.
+
+	* erc-speak.el: Doc fixes.
+	(erc-speak-region): `propertize' --> `erc-propertize'.
+
+	* erc-dcc.el (erc-dcc-chat-parse-output): `propertize' -->
+	`erc-propertize'.
+
+	* erc-button.el (erc-button-add-button): Take erc-fill-prefix into
+	account when wrapping URLs.
+
+	* erc-bbdb.el (erc-bbdb-elide-display): Doc fix.
+
+	* erc-backend.el (define-erc-response-handler): Doc fix.
+
+2006-01-22  Michael Olson  <mwolson@gnu.org>
+
+	* erc.el (erc-update-modules): Use `require' instead of `load',
+	but prevent it from causing errors, in order to preserve the
+	previous behavior.
+
+2006-01-21  Michael Olson  <mwolson@gnu.org>
+
+	* FOR-RELEASE (Source): Mark cl task as done.
+
+	* Makefile (erc-auto.el): Call erc-generate-autoloads rather than
+	generate-autoloads.
+	(erc-auto.el, %.elc): Don't show command, just its output.
+
+	* NEWS: Add items from 2005-01-01 to 2005-08-13.
+
+	* debian/copyright (Copyright): Update.
+
+	* erc-auto.in (erc-generate-autoloads): Rename from
+	generate-autoloads.
+
+	* erc.el, erc-autoaway.el, erc-backend.el: Use
+	erc-server-process-alive instead of erc-process-alive.
+
+	* erc.el, erc-backend.el, erc-ezbounce.el, erc-list.el,
+	erc-log.el, erc-match.el, erc-nets.el, erc-netsplit.el,
+	erc-nicklist.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el:
+	Use (eval-when-compile (require 'cl)), so that compilation doesn't
+	fail.
+
+	* erc-fill.el, erc-truncate.el: Whitespace munging.
+
+	* erc.el: Update copyright notice.  Remove eval-after-load code.
+	(erc-with-buffer): Docfix.
+	(erc-once-with-server-event, erc-once-with-server-event-global)
+	(erc-with-buffer, erc-with-all-buffers-of-server): Use erc-gensym
+	instead of gensym.
+	(erc-banlist-update): Use erc-delete-if instead of delete-if.
+	(erc): Call `erc-update-modules' here.
+
+	* erc-backend.el: Require 'erc-compat to minimize compiler
+	warnings.
+	(erc-decode-parsed-server-response): Docfix.
+	(erc-server-process-alive): Move here from erc.el and rename from
+	`erc-process-alive'.
+	(erc-server-send, erc-remove-channel-users): Make sure process is
+	alive before sending data to it.
+
+	* erc-bbdb.el: Update copyright years.
+	(erc-bbdb-whois): Remove overexuberant comment.
+
+	* erc-button.el: Require erc-fill, since we make liberal use of
+	`erc-fill-column'.
+
+	* erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): New
+	functions, the latter of which provides an `assert' equivalent.
+	(erc-remove-if-not): New function that provides a simple
+	implementation of `remove-if-not'.
+	(erc-gensym): New function that provides a simple implementation
+	of `gensym'.
+	(erc-delete-if): New function that provides a simple
+	implementation of `delete-if'.
+	(erc-member-if): New function that provides a simple
+	implementation of `member-if'.
+	(field-end): Remove this, since it is unused, and later versions
+	of XEmacs have this function already.
+	(erc-function-arglist): Moved here from erc.el.
+	(erc-delete-dups): New compatibility function for dealing with
+	XEmacs.
+	(erc-subseq): New function copied from cl-extra.el.
+
+	* erc-dcc.el: Require pcomplete during compilation to avoid
+	compiler warnings.
+	(erc-unpack-int, erc-dcc-send-filter)
+	(erc-dcc-get-filter): Use erc-assert instead of assert.
+	(pcomplete/erc-mode/DCC): Use erc-remove-if-not instead of
+	remove-if-not.
+
+	* erc-match.el (erc-log-matches): Fix compiler warning.
+
+	* erc-nicklist.el: Update copyright notice.
+	(erc-nicklist-menu): Change use of caadr to (car (cadr ...)).
+	(erc-nicklist-bitlbee-connected-p): Remove.
+	(erc-nicklist-insert-medium-name-or-icon): Accept channel
+	argument.  Use it to determine whether we are on bitlbee.  Now
+	that bitlbee names its channel "&bitlbee", this is trivial.
+	(erc-nicklist-insert-contents): Pass channel as specified above.
+	Don't try to determine whether we are on bitlbee here.
+	(erc-nicklist-channel-users-info): Use erc-remove-if-not instead
+	of remove-if-not.
+	(erc-nicklist-search-for-nick): Use erc-member-if instead of
+	member-if.
+
+	* erc-notify.el (erc-notify-QUIT): Use erc-delete-if with a
+	partially-evaluated lambda expression instead of `delete' and
+	`find'.
+
+	* erc-track.el: Use erc-assert.
+	(erc-track-modified-channels): Remove use of `return'.
+	(erc-track-modified-channels): Use `cadr' instead of `second',
+	since otherwise we would need yet another eval-when-compile line.
+
+2006-01-19  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-process-sentinel-1): Remove attempt to
+	detect SIGPIPE, since it doesn't work.
+
+2006-01-10  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-spelling.el: Updated copyright years.
+	(define-erc-module): Enable/disable `flyspell-mode' for all open
+	ERC buffers as well.
+	(erc-spelling-dictionaries): Reworded customize description.
+
+	* erc.el (erc-command-symbol): New function.
+	(erc-extract-command-from-line): Use `erc-command-symbol'.  This
+	fixes a bug where "Symbol's function definition is void:
+	erc-cmd-LIST" would be shown after typing /list at the prompt (the
+	command was interned because erc-menu.el uses it and is enabled by
+	default whereas erc-list.el is not).
+
+	* NEWS: Started a list of renamed variables.
+
+	* erc.el: Reworded the message sent when defining variable
+	aliases.
+	(erc-command-indicator-face): Doc fix.
+	(erc-modules): Enable the match module by default which makes
+	current nickname highlighting on as the default.
+
+	* erc-button.el: Updated copyright years.
+	(erc-button): New face.
+	(erc-button-face): Use `erc-button'.
+	(erc-button-nickname-face): New customizable variable.
+	(erc-button-add-nickname-buttons, erc-button-add-buttons-1): Send
+	new argument to `erc-button-add-button'.
+	(erc-button-add-button): Doc fix.  Added new argument to function
+	definition, NICK-P.  If it's a nickname, use
+	`erc-button-nickname-face', otherwise use `erc-button-face'.  This
+	makes channel tracking and buttons work better together when
+	`erc-button-buttonize-nicks' is enabled, since there is a nickname
+	on just about every line.
+
+	* erc-track.el (erc-track-use-faces): Doc fix.
+	(erc-track-faces-priority-list): Added `erc-button' to list.
+	(erc-track-priority-faces-only): Doc fix.
+
+2006-01-09  Diane Murray  <disumu@x3y2z1.net>
+
+	* erc-button.el (erc-button-url-regexp): Use `concat' so the
+	regexp is not one long line.
+	(erc-button-alist): Fixed so that customizing works correctly.
+	Reorganized.  Removed lambda functions with more than two lines.
+	Doc fix.
+	(erc-button-describe-symbol, erc-button-beats-to-time): New
+	functions.  Moved from `erc-button-alist'.
+
+2006-01-07  Michael Olson  <mwolson@gnu.org>
+
+	* erc-backend.el (erc-process-sentinel-1): Don't try to re-open a
+	process if a SIGPIPE occurs.  This happens when a new message
+	comes in at the same time a /quit is requested.
+	(erc-process-sentinel): Use string-match rather than string= to do
+	these comparisons.  Matching literal newlines makes me nervous.
+
+	* erc-track.el (erc-track-remove-from-mode-line): Handle case
+	where global-mode-string is not a list.  Emacs22 permits this.
+
+
+See ChangeLog.05 for earlier changes.
+
+    Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+  This file is part of GNU Emacs.
+
+  GNU Emacs is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2, or (at your option)
+  any later version.
+
+  GNU Emacs is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with GNU Emacs; see the file COPYING.  If not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301, USA.
+
+;; Local Variables:
+;; coding: utf-8
+;; add-log-time-zone-rule: t
+;; End:
+
+;; arch-tag: 865a75f6-2bcb-46df-bf0c-b514dadf688a
--- a/lisp/erc/erc-autoaway.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-autoaway.el	Sun Apr 22 12:42:47 2007 +0000
@@ -40,6 +40,49 @@
   "The Emacs idletimer.
 This is only used when `erc-autoaway-idle-method' is set to 'emacs.")
 
+(defvar erc-autoaway-last-sent-time (erc-current-time)
+  "The last time the user sent something.")
+
+(defvar erc-autoaway-caused-away nil
+  "Indicates whether this module was responsible for setting the
+user's away status.")
+
+(eval-when-compile (defvar erc-autoaway-idle-seconds))
+
+(defun erc-autoaway-reestablish-idletimer ()
+  "Reestablish the Emacs idletimer.
+If `erc-autoaway-idle-method' is 'emacs, you must call this
+function each time you change `erc-autoaway-idle-seconds'."
+  (interactive)
+  (when erc-autoaway-idletimer
+    (erc-cancel-timer erc-autoaway-idletimer))
+  (setq erc-autoaway-idletimer
+	(run-with-idle-timer erc-autoaway-idle-seconds
+			     t
+			     'erc-autoaway-set-away
+			     erc-autoaway-idle-seconds)))
+
+(defun erc-autoaway-some-server-buffer ()
+  "Return some ERC server buffer if its connection is alive.
+If none is found, return nil."
+  (car (erc-buffer-list #'erc-open-server-buffer-p)))
+
+(defun erc-autoaway-insinuate-maybe (&optional server &rest ignored)
+  "Add autoaway reset function to `post-command-hook' if at least one
+ERC process is alive.
+
+This is used when `erc-autoaway-idle-method' is 'user."
+  (when (or server (erc-autoaway-some-server-buffer))
+    (add-hook 'post-command-hook 'erc-autoaway-reset-idle-user)))
+
+(defun erc-autoaway-remove-maybe (&rest ignored)
+  "Remove the autoaway reset function from `post-command-hook' if
+no ERC process is alive.
+
+This is used when `erc-autoaway-idle-method' is 'user."
+  (unless (erc-autoaway-some-server-buffer)
+    (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)))
+
 ;;;###autoload (autoload 'erc-autoaway-mode "erc-autoaway")
 (define-erc-module autoaway nil
   "In ERC autoaway mode, you can be set away automatically.
@@ -65,24 +108,31 @@
 Related variables: `erc-public-away-p' and `erc-away-nickname'."
   ;; Enable:
   ((when (boundp 'erc-autoaway-idle-method)
+     (add-hook 'erc-connect-pre-hook 'erc-autoaway-reset-indicators)
+     (setq erc-autoaway-last-sent-time (erc-current-time))
      (cond
       ((eq erc-autoaway-idle-method 'irc)
        (add-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc)
        (add-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc))
       ((eq erc-autoaway-idle-method 'user)
-       (add-hook 'post-command-hook 'erc-autoaway-reset-idle-user))
+       (add-hook 'erc-after-connect 'erc-autoaway-insinuate-maybe)
+       (add-hook 'erc-disconnected-hook 'erc-autoaway-remove-maybe)
+       (erc-autoaway-insinuate-maybe))
       ((eq erc-autoaway-idle-method 'emacs)
        (erc-autoaway-reestablish-idletimer)))
      (add-hook 'erc-timer-hook 'erc-autoaway-possibly-set-away)
      (add-hook 'erc-server-305-functions 'erc-autoaway-reset-indicators)))
   ;; Disable:
   ((when (boundp 'erc-autoaway-idle-method)
+     (remove-hook 'erc-connect-pre-hook 'erc-autoaway-reset-indicators)
      (cond
       ((eq erc-autoaway-idle-method 'irc)
        (remove-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc)
        (remove-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc))
       ((eq erc-autoaway-idle-method 'user)
-       (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user))
+       (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)
+       (remove-hook 'erc-after-connect 'erc-autoaway-insinuate-maybe)
+       (remove-hook 'erc-disconnected-hook 'erc-autoaway-remove-maybe))
       ((eq erc-autoaway-idle-method 'emacs)
        (erc-cancel-timer erc-autoaway-idletimer)
        (setq erc-autoaway-idletimer nil)))
@@ -104,9 +154,12 @@
 		 (const :tag "Emacs idle time" emacs)
 		 (const :tag "Last IRC action" irc))
   :set (lambda (sym val)
-	 (erc-autoaway-disable)
-	 (set-default sym val)
-	 (erc-autoaway-enable)))
+	 (if erc-autoaway-mode
+	     (progn
+	       (erc-autoaway-disable)
+	       (set sym val)
+	       (erc-autoaway-enable))
+	   (set sym val))))
 
 (defcustom erc-auto-set-away t
   "*If non-nil, set away after `erc-autoaway-idle-seconds' seconds of idling.
@@ -133,21 +186,6 @@
   :group 'erc-autoaway
   :type 'regexp)
 
-(eval-when-compile (defvar erc-autoaway-idle-seconds))
-
-(defun erc-autoaway-reestablish-idletimer ()
-  "Reestablish the Emacs idletimer.
-If `erc-autoaway-idle-method' is 'emacs, you must call this
-function each time you change `erc-autoaway-idle-seconds'."
-  (interactive)
-  (when erc-autoaway-idletimer
-    (erc-cancel-timer erc-autoaway-idletimer))
-  (setq erc-autoaway-idletimer
-	(run-with-idle-timer erc-autoaway-idle-seconds
-			     t
-			     'erc-autoaway-set-away
-			     erc-autoaway-idle-seconds)))
-
 (defcustom erc-autoaway-idle-seconds 1800
   "*Number of seconds after which ERC will set you automatically away.
 If you are changing this variable using lisp instead of customizing it,
@@ -167,19 +205,12 @@
   :group 'erc-autoaway
   :type 'string)
 
-(defvar erc-autoaway-last-sent-time (erc-current-time)
-  "The last time the user sent something.")
-
-(defvar erc-autoaway-caused-away nil
-  "Indicates whether this module was responsible for setting the
-user's away status.")
-
 (defun erc-autoaway-reset-idle-user (&rest stuff)
   "Reset the stored user idle time.
 This is one global variable since a user talking on one net can
 talk on another net too."
   (when erc-auto-discard-away
-    (erc-autoaway-set-back))
+    (erc-autoaway-set-back #'erc-autoaway-remove-maybe))
   (setq erc-autoaway-last-sent-time (erc-current-time)))
 
 (defun erc-autoaway-reset-idle-irc (line &rest stuff)
@@ -192,12 +223,24 @@
     (erc-autoaway-set-back))
   (setq erc-autoaway-last-sent-time (erc-current-time)))
 
-(defun erc-autoaway-set-back ()
-  "Discard the away state globally."
-  (let ((server-buffer (car (erc-buffer-list #'erc-server-buffer-p))))
-    (when (and erc-autoaway-caused-away
-	       (with-current-buffer server-buffer (erc-away-p)))
-      (erc-cmd-GAWAY ""))))
+(defun erc-autoaway-set-back (&optional none-alive-func)
+  "Discard the away state globally.
+
+NONE-ALIVE-FUNC is the function to call if no ERC processes are alive."
+  (let ((server-buffer (erc-autoaway-some-server-buffer)))
+    (if (and erc-autoaway-caused-away
+	     (buffer-live-p server-buffer)
+	     (with-current-buffer server-buffer erc-away))
+	(erc-cmd-GAWAY "")
+      (when none-alive-func (funcall none-alive-func)))))
+
+(defun erc-autoaway-some-open-server-buffer ()
+  "Return some ERC server buffer if its connection is alive and the
+user is not away.
+If none is found, return nil."
+  (car (erc-buffer-list (lambda ()
+			  (and (erc-open-server-buffer-p)
+			       (not erc-away))))))
 
 (defun erc-autoaway-possibly-set-away (current-time)
   "Set autoaway when `erc-auto-set-away' is true and the idletime is
@@ -207,7 +250,7 @@
   ;; whenever the server sends something to the client.
   (when (and erc-auto-set-away
 	     (not erc-autoaway-caused-away)
-	     (not (erc-away-p)))
+	     (erc-autoaway-some-open-server-buffer))
     (let ((idle-time (erc-time-diff erc-autoaway-last-sent-time
 				    current-time)))
       (when (>= idle-time erc-autoaway-idle-seconds)
@@ -215,15 +258,17 @@
 	 nil 'notice nil
 	 (format "Setting automatically away after %i seconds of idle-time"
 		 idle-time))
-	(erc-autoaway-set-away idle-time)))))
+	(erc-autoaway-set-away idle-time t)))))
 
-(defun erc-autoaway-set-away (idle-time)
-  "Set the away state globally."
+(defun erc-autoaway-set-away (idle-time &optional notest)
+  "Set the away state globally.
+
+If NOTEST is specified, do not check to see whether there is an
+activer server buffer available."
   ;; Note that the idle timer runs, even when Emacs is inactive.  In
   ;; order to prevent flooding when we connect, we test for an
   ;; existing process.
-  (when (and (erc-server-process-alive)
-	     (not (erc-away-p)))
+  (when (or notest (erc-autoaway-some-open-server-buffer))
     (setq erc-autoaway-caused-away t)
     (erc-cmd-GAWAY (format erc-autoaway-message idle-time))))
 
--- a/lisp/erc/erc-backend.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-backend.el	Sun Apr 22 12:42:47 2007 +0000
@@ -174,9 +174,15 @@
 
 ;;; Server and connection state
 
+(defvar erc-server-ping-timer-alist nil
+  "Mapping of server buffers to their specific ping timer.")
+
 (defvar erc-server-connected nil
-  "Non-nil if the `current-buffer' is associated with an open IRC connection.
-This variable is buffer-local.")
+  "Non-nil if the current buffer has been used by ERC to establish
+an IRC connection.
+
+If you wish to determine whether an IRC connection is currently
+active, use the `erc-server-process-alive' function instead.")
 (make-variable-buffer-local 'erc-server-connected)
 
 (defvar erc-server-reconnect-count 0
@@ -187,10 +193,23 @@
   "Non-nil if the user requests a quit.")
 (make-variable-buffer-local 'erc-server-quitting)
 
+(defvar erc-server-reconnecting nil
+  "Non-nil if the user requests an explicit reconnect, and the
+current IRC process is still alive.")
+(make-variable-buffer-local 'erc-server-reconnecting)
+
+(defvar erc-server-timed-out nil
+  "Non-nil if the IRC server failed to respond to a ping.")
+(make-variable-buffer-local 'erc-server-timed-out)
+
 (defvar erc-server-banned nil
   "Non-nil if the user is denied access because of a server ban.")
 (make-variable-buffer-local 'erc-server-banned)
 
+(defvar erc-server-error-occurred nil
+  "Non-nil if the user triggers some server error.")
+(make-variable-buffer-local 'erc-server-error-occurred)
+
 (defvar erc-server-lines-sent nil
   "Line counter.")
 (make-variable-buffer-local 'erc-server-lines-sent)
@@ -210,6 +229,11 @@
 This is useful for flood protection.")
 (make-variable-buffer-local 'erc-server-last-ping-time)
 
+(defvar erc-server-last-received-time nil
+  "Time the last message was received from the server.
+This is useful for detecting hung connections.")
+(make-variable-buffer-local 'erc-server-last-received-time)
+
 (defvar erc-server-lag nil
   "Calculated server lag time in seconds.
 This variable is only set in a server buffer.")
@@ -387,11 +411,24 @@
 
 ;; Ping handling
 
-(defcustom erc-server-send-ping-interval 90
+(defcustom erc-server-send-ping-interval 30
   "*Interval of sending pings to the server, in seconds.
 If this is set to nil, pinging the server is disabled."
   :group 'erc-server
-  :type '(choice (const nil) (integer :tag "Seconds")))
+  :type '(choice (const :tag "Disabled" nil)
+                 (integer :tag "Seconds")))
+
+(defcustom erc-server-send-ping-timeout 120
+  "*If the time between ping and response is greater than this, reconnect.
+The time is in seconds.
+
+This must be greater than or equal to the value for
+`erc-server-send-ping-interval'.
+
+If this is set to nil, never try to reconnect."
+  :group 'erc-server
+  :type '(choice (const :tag "Disabled" nil)
+                 (integer :tag "Seconds")))
 
 (defvar erc-server-ping-handler nil
   "This variable holds the periodic ping timer.")
@@ -424,20 +461,40 @@
     (upcase-word 1)
     (buffer-string)))
 
-(defun erc-server-setup-periodical-server-ping (&rest ignore)
-  "Set up a timer to periodically ping the current server."
-  (and erc-server-ping-handler (erc-cancel-timer erc-server-ping-handler))
-  (when erc-server-send-ping-interval
-    (setq erc-server-ping-handler
-          (run-with-timer
-           4 erc-server-send-ping-interval
-           (lambda (buf)
-             (when (buffer-live-p buf)
-               (with-current-buffer buf
-                 (erc-server-send
-                  (format "PING %.0f"
-                          (erc-current-time))))))
-           (current-buffer)))))
+(defun erc-server-send-ping (buf)
+  "Send a ping to the IRC server buffer in BUF.
+Additionally, detect whether the IRC process has hung."
+  (if (buffer-live-p buf)
+      (with-current-buffer buf
+        (if (and erc-server-send-ping-timeout
+                 (>
+                  (erc-time-diff (erc-current-time)
+                                 erc-server-last-received-time)
+                  erc-server-send-ping-timeout))
+            (progn
+              ;; if the process is hung, kill it
+              (setq erc-server-timed-out t)
+              (delete-process erc-server-process))
+          (erc-server-send (format "PING %.0f" (erc-current-time)))))
+    ;; remove timer if the server buffer has been killed
+    (let ((timer (assq buf erc-server-ping-timer-alist)))
+      (when timer
+        (erc-cancel-timer (cdr timer))
+        (setcdr timer nil)))))
+
+(defun erc-server-setup-periodical-ping (buffer)
+  "Set up a timer to periodically ping the current server.
+The current buffer is given by BUFFER."
+  (with-current-buffer buffer
+    (and erc-server-ping-handler (erc-cancel-timer erc-server-ping-handler))
+    (when erc-server-send-ping-interval
+      (setq erc-server-ping-handler (run-with-timer
+                                     4 erc-server-send-ping-interval
+                                     #'erc-server-send-ping
+                                     buffer))
+      (setq erc-server-ping-timer-alist (cons (cons buffer
+                                                    erc-server-ping-handler)
+                                              erc-server-ping-timer-alist)))))
 
 (defun erc-server-process-alive ()
   "Return non-nil when `erc-server-process' is open or running."
@@ -447,40 +504,47 @@
 
 ;;;; Connecting to a server
 
-(defun erc-server-connect (server port)
-  "Perform the connection and login.
-We will store server variables in the current buffer."
+(defun erc-server-connect (server port buffer)
+  "Perform the connection and login using the specified SERVER and PORT.
+We will store server variables in the buffer given by BUFFER."
   (let ((msg (erc-format-message 'connect ?S server ?p port)))
     (message "%s" msg)
-    (setq erc-server-process
-          (funcall erc-server-connect-function
-                   (format "erc-%s-%s" server port)
-                   (current-buffer) server port))
-    (message "%s...done" msg))
-  ;; Misc server variables
-  (setq erc-server-quitting nil)
-  (setq erc-server-banned nil)
-  (setq erc-server-last-sent-time (erc-current-time))
-  (setq erc-server-last-ping-time (erc-current-time))
-  (setq erc-server-lines-sent 0)
-  ;; last peers (sender and receiver)
-  (setq erc-server-last-peers '(nil . nil))
-  ;; process handlers
-  (set-process-sentinel erc-server-process 'erc-process-sentinel)
-  (set-process-filter erc-server-process 'erc-server-filter-function)
-  ;; we do our own encoding and decoding
-  (when (fboundp 'set-process-coding-system)
-    (set-process-coding-system erc-server-process 'raw-text))
-  (set-marker (process-mark erc-server-process) (point))
+    (let ((process (funcall erc-server-connect-function
+                            (format "erc-%s-%s" server port)
+                            nil server port)))
+      (message "%s...done" msg)
+      ;; Misc server variables
+      (with-current-buffer buffer
+        (setq erc-server-process process)
+        (setq erc-server-quitting nil)
+        (setq erc-server-reconnecting nil)
+        (setq erc-server-timed-out nil)
+        (setq erc-server-banned nil)
+        (setq erc-server-error-occurred nil)
+        (let ((time (erc-current-time)))
+          (setq erc-server-last-sent-time time)
+          (setq erc-server-last-ping-time time)
+          (setq erc-server-last-received-time time))
+        (setq erc-server-lines-sent 0)
+        ;; last peers (sender and receiver)
+        (setq erc-server-last-peers '(nil . nil)))
+      ;; we do our own encoding and decoding
+      (when (fboundp 'set-process-coding-system)
+        (set-process-coding-system process 'raw-text))
+      ;; process handlers
+      (set-process-sentinel process 'erc-process-sentinel)
+      (set-process-filter process 'erc-server-filter-function)
+      (set-process-buffer process buffer)))
   (erc-log "\n\n\n********************************************\n")
-  (message (erc-format-message 'login ?n (erc-current-nick)))
+  (message (erc-format-message
+            'login ?n
+            (with-current-buffer buffer (erc-current-nick))))
   ;; wait with script loading until we receive a confirmation (first
   ;; MOTD line)
   (if (eq erc-server-connect-function 'open-network-stream-nowait)
       ;; it's a bit unclear otherwise that it's attempting to establish a
       ;; connection
-      (erc-display-message nil nil (current-buffer)
-                           "Opening connection..\n")
+      (erc-display-message nil nil buffer "Opening connection..\n")
     (erc-login)))
 
 (defun erc-server-reconnect ()
@@ -501,6 +565,7 @@
 (defun erc-server-filter-function (process string)
   "The process filter for the ERC server."
   (with-current-buffer (process-buffer process)
+    (setq erc-server-last-received-time (erc-current-time))
     ;; If you think this is written in a weird way - please refer to the
     ;; docstring of `erc-server-processing-p'
     (if erc-server-processing-p
@@ -529,16 +594,20 @@
 (defsubst erc-server-reconnect-p (event)
   "Return non-nil if ERC should attempt to reconnect automatically.
 EVENT is the message received from the closed connection process."
-  (and erc-server-auto-reconnect
-       (not erc-server-banned)
-       ;; make sure we don't infinitely try to reconnect, unless the
-       ;; user wants that
-       (or (eq erc-server-reconnect-attempts t)
-           (and (integerp erc-server-reconnect-attempts)
-                (< erc-server-reconnect-count erc-server-reconnect-attempts)))
-       (not (string-match "^deleted" event))
-       ;; open-network-stream-nowait error for connection refused
-       (not (string-match "^failed with code 111" event))))
+  (or erc-server-reconnecting
+      (and erc-server-auto-reconnect
+           (not erc-server-banned)
+           (not erc-server-error-occurred)
+           ;; make sure we don't infinitely try to reconnect, unless the
+           ;; user wants that
+           (or (eq erc-server-reconnect-attempts t)
+               (and (integerp erc-server-reconnect-attempts)
+                    (< erc-server-reconnect-count
+                       erc-server-reconnect-attempts)))
+           (or erc-server-timed-out
+               (not (string-match "^deleted" event)))
+           ;; open-network-stream-nowait error for connection refused
+           (not (string-match "^failed with code 111" event)))))
 
 (defun erc-process-sentinel-1 (event)
   "Called when `erc-process-sentinel' has decided that we're disconnecting.
@@ -562,6 +631,7 @@
         (if (erc-server-reconnect-p event)
             (condition-case err
                 (progn
+                  (setq erc-server-reconnecting nil)
                   (erc-server-reconnect)
                   (setq erc-server-reconnect-count 0))
               (error (when (integerp erc-server-reconnect-attempts)
@@ -611,6 +681,7 @@
   "Return the coding system or cons cell appropriate for TARGET.
 This is determined via `erc-encoding-coding-alist' or
 `erc-server-coding-system'."
+  (unless target (setq target (erc-default-target)))
   (or (when target
         (let ((case-fold-search t))
           (catch 'match
@@ -656,14 +727,11 @@
 protection algorithm."
   (erc-log (concat "erc-server-send: " string "(" (buffer-name) ")"))
   (setq erc-server-last-sent-time (erc-current-time))
-  (let ((buf (erc-server-buffer))
-        (encoding (erc-coding-system-for-target
-                   (or target (erc-default-target)))))
+  (let ((encoding (erc-coding-system-for-target target)))
     (when (consp encoding)
       (setq encoding (car encoding)))
-    (if (and buf
-             (erc-server-process-alive))
-        (with-current-buffer buf
+    (if (erc-server-process-alive)
+        (erc-with-server-buffer
           (let ((str (concat string "\r\n")))
             (if forcep
                 (progn
@@ -903,10 +971,8 @@
   (let ((hook (or (erc-get-hook (erc-response.command message))
                   'erc-default-server-functions)))
     (run-hook-with-args-until-success hook process message)
-    (let ((server-buffer (erc-server-buffer)))
-      (when (buffer-live-p server-buffer)
-        (with-current-buffer server-buffer
-          (run-hook-with-args 'erc-timer-hook (erc-current-time)))))))
+    (erc-with-server-buffer
+      (run-hook-with-args 'erc-timer-hook (erc-current-time)))))
 
 (add-hook 'erc-default-server-functions 'erc-handle-unknown-server-response)
 
@@ -1062,6 +1128,7 @@
 
 (define-erc-response-handler (ERROR)
   "Handle an ERROR command from the server." nil
+  (setq erc-server-error-occurred t)
   (erc-display-message
    parsed 'error nil 'ERROR
    ?s (erc-response.sender parsed) ?c (erc-response.contents parsed)))
@@ -1446,6 +1513,9 @@
 See `erc-display-server-message'." nil
   (erc-display-server-message proc parsed))
 
+(define-erc-response-handler (290)
+  "Handle dancer-ircd CAPAB messages." nil nil)
+
 (define-erc-response-handler (301)
   "AWAY notice." nil
   (erc-display-message parsed 'notice 'active 's301
--- a/lisp/erc/erc-button.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-button.el	Sun Apr 22 12:42:47 2007 +0000
@@ -56,10 +56,12 @@
   "This mode buttonizes all messages according to `erc-button-alist'."
   ((add-hook 'erc-insert-modify-hook 'erc-button-add-buttons 'append)
    (add-hook 'erc-send-modify-hook 'erc-button-add-buttons 'append)
-   (add-hook 'erc-complete-functions 'erc-button-next))
+   (add-hook 'erc-complete-functions 'erc-button-next)
+   (add-hook 'erc-mode-hook 'erc-button-add-keys))
   ((remove-hook 'erc-insert-modify-hook 'erc-button-add-buttons)
    (remove-hook 'erc-send-modify-hook 'erc-button-add-buttons)
-   (remove-hook 'erc-complete-functions 'erc-button-next)))
+   (remove-hook 'erc-complete-functions 'erc-button-next)
+   (remove-hook 'erc-mode-hook 'erc-button-add-keys)))
 
 ;; Make XEmacs use `erc-button-face'.
 (when (featurep 'xemacs)
@@ -241,6 +243,16 @@
 This syntax table should make all the legal nick characters word
 constituents.")
 
+(defvar erc-button-keys-added nil
+  "Internal variable used to keep track of whether we've added the
+global-level ERC button keys yet.")
+
+(defun erc-button-add-keys ()
+  "Add ERC mode-level button movement keys.  This is only done once."
+  (unless erc-button-keys-added
+    (define-key erc-mode-map (kbd "<backtab>") 'erc-button-previous)
+    (setq erc-button-keys-added t)))
+
 (defun erc-button-add-buttons ()
   "Find external references in the current buffer and make buttons of them.
 \"External references\" are things like URLs, as
--- a/lisp/erc/erc-capab.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-capab.el	Sun Apr 22 12:42:47 2007 +0000
@@ -56,8 +56,10 @@
 ;; (erc-capab-identify-mode 1)
 
 ;; `erc-capab-identify-prefix' will now be added to the beginning of
-;; unidentified users' nicknames.  The default is an asterisk, "*".  If
-;; the value of this variable is nil or you disable this module (see
+;; unidentified users' nicknames.  The default is an asterisk, "*".
+;; You can customize the prefix and the face used to display it,
+;; `erc-capab-identify-unidentified'.  If the value of
+;; `erc-capab-identify-prefix' is nil or you disable this module (see
 ;; `erc-capab-identify-disable'), no prefix will be inserted, but the
 ;; flag sent by the server will still be stripped.
 
@@ -73,14 +75,19 @@
   :group 'erc)
 
 (defcustom erc-capab-identify-prefix "*"
-  "The prefix used for unidentified users."
+  "The prefix used for unidentified users.
+
+If you change this from the default \"*\", be sure to use a
+character not found in IRC nicknames to avoid confusion."
   :group 'erc-capab
   :type '(choice string (const nil)))
 
-;;; Define module:
+(defface erc-capab-identify-unidentified '((t)) ; same as `erc-default-face'
+  "Face to use for `erc-capab-identify-prefix'."
+  :group 'erc-capab
+  :group 'erc-faces)
 
-(define-erc-response-handler (290)
-  "Handle dancer-ircd CAPAB messages." nil nil)
+;;; Define module:
 
 ;;;###autoload (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 (define-erc-module capab-identify nil
@@ -124,9 +131,9 @@
 These arguments are sent to this function when called as a hook in
 `erc-server-005-functions'."
   (unless erc-capab-identify-sent
-    (erc-capab-send-identify-messages)))
+    (erc-capab-identify-send-messages)))
 
-(defun erc-capab-send-identify-messages ()
+(defun erc-capab-identify-send-messages ()
   "Send CAPAB IDENTIFY messages if the server supports it."
   (when (and (stringp erc-server-version)
              (string-match "^\\(dancer-ircd\\|hyperion\\)" erc-server-version)
@@ -175,7 +182,7 @@
   (when (and erc-capab-identify-prefix
              (erc-with-server-buffer erc-capab-identify-activated))
     (goto-char (or (erc-find-parsed-property) (point-min)))
-    (let ((nickname (erc-capab-get-unidentified-nickname
+    (let ((nickname (erc-capab-identify-get-unidentified-nickname
                      (erc-get-parsed-vector (point)))))
       (when (and nickname
                  (goto-char (point-min))
@@ -183,10 +190,9 @@
                  (re-search-forward (regexp-quote nickname) nil t))
         (goto-char (match-beginning 0))
         (insert (erc-propertize erc-capab-identify-prefix
-                                'face (get-char-property (- (point) 1)
-                                                         'face)))))))
+                                'face 'erc-capab-identify-unidentified))))))
 
-(defun erc-capab-get-unidentified-nickname (parsed)
+(defun erc-capab-identify-get-unidentified-nickname (parsed)
   "Return the nickname of the user if unidentified.
 PARSED is an `erc-parsed' response struct."
   (when (and (erc-response-p parsed)
--- a/lisp/erc/erc-compat.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-compat.el	Sun Apr 22 12:42:47 2007 +0000
@@ -161,14 +161,6 @@
 	(setq newseq (cons el newseq))))
     (nreverse newseq)))
 
-;; Provide a simpler replacement for `gensym'.
-(defvar *erc-sym-counter* 0)
-(defun erc-gensym ()
-  "Generate a new uninterned symbol."
-  (let ((num (prog1 *erc-sym-counter*
-	       (setq *erc-sym-counter* (1+ *erc-sym-counter*)))))
-    (make-symbol (format "*erc-sym-%d*" num))))
-
 ;; Copied from cl-extra.el
 (defun erc-subseq (seq start &optional end)
   "Return the subsequence of SEQ from START to END.
--- a/lisp/erc/erc-fill.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-fill.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1,6 +1,7 @@
 ;;; erc-fill.el --- Filling IRC messages in various ways
 
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
+;;   2007 Free Software Foundation, Inc.
 
 ;; Author: Andreas Fuchs <asf@void.at>
 ;;         Mario Lang <mlang@delysid.org>
@@ -187,14 +188,6 @@
       (length (format-time-string erc-timestamp-format))
     0))
 
-(defun erc-restore-text-properties ()
-  "Restore the property 'erc-parsed for the region."
-  (let* ((parsed-posn (text-property-not-all (point-min) (point-max)
-                                             'erc-parsed nil))
-         (parsed-prop (when parsed-posn
-                        (get-text-property parsed-posn 'erc-parsed))))
-    (put-text-property (point-min) (point-max) 'erc-parsed parsed-prop)))
-
 (provide 'erc-fill)
 
 ;;; erc-fill.el ends here
--- a/lisp/erc/erc-ibuffer.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-ibuffer.el	Sun Apr 22 12:42:47 2007 +0000
@@ -127,8 +127,7 @@
 (define-ibuffer-column erc-away (:name "A")
   (if (and erc-server-process
 	   (processp erc-server-process)
-	   (with-current-buffer (process-buffer erc-server-process)
-	     erc-away))
+	   (erc-away-time))
       "A"
     " "))
 
--- a/lisp/erc/erc-identd.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-identd.el	Sun Apr 22 12:42:47 2007 +0000
@@ -42,12 +42,26 @@
 
 (defvar erc-identd-process nil)
 
+(defgroup erc-identd nil
+  "Run a local identd server."
+  :group 'erc)
+
+(defcustom erc-identd-port 8113
+  "Port to run the identd server on if not specified in the argument for
+`erc-identd-start'.
+
+This can be either a string or a number."
+  :group 'erc-identd
+  :type '(choice (const :tag "None" nil)
+		 (integer :tag "Port number")
+		 (string :tag "Port string")))
+
 ;;;###autoload (autoload 'erc-identd-mode "erc-identd")
 (define-erc-module identd nil
   "This mode launches an identd server on port 8113."
-  ((add-hook 'erc-connect-pre-hook 'erc-identd-start)
+  ((add-hook 'erc-connect-pre-hook 'erc-identd-quickstart)
    (add-hook 'erc-disconnected-hook 'erc-identd-stop))
-  ((remove-hook 'erc-connect-pre-hook 'erc-identd-start)
+  ((remove-hook 'erc-connect-pre-hook 'erc-identd-quickstart)
    (remove-hook 'erc-disconnected-hook 'erc-identd-stop)))
 
 (defun erc-identd-filter (proc string)
@@ -71,12 +85,11 @@
 when you need one, without having to install one globally on your
 system."
   (interactive (list (read-string "Serve identd requests on port: " "8113")))
-  (if (null port)
-      (setq port 8113)
-    (if (stringp port)
-	(setq port (string-to-number port))))
-  (if erc-identd-process
-      (delete-process erc-identd-process))
+  (unless port (setq port erc-identd-port))
+  (when (stringp port)
+    (setq port (string-to-number port)))
+  (when erc-identd-process
+    (delete-process erc-identd-process))
   (setq erc-identd-process
 	(make-network-process :name "identd"
 			      :buffer nil
@@ -85,6 +98,11 @@
 			      :filter 'erc-identd-filter))
   (set-process-query-on-exit-flag erc-identd-process nil))
 
+(defun erc-identd-quickstart (&rest ignored)
+  "Start the identd server with the default port.
+The default port is specified by `erc-identd-port'."
+  (erc-identd-start))
+
 ;;;###autoload
 (defun erc-identd-stop (&rest ignore)
   (interactive)
--- a/lisp/erc/erc-log.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-log.el	Sun Apr 22 12:42:47 2007 +0000
@@ -85,7 +85,9 @@
 ;;; Code:
 
 (require 'erc)
-(eval-when-compile (require 'cl))
+(eval-when-compile
+  (require 'erc-networks)
+  (require 'cl))
 
 (defgroup erc-log nil
   "Logging facilities for ERC."
@@ -100,10 +102,12 @@
 SERVER and PORT are the parameters used to connect BUFFERs
 `erc-server-process'."
   :group 'erc-log
-  :type '(choice (const erc-generate-log-file-name-long)
-		 (const erc-generate-log-file-name-short)
-		 (const erc-generate-log-file-name-with-date)
-		 (symbol)))
+  :type '(choice (const :tag "Long style" erc-generate-log-file-name-long)
+		 (const :tag "Long, but with network name rather than server"
+			erc-generate-log-file-name-network)
+		 (const :tag "Short" erc-generate-log-file-name-short)
+		 (const :tag "With date" erc-generate-log-file-name-with-date)
+		 (symbol :tag "Other function")))
 
 (defcustom erc-truncate-buffer-on-save nil
   "Truncate any ERC (channel, query, server) buffer when it is saved."
@@ -197,7 +201,7 @@
 \(setq erc-enable-logging
       (lambda (buffer)
 	(with-current-buffer buffer
-	  (not erc-away))))"
+	  (null (erc-away-time)))))"
   ;; enable
   ((when erc-log-write-after-insert
      (add-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs))
@@ -211,8 +215,7 @@
    ;; append, so that 'erc-initialize-log-marker runs first
    (add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append)
    (dolist (buffer (erc-buffer-list))
-     (when (buffer-live-p buffer)
-       (with-current-buffer buffer (erc-log-setup-logging)))))
+     (erc-log-setup-logging buffer)))
   ;; disable
   ((remove-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs)
    (remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
@@ -223,30 +226,38 @@
    (remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
    (remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
    (dolist (buffer (erc-buffer-list))
-     (when (buffer-live-p buffer)
-       (with-current-buffer buffer (erc-log-disable-logging))))))
+     (erc-log-disable-logging buffer))))
 
 (define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs)
 
 ;;; functionality referenced from erc.el
-(defun erc-log-setup-logging ()
+(defun erc-log-setup-logging (buffer)
   "Setup the buffer-local logging variables in the current buffer.
-This function is destined to be run from `erc-connect-pre-hook'."
-  (when (erc-logging-enabled)
-    (auto-save-mode -1)
-    (setq buffer-file-name nil)
-    (set (make-local-variable 'write-file-functions)
-	 '(erc-save-buffer-in-logs))
-    (when erc-log-insert-log-on-open
-      (ignore-errors (insert-file-contents (erc-current-logfile))
-		     (move-marker erc-last-saved-position
-				  (1- (point-max)))))))
+This function is destined to be run from `erc-connect-pre-hook'.
+The current buffer is given by BUFFER."
+  (when (erc-logging-enabled buffer)
+    (with-current-buffer buffer
+      (auto-save-mode -1)
+      (setq buffer-file-name nil)
+      (cond ((boundp 'write-file-functions)
+	     (set (make-local-variable 'write-file-functions)
+		  '(erc-save-buffer-in-logs)))
+	    ((boundp 'local-write-file-hooks)
+	     (setq local-write-file-hooks '(erc-save-buffer-in-logs)))
+	    (t
+	     (set (make-local-variable 'write-file-hooks)
+		  '(erc-save-buffer-in-logs))))
+      (when erc-log-insert-log-on-open
+	(ignore-errors (insert-file-contents (erc-current-logfile))
+		       (move-marker erc-last-saved-position
+				    (1- (point-max))))))))
 
-(defun erc-log-disable-logging ()
-  "Disable logging in the current buffer."
-  (when (erc-logging-enabled)
-    (setq buffer-offer-save nil
-	  erc-enable-logging nil)))
+(defun erc-log-disable-logging (buffer)
+  "Disable logging in BUFFER."
+  (when (erc-logging-enabled buffer)
+    (with-current-buffer buffer
+      (setq buffer-offer-save nil
+	    erc-enable-logging nil))))
 
 (defun erc-log-all-but-server-buffers (buffer)
   "Returns t if logging should be enabled in BUFFER.
@@ -340,6 +351,19 @@
     ;; we need a make-safe-file-name function.
     (convert-standard-filename file)))
 
+(defun erc-generate-log-file-name-network (buffer target nick server port)
+  "Generates a log-file name using the network name rather than server name.
+This results in a file name of the form #channel!nick@network.txt.
+This function is a possible value for `erc-generate-log-file-name-function'."
+  (require 'erc-networks)
+  (let ((file (concat
+	       (if target (concat target "!"))
+	       nick "@"
+	       (or (with-current-buffer buffer (erc-network-name)) server)
+	       ".txt")))
+    ;; we need a make-safe-file-name function.
+    (convert-standard-filename file)))
+
 ;;;###autoload
 (defun erc-save-buffer-in-logs (&optional buffer)
   "Append BUFFER contents to the log file, if logging is enabled.
--- a/lisp/erc/erc-match.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-match.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1,6 +1,7 @@
 ;;; erc-match.el --- Highlight messages matching certain regexps
 
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
+;;   2007 Free Software Foundation, Inc.
 
 ;; Author: Andreas Fuchs <asf@void.at>
 ;; Keywords: comm, faces
@@ -540,7 +541,7 @@
     (when (and
 	   (or (eq erc-log-matches-flag t)
 	       (and (eq erc-log-matches-flag 'away)
-		    erc-away))
+		    (erc-away-time)))
 	   match-buffer-name)
       (let ((line (format-spec erc-log-match-format
 		   (format-spec-make
@@ -572,7 +573,7 @@
 
 (defun erc-log-matches-come-back (proc parsed)
   "Display a notice that messages were logged while away."
-  (when (and erc-away
+  (when (and (erc-away-time)
 	     (eq erc-log-matches-flag 'away))
     (mapc
      (lambda (match-type)
@@ -583,7 +584,7 @@
 				  (with-current-buffer buffer
 				    (get-text-property (1- (point-max))
 						       'timestamp))))
-		  (away-time     (erc-emacs-time-to-erc-time erc-away)))
+		  (away-time (erc-emacs-time-to-erc-time (erc-away-time))))
 	     (when (and away-time last-msg-time
 			(erc-time-gt last-msg-time away-time))
 	       (erc-display-message
--- a/lisp/erc/erc-menu.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-menu.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1,6 +1,7 @@
 ;; erc-menu.el -- Menu-bar definitions for ERC
 
-;; Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2004, 2005, 2006,
+;;   2007 Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: comm, processes, menu
@@ -75,8 +76,8 @@
 		(erc-channel-user-op-p (erc-current-nick))]
 	       ["Set a key..." erc-set-channel-key
 		(erc-channel-user-op-p (erc-current-nick))])
-	 ["Leave this channel..." erc-part-from-channel erc-channel-users]
-	 "-")
+	 ["Leave this channel..." erc-part-from-channel erc-channel-users])
+	"-"
 	(list "Pals, fools and other keywords"
 	      ["Add pal..." erc-add-pal]
 	      ["Delete pal..." erc-delete-pal]
--- a/lisp/erc/erc-netsplit.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-netsplit.el	Sun Apr 22 12:42:47 2007 +0000
@@ -184,7 +184,7 @@
 ;;;###autoload
 (defun erc-cmd-WHOLEFT ()
   "Show who's gone."
-  (with-current-buffer (erc-server-buffer)
+  (erc-with-server-buffer
     (if (null erc-netsplit-list)
 	(erc-display-message
 	 nil 'notice 'active
--- a/lisp/erc/erc-networks.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-networks.el	Sun Apr 22 12:42:47 2007 +0000
@@ -317,6 +317,7 @@
   ("Novernet: Random server" Novernet "irc.novernet.com" ((6665 6669) 7000 ))
   ("Nullrouted: Random server" Nullrouted "irc.nullrouted.org" ((6666 6669) 7000 ))
   ("NullusNet: Random server" NullusNet "irc.nullus.net" 6667)
+  ("OFTC: Random server" OFTC "irc.oftc.net" ((6667 6670) 7000))
   ("OpChat: Random server" OpChat "irc.opchat.org" ((6667 6669)))
   ("Othernet: Random server" Othernet "irc.othernet.org" 6667)
   ("Othernet: US, FL, Miami" Othernet "miami.fl.us.othernet.org" 6667)
@@ -611,6 +612,7 @@
     (Novernet "novernet.com")
     (Nullrouted "nullrouted.org")
     (NullusNet "nullus.net")
+    (OFTC "oftc.net")
     (OpChat "opchat.org")
     (Openprojects "openprojects.net")
     (Othernet "othernet.org")
@@ -737,12 +739,12 @@
 
 (defun erc-network ()
   "Return the value of `erc-network' for the current server."
-  (with-current-buffer (erc-server-buffer) erc-network))
+  (erc-with-server-buffer erc-network))
 
 (defun erc-current-network ()
   "Deprecated.  Use `erc-network' instead.  Return the name of this server's
 network as a symbol."
-  (with-current-buffer (erc-server-buffer)
+  (erc-with-server-buffer
     (intern (downcase (symbol-name erc-network)))))
 
 (erc-make-obsolete 'erc-current-network 'erc-network
@@ -750,7 +752,7 @@
 
 (defun erc-network-name ()
   "Returns the name of the current network as a string."
-  (with-current-buffer (erc-server-buffer) (symbol-name erc-network)))
+  (erc-with-server-buffer (symbol-name erc-network)))
 
 (defun erc-set-network-name (proc parsed)
   "Set `erc-network' to the value returned by `erc-determine-network'."
--- a/lisp/erc/erc-notify.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-notify.el	Sun Apr 22 12:42:47 2007 +0000
@@ -121,8 +121,7 @@
 	     (ison-list (delete "" (split-string
 				    (erc-response.contents parsed))))
 	     (new-list ison-list)
-	     (old-list (with-current-buffer (erc-server-buffer)
-			 erc-last-ison)))
+	     (old-list (erc-with-server-buffer erc-last-ison)))
 	(while new-list
 	  (when (not (erc-member-ignore-case (car new-list) old-list))
 	    (run-hook-with-args 'erc-notify-signon-hook server (car new-list))
@@ -204,7 +203,7 @@
   (cond
    ((null args)
     ;; Print current notificated people (online)
-    (let ((ison (with-current-buffer (erc-server-buffer) erc-last-ison)))
+    (let ((ison (erc-with-server-buffer erc-last-ison)))
       (if (not ison)
 	  (erc-display-message
 	   nil 'notice 'active "No ison-list yet!")
--- a/lisp/erc/erc-pcomplete.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-pcomplete.el	Sun Apr 22 12:42:47 2007 +0000
@@ -180,7 +180,7 @@
   (while (pcomplete-here (pcomplete-erc-nicks))))
 
 (defun pcomplete/erc-mode/UNIGNORE ()
-  (pcomplete-here (with-current-buffer (erc-server-buffer) erc-ignore-list)))
+  (pcomplete-here (erc-with-server-buffer erc-ignore-list)))
 
 ;;; Functions that provide possible completions.
 
@@ -233,7 +233,7 @@
 (defun pcomplete-erc-all-nicks (&optional postfix)
   "Returns a list of all nicks on the current server."
   (let (nicks)
-    (with-current-buffer (process-buffer erc-server-process)
+    (erc-with-server-buffer
       (maphash (lambda (nick user)
                  (setq nicks (cons (concat nick postfix) nicks)))
                erc-server-users))
--- a/lisp/erc/erc-ring.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-ring.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1,6 +1,7 @@
 ;; erc-ring.el -- Command history handling for erc using ring.el
 
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
+;;   2007 Free Software Foundation, Inc.
 
 ;; Author: Alex Schroeder <alex@gnu.org>
 ;; Keywords: comm
--- a/lisp/erc/erc-services.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-services.el	Sun Apr 22 12:42:47 2007 +0000
@@ -168,15 +168,18 @@
   :type '(repeat
 	  (list :tag "Network"
 		(choice :tag "Network name"
-			(const freenode)
-			(const OFTC)
-			(const DALnet)
-			(const GalaxyNet)
-			(const SlashNET)
-			(const BRASnet)
-			(const iip)
+			(const Ars)
 			(const Austnet)
 			(const Azzurra)
+			(const BitlBee)
+			(const BRASnet)
+			(const DALnet)
+			(const freenode)
+			(const GalaxyNet)
+			(const iip)
+			(const OFTC)
+			(const QuakeNet)
+			(const SlashNET)
 			(symbol :tag "Network name"))
 		(repeat :tag "Nickname and password"
 			(cons :tag "Identity"
@@ -186,68 +189,63 @@
 ;; Variables:
 
 (defcustom erc-nickserv-alist
-  '((BitlBee
-     nil
-     nil
+  '((Ars
+     nil nil
+     "Census"
+     "IDENTIFY" nil nil)
+    (Austnet
+     "NickOP!service@austnet.org"
+     "/msg\\s-NickOP@austnet.org\\s-identify\\s-<password>"
+     "nickop@austnet.org"
+     "identify" nil nil)
+    (Azzurra
+     "NickServ!service@azzurra.org"
+     "/ns\\s-IDENTIFY\\s-password"
+     "NickServ"
+     "IDENTIFY" nil nil)
+    (BitlBee
+     nil nil
      "&bitlbee"
-     "identify"
-     nil)
+     "identify" nil nil)
+    (BRASnet
+     "NickServ!services@brasnet.org"
+     "/NickServ\\s-IDENTIFY\\s-senha"
+     "NickServ"
+     "IDENTIFY" nil "")
     (DALnet
      "NickServ!service@dal.net"
      "/msg\\s-NickServ@services.dal.net\\s-IDENTIFY\\s-<password>"
      "NickServ@services.dal.net"
-     "IDENTIFY"
-     nil)
+     "IDENTIFY" nil nil)
     (freenode
      "NickServ!NickServ@services."
      "/msg\\s-NickServ\\s-IDENTIFY\\s-<password>"
      "NickServ"
-     "IDENTIFY"
-     nil)
+     "IDENTIFY" nil nil)
     (GalaxyNet
      "NS!nickserv@galaxynet.org"
      "Please\\s-change\\s-nicks\\s-or\\s-authenticate."
      "NS@services.galaxynet.org"
-     "AUTH"
-     t)
+     "AUTH" t nil)
+    (iip
+     "Trent@anon.iip"
+     "type\\s-/squery\\s-Trent\\s-identify\\s-<password>"
+     "Trent@anon.iip"
+     "IDENTIFY" nil "SQUERY")
+    (OFTC
+     "NickServ!services@services.oftc.net"
+     "type\\s-/msg\\s-NickServ\\s-IDENTIFY\\s-password."
+     "NickServ"
+     "IDENTIFY" nil nil)
+    (QuakeNet
+     nil nil
+     "Q@CServe.quakenet.org"
+     "auth" t nil)
     (SlashNET
      "NickServ!services@services.slashnet.org"
      "/msg\\s-NickServ\\s-IDENTIFY\\s-password"
      "NickServ@services.slashnet.org"
-     "IDENTIFY"
-     nil)
-    (iip
-     "Trent@anon.iip"
-     "type\\s-/squery\\s-Trent\\s-identify\\s-<password>"
-     "Trent@anon.iip"
-     "IDENTIFY"
-     nil
-     "SQUERY")
-    (BRASnet
-     "NickServ!services@brasnet.org"
-     "/NickServ\\s-IDENTIFY\\s-senha"
-     "NickServ"
-     "IDENTIFY"
-     nil
-     "")
-    (Austnet
-     "NickOP!service@austnet.org"
-     "/msg\\s-NickOP@austnet.org\\s-identify\\s-<password>"
-     "nickop@austnet.org"
-     "identify"
-     nil)
-    (Azzurra
-     "NickServ!service@azzurra.org"
-     "/ns\\s-IDENTIFY\\s-password"
-     "NickServ"
-     "IDENTIFY"
-     nil)
-    (OFTC
-     "NickServ!services@services.oftc.net"
-     "/msg\\s-NickServ\\s-IDENTIFY\\s-\^_password"
-     "NickServ"
-     "IDENTIFY"
-     nil))
+     "IDENTIFY" nil nil))
    "Alist of NickServer details, sorted by network.
 Every element in the list has the form
   \(SYMBOL NICKSERV REGEXP NICK KEYWORD USE-CURRENT ANSWER)
@@ -265,8 +263,10 @@
    :type '(repeat
 	   (list :tag "Nickserv data"
 		 (symbol :tag "Network name")
-		 (string :tag "Nickserv's nick!user@host")
-		 (regexp :tag "Identify request sent by Nickserv")
+		 (choice (string :tag "Nickserv's nick!user@host")
+			 (const :tag "No message sent by Nickserv" nil))
+		 (choice (regexp :tag "Identify request sent by Nickserv")
+			 (const :tag "No message sent by Nickserv" nil))
 		 (string :tag "Identify to")
 		 (string :tag "Identify keyword")
 		 (boolean :tag "Use current nick in identify message?")
--- a/lisp/erc/erc-speedbar.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-speedbar.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1,6 +1,7 @@
 ;;; erc-speedbar.el --- Speedbar support for ERC
 
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
+;;   2007 Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Contributor: Eric M. Ludlam <eric@siege-engine.com>
@@ -113,7 +114,7 @@
   (erase-buffer)
   (let (serverp chanp queryp)
     (with-current-buffer buffer
-      (setq serverp (eq buffer (process-buffer erc-server-process)))
+      (setq serverp (erc-server-buffer-p))
       (setq chanp (erc-channel-p (erc-default-target)))
       (setq queryp (erc-query-buffer-p)))
     (cond (serverp
--- a/lisp/erc/erc-spelling.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-spelling.el	Sun Apr 22 12:42:47 2007 +0000
@@ -41,12 +41,10 @@
   ;; called AFTER the server buffer is initialized.
   ((add-hook 'erc-connect-pre-hook 'erc-spelling-init)
    (dolist (buffer (erc-buffer-list))
-     (when (buffer-live-p buffer)
-       (with-current-buffer buffer (erc-spelling-init)))))
+     (erc-spelling-init buffer)))
   ((remove-hook 'erc-connect-pre-hook 'erc-spelling-init)
    (dolist (buffer (erc-buffer-list))
-     (when (buffer-live-p buffer)
-       (with-current-buffer buffer (flyspell-mode 0))))))
+     (with-current-buffer buffer (flyspell-mode 0)))))
 
 (defcustom erc-spelling-dictionaries nil
   "An alist mapping buffer names to dictionaries.
@@ -60,24 +58,22 @@
                                (string :tag "Dictionary"))))
   :group 'erc-spelling)
 
-(defun erc-spelling-init ()
-  "Enable flyspell mode in an ERC buffer."
-  (let ((name (downcase (buffer-name)))
-        (dicts erc-spelling-dictionaries))
-    (when dicts
-      (while (and dicts
-                  (not (string= name (downcase (caar dicts)))))
-        (setq dicts (cdr dicts)))
-      (setq ispell-local-dictionary
-            (if dicts
-                (cadr (car dicts))
-              (let ((server (erc-server-buffer)))
-                (if server
-                    (with-current-buffer server
-                      ispell-local-dictionary)
-                  nil))))))
-  (setq flyspell-generic-check-word-p 'erc-spelling-flyspell-verify)
-  (flyspell-mode 1))
+(defun erc-spelling-init (buffer)
+  "Enable flyspell mode in an ERC buffer.
+The current buffer is given by BUFFER."
+  (with-current-buffer buffer
+    (let ((name (downcase (buffer-name)))
+          (dicts erc-spelling-dictionaries))
+      (when dicts
+        (while (and dicts
+                    (not (string= name (downcase (caar dicts)))))
+          (setq dicts (cdr dicts)))
+        (setq ispell-local-dictionary
+              (if dicts
+                  (cadr (car dicts))
+                (erc-with-server-buffer ispell-local-dictionary)))))
+    (setq flyspell-generic-check-word-p 'erc-spelling-flyspell-verify)
+    (flyspell-mode 1)))
 
 (defun erc-spelling-unhighlight-word (word)
   "Unhighlight the given WORD.
--- a/lisp/erc/erc-stamp.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-stamp.el	Sun Apr 22 12:42:47 2007 +0000
@@ -147,7 +147,7 @@
 	(error "Timestamp function unbound"))
       (when (and (fboundp erc-insert-away-timestamp-function)
 		 erc-away-timestamp-format
-		 (with-current-buffer (erc-server-buffer) erc-away)
+		 (erc-away-time)
 		 (not erc-timestamp-format))
 	(funcall erc-insert-away-timestamp-function
 		 (erc-format-timestamp ct erc-away-timestamp-format)))
@@ -203,6 +203,7 @@
 	 (s (if ignore-p (make-string len ? ) string)))
     (unless ignore-p (setq erc-timestamp-last-inserted string))
     (erc-put-text-property 0 len 'field 'erc-timestamp s)
+    (erc-put-text-property 0 len 'invisible 'timestamp s)
     (insert s)))
 
 (defun erc-insert-aligned (string pos)
@@ -319,6 +320,21 @@
   (setq erc-hide-timestamps nil)
   (erc-munge-invisibility-spec))
 
+(defun erc-toggle-timestamps ()
+  "Hide or show timestamps in ERC buffers.
+
+Note that timestamps can only be shown for a message using this
+function if `erc-timestamp-format' was set and timestamping was
+enabled when the message was inserted."
+  (interactive)
+  (if erc-hide-timestamps
+      (setq erc-hide-timestamps nil)
+    (setq erc-hide-timestamps t))
+  (mapc (lambda (buffer)
+	  (with-current-buffer buffer
+	    (erc-munge-invisibility-spec)))
+	(erc-buffer-list)))
+
 (defun erc-echo-timestamp (before now)
   "Print timestamp text-property of an IRC message.
 Argument BEFORE is where point was before it got moved and
--- a/lisp/erc/erc-track.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc-track.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1,6 +1,7 @@
 ;;; erc-track.el --- Track modified channel buffers
 
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
+;;   2007 Free Software Foundation, Inc.
 
 ;; Author: Mario Lang <mlang@delysid.org>
 ;; Keywords: comm, faces
@@ -46,12 +47,33 @@
   "Track active buffers and show activity in the modeline."
   :group 'erc)
 
+(defcustom erc-track-enable-keybindings 'ask
+  "Whether to enable the ERC track keybindings, namely:
+`C-c C-SPC' and `C-c C-@', which both do the same thing.
+
+The default is to check to see whether these keys are used
+already: if not, then enable the ERC track minor mode, which
+provides these keys.  Otherwise, do not touch the keys.
+
+This can alternatively be set to either t or nil, which indicate
+respectively always to enable ERC track minor mode or never to
+enable ERC track minor mode.
+
+The reason for using this default value is to both (1) adhere to
+the Emacs development guidelines which say not to touch keys of
+the form C-c C-<something> and also (2) to meet the expectations
+of long-time ERC users, many of whom rely on these keybindings."
+  :group 'erc-track
+  :type '(choice (const :tag "Ask, if used already" ask)
+		 (const :tag "Enable" t)
+		 (const :tag "Disable" nil)))
+
 (defcustom erc-track-visibility t
   "Where do we look for buffers to determine their visibility?
 The value of this variable determines, when a buffer is considered
 visible or invisible.  New messages in invisible buffers are tracked,
 while switching to visible buffers when they are tracked removes them
-from the list.  See also `erc-track-when-inactive-mode'.
+from the list.  See also `erc-track-when-inactive'.
 
 Possible values are:
 
@@ -488,45 +510,124 @@
 	 (equal (erc-unique-substrings '("abc" "abcdefg"))
 		'("abc" "abcd"))))))
 
+;;; Minor mode
+
+;; Play nice with other IRC clients (and Emacs development rules) by
+;; making this a minor mode
+
+(defvar erc-track-minor-mode-map (make-sparse-keymap)
+  "Keymap for rcirc track minor mode.")
+
+(define-key erc-track-minor-mode-map (kbd "C-c C-@") 'erc-track-switch-buffer)
+(define-key erc-track-minor-mode-map (kbd "C-c C-SPC")
+  'erc-track-switch-buffer)
+
+;;;###autoload
+(define-minor-mode erc-track-minor-mode
+  "Global minor mode for tracking ERC buffers and showing activity in the
+mode line.
+
+This exists for the sole purpose of providing the C-c C-SPC and
+C-c C-@ keybindings.  Make sure that you have enabled the track
+module, otherwise the keybindings will not do anything useful."
+  :init-value nil
+  :lighter ""
+  :keymap erc-track-minor-mode-map
+  :global t
+  :group 'erc-track)
+
+(defun erc-track-minor-mode-maybe ()
+  "Enable `erc-track-minor-mode', depending on `erc-track-enable-keybindings'."
+  (unless (or erc-track-minor-mode
+	      ;; don't start the minor mode until we have an ERC
+	      ;; process running, because we don't want to prompt the
+	      ;; user while starting Emacs
+	      (null (erc-buffer-list)))
+    (cond ((eq erc-track-enable-keybindings 'ask)
+	   (let ((key (or (and (key-binding (kbd "C-c C-SPC")) "C-SPC")
+			  (and (key-binding (kbd "C-c C-@")) "C-@"))))
+	     (if key
+		 (if (y-or-n-p
+		      (concat "The C-c " key " binding is in use;"
+			      " override it for tracking? "))
+		     (progn
+		       (message (concat "Will change it; set"
+					" `erc-track-enable-keybindings'"
+					" to disable this message"))
+		       (sleep-for 3)
+		       (erc-track-minor-mode 1))
+		   (message (concat "Not changing it; set"
+				    " `erc-track-enable-keybindings'"
+				    " to disable this message"))
+		   (sleep-for 3))
+	       (erc-track-minor-mode 1))))
+	  ((eq erc-track-enable-keybindings t)
+	   (erc-track-minor-mode 1))
+	  (t nil))))
+
 ;;; Module
 
 ;;;###autoload (autoload 'erc-track-mode "erc-track" nil t)
-(define-erc-module track track-modified-channels
+(define-erc-module track nil
   "This mode tracks ERC channel buffers with activity."
-  ((erc-track-add-to-mode-line erc-track-position-in-mode-line)
-   (setq erc-modified-channels-object (erc-modified-channels-object nil))
-   (erc-update-mode-line)
-   (if (featurep 'xemacs)
-       (defadvice switch-to-buffer (after erc-update (&rest args) activate)
-	 (erc-modified-channels-update))
-     (add-hook 'window-configuration-change-hook 'erc-modified-channels-update))
-   (add-hook 'erc-insert-post-hook 'erc-track-modified-channels)
-   (add-hook 'erc-disconnected-hook 'erc-modified-channels-update))
-  ((erc-track-remove-from-mode-line)
-   (if (featurep 'xemacs)
-       (ad-disable-advice 'switch-to-buffer 'after 'erc-update)
-     (remove-hook 'window-configuration-change-hook
-		  'erc-modified-channels-update))
-   (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update)
-   (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels)))
+  ;; Enable:
+  ((when (boundp 'erc-track-when-inactive)
+     (if erc-track-when-inactive
+	 (progn
+	   (if (featurep 'xemacs)
+	       (defadvice switch-to-buffer (after erc-update-when-inactive
+						  (&rest args) activate)
+		 (erc-user-is-active))
+	     (add-hook 'window-configuration-change-hook 'erc-user-is-active))
+	   (add-hook 'erc-send-completed-hook 'erc-user-is-active)
+	   (add-hook 'erc-server-001-functions 'erc-user-is-active))
+       (erc-track-add-to-mode-line erc-track-position-in-mode-line)
+       (setq erc-modified-channels-object (erc-modified-channels-object nil))
+       (erc-update-mode-line)
+       (if (featurep 'xemacs)
+	   (defadvice switch-to-buffer (after erc-update (&rest args) activate)
+	     (erc-modified-channels-update))
+	 (add-hook 'window-configuration-change-hook
+		   'erc-modified-channels-update))
+       (add-hook 'erc-insert-post-hook 'erc-track-modified-channels)
+       (add-hook 'erc-disconnected-hook 'erc-modified-channels-update))
+     ;; enable the tracking keybindings
+     (erc-track-minor-mode-maybe)))
+  ;; Disable:
+  ((when (boundp 'erc-track-when-inactive)
+     (erc-track-remove-from-mode-line)
+     (if erc-track-when-inactive
+	 (progn
+	   (if (featurep 'xemacs)
+	       (ad-disable-advice 'switch-to-buffer 'after
+				  'erc-update-when-inactive)
+	     (remove-hook 'window-configuration-change-hook
+			  'erc-user-is-active))
+	   (remove-hook 'erc-send-completed-hook 'erc-user-is-active)
+	   (remove-hook 'erc-server-001-functions 'erc-user-is-active)
+	   (remove-hook 'erc-timer-hook 'erc-user-is-active))
+       (if (featurep 'xemacs)
+	   (ad-disable-advice 'switch-to-buffer 'after 'erc-update)
+	 (remove-hook 'window-configuration-change-hook
+		      'erc-modified-channels-update))
+       (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update)
+       (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels))
+     ;; disable the tracking keybindings
+     (when erc-track-minor-mode
+       (erc-track-minor-mode -1)))))
 
-;;;###autoload (autoload 'erc-track-when-inactive-mode "erc-track" nil t)
-(define-erc-module track-when-inactive nil
-  "This mode enables channel tracking even for visible buffers,
-if you are inactivity."
-  ((if (featurep 'xemacs)
-       (defadvice switch-to-buffer (after erc-update-when-inactive (&rest args) activate)
-	 (erc-user-is-active))
-     (add-hook 'window-configuration-change-hook 'erc-user-is-active))
-   (add-hook 'erc-send-completed-hook 'erc-user-is-active)
-   (add-hook 'erc-server-001-functions 'erc-user-is-active))
-  ((erc-track-remove-from-mode-line)
-   (if (featurep 'xemacs)
-       (ad-disable-advice 'switch-to-buffer 'after 'erc-update-when-inactive)
-     (remove-hook 'window-configuration-change-hook 'erc-user-is-active))
-   (remove-hook 'erc-send-completed-hook 'erc-user-is-active)
-   (remove-hook 'erc-server-001-functions 'erc-user-is-active)
-   (remove-hook 'erc-timer-hook 'erc-user-is-active)))
+(defcustom erc-track-when-inactive nil
+  "Enable channel tracking even for visible buffers, if you are
+inactive."
+  :group 'erc-track
+  :type 'boolean
+  :set (lambda (sym val)
+	 (if erc-track-mode
+	     (progn
+	       (erc-track-disable)
+	       (set sym val)
+	       (erc-track-enable))
+	   (set sym val))))
 
 ;;; Visibility
 
@@ -545,7 +646,7 @@
 
 (defun erc-buffer-visible (buffer)
   "Return non-nil when the buffer is visible."
-  (if erc-track-when-inactive-mode
+  (if erc-track-when-inactive
       (when erc-buffer-activity; could be nil
 	(and (get-buffer-window buffer erc-track-visibility)
 	     (<= (erc-time-diff erc-buffer-activity (erc-current-time))
@@ -815,7 +916,9 @@
 switch back to the last non-ERC buffer visited.  Next is defined by
 `erc-track-switch-direction', a negative argument will reverse this."
   (interactive "p")
-  (when erc-track-mode
+  (if (not erc-track-mode)
+      (message (concat "Enable the ERC track module if you want to use the"
+		       " tracking minor mode"))
     (cond (erc-modified-channels-alist
 	   ;; if we're not in erc-mode, set this buffer to return to
 	   (unless (eq major-mode 'erc-mode)
@@ -828,12 +931,6 @@
 		(buffer-live-p erc-track-last-non-erc-buffer))
 	   (switch-to-buffer erc-track-last-non-erc-buffer)))))
 
-;; These bindings are global, because they pop us from any other
-;; buffer to an active ERC buffer!
-
-(global-set-key (kbd "C-c C-@") 'erc-track-switch-buffer)
-(global-set-key (kbd "C-c C-SPC") 'erc-track-switch-buffer)
-
 (provide 'erc-track)
 
 ;;; erc-track.el ends here
--- a/lisp/erc/erc.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/erc/erc.el	Sun Apr 22 12:42:47 2007 +0000
@@ -66,7 +66,7 @@
 
 ;;; Code:
 
-(defconst erc-version-string "Version 5.2 stable pre-release"
+(defconst erc-version-string "Version 5.2"
   "ERC version.  This is used by function `erc-version'.")
 
 (eval-when-compile (require 'cl))
@@ -324,7 +324,7 @@
 
 (defcustom erc-connect-pre-hook '(erc-initialize-log-marker)
   "Hook called just before `erc' calls `erc-connect'.
-Functions are run in the buffer-to-be."
+Functions are passed a buffer as the first argument."
   :group 'erc-hooks
   :type 'hook)
 
@@ -392,14 +392,14 @@
 (defsubst erc-get-server-user (nick)
   "Finds the USER corresponding to NICK in the current server's
 `erc-server-users' hash table."
-  (with-current-buffer (process-buffer erc-server-process)
+  (erc-with-server-buffer
     (gethash (erc-downcase nick) erc-server-users)))
 
 (defsubst erc-add-server-user (nick user)
   "This function is for internal use only.
 
 Adds USER with nickname NICK to the `erc-server-users' hash table."
-  (with-current-buffer (process-buffer erc-server-process)
+  (erc-with-server-buffer
     (puthash (erc-downcase nick) user erc-server-users)))
 
 (defsubst erc-remove-server-user (nick)
@@ -410,7 +410,7 @@
 `erc-channel-users' lists of other buffers.
 
 See also: `erc-remove-user'."
-  (with-current-buffer (process-buffer erc-server-process)
+  (erc-with-server-buffer
     (remhash (erc-downcase nick) erc-server-users)))
 
 (defun erc-change-user-nickname (user new-nick)
@@ -421,7 +421,7 @@
 other buffers are also changed."
   (let ((nick (erc-server-user-nickname user)))
     (setf (erc-server-user-nickname user) new-nick)
-    (with-current-buffer (process-buffer erc-server-process)
+    (erc-with-server-buffer
       (remhash (erc-downcase nick) erc-server-users)
       (puthash (erc-downcase new-nick) user erc-server-users))
     (dolist (buf (erc-server-user-buffers user))
@@ -514,16 +514,15 @@
 
 (defun erc-get-server-nickname-list ()
   "Returns a list of known nicknames on the current server."
-    (if (erc-server-process-alive)
-	(with-current-buffer (erc-server-buffer)
-	  (let (nicks)
-	    (when (hash-table-p erc-server-users)
-	      (maphash (lambda (n user)
-			 (setq nicks
-			       (cons (erc-server-user-nickname user)
-				     nicks)))
-		       erc-server-users)
-	      nicks)))))
+  (erc-with-server-buffer
+    (let (nicks)
+      (when (hash-table-p erc-server-users)
+	(maphash (lambda (n user)
+		   (setq nicks
+			 (cons (erc-server-user-nickname user)
+			       nicks)))
+		 erc-server-users)
+	nicks))))
 
 (defun erc-get-channel-nickname-list ()
   "Returns a list of known nicknames on the current channel."
@@ -538,16 +537,15 @@
 
 (defun erc-get-server-nickname-alist ()
   "Returns an alist of known nicknames on the current server."
-    (if (erc-server-process-alive)
-	(with-current-buffer (erc-server-buffer)
-	  (let (nicks)
-	    (when (hash-table-p erc-server-users)
-	      (maphash (lambda (n user)
-			 (setq nicks
-			       (cons (cons (erc-server-user-nickname user) nil)
-				     nicks)))
-		       erc-server-users)
-	      nicks)))))
+  (erc-with-server-buffer
+    (let (nicks)
+      (when (hash-table-p erc-server-users)
+	(maphash (lambda (n user)
+		   (setq nicks
+			 (cons (cons (erc-server-user-nickname user) nil)
+			       nicks)))
+		 erc-server-users)
+	nicks))))
 
 (defun erc-get-channel-nickname-alist ()
   "Returns an alist of known nicknames on the current channel."
@@ -1293,7 +1291,7 @@
   (unless (erc-server-buffer-p)
     (error
      "You should only run `erc-once-with-server-event' in a server buffer"))
-  (let ((fun (erc-gensym))
+  (let ((fun (make-symbol "fun"))
 	(hook (erc-get-hook event)))
      (put fun 'erc-original-buffer (current-buffer))
      (fset fun `(lambda (proc parsed)
@@ -1316,7 +1314,7 @@
 
 When FORMS execute, the current buffer is the server buffer associated with the
 connection over which the data was received that triggered EVENT."
-  (let ((fun (erc-gensym))
+  (let ((fun (make-symbol "fun"))
 	(hook (erc-get-hook event)))
      (fset fun `(lambda (proc parsed)
 		  (remove-hook ',hook ',fun)
@@ -1370,7 +1368,7 @@
 (defun erc-ison-p (nick)
   "Return non-nil if NICK is online."
   (interactive "sNick: ")
-  (with-current-buffer (erc-server-buffer)
+  (erc-with-server-buffer
     (let ((erc-online-p 'unknown))
       (erc-once-with-server-event
        303
@@ -1420,7 +1418,7 @@
 (defun erc-active-buffer ()
   "Return the value of `erc-active-buffer' for the current server.
 Defaults to the server buffer."
-  (with-current-buffer (erc-server-buffer)
+  (erc-with-server-buffer
     (if (buffer-live-p erc-active-buffer)
 	erc-active-buffer
       (setq erc-active-buffer (current-buffer)))))
@@ -1603,10 +1601,10 @@
 See also `with-current-buffer'.
 
 \(fn (TARGET [PROCESS]) BODY...)"
-  (let ((buf (erc-gensym))
-	(proc (erc-gensym))
-	(target (erc-gensym))
-	(process (erc-gensym)))
+  (let ((buf (make-symbol "buf"))
+	(proc (make-symbol "proc"))
+	(target (make-symbol "target"))
+	(process (make-symbol "process")))
     `(let* ((,target ,(car spec))
 	    (,process ,(cadr spec))
 	    (,buf (if (bufferp ,target)
@@ -1616,7 +1614,7 @@
 					  erc-server-process))))
 		      (if (and ,target ,proc)
 			  (erc-get-buffer ,target ,proc))))))
-       (when ,buf
+       (when (buffer-live-p ,buf)
 	 (with-current-buffer ,buf
 	   ,@body)))))
 (put 'erc-with-buffer 'lisp-indent-function 1)
@@ -1671,8 +1669,8 @@
 where PRED matches or in all buffers of the server process if PRED is
 nil."
   ;; Make the evaluation have the correct order
-  (let ((pre (erc-gensym))
-	(pro (erc-gensym)))
+  (let ((pre (make-symbol "pre"))
+	(pro (make-symbol "pro")))
     `(let ((,pro ,process)
 	   (,pre ,pred))
        (mapcar (lambda (buffer)
@@ -1755,7 +1753,10 @@
 (make-variable-buffer-local 'erc-invitation)
 
 (defvar erc-away nil
-  "Non-nil indicates that we are away.")
+  "Non-nil indicates that we are away.
+
+Use `erc-away-time' to access this if you might be in a channel
+buffer rather than a server buffer.")
 (make-variable-buffer-local 'erc-away)
 
 (defvar erc-channel-list nil
@@ -1813,43 +1814,43 @@
   :type
   '(set
     :greedy t
-    (const :tag "Set away status automatically" autoaway)
-    (const :tag "Join channels automatically" autojoin)
-    (const :tag "Buttonize URLs, nicknames, and other text" button)
-    (const
-     :tag
-     "Mark unidentified users on freenode and other servers supporting CAPAB"
-     capab-identify)
-    (const :tag "Wrap long lines" fill)
-    (const :tag "Launch an identd server on port 8113" identd)
-    (const :tag "Highlight or remove IRC control characters"
+    (const :tag "autoaway: Set away status automatically" autoaway)
+    (const :tag "autojoin: Join channels automatically" autojoin)
+    (const :tag "button: Buttonize URLs, nicknames, and other text" button)
+    (const :tag "capab: Mark unidentified users on servers supporting CAPAB"
+	   capab-identify)
+    (const :tag "completion: Complete nicknames and commands (programmable)"
+	   completion)
+    (const :tag "hecomplete: Complete nicknames and commands (old)" hecomplete)
+    (const :tag "fill: Wrap long lines" fill)
+    (const :tag "identd: Launch an identd server on port 8113" identd)
+    (const :tag "irccontrols: Highlight or remove IRC control characters"
 	   irccontrols)
-    (const :tag "Save buffers in logs" log)
-    (const :tag "Highlight pals, fools, and other keywords" match)
-    (const :tag "Display a menu in ERC buffers" menu)
-    (const :tag "Detect netsplits" netsplit)
-    (const :tag "Don't display non-IRC commands after evaluation"
+    (const :tag "log: Save buffers in logs" log)
+    (const :tag "match: Highlight pals, fools, and other keywords" match)
+    (const :tag "menu: Display a menu in ERC buffers" menu)
+    (const :tag "netsplit: Detect netsplits" netsplit)
+    (const :tag "noncommands: Don't display non-IRC commands after evaluation"
 	   noncommands)
-    (const :tag "Notify when the online status of certain users changes"
+    (const :tag
+	   "notify: Notify when the online status of certain users changes"
 	   notify)
-    (const :tag "Complete nicknames and commands (programmable)"
-	   completion)
-    (const :tag "Complete nicknames and commands (old)" hecomplete)
-    (const :tag "Process CTCP PAGE requests from IRC" page)
-    (const :tag "Make displayed lines read-only" readonly)
-    (const :tag "Replace text in messages" replace)
-    (const :tag "Enable an input history" ring)
-    (const :tag "Scroll to the bottom of the buffer" scrolltobottom)
-    (const :tag "Identify to Nickserv (IRC Services) automatically"
+    (const :tag "page: Process CTCP PAGE requests from IRC" page)
+    (const :tag "readonly: Make displayed lines read-only" readonly)
+    (const :tag "replace: Replace text in messages" replace)
+    (const :tag "ring: Enable an input history" ring)
+    (const :tag "scrolltobottom: Scroll to the bottom of the buffer"
+	   scrolltobottom)
+    (const :tag "services: Identify to Nickserv (IRC Services) automatically"
 	   services)
-    (const :tag "Convert smileys to pretty icons" smiley)
-    (const :tag "Play sounds when you receive CTCP SOUND requests"
+    (const :tag "smiley: Convert smileys to pretty icons" smiley)
+    (const :tag "sound: Play sounds when you receive CTCP SOUND requests"
 	   sound)
-    (const :tag "Add timestamps to messages" stamp)
-    (const :tag "Check spelling" spelling)
-    (const :tag "Track channel activity in the mode-line" track)
-    (const :tag "Truncate buffers to a certain size" truncate)
-    (const :tag "Translate morse code in messages" unmorse)
+    (const :tag "stamp: Add timestamps to messages" stamp)
+    (const :tag "spelling: Check spelling" spelling)
+    (const :tag "track: Track channel activity in the mode-line" track)
+    (const :tag "truncate: Truncate buffers to a certain size" truncate)
+    (const :tag "unmorse: Translate morse code in messages" unmorse)
     (repeat :tag "Others" :inline t symbol))
   :group 'erc)
 
@@ -1902,9 +1903,7 @@
 
 (defun erc-open (&optional server port nick full-name
 			   connect passwd tgt-list channel process)
-  "ERC is a powerful, modular, and extensible IRC client.
-
-Connect to SERVER on PORT as NICK with FULL-NAME.
+  "Connect to SERVER on PORT as NICK with FULL-NAME.
 
 If CONNECT is non-nil, connect to the server.  Otherwise assume
 already connected and just create a separate buffer for the new
@@ -1969,10 +1968,6 @@
     (erc-set-active-buffer buffer)
     ;; last invitation channel
     (setq erc-invitation nil)
-    ;; away flag
-    ;; Should only be used in session-buffers
-    (setq erc-away (let ((serverbuf (erc-server-buffer)))
-		     (and serverbuf (with-current-buffer serverbuf erc-away))))
     ;; Server channel list
     (setq erc-channel-list ())
     ;; login-time 'nick in use' error
@@ -1987,25 +1982,25 @@
     (setq erc-dbuf
 	  (when erc-log-p
 	    (get-buffer-create (concat "*ERC-DEBUG: " server "*"))))
-    (erc-determine-parameters server port nick full-name)
-
-    ;; Saving log file on exit
-    (run-hooks 'erc-connect-pre-hook)
-
-    (when connect
-      (erc-server-connect erc-session-server erc-session-port))
-    (erc-update-mode-line)
-    (set-marker erc-insert-marker (point))
+    ;; set up prompt
     (unless continued-session
       (goto-char (point-max))
       (insert "\n"))
-    (set-marker (process-mark erc-server-process) (point))
     (if continued-session
 	(goto-char old-point)
       (set-marker erc-insert-marker (point))
       (erc-display-prompt)
       (goto-char (point-max)))
 
+    (erc-determine-parameters server port nick full-name)
+
+    ;; Saving log file on exit
+    (run-hook-with-args 'erc-connect-pre-hook buffer)
+
+    (when connect
+      (erc-server-connect erc-session-server erc-session-port buffer))
+    (erc-update-mode-line)
+
     ;; Now display the buffer in a window as per user wishes.
     (unless (eq buffer old-buffer)
       (when erc-log-p
@@ -2016,11 +2011,13 @@
 
     buffer))
 
-(defun erc-initialize-log-marker ()
-  "Initialize the `erc-last-saved-position' marker to a sensible position."
+(defun erc-initialize-log-marker (buffer)
+  "Initialize the `erc-last-saved-position' marker to a sensible position.
+BUFFER is the current buffer."
+  (with-current-buffer buffer
     (setq erc-last-saved-position (make-marker))
     (move-marker erc-last-saved-position
-		 (1- (marker-position erc-insert-marker))))
+		 (1- (marker-position erc-insert-marker)))))
 
 ;; interactive startup
 
@@ -2120,8 +2117,12 @@
 		  (nick   (erc-compute-nick))
 		  password
 		  (full-name (erc-compute-full-name)))
-  "Select connection parameters and run ERC.
-Non-interactively, it takes keyword arguments
+  "ERC is a powerful, modular, and extensible IRC client.
+This function is the main entry point for ERC.
+
+It permits you to select connection parameters, and then starts ERC.
+
+Non-interactively, it takes the keyword arguments
    (server (erc-compute-server))
    (port   (erc-compute-port))
    (nick   (erc-compute-nick))
@@ -2132,12 +2133,13 @@
 
    (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
 
-server and full-name will be set to those values, whereas
+then the server and full-name will be set to those values, whereas
 `erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
 be invoked for the values of the other parameters."
   (interactive (erc-select-read-args))
   (erc-open server port nick full-name t password))
 
+;;;###autoload
 (defalias 'erc-select 'erc)
 
 (defun erc-ssl (&rest r)
@@ -2428,7 +2430,7 @@
 
 This function relies on the erc-parsed text-property being
 present."
-  (let ((prop-val (get-text-property position 'erc-parsed)))
+  (let ((prop-val (erc-get-parsed-vector position)))
     (and prop-val (member (erc-response.command prop-val) list))))
 
 (defvar erc-send-input-line-function 'erc-send-input-line)
@@ -2586,20 +2588,19 @@
 	(erc-display-line
 	 (erc-make-notice (format "Now ignoring %s" user))
 	 'active)
-	(with-current-buffer (erc-server-buffer)
-	  (add-to-list 'erc-ignore-list user)))
-    (if (null (with-current-buffer (erc-server-buffer) erc-ignore-list))
+	(erc-with-server-buffer (add-to-list 'erc-ignore-list user)))
+    (if (null (erc-with-server-buffer erc-ignore-list))
 	(erc-display-line (erc-make-notice "Ignore list is empty") 'active)
       (erc-display-line (erc-make-notice "Ignore list:") 'active)
       (mapc #'(lambda (item)
 		(erc-display-line (erc-make-notice item)
 				  'active))
-	    (with-current-buffer (erc-server-buffer) erc-ignore-list))))
+	    (erc-with-server-buffer erc-ignore-list))))
   t)
 
 (defun erc-cmd-UNIGNORE (user)
   "Remove the user specified in USER from the ignore list."
-  (let ((ignored-nick (car (with-current-buffer (erc-server-buffer)
+  (let ((ignored-nick (car (erc-with-server-buffer
 			     (erc-member-ignore-case (regexp-quote user)
 						     erc-ignore-list)))))
     (unless ignored-nick
@@ -2614,7 +2615,7 @@
       (erc-display-line
        (erc-make-notice (format "No longer ignoring %s" user))
        'active)
-      (with-current-buffer (erc-server-buffer)
+      (erc-with-server-buffer
 	(setq erc-ignore-list (delete ignored-nick erc-ignore-list)))))
   t)
 
@@ -2673,8 +2674,8 @@
   "Mark the user as being away everywhere, the reason being indicated by LINE."
   ;; on all server buffers.
   (erc-with-all-buffers-of-server nil
-   #'erc-server-buffer-p
-   (erc-cmd-AWAY line)))
+    #'erc-open-server-buffer-p
+    (erc-cmd-AWAY line)))
 (put 'erc-cmd-GAWAY 'do-not-parse-args t)
 
 (defun erc-cmd-CTCP (nick cmd &rest args)
@@ -2866,10 +2867,9 @@
 
 (defun erc-cmd-IDLE (nick)
   "Show the length of time NICK has been idle."
-  (let ((serverbuf (erc-server-buffer))
-	(origbuf (current-buffer))
+  (let ((origbuf (current-buffer))
 	symlist)
-    (with-current-buffer serverbuf
+    (erc-with-server-buffer
       (add-to-list 'symlist
 		   (cons (erc-once-with-server-event
 			  311 `(string= ,nick
@@ -3027,8 +3027,8 @@
 (defun erc-cmd-NICK (nick)
   "Change current nickname to NICK."
   (erc-log (format "cmd: NICK: %s (erc-bad-nick: %S)" nick erc-bad-nick))
-  (let ((nicklen (cdr (assoc "NICKLEN" (with-current-buffer (erc-server-buffer)
-				    erc-server-parameters)))))
+  (let ((nicklen (cdr (assoc "NICKLEN" (erc-with-server-buffer
+					 erc-server-parameters)))))
     (and nicklen (> (length nick) (string-to-number nicklen))
 	 (erc-display-message
 	  nil 'notice 'active 'nick-too-long
@@ -3167,7 +3167,8 @@
    ((string-match "^\\s-*\\(.*\\)$" reason)
     (let* ((s (match-string 1 reason))
 	   (buffer (erc-server-buffer))
-	   (reason (funcall erc-quit-reason (if (equal s "") nil s))))
+	   (reason (funcall erc-quit-reason (if (equal s "") nil s)))
+	   server-proc)
       (with-current-buffer (if (and buffer
 				    (bufferp buffer))
 			       buffer
@@ -3175,10 +3176,18 @@
 	(erc-log (format "cmd: QUIT: %s" reason))
 	(setq erc-server-quitting t)
 	(erc-set-active-buffer (erc-server-buffer))
+	(setq server-proc erc-server-process)
 	(erc-server-send (format "QUIT :%s" reason)))
-      (run-hook-with-args 'erc-quit-hook erc-server-process)
+      (run-hook-with-args 'erc-quit-hook server-proc)
       (when erc-kill-queries-on-quit
-	(erc-kill-query-buffers erc-server-process)))
+	(erc-kill-query-buffers server-proc))
+      ;; if the process has not been killed within 4 seconds, kill it
+      (run-at-time 4 nil
+		   (lambda (proc)
+		     (when (and (processp proc)
+				(memq (process-status proc) '(run open)))
+		       (delete-process proc)))
+		   server-proc))
     t)
    (t nil)))
 
@@ -3189,9 +3198,7 @@
 
 (defun erc-cmd-GQUIT (reason)
   "Disconnect from all servers at once with the same quit REASON."
-  (erc-with-all-buffers-of-server nil #'(lambda ()
-					  (and (erc-server-buffer-p)
-					       (erc-server-process-alive)))
+  (erc-with-all-buffers-of-server nil #'erc-open-server-buffer-p
 				  (erc-cmd-QUIT reason)))
 
 (defalias 'erc-cmd-GQ 'erc-cmd-GQUIT)
@@ -3199,8 +3206,17 @@
 
 (defun erc-cmd-RECONNECT ()
   "Try to reconnect to the current IRC server."
-  (setq erc-server-reconnect-count 0)
-  (erc-server-reconnect)
+  (let ((buffer (or (erc-server-buffer) (current-buffer)))
+	(process nil))
+    (with-current-buffer (if (bufferp buffer) buffer (current-buffer))
+      (setq erc-server-quitting nil)
+      (setq erc-server-reconnecting t)
+      (setq erc-server-reconnect-count 0)
+      (setq process (get-buffer-process (erc-server-buffer)))
+      (if process
+	  (delete-process process)
+	(erc-server-reconnect))
+      (setq erc-server-reconnecting nil)))
   t)
 
 (defun erc-cmd-SERVER (server)
@@ -3373,7 +3389,7 @@
 	(setq erc-server-367-functions 'erc-banlist-store
 	      erc-channel-banlist nil)
 	;; fetch the ban list then callback
-	(with-current-buffer (erc-server-buffer)
+	(erc-with-server-buffer
 	  (erc-once-with-server-event
 	   368
 	   `(with-current-buffer ,chnl-name
@@ -3443,7 +3459,7 @@
       (let ((old-367-hook erc-server-367-functions))
 	(setq erc-server-367-functions 'erc-banlist-store)
       ;; fetch the ban list then callback
-      (with-current-buffer (erc-server-buffer)
+      (erc-with-server-buffer
 	(erc-once-with-server-event
 	 368
 	 `(with-current-buffer ,chnl
@@ -3737,7 +3753,7 @@
     (erc-update-mode-line)
     buf))
 
-(defcustom erc-auto-query nil
+(defcustom erc-auto-query 'bury
   "If non-nil, create a query buffer each time you receive a private message.
 
 If the buffer doesn't already exist it is created.  This can be
@@ -3811,7 +3827,7 @@
     (setq erc-nick-change-attempt-count (+ erc-nick-change-attempt-count 1))
     (let ((newnick (nth 1 erc-default-nicks))
 	  (nicklen (cdr (assoc "NICKLEN"
-			       (with-current-buffer (erc-server-buffer)
+			       (erc-with-server-buffer
 				 erc-server-parameters)))))
       (setq erc-bad-nick t)
       ;; try to use a different nick
@@ -4101,24 +4117,29 @@
   "Run just after connection.
 
 Set user modes and run `erc-after-connect' hook."
-  (unless erc-server-connected ; only once per session
-    (let ((server (or erc-server-announced-name (erc-response.sender parsed)))
-	  (nick (car (erc-response.command-args parsed ))))
-      (setq erc-server-connected t)
-      (erc-update-mode-line)
-      (erc-set-initial-user-mode nick)
-      (erc-server-setup-periodical-server-ping)
-      (run-hook-with-args 'erc-after-connect server nick))))
-
-(defun erc-set-initial-user-mode (nick)
-  "If `erc-user-mode' is non-nil for NICK, set the user modes."
-  (when erc-user-mode
-    (let ((mode (if (functionp erc-user-mode)
-		    (funcall erc-user-mode)
-		  erc-user-mode)))
-      (when (stringp mode)
-	(erc-log (format "changing mode for %s to %s" nick mode))
-	(erc-server-send (format "MODE %s %s" nick mode))))))
+  (with-current-buffer (process-buffer proc)
+    (unless erc-server-connected ; only once per session
+      (let ((server (or erc-server-announced-name
+			(erc-response.sender parsed)))
+	    (nick (car (erc-response.command-args parsed)))
+	    (buffer (process-buffer proc)))
+	(setq erc-server-connected t)
+	(erc-update-mode-line)
+	(erc-set-initial-user-mode nick buffer)
+	(erc-server-setup-periodical-ping buffer)
+	(run-hook-with-args 'erc-after-connect server nick)))))
+
+(defun erc-set-initial-user-mode (nick buffer)
+  "If `erc-user-mode' is non-nil for NICK, set the user modes.
+The server buffer is given by BUFFER."
+  (with-current-buffer buffer
+    (when erc-user-mode
+      (let ((mode (if (functionp erc-user-mode)
+		      (funcall erc-user-mode)
+		    erc-user-mode)))
+	(when (stringp mode)
+	  (erc-log (format "changing mode for %s to %s" nick mode))
+	  (erc-server-send (format "MODE %s %s" nick mode)))))))
 
 (defun erc-display-error-notice (parsed string)
   "Display STRING as an error notice.
@@ -4345,14 +4366,12 @@
 			  erc-nick)))
 	(cond
 	 (away-p
-	  (erc-with-all-buffers-of-server proc nil
-					  (setq erc-away (current-time))))
+	  (setq erc-away (current-time)))
 	 (t
 	  (let ((away-time erc-away))
 	    ;; away must be set to NIL BEFORE sending anything to prevent
 	    ;; an infinite recursion
-	    (erc-with-all-buffers-of-server proc nil
-					    (setq erc-away nil))
+	    (setq erc-away nil)
 	    (save-excursion
 	      (set-buffer (erc-active-buffer))
 	      (when erc-public-away-p
@@ -5037,8 +5056,9 @@
 
 (defun erc-set-current-nick (nick)
   "Set the current nickname to NICK."
-  (with-current-buffer (or (erc-server-buffer)
-			   (current-buffer))
+  (with-current-buffer (if (buffer-live-p (erc-server-buffer))
+			   (erc-server-buffer)
+			 (current-buffer))
     (setq erc-server-current-nick nick)))
 
 (defun erc-current-nick ()
@@ -5119,7 +5139,7 @@
 matches against all the regexp's in `erc-ignore-list'.  If any
 match, returns that regexp."
   (catch 'found
-    (dolist (ignored (with-current-buffer (erc-server-buffer) erc-ignore-list))
+    (dolist (ignored (erc-with-server-buffer erc-ignore-list))
       (if (string-match ignored spec)
 	  (throw 'found ignored)))))
 
@@ -5673,12 +5693,12 @@
 			     ""))
 	user))))
 
-(defun erc-away-p ()
-  "Return t if the current ERC process is set away."
-  (save-excursion
-    (and (erc-server-buffer-live-p)
-	 (set-buffer (process-buffer erc-server-process))
-	 erc-away)))
+(defun erc-away-time ()
+  "Return non-nil if the current ERC process is set away.
+
+In particular, the time that we were set away is returned.
+See `current-time' for details on the time format."
+  (erc-with-server-buffer erc-away))
 
 ;; Mode line handling
 
@@ -5706,9 +5726,17 @@
   "A string to be formatted and shown in the header-line in `erc-mode'.
 Only used starting in Emacs 21.
 
+Set this to nil if you do not want the header line to be
+displayed.
+
 See `erc-mode-line-format' for which characters are can be used."
   :group 'erc-mode-line-and-header
-  :type 'string)
+  :set (lambda (sym val)
+	 (set sym val)
+	 (when (fboundp 'erc-update-mode-line)
+	   (erc-update-mode-line nil)))
+  :type '(choice (const :tag "Disabled" nil)
+		 string))
 
 (defcustom erc-header-line-uses-help-echo-p t
   "Show the contents of the header line in the echo area or as a tooltip
@@ -5734,7 +5762,8 @@
 
 (defcustom erc-common-server-suffixes
   '(("openprojects.net$" . "OPN")
-    ("freenode.net$" . "OPN"))
+    ("freenode.net$" . "freenode")
+    ("oftc.net$" . "OFTC"))
   "Alist of common server name suffixes.
 This variable is used in mode-line display to save screen
 real estate.  Set it to nil if you want to avoid changing
@@ -5786,9 +5815,7 @@
 (defun erc-format-away-status ()
   "Return a formatted `erc-mode-line-away-status-format'
 if `erc-away' is non-nil."
-  (let ((a (when (erc-server-buffer-live-p)
-	     (with-current-buffer (process-buffer erc-server-process)
-	       erc-away))))
+  (let ((a (erc-away-time)))
     (if a
 	(format-time-string erc-mode-line-away-status-format a)
       "")))
@@ -5813,9 +5840,7 @@
 
 (defun erc-format-lag-time ()
   "Return the estimated lag time to server, `erc-server-lag'."
-  (let ((lag (when (erc-server-buffer-live-p)
-	       (with-current-buffer (process-buffer erc-server-process)
-		 erc-server-lag))))
+  (let ((lag (erc-with-server-buffer erc-server-lag)))
     (cond (lag (format "lag:%.0f" lag))
 	  (t ""))))
 
@@ -6137,7 +6162,8 @@
       (format "%s (%s@%s) has left channel %s%s"
 	      nick user host channel
 	      (if (not (string= reason ""))
-		  (format ": %s" reason)
+		  (format ": %s"
+			  (erc-replace-regexp-in-string "%" "%%" reason))
 		"")))))
 
 
@@ -6232,6 +6258,13 @@
   "Find the next occurrence of the `erc-parsed' text property."
   (text-property-not-all (point-min) (point-max) 'erc-parsed nil))
 
+(defun erc-restore-text-properties ()
+  "Restore the property 'erc-parsed for the region."
+  (let ((parsed-posn (erc-find-parsed-property)))
+    (put-text-property
+     (point-min) (point-max)
+     'erc-parsed (when parsed-posn (erc-get-parsed-vector parsed-posn)))))
+
 (defun erc-get-parsed-vector (point)
   "Return the whole parsed vector on POINT."
   (get-text-property point 'erc-parsed))
@@ -6263,8 +6296,7 @@
 	       (lambda ()
 		 (and (string-equal erc-session-server host)
 		      (= erc-session-port port)
-		      erc-server-connected
-		      (eq (erc-server-buffer) (current-buffer))))))))
+		      (erc-open-server-buffer-p)))))))
     (with-current-buffer (or server-buffer (current-buffer))
       (if (and server-buffer channel)
 	  (erc-cmd-JOIN channel)
--- a/lisp/eshell/esh-proc.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/eshell/esh-proc.el	Sun Apr 22 12:42:47 2007 +0000
@@ -181,7 +181,7 @@
 	    (setq signum (abs (string-to-number id))))
 	   ((stringp id)
 	    (let (case-fold-search)
-	      (if (string-match "^-\\([A-Z]+\\)$" id)
+	      (if (string-match "^-\\([A-Z]+[12]?\\)$" id)
 		  (setq signum
 			(intern (concat "SIG" (match-string 1 id))))
 		(error "kill: bad signal spec `%s'" id))))
--- a/lisp/expand.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/expand.el	Sun Apr 22 12:42:47 2007 +0000
@@ -51,17 +51,17 @@
 ;;
 ;;   and enter Abbrev mode with the following hook :
 ;;
-;; (add-hook 'c-mode-hook (function (lambda ()
-;; 				   (expand-add-abbrevs c-mode-abbrev-table c-expand-list)
-;; 				   (abbrev-mode))))
+;; (add-hook 'c-mode-hook
+;; 	  (lambda ()
+;; 	    (expand-add-abbrevs c-mode-abbrev-table c-expand-list)
+;; 	    (abbrev-mode 1)))
 ;;
 ;;   you can also init some post-process hooks :
 ;;
 ;; (add-hook 'expand-load-hook
-;; 	  (function
-;; 	   (lambda ()
-;; 	     (add-hook 'expand-expand-hook 'indent-according-to-mode)
-;; 	     (add-hook 'expand-jump-hook 'indent-according-to-mode))))
+;; 	  (lambda ()
+;; 	    (add-hook 'expand-expand-hook 'indent-according-to-mode)
+;; 	    (add-hook 'expand-jump-hook 'indent-according-to-mode)))
 ;;
 ;; Remarks:
 ;;
@@ -336,6 +336,7 @@
       'expand-abbrev-hook)))
 
 (put 'expand-abbrev-hook 'no-self-insert t)
+;;;###autoload
 (defun expand-abbrev-hook ()
   "Abbrev hook used to do the expansion job of expand abbrevs.
 See `expand-add-abbrevs'.  Value is non-nil if expansion was done."
--- a/lisp/faces.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/faces.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1803,13 +1803,9 @@
       (condition-case ()
 	  (progn
 	    (face-spec-set face (face-user-default-spec face) frame)
-	    (internal-merge-in-global-face face frame)
 	    (if (memq (window-system frame) '(x w32 mac))
 		(make-face-x-resource-internal face frame))
-	    ;; If the user has customized the face, don't let X
-	    ;; resources override the customizations.
-	    (if (get face 'theme-face)
-		(custom-theme-recalc-face face)))
+	    (internal-merge-in-global-face face frame))
 	(error nil)))
     ;; Apply the attributes specified by frame parameters.  This
     ;; rewrites parameters changed by make-face-x-resource-internal
--- a/lisp/ffap.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/ffap.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1147,7 +1147,8 @@
 		(error nil))
 	      string))
 	 (abs (file-name-absolute-p name))
-	 (default-directory default-directory))
+	 (default-directory default-directory)
+         (oname name))
     (unwind-protect
 	(cond
 	 ;; Immediate rejects (/ and // and /* are too common in C/C++):
@@ -1164,13 +1165,7 @@
 	       (not abs) (string-match ffap-shell-prompt-regexp name)
                (ffap-file-exists-string (substring name (match-end 0)))))
 	 ;; Accept remote names without actual checking (too slow):
-	 ((if abs
-	      (ffap-file-remote-p name)
-	    ;; Try adding a leading "/" (common omission in ftp file names):
-	    (and
-	     ffap-ftp-sans-slash-regexp
-	     (string-match ffap-ftp-sans-slash-regexp name)
-	     (ffap-file-remote-p (concat "/" name)))))
+	 ((and abs (ffap-file-remote-p name)))
 	 ;; Ok, not remote, try the existence test even if it is absolute:
 	 ((and abs (ffap-file-exists-string name)))
 	 ;; If it contains a colon, get rid of it (and return if exists)
@@ -1193,6 +1188,14 @@
 				  (ffap-file-remote-p try)
 				  (ffap-file-exists-string try))))))
 	    try))
+         ;; Try adding a leading "/" (common omission in ftp file names).
+         ;; Note that this uses oname, which still has any colon part.
+         ;; This should have a lower priority than the alist stuff,
+         ;; else it matches things like "ffap.el:1234:56:Warning".
+         ((and (not abs)
+               ffap-ftp-sans-slash-regexp
+               (string-match ffap-ftp-sans-slash-regexp oname)
+               (ffap-file-remote-p (concat "/" oname))))
 	 ;; Alist failed?  Try to guess an active remote connection
 	 ;; from buffer variables, and try once more, both as an
 	 ;; absolute and relative file name on that remote host.
--- a/lisp/files.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/files.el	Sun Apr 22 12:42:47 2007 +0000
@@ -2435,14 +2435,14 @@
 
 (mapc (lambda (pair)
 	(put (car pair) 'safe-local-variable (cdr pair)))
-      '((buffer-read-only                . booleanp) ;; C source code
-	(default-directory               . stringp)  ;; C source code
-	(fill-column                     . integerp) ;; C source code
-	(indent-tabs-mode                . booleanp) ;; C source code
-	(left-margin                     . integerp) ;; C source code
-	(no-update-autoloads             . booleanp)
-	(tab-width                       . integerp) ;; C source code
-	(truncate-lines                  . booleanp))) ;; C source code
+      '((buffer-read-only     . booleanp)   ;; C source code
+	(default-directory    . stringp)    ;; C source code
+	(fill-column          . integerp)   ;; C source code
+	(indent-tabs-mode     . booleanp)   ;; C source code
+	(left-margin          . integerp)   ;; C source code
+	(no-update-autoloads  . booleanp)
+	(tab-width            . integerp)   ;; C source code
+	(truncate-lines       . booleanp))) ;; C source code
 
 (put 'c-set-style 'safe-local-eval-function t)
 
--- a/lisp/font-lock.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/font-lock.el	Sun Apr 22 12:42:47 2007 +0000
@@ -2226,7 +2226,7 @@
 		 "condition-case" "track-mouse"
 		 "eval-after-load" "eval-and-compile" "eval-when-compile"
 		 "eval-when" "eval-at-startup" "eval-next-after-load"
-		 "with-category-table"
+		 "with-case-table" "with-category-table"
 		 "with-current-buffer" "with-electric-help"
 		 "with-local-quit" "with-no-warnings"
 		 "with-output-to-string" "with-output-to-temp-buffer"
--- a/lisp/gnus/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/gnus/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,73 @@
+2007-04-10  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus-msg.el (gnus-inews-yank-articles): Use
+	message-exchange-point-and-mark instead of exchange-point-and-mark.
+
+2007-04-09  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* message.el (message-yank-original): Make sure cited text ends with
+	newline; don't exchange point and mark.
+
+2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
+
+	* tls.el (open-tls-stream): Properly handle case where there
+	is no associated buffer.
+
+2007-04-03  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* gnus-msg.el (gnus-inews-yank-articles): Fix bug: After
+	message-yank-original, make sure (< mark TEXT point).
+
+2007-03-31  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* nnmail.el (nnmail-spool-file): Mark as obsolete.
+	(nnmail-get-new-mail): Reformat.
+
+	* gnus-registry.el (gnus-registry-cache-save): Add FIXME comment.
+
+	* gmm-utils.el: Fix Commentary.
+	(gmm-tool-bar-from-list): Fix typo in doc string.
+
+2007-03-27  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* message.el (message-yank-original): Fix bug:
+	Don't switch point and mark unnecessarily.
+
+2007-03-25  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+	* gnus-msg.el (gnus-setup-message, gnus-inews-add-send-actions): Move
+	evaluation of gnus-extended-version to ensure correct generation of the
+	User-Agent header when message-generate-headers-first is used.
+
+2007-03-24  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus-art.el (gnus-button-alist): Also catch `<f1> k ...'.
+	(gnus-treat-display-x-face): Fix doc string.
+
+2007-03-20  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+	* message.el (message-required-news-headers):
+	* gnus-util.el (gnus-intern-safe): Fix typo in docstring.
+
+2007-03-15  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* message.el (message-generate-new-buffers): Change the meaning of the
+	nil value; add `standard' to the choices; treat t as `unique'; improve
+	doc string.
+	(gnus-select-frame-set-input-focus): Autoload.
+	(message-buffer-name): Search for the existing message buffer if
+	message-generate-new-buffers is nil or `standard'; treat the value t of
+	message-generate-new-buffers as `unique'.
+	(message-pop-to-buffer): Raise the frame already displaying the message
+	buffer; clear the echo area after querying.
+	(message-setup): Pass the `continue' argument to compose-mail.
+	(message-mail): Prefer `switch-function' if it is given; search for the
+	existing message buffer if the `continue' argument is non-nil; pass
+	continue and switch-function arguments to compose-mail by way of
+	message-setup.
+	(message-mail-other-window): Adjust argument of message-setup.
+	(message-mail-other-frame): Ditto.
+
 2007-02-28  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* message.el (message-make-in-reply-to): Quote name containing
@@ -1514,15 +1584,6 @@
 	* gnus-start.el (gnus-no-server-1): Mention
 	`gnus-level-default-subscribed' in doc string.
 
-2005-11-26  Dave Love  <fx@gnu.org>
-
-	* tls.el (open-tls-stream): Rename arg SERVICE to PORT.
-	(tls-program, tls-success): Provide openssl alternative.
-
-	* starttls.el: Doc fixes.
-	(starttls-open-stream-gnutls, starttls-open-stream): Rename arg
-	SERVICE to PORT.
-
 2005-12-09  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* gnus-start.el (gnus-start-draft-setup): Enforce
@@ -2577,14 +2638,6 @@
 
 	* gnus-art.el (gnus-emphasis-alist): Disable the strikethru thingy.
 
-2005-06-02  Katsumi Yamaoka  <yamaoka@jpl.org>
-
-	* pop3.el (pop3-md5): Run md5 in the binary mode.
-	(pop3-md5-program-args): New variable.
-
-	* starttls.el (starttls-set-process-query-on-exit-flag):
-	Use eval-and-compile.
-
 2005-05-31  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* gnus-art.el (article-display-x-face): Replace
@@ -2620,16 +2673,6 @@
 	(nntp-open-ssl-stream): Ditto.
 	(nntp-open-tls-stream): Ditto.
 
-	* pgg.el: Don't bind itimer vars; don't autoload itimer functions.
-	(pgg-run-at-time-1): New macro.
-	(pgg-run-at-time): Use it.
-
-	* starttls.el (starttls-set-process-query-on-exit-flag): Alias to
-	set-process-query-on-exit-flag or process-kill-without-query.
-	(starttls-open-stream-gnutls): Use it instead of
-	process-kill-without-query.
-	(starttls-open-stream): Ditto.
-
 2005-05-31  Simon Josefsson  <jas@extundo.com>
 
 	* imap.el (imap-ssl-open): Use imap-process-connection-type,
@@ -3547,13 +3590,6 @@
 
 	* gnus-msg.el (gnus-summary-resend-default-address): Add :version.
 
-	* tls.el (tls-process-connection-type, tls-success)
-	(tls-certtool-program): Add :version.
-
-	* starttls.el (starttls-gnutls-program, starttls-use-gnutls)
-	(starttls-extra-arguments, starttls-process-connection-type)
-	(starttls-connect, starttls-failure, starttls-success):
-
 	* spam-stat.el (spam-stat): Add :version.
 
 	* sieve.el (sieve): Add :version.
@@ -4041,12 +4077,6 @@
 	* message.el (message-tokenize-header): Fix 2004-09-06 change
 	which used point-min in the wrong place.
 
-2004-10-12  Simon Josefsson  <jas@extundo.com>
-
-	* net/tls.el (tls-certtool-program): New variable.
-	(tls-certificate-information): New function, based on
-	ssl-certificate-information.
-
 2004-10-11  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* message.el (message-bury): Use `window-dedicated-p'.
@@ -4486,19 +4516,6 @@
 
 	* sieve.el (sieve-deactivate-all): Fix format string mismatch.
 
-2004-05-26  Simon Josefsson  <jas@extundo.com>
-
-	* starttls.el: Merge with my GNUTLS based starttls.el.
-	(starttls-gnutls-program, starttls-use-gnutls)
-	(starttls-extra-arguments, starttls-process-connection-type)
-	(starttls-connect, starttls-failure, starttls-success): New variables.
-	(starttls-program, starttls-extra-args): Doc fix.
-	(starttls-negotiate-gnutls, starttls-open-stream-gnutls):
-	New functions.
-	(starttls-negotiate, starttls-open-stream):
-	Check `starttls-use-gnutls' and pass on to corresponding *-gnutls
-	function if it is set.
-
 2004-08-30  Andreas Schwab  <schwab@suse.de>
 
 	* rfc2231.el (rfc2231-parse-string): Restore whitespace syntax for
--- a/lisp/gnus/gmm-utils.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/gnus/gmm-utils.el	Sun Apr 22 12:42:47 2007 +0000
@@ -26,7 +26,7 @@
 
 ;; This library provides self-contained utility functions.  The functions are
 ;; used in Gnus, Message and MML, but within this library there are no
-;; dependencies on Gnus, Message, or MML or Gnus.
+;; dependencies on Gnus, Message, or MML.
 
 ;;; Code:
 
@@ -217,7 +217,7 @@
 command, the second element is an icon file name and the third
 element is a test function.  You can use \\[describe-key]
 <menu-entry> to find out the name of a menu command.  The fourth
-and all following elements are passed a the PROPS argument to the
+and all following elements are passed as the PROPS argument to the
 function `tool-bar-local-item'.
 
 If ZAP-LIST is a list, remove those item from the default
--- a/lisp/gnus/gnus-art.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/gnus/gnus-art.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1332,7 +1332,7 @@
 	      (executable-find "icontopbm")))
        'head)
   "Display X-Face headers.
-Valid values are nil, t, `head', `last', an integer or a predicate.
+Valid values are nil and `head'.
 See Info node `(gnus)Customizing Articles' and Info node
 `(gnus)X-Face' for details."
   :group 'gnus-article-treat
@@ -6620,7 +6620,7 @@
      0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-function 2)
     ("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
      0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-variable 2)
-    ("`\\(\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'"
+    ("`\\(\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'"
      ;; Unlike the other regexps we really have to require quoting
      ;; here to determine where it ends.
      1 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-key 3)
--- a/lisp/gnus/gnus-msg.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/gnus/gnus-msg.el	Sun Apr 22 12:42:47 2007 +0000
@@ -393,6 +393,13 @@
        (setq mml-buffer-list nil)
        (add-hook 'message-header-setup-hook 'gnus-inews-insert-gcc)
        (add-hook 'message-header-setup-hook 'gnus-inews-insert-archive-gcc)
+       ;; message-newsreader and message-mailer were formerly set in
+       ;; gnus-inews-add-send-actions, but this is too late when
+       ;; message-generate-headers-first is used. --ansel
+       (add-hook 'message-mode-hook
+		 (lambda nil
+		   (setq message-newsreader
+			 (setq message-mailer (gnus-extended-version)))))
        ;; #### FIXME: for a reason that I did not manage to identify yet,
        ;; the variable `gnus-newsgroup-name' does not honor a dynamically
        ;; scoped or setq'ed value from a caller like `C-u gnus-summary-mail'.
@@ -514,7 +521,6 @@
   (setq message-post-method
 	`(lambda (arg)
 	   (gnus-post-method arg ,gnus-newsgroup-name)))
-  (setq message-newsreader (setq message-mailer (gnus-extended-version)))
   (message-add-action
    `(when (gnus-buffer-exists-p ,buffer)
       (set-window-configuration ,winconf))
@@ -765,6 +771,7 @@
 		 (nnheader-narrow-to-headers)
 		 (nnheader-parse-naked-head)))))
 	(message-yank-original)
+	(message-exchange-point-and-mark)
 	(setq beg (or beg (mark t))))
       (when articles
 	(insert "\n")))
--- a/lisp/gnus/gnus-registry.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/gnus/gnus-registry.el	Sun Apr 22 12:42:47 2007 +0000
@@ -154,6 +154,8 @@
       (gnus-load file)
       (gnus-message 5 "Reading %s...done" file))))
 
+;; FIXME: Get rid of duplicated code, cf. `gnus-save-newsrc-file' in
+;; `gnus-start.el'.  --rsteib
 (defun gnus-registry-cache-save ()
   "Save the registry cache file."
   (interactive)
--- a/lisp/gnus/gnus-util.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/gnus/gnus-util.el	Sun Apr 22 12:42:47 2007 +0000
@@ -122,7 +122,7 @@
 (put 'gnus-eval-in-buffer-window 'edebug-form-spec '(form body))
 
 (defmacro gnus-intern-safe (string hashtable)
-  "Set hash value.  Arguments are STRING, VALUE, and HASHTABLE."
+  "Get hash value.  Arguments are STRING and HASHTABLE."
   `(let ((symbol (intern ,string ,hashtable)))
      (or (boundp symbol)
 	 (set symbol nil))
--- a/lisp/gnus/message.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/gnus/message.el	Sun Apr 22 12:42:47 2007 +0000
@@ -226,7 +226,7 @@
   "*Headers to be generated or prompted for when posting an article.
 RFC977 and RFC1036 require From, Date, Newsgroups, Subject,
 Message-ID.  Organization, Lines, In-Reply-To, Expires, and
-User-Agent are optional.  If don't you want message to insert some
+User-Agent are optional.  If you don't want message to insert some
 header, remove it from this list."
   :group 'message-news
   :group 'message-headers
@@ -433,16 +433,36 @@
   :type 'boolean)
 
 (defcustom message-generate-new-buffers 'unique
-  "*Non-nil means create a new message buffer whenever `message-setup' is called.
-If this is a function, call that function with three parameters:  The type,
-the to address and the group name.  (Any of these may be nil.)  The function
-should return the new buffer name."
+  "*Say whether to create a new message buffer to compose a message.
+Valid values include:
+
+nil
+  Generate the buffer name in the Message way (e.g., *mail*, *news*,
+  *mail to whom*, *news on group*, etc.) and continue editing in the
+  existing buffer of that name.  If there is no such buffer, it will
+  be newly created.
+
+`unique' or t
+  Create the new buffer with the name generated in the Message way.
+
+`unsent'
+  Similar to `unique' but the buffer name begins with \"*unsent \".
+
+`standard'
+  Similar to nil but the buffer name is simpler like *mail message*.
+
+function
+  If this is a function, call that function with three parameters:
+  The type, the To address and the group name (any of these may be nil).
+  The function should return the new buffer name."
   :group 'message-buffers
   :link '(custom-manual "(message)Message Buffers")
-  :type '(choice (const :tag "off" nil)
-		 (const :tag "unique" unique)
-		 (const :tag "unsent" unsent)
-		 (function fun)))
+  :type '(choice (const nil)
+		 (sexp :tag "unique" :format "unique\n" :value unique
+		       :match (lambda (widget value) (memq value '(unique t))))
+		 (const unsent)
+		 (const standard)
+		 (function :format "\n    %{%t%}: %v")))
 
 (defcustom message-kill-buffer-on-exit nil
   "*Non-nil means that the message buffer will be killed after sending a message."
@@ -1622,7 +1642,8 @@
   (autoload 'rmail-output "rmailout")
   (autoload 'gnus-delay-article "gnus-delay")
   (autoload 'gnus-make-local-hook "gnus-util")
-  (autoload 'gnus-extract-address-components "gnus-util"))
+  (autoload 'gnus-extract-address-components "gnus-util")
+  (autoload 'gnus-select-frame-set-input-focus "gnus-util"))
 
 
 
@@ -3325,12 +3346,16 @@
       (delete-windows-on message-reply-buffer t)
       (push-mark (save-excursion
 		   (insert-buffer-substring message-reply-buffer)
+		   (unless (bolp)
+		     (insert ?\n))
 		   (point)))
       (unless arg
-	(funcall message-cite-function))
-      (message-exchange-point-and-mark)
-      (unless (bolp)
-	(insert ?\n))
+	(funcall message-cite-function)
+	(unless (eq (char-before (mark t)) ?\n)
+	  (let ((pt (point)))
+	    (goto-char (mark t))
+	    (insert-before-markers ?\n)
+	    (goto-char pt))))
       (unless modified
 	(setq message-checksum (message-checksum))))))
 
@@ -5501,7 +5526,7 @@
   "Return a new (unique) buffer name based on TYPE and TO."
   (cond
    ;; Generate a new buffer name The Message Way.
-   ((eq message-generate-new-buffers 'unique)
+   ((memq message-generate-new-buffers '(unique t))
     (generate-new-buffer-name
      (concat "*" type
 	     (if to
@@ -5525,20 +5550,51 @@
 	       "")
 	     (if (and group (not (string= group ""))) (concat " on " group) "")
 	     "*")))
-   ;; Use standard name.
+   ;; Search for the existing message buffer with the specified name.
    (t
-    (format "*%s message*" type))))
+    (let* ((new (if (eq message-generate-new-buffers 'standard)
+		    (generate-new-buffer-name (concat "*" type " message*"))
+		  (let ((message-generate-new-buffers 'unique))
+		    (message-buffer-name type to group))))
+	   (regexp (concat "\\`"
+			   (regexp-quote
+			    (if (string-match "<[0-9]+>\\'" new)
+				(substring new 0 (match-beginning 0))
+			      new))
+			   "\\(?:<\\([0-9]+\\)>\\)?\\'"))
+	   (case-fold-search nil))
+      (or (cdar
+	   (last
+	    (sort
+	     (delq nil
+		   (mapcar
+		    (lambda (b)
+		      (when (and (string-match regexp (setq b (buffer-name b)))
+				 (eq (with-current-buffer b major-mode)
+				     'message-mode))
+			(cons (string-to-number (or (match-string 1 b) "1"))
+			      b)))
+		    (buffer-list)))
+	     'car-less-than-car)))
+	  new)))))
 
 (defun message-pop-to-buffer (name)
   "Pop to buffer NAME, and warn if it already exists and is modified."
   (let ((buffer (get-buffer name)))
     (if (and buffer
 	     (buffer-name buffer))
-	(progn
-	  (set-buffer (pop-to-buffer buffer))
+	(let ((window (get-buffer-window buffer 0)))
+	  (if window
+	      ;; Raise the frame already displaying the message buffer.
+	      (progn
+		(gnus-select-frame-set-input-focus (window-frame window))
+		(select-window window))
+	    (set-buffer (pop-to-buffer buffer)))
 	  (when (and (buffer-modified-p)
-		     (not (y-or-n-p
-			   "Message already being composed; erase? ")))
+		     (not (prog1
+			      (y-or-n-p
+			       "Message already being composed; erase? ")
+			    (message nil))))
 	    (error "Message being composed")))
       (set-buffer (pop-to-buffer name)))
     (erase-buffer)
@@ -5598,7 +5654,8 @@
 	nil
       mua)))
 
-(defun message-setup (headers &optional replybuffer actions switch-function)
+(defun message-setup (headers &optional replybuffer actions
+			      continue switch-function)
   (let ((mua (message-mail-user-agent))
 	subject to field yank-action)
     (if (not (and message-this-is-mail mua))
@@ -5621,7 +5678,7 @@
 				 (format "%s" (car item))
 				 (cdr item)))
 			      headers)
-		      nil switch-function yank-action actions)))))
+		      continue switch-function yank-action actions)))))
 
 (defun message-headers-to-generate (headers included-headers excluded-headers)
   "Return a list that includes all headers from HEADERS.
@@ -5770,11 +5827,21 @@
 			       other-headers continue switch-function
 			       yank-action send-actions)
   "Start editing a mail message to be sent.
-OTHER-HEADERS is an alist of header/value pairs."
+OTHER-HEADERS is an alist of header/value pairs.  CONTINUE says whether
+to continue editing a message already being composed.  SWITCH-FUNCTION
+is a function used to switch to and display the mail buffer."
   (interactive)
   (let ((message-this-is-mail t) replybuffer)
     (unless (message-mail-user-agent)
-      (message-pop-to-buffer (message-buffer-name "mail" to)))
+      (funcall
+       (or switch-function 'message-pop-to-buffer)
+       ;; Search for the existing message buffer if `continue' is non-nil.
+       (let ((message-generate-new-buffers
+	      (when (or (not continue)
+			(eq message-generate-new-buffers 'standard)
+			(functionp message-generate-new-buffers))
+		message-generate-new-buffers)))
+	 (message-buffer-name "mail" to))))
     ;; FIXME: message-mail should do something if YANK-ACTION is not
     ;; insert-buffer.
     (and (consp yank-action) (eq (car yank-action) 'insert-buffer)
@@ -5783,7 +5850,7 @@
      (nconc
       `((To . ,(or to "")) (Subject . ,(or subject "")))
       (when other-headers other-headers))
-     replybuffer send-actions)
+     replybuffer send-actions continue switch-function)
     ;; FIXME: Should return nil if failure.
     t))
 
@@ -6655,7 +6722,7 @@
       (message-pop-to-buffer (message-buffer-name "mail" to))))
   (let ((message-this-is-mail t))
     (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))
-		   nil nil 'switch-to-buffer-other-window)))
+		   nil nil nil 'switch-to-buffer-other-window)))
 
 ;;;###autoload
 (defun message-mail-other-frame (&optional to subject)
@@ -6670,7 +6737,7 @@
       (message-pop-to-buffer (message-buffer-name "mail" to))))
   (let ((message-this-is-mail t))
     (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))
-		   nil nil 'switch-to-buffer-other-frame)))
+		   nil nil nil 'switch-to-buffer-other-frame)))
 
 ;;;###autoload
 (defun message-news-other-window (&optional newsgroups subject)
--- a/lisp/gnus/nnmail.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/gnus/nnmail.el	Sun Apr 22 12:42:47 2007 +0000
@@ -247,6 +247,10 @@
 This variable is obsolete; `mail-sources' should be used instead."
   :group 'nnmail-files
   :type 'sexp)
+(make-obsolete-variable 'nnmail-spool-file
+			"This option is obsolete in Gnus 5.9.  \
+Use `mail-sources' instead.")
+;; revision 5.29 / p0-85 / Gnus 5.9
 
 (defcustom nnmail-resplit-incoming nil
   "*If non-nil, re-split incoming procmail sorted mail."
@@ -1749,7 +1753,8 @@
 				   &optional group spool-func)
   "Read new incoming mail."
   (let* ((sources (or mail-sources
-		      (if (listp nnmail-spool-file) nnmail-spool-file
+		      (if (listp nnmail-spool-file)
+			  nnmail-spool-file
 			(list nnmail-spool-file))))
 	 fetching-sources
 	 (group-in group)
--- a/lisp/help.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/help.el	Sun Apr 22 12:42:47 2007 +0000
@@ -642,7 +642,7 @@
 	   (list
 	    key
 	    (prefix-numeric-value current-prefix-arg)
-	    ;; If KEY is a down-event, read and discard the
+	    ;; If KEY is a down-event, read and include the
 	    ;; corresponding up-event.  Note that there are also
 	    ;; down-events on scroll bars and mode lines: the actual
 	    ;; event then is in the second element of the vector.
--- a/lisp/ido.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/ido.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1940,8 +1940,14 @@
       (if (and ido-matches (eq ido-try-merged-list 'auto))
 	  (setq ido-try-merged-list t))
       (let
-	  ((minibuffer-local-completion-map ido-completion-map)
-	   (minibuffer-local-filename-completion-map ido-completion-map)
+	  ((minibuffer-local-completion-map
+	    (if (memq ido-cur-item '(file dir))
+		minibuffer-local-completion-map
+	      ido-completion-map))
+	   (minibuffer-local-filename-completion-map
+	    (if (memq ido-cur-item '(file dir))
+		ido-completion-map
+	      minibuffer-local-filename-completion-map))
 	   (max-mini-window-height (or ido-max-window-height
 				       (and (boundp 'max-mini-window-height) max-mini-window-height)))
 	   (ido-completing-read t)
--- a/lisp/info.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/info.el	Sun Apr 22 12:42:47 2007 +0000
@@ -145,7 +145,7 @@
   :type 'boolean
   :group 'info)
 
-(defcustom Info-fontify-maximum-menu-size 1000000
+(defcustom Info-fontify-maximum-menu-size 100000
   "*Maximum size of menu to fontify if `font-lock-mode' is non-nil.
 Set to nil to disable node fontification."
   :type 'integer
@@ -1315,16 +1315,25 @@
 	      nil t)
 	(let* ((start (match-beginning 1))
 	       (parameter-alist (Info-split-parameter-string (match-string 2)))
-	       (src (cdr (assoc-string "src" parameter-alist)))
-	       (image-file (if src (if (file-name-absolute-p src) src
-				     (concat default-directory src))
-			     ""))
-	       (image (if (file-exists-p image-file)
-			  (create-image image-file)
-			"[broken image]")))
-	  (if (not (get-text-property start 'display))
-	      (add-text-properties
-	       start (point) `(display ,image rear-nonsticky (display)))))))
+               (src (cdr (assoc-string "src" parameter-alist))))
+          (if (display-images-p)
+              (let* ((image-file (if src (if (file-name-absolute-p src) src
+                                           (concat default-directory src))
+                                   ""))
+                     (image (if (file-exists-p image-file)
+                                (create-image image-file)
+                              "[broken image]")))
+                (if (not (get-text-property start 'display))
+                    (add-text-properties
+                     start (point) `(display ,image rear-nonsticky (display)))))
+            ;; text-only display, show alternative text if provided, or
+            ;; otherwise a clue that there's meant to be a picture
+            (delete-region start (point))
+            (insert (or (cdr (assoc-string "text" parameter-alist))
+                        (cdr (assoc-string "alt" parameter-alist))
+                        (and src
+                             (concat "[image:" src "]"))
+                        "[image]"))))))
     (set-buffer-modified-p nil)))
 
 ;; Texinfo 4.7 adds cookies of the form ^@^H[NAME CONTENTS ^@^H].
@@ -3235,7 +3244,6 @@
 (defvar info-tool-bar-map
   (if (display-graphic-p)
       (let ((map (make-sparse-keymap)))
-	(tool-bar-local-item-from-menu 'Info-exit "close" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map)
@@ -3245,6 +3253,7 @@
 	(tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map)
 	(tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
+	(tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map)
 	map)))
 
 (defvar Info-menu-last-node nil)
--- a/lisp/international/mule.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/international/mule.el	Sun Apr 22 12:42:47 2007 +0000
@@ -392,6 +392,20 @@
 			char))))))))
 
 
+;; Save the ASCII case table in case we need it later.  Some locales
+;; (such as Turkish) modify the case behavior of ASCII characters,
+;; which can interfere with networking code that uses ASCII strings.
+
+(defvar ascii-case-table
+  ;; Code copied from copy-case-table to avoid requiring case-table.el
+  (let ((tbl (copy-sequence (standard-case-table)))
+	(up  (char-table-extra-slot (standard-case-table) 0)))
+    (if up (set-char-table-extra-slot tbl 0 (copy-sequence up)))
+    (set-char-table-extra-slot tbl 1 nil)
+    (set-char-table-extra-slot tbl 2 nil)
+    tbl)
+  "Case table for the ASCII character set.")
+
 ;; Coding system stuff
 
 ;; Coding system is a symbol that has the property `coding-system'.
--- a/lisp/isearch.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/isearch.el	Sun Apr 22 12:42:47 2007 +0000
@@ -531,8 +531,7 @@
  string and search for it.
 Type \\[isearch-yank-line] to yank rest of line onto end of search string\
  and search for it.
-Type \\[isearch-yank-kill] to yank last killed text onto end of search string\
- and search for it.
+Type \\[isearch-yank-kill] to yank the last string of killed text.
 Type \\[isearch-quote-char] to quote control character to search for it.
 \\[isearch-abort] while searching or when search has failed cancels input\
  back to what has
--- a/lisp/ldefs-boot.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/ldefs-boot.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,7 +4,7 @@
 
 ;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best
 ;;;;;;  5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5"
-;;;;;;  "play/5x5.el" (17888 36936))
+;;;;;;  "play/5x5.el" (17963 21010))
 ;;; Generated autoloads from play/5x5.el
 
 (autoload (quote 5x5) "5x5" "\
@@ -852,7 +852,7 @@
 ;;;***
 
 ;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
-;;;;;;  "animate" "play/animate.el" (17888 32280))
+;;;;;;  "animate" "play/animate.el" (17963 21010))
 ;;; Generated autoloads from play/animate.el
 
 (autoload (quote animate-string) "animate" "\
@@ -1611,7 +1611,7 @@
 
 ;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode
 ;;;;;;  auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode)
-;;;;;;  "autorevert" "autorevert.el" (17963 19298))
+;;;;;;  "autorevert" "autorevert.el" (17963 20867))
 ;;; Generated autoloads from autorevert.el
 
 (autoload (quote auto-revert-mode) "autorevert" "\
@@ -2598,8 +2598,8 @@
 ;;;***
 
 ;;;### (autoloads (insert-text-button make-text-button insert-button
-;;;;;;  make-button define-button-type) "button" "button.el" (17888
-;;;;;;  32278))
+;;;;;;  make-button define-button-type) "button" "button.el" (17963
+;;;;;;  21008))
 ;;; Generated autoloads from button.el
 
 (defvar button-map (let ((map (make-sparse-keymap))) (define-key map "
" (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\
@@ -2687,7 +2687,7 @@
 ;;;;;;  batch-byte-compile-if-not-done display-call-tree byte-compile
 ;;;;;;  compile-defun byte-compile-file byte-recompile-directory
 ;;;;;;  byte-force-recompile byte-compile-warnings-safe-p) "bytecomp"
-;;;;;;  "emacs-lisp/bytecomp.el" (17963 19282))
+;;;;;;  "emacs-lisp/bytecomp.el" (17963 20998))
 ;;; Generated autoloads from emacs-lisp/bytecomp.el
 (put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
 (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2925,7 +2925,7 @@
 ;;;;;;  mark-holidays-in-calendar view-calendar-holidays-initially
 ;;;;;;  calendar-remove-frame-by-deleting mark-diary-entries-in-calendar
 ;;;;;;  view-diary-entries-initially calendar-offset) "calendar"
-;;;;;;  "calendar/calendar.el" (17963 20580))
+;;;;;;  "calendar/calendar.el" (17963 20998))
 ;;; Generated autoloads from calendar/calendar.el
 
 (defvar calendar-offset 0 "\
@@ -3523,7 +3523,7 @@
 ;;;***
 
 ;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
-;;;;;;  (17963 19063))
+;;;;;;  (17963 20867))
 ;;; Generated autoloads from progmodes/cc-engine.el
 
 (autoload (quote c-guess-basic-syntax) "cc-engine" "\
@@ -3535,7 +3535,7 @@
 
 ;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode
 ;;;;;;  c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
-;;;;;;  (17963 19063))
+;;;;;;  (17963 20867))
 ;;; Generated autoloads from progmodes/cc-mode.el
 
 (autoload (quote c-initialize-cc-mode) "cc-mode" "\
@@ -3751,7 +3751,7 @@
 
 ;;;***
 
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17888 36581))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17963 21010))
 ;;; Generated autoloads from progmodes/cc-vars.el
 (put 'c-basic-offset 'safe-local-variable 'integerp)
 (put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -4483,7 +4483,7 @@
 ;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list
 ;;;;;;  comint-redirect-send-command-to-process comint-redirect-send-command
 ;;;;;;  comint-run make-comint make-comint-in-buffer) "comint" "comint.el"
-;;;;;;  (17963 19298))
+;;;;;;  (17963 21008))
 ;;; Generated autoloads from comint.el
 
 (defvar comint-output-filter-functions (quote (comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) "\
@@ -4573,8 +4573,8 @@
 
 ;;;***
 
-;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17888
-;;;;;;  32279))
+;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17963
+;;;;;;  20867))
 ;;; Generated autoloads from compare-w.el
 
 (autoload (quote compare-windows) "compare-w" "\
@@ -4611,7 +4611,7 @@
 ;;;;;;  compilation-shell-minor-mode compilation-mode compilation-start
 ;;;;;;  compile compilation-disable-input compile-command compilation-search-path
 ;;;;;;  compilation-ask-about-save compilation-window-height compilation-mode-hook)
-;;;;;;  "compile" "progmodes/compile.el" (17963 19298))
+;;;;;;  "compile" "progmodes/compile.el" (17963 20998))
 ;;; Generated autoloads from progmodes/compile.el
 
 (defvar compilation-mode-hook nil "\
@@ -4647,6 +4647,7 @@
 Functions to call when a compilation process finishes.
 Each function is called with two arguments: the compilation buffer,
 and a string describing how the process finished.")
+(put 'compilation-directory 'safe-local-variable 'stringp)
 
 (defvar compilation-ask-about-save t "\
 *Non-nil means \\[compile] asks which buffers to save before compiling.
@@ -4773,7 +4774,7 @@
 ;;;***
 
 ;;;### (autoloads (partial-completion-mode) "complete" "complete.el"
-;;;;;;  (17963 19063))
+;;;;;;  (17963 21000))
 ;;; Generated autoloads from complete.el
 
 (defvar partial-completion-mode nil "\
@@ -6751,7 +6752,7 @@
 ;;;***
 
 ;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
-;;;;;;  "calendar/diary-lib.el" (17963 20580))
+;;;;;;  "calendar/diary-lib.el" (17963 20998))
 ;;; Generated autoloads from calendar/diary-lib.el
 
 (autoload (quote diary) "diary-lib" "\
@@ -6848,9 +6849,6 @@
 or vice versa with \\[diff-unified->context] and you can also reverse the direction of
 a diff with \\[diff-reverse-direction].
 
-When the buffer is read-only, the Meta- modifier is not necessary
-to run the Diff mode commands:
-
    \\{diff-mode-map}
 
 \(fn)" t nil)
@@ -7671,7 +7669,7 @@
 ;;;***
 
 ;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
-;;;;;;  (17888 32280))
+;;;;;;  (17963 21010))
 ;;; Generated autoloads from play/dissociate.el
 
 (autoload (quote dissociated-press) "dissociate" "\
@@ -7732,7 +7730,7 @@
 
 ;;;***
 
-;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17888 32280))
+;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17963 21010))
 ;;; Generated autoloads from play/doctor.el
 
 (autoload (quote doctor) "doctor" "\
@@ -8488,7 +8486,7 @@
 
 ;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
 ;;;;;;  edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
-;;;;;;  "emacs-lisp/edebug.el" (17963 19041))
+;;;;;;  "emacs-lisp/edebug.el" (17963 20999))
 ;;; Generated autoloads from emacs-lisp/edebug.el
 
 (defvar edebug-all-defs nil "\
@@ -9196,7 +9194,7 @@
 ;;;***
 
 ;;;### (autoloads (erc-handle-irc-url erc erc-select-read-args) "erc"
-;;;;;;  "erc/erc.el" (17888 32279))
+;;;;;;  "erc/erc.el" (17963 21006))
 ;;; Generated autoloads from erc/erc.el
 
 (autoload (quote erc-select-read-args) "erc" "\
@@ -9205,8 +9203,12 @@
 \(fn)" nil nil)
 
 (autoload (quote erc) "erc" "\
-Select connection parameters and run ERC.
-Non-interactively, it takes keyword arguments
+ERC is a powerful, modular, and extensible IRC client.
+This function is the main entry point for ERC.
+
+It permits you to select connection parameters, and then starts ERC.
+
+Non-interactively, it takes the keyword arguments
    (server (erc-compute-server))
    (port   (erc-compute-port))
    (nick   (erc-compute-nick))
@@ -9217,12 +9219,14 @@
 
    (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
 
-server and full-name will be set to those values, whereas
+then the server and full-name will be set to those values, whereas
 `erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
 be invoked for the values of the other parameters.
 
 \(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK (erc-compute-nick)) PASSWORD (FULL-NAME (erc-compute-full-name)))" t nil)
 
+(defalias (quote erc-select) (quote erc))
+
 (autoload (quote erc-handle-irc-url) "erc" "\
 Use ERC to IRC on HOST:PORT in CHANNEL as USER with PASSWORD.
 If ERC is already connected to HOST:PORT, simply /join CHANNEL.
@@ -9232,26 +9236,26 @@
 
 ;;;***
 
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17888
-;;;;;;  32279))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17963
+;;;;;;  21006))
 ;;; Generated autoloads from erc/erc-autoaway.el
  (autoload 'erc-autoaway-mode "erc-autoaway")
 
 ;;;***
 
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17888 32279))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-button.el
  (autoload 'erc-button-mode "erc-button" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17888 32277))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-capab.el
  (autoload 'erc-capab-identify-mode "erc-capab" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17888 32279))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-compat.el
  (autoload 'erc-define-minor-mode "erc-compat")
 
@@ -9352,8 +9356,8 @@
 
 ;;;***
 
-;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17888
-;;;;;;  32279))
+;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17963
+;;;;;;  21006))
 ;;; Generated autoloads from erc/erc-fill.el
  (autoload 'erc-fill-mode "erc-fill" nil t)
 
@@ -9373,7 +9377,7 @@
 ;;;***
 
 ;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd"
-;;;;;;  "erc/erc-identd.el" (17888 32279))
+;;;;;;  "erc/erc-identd.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-identd.el
  (autoload 'erc-identd-mode "erc-identd")
 
@@ -9412,7 +9416,7 @@
 ;;;***
 
 ;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log"
-;;;;;;  "erc/erc-log.el" (17888 32279))
+;;;;;;  "erc/erc-log.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-log.el
  (autoload 'erc-log-mode "erc-log" nil t)
 
@@ -9444,7 +9448,7 @@
 ;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
 ;;;;;;  erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
 ;;;;;;  erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
-;;;;;;  (17888 32279))
+;;;;;;  (17963 21006))
 ;;; Generated autoloads from erc/erc-match.el
  (autoload 'erc-match-mode "erc-match")
 
@@ -9490,14 +9494,14 @@
 
 ;;;***
 
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17888 32279))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-menu.el
  (autoload 'erc-menu-mode "erc-menu" nil t)
 
 ;;;***
 
 ;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el"
-;;;;;;  (17888 32279))
+;;;;;;  (17963 21006))
 ;;; Generated autoloads from erc/erc-netsplit.el
  (autoload 'erc-netsplit-mode "erc-netsplit")
 
@@ -9509,7 +9513,7 @@
 ;;;***
 
 ;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks"
-;;;;;;  "erc/erc-networks.el" (17888 32279))
+;;;;;;  "erc/erc-networks.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-networks.el
 
 (autoload (quote erc-determine-network) "erc-networks" "\
@@ -9527,7 +9531,7 @@
 ;;;***
 
 ;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify"
-;;;;;;  "erc/erc-notify.el" (17888 32279))
+;;;;;;  "erc/erc-notify.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-notify.el
  (autoload 'erc-notify-mode "erc-notify" nil t)
 
@@ -9551,8 +9555,8 @@
 
 ;;;***
 
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17888
-;;;;;;  32279))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17963
+;;;;;;  21006))
 ;;; Generated autoloads from erc/erc-pcomplete.el
  (autoload 'erc-completion-mode "erc-pcomplete" nil t)
 
@@ -9564,14 +9568,14 @@
 
 ;;;***
 
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17888 32279))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-ring.el
  (autoload 'erc-ring-mode "erc-ring" nil t)
 
 ;;;***
 
 ;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode)
-;;;;;;  "erc-services" "erc/erc-services.el" (17888 32279))
+;;;;;;  "erc-services" "erc/erc-services.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-services.el
  (autoload 'erc-services-mode "erc-services" nil t)
 
@@ -9595,7 +9599,7 @@
 ;;;***
 
 ;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el"
-;;;;;;  (17888 32279))
+;;;;;;  (17963 21006))
 ;;; Generated autoloads from erc/erc-speedbar.el
 
 (autoload (quote erc-speedbar-browser) "erc-speedbar" "\
@@ -9606,23 +9610,39 @@
 
 ;;;***
 
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17888
-;;;;;;  32279))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17963
+;;;;;;  21006))
 ;;; Generated autoloads from erc/erc-spelling.el
  (autoload 'erc-spelling-mode "erc-spelling" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17888 32279))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17963 21006))
 ;;; Generated autoloads from erc/erc-stamp.el
  (autoload 'erc-timestamp-mode "erc-stamp" nil t)
 
 ;;;***
 
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (17888 32279))
+;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el"
+;;;;;;  (17963 21006))
 ;;; Generated autoloads from erc/erc-track.el
+
+(defvar erc-track-minor-mode nil "\
+Non-nil if Erc-Track minor mode is enabled.
+See the command `erc-track-minor-mode' for a description of this minor-mode.")
+
+(custom-autoload (quote erc-track-minor-mode) "erc-track" nil)
+
+(autoload (quote erc-track-minor-mode) "erc-track" "\
+Global minor mode for tracking ERC buffers and showing activity in the
+mode line.
+
+This exists for the sole purpose of providing the C-c C-SPC and
+C-c C-@ keybindings.  Make sure that you have enabled the track
+module, otherwise the keybindings will not do anything useful.
+
+\(fn &optional ARG)" t nil)
  (autoload 'erc-track-mode "erc-track" nil t)
- (autoload 'erc-track-when-inactive-mode "erc-track" nil t)
 
 ;;;***
 
@@ -10344,8 +10364,8 @@
 
 ;;;***
 
-;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17888
-;;;;;;  32279))
+;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17963
+;;;;;;  21003))
 ;;; Generated autoloads from emacs-lisp/ewoc.el
 
 (autoload (quote ewoc-create) "ewoc" "\
@@ -10416,7 +10436,8 @@
 ;;;***
 
 ;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot
-;;;;;;  expand-add-abbrevs) "expand" "expand.el" (17888 32279))
+;;;;;;  expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el"
+;;;;;;  (17963 20867))
 ;;; Generated autoloads from expand.el
 
 (autoload (quote expand-add-abbrevs) "expand" "\
@@ -10443,6 +10464,12 @@
 
 \(fn TABLE ABBREVS)" nil nil)
 
+(autoload (quote expand-abbrev-hook) "expand" "\
+Abbrev hook used to do the expansion job of expand abbrevs.
+See `expand-add-abbrevs'.  Value is non-nil if expansion was done.
+
+\(fn)" nil nil)
+
 (autoload (quote expand-jump-to-previous-slot) "expand" "\
 Move the cursor to the previous slot in the last abbrev expansion.
 This is used only in conjunction with `expand-add-abbrevs'.
@@ -11317,7 +11344,7 @@
 ;;;***
 
 ;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode)
-;;;;;;  "flymake" "progmodes/flymake.el" (17888 36581))
+;;;;;;  "flymake" "progmodes/flymake.el" (17963 21005))
 ;;; Generated autoloads from progmodes/flymake.el
 
 (autoload (quote flymake-mode) "flymake" "\
@@ -11341,7 +11368,7 @@
 
 ;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
 ;;;;;;  turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
-;;;;;;  "flyspell" "textmodes/flyspell.el" (17888 32281))
+;;;;;;  "flyspell" "textmodes/flyspell.el" (17963 20998))
 ;;; Generated autoloads from textmodes/flyspell.el
 
 (autoload (quote flyspell-prog-mode) "flyspell" "\
@@ -11679,7 +11706,7 @@
 ;;;***
 
 ;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el"
-;;;;;;  (17963 18447))
+;;;;;;  (17963 21011))
 ;;; Generated autoloads from progmodes/gdb-ui.el
 
 (autoload (quote gdba) "gdb-ui" "\
@@ -11831,7 +11858,7 @@
 ;;;***
 
 ;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error
-;;;;;;  gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17888 32279))
+;;;;;;  gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17963 21006))
 ;;; Generated autoloads from gnus/gmm-utils.el
 
 (autoload (quote gmm-message) "gmm-utils" "\
@@ -11862,7 +11889,7 @@
 command, the second element is an icon file name and the third
 element is a test function.  You can use \\[describe-key]
 <menu-entry> to find out the name of a menu command.  The fourth
-and all following elements are passed a the PROPS argument to the
+and all following elements are passed as the PROPS argument to the
 function `tool-bar-local-item'.
 
 If ZAP-LIST is a list, remove those item from the default
@@ -12022,7 +12049,7 @@
 ;;;***
 
 ;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
-;;;;;;  (17888 36581))
+;;;;;;  (17963 21004))
 ;;; Generated autoloads from gnus/gnus-art.el
 
 (autoload (quote gnus-article-prepare-display) "gnus-art" "\
@@ -12373,7 +12400,7 @@
 ;;;***
 
 ;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
-;;;;;;  "gnus-msg" "gnus/gnus-msg.el" (17888 32279))
+;;;;;;  "gnus-msg" "gnus/gnus-msg.el" (17963 21010))
 ;;; Generated autoloads from gnus/gnus-msg.el
 
 (autoload (quote gnus-msg-mail) "gnus-msg" "\
@@ -12510,7 +12537,7 @@
 ;;;***
 
 ;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
-;;;;;;  "gnus-registry" "gnus/gnus-registry.el" (17888 32279))
+;;;;;;  "gnus-registry" "gnus/gnus-registry.el" (17963 21006))
 ;;; Generated autoloads from gnus/gnus-registry.el
 
 (autoload (quote gnus-registry-initialize) "gnus-registry" "\
@@ -12613,7 +12640,7 @@
 
 ;;;***
 
-;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17888 32280))
+;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17963 21010))
 ;;; Generated autoloads from play/gomoku.el
 
 (autoload (quote gomoku) "gomoku" "\
@@ -12713,10 +12740,10 @@
 This variable's value takes effect when `grep-compute-defaults' is called.")
 
 (defvar grep-find-use-xargs nil "\
-Whether \\[grep-find] uses the `xargs' utility by default.
-
-If `exec', it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0';
-if not nil and not `gnu', it uses `find -print' and `xargs'.
+Non-nil means that `grep-find' uses the `xargs' utility by default.
+If `exec', use `find -exec'.
+If `gnu', use `find -print0' and `xargs -0'.
+Any other non-nil value means to use `find -print' and `xargs'.
 
 This variable's value takes effect when `grep-compute-defaults' is called.")
 
@@ -12824,7 +12851,7 @@
 ;;;***
 
 ;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb)
-;;;;;;  "gud" "progmodes/gud.el" (17963 19063))
+;;;;;;  "gud" "progmodes/gud.el" (17963 21011))
 ;;; Generated autoloads from progmodes/gud.el
 
 (autoload (quote gdb) "gud" "\
@@ -13535,8 +13562,8 @@
 
 ;;;***
 
-;;;### (autoloads (hs-minor-mode) "hideshow" "progmodes/hideshow.el"
-;;;;;;  (17963 19041))
+;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
+;;;;;;  (17963 21006))
 ;;; Generated autoloads from progmodes/hideshow.el
 
 (defvar hs-special-modes-alist (quote ((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))) "\
@@ -13588,6 +13615,11 @@
 
 \(fn &optional ARG)" t nil)
 
+(autoload (quote turn-off-hideshow) "hideshow" "\
+Unconditionally turn off `hs-minor-mode'.
+
+\(fn)" nil nil)
+
 ;;;***
 
 ;;;### (autoloads (global-highlight-changes highlight-compare-with-file
@@ -14545,7 +14577,7 @@
 ;;;***
 
 ;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el"
-;;;;;;  (17888 37036))
+;;;;;;  (17963 21008))
 ;;; Generated autoloads from progmodes/idlw-shell.el
 
 (autoload (quote idlwave-shell) "idlw-shell" "\
@@ -14571,7 +14603,7 @@
 ;;;***
 
 ;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
-;;;;;;  (17888 36588))
+;;;;;;  (17963 21008))
 ;;; Generated autoloads from progmodes/idlwave.el
 
 (autoload (quote idlwave-mode) "idlwave" "\
@@ -14707,7 +14739,7 @@
 ;;;;;;  ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer
 ;;;;;;  ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window
 ;;;;;;  ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17963
-;;;;;;  19298))
+;;;;;;  21001))
 ;;; Generated autoloads from ido.el
 
 (defvar ido-mode nil "\
@@ -15501,7 +15533,7 @@
 ;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node
 ;;;;;;  Info-goto-emacs-command-node Info-mode info-apropos Info-index
 ;;;;;;  Info-directory Info-on-current-buffer info-standalone info-emacs-manual
-;;;;;;  info info-other-window) "info" "info.el" (17888 36929))
+;;;;;;  info info-other-window) "info" "info.el" (17963 21008))
 ;;; Generated autoloads from info.el
 
 (autoload (quote info-other-window) "info" "\
@@ -16612,7 +16644,7 @@
 ;;;***
 
 ;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el"
-;;;;;;  (17888 32280))
+;;;;;;  (17963 21010))
 ;;; Generated autoloads from play/landmark.el
 
 (defalias (quote landmark-repeat) (quote lm-test-run))
@@ -17148,8 +17180,8 @@
 
 ;;;***
 
-;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17888
-;;;;;;  32281))
+;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17963
+;;;;;;  20866))
 ;;; Generated autoloads from progmodes/m4-mode.el
 
 (autoload (quote m4-mode) "m4-mode" "\
@@ -17593,7 +17625,7 @@
 
 ;;;***
 
-;;;### (autoloads (man-follow man) "man" "man.el" (17888 32280))
+;;;### (autoloads (man-follow man) "man" "man.el" (17963 20867))
 ;;; Generated autoloads from man.el
 
 (defalias (quote manual-entry) (quote man))
@@ -17678,7 +17710,7 @@
 ;;;;;;  message-cite-function message-yank-prefix message-citation-line-function
 ;;;;;;  message-send-mail-function message-user-organization-file
 ;;;;;;  message-signature-separator message-from-style) "message"
-;;;;;;  "gnus/message.el" (17963 18449))
+;;;;;;  "gnus/message.el" (17963 20999))
 ;;; Generated autoloads from gnus/message.el
 
 (defvar message-from-style (quote default) "\
@@ -17816,7 +17848,9 @@
 
 (autoload (quote message-mail) "message" "\
 Start editing a mail message to be sent.
-OTHER-HEADERS is an alist of header/value pairs.
+OTHER-HEADERS is an alist of header/value pairs.  CONTINUE says whether
+to continue editing a message already being composed.  SWITCH-FUNCTION
+is a function used to switch to and display the mail buffer.
 
 \(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION SEND-ACTIONS)" t nil)
 
@@ -18976,7 +19010,7 @@
 ;;;;;;  uncomment-region comment-kill comment-set-column comment-indent
 ;;;;;;  comment-indent-default comment-normalize-vars comment-multi-line
 ;;;;;;  comment-padding comment-style comment-column) "newcomment"
-;;;;;;  "newcomment.el" (17888 32280))
+;;;;;;  "newcomment.el" (17963 21008))
 ;;; Generated autoloads from newcomment.el
 
 (defalias (quote indent-for-comment) (quote comment-indent))
@@ -19507,7 +19541,7 @@
 ;;;;;;  org-remember-handler org-remember org-remember-apply-template
 ;;;;;;  org-remember-annotation org-store-link orgtbl-mode turn-on-orgtbl
 ;;;;;;  org-global-cycle org-cycle org-mode) "org" "textmodes/org.el"
-;;;;;;  (17963 19299))
+;;;;;;  (17963 20865))
 ;;; Generated autoloads from textmodes/org.el
 
 (autoload (quote org-mode) "org" "\
@@ -21663,7 +21697,7 @@
 ;;;***
 
 ;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el"
-;;;;;;  (17963 19313))
+;;;;;;  (17963 20999))
 ;;; Generated autoloads from progmodes/python.el
 
 (add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode)))
@@ -22122,7 +22156,7 @@
 
 ;;;***
 
-;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17888 32281))
+;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17963 20999))
 ;;; Generated autoloads from recentf.el
 
 (defvar recentf-mode nil "\
@@ -22295,7 +22329,7 @@
 ;;;***
 
 ;;;### (autoloads (reftex-reset-scanning-information reftex-mode
-;;;;;;  turn-on-reftex) "reftex" "textmodes/reftex.el" (17888 32281))
+;;;;;;  turn-on-reftex) "reftex" "textmodes/reftex.el" (17963 20865))
 ;;; Generated autoloads from textmodes/reftex.el
 
 (autoload (quote turn-on-reftex) "reftex" "\
@@ -22345,7 +22379,7 @@
 ;;;***
 
 ;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el"
-;;;;;;  (17888 32281))
+;;;;;;  (17963 20865))
 ;;; Generated autoloads from textmodes/reftex-cite.el
 
 (autoload (quote reftex-citation) "reftex-cite" "\
@@ -22375,7 +22409,7 @@
 ;;;***
 
 ;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el"
-;;;;;;  (17888 32281))
+;;;;;;  (17963 20865))
 ;;; Generated autoloads from textmodes/reftex-global.el
 
 (autoload (quote reftex-isearch-minor-mode) "reftex-global" "\
@@ -22392,7 +22426,7 @@
 ;;;***
 
 ;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el"
-;;;;;;  (17888 32281))
+;;;;;;  (17963 20865))
 ;;; Generated autoloads from textmodes/reftex-index.el
 
 (autoload (quote reftex-index-phrases-mode) "reftex-index" "\
@@ -22425,7 +22459,7 @@
 ;;;***
 
 ;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el"
-;;;;;;  (17888 32281))
+;;;;;;  (17963 20865))
 ;;; Generated autoloads from textmodes/reftex-parse.el
 
 (autoload (quote reftex-all-document-files) "reftex-parse" "\
@@ -22437,8 +22471,8 @@
 
 ;;;***
 
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17888
-;;;;;;  32281))
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17963
+;;;;;;  20865))
 ;;; Generated autoloads from textmodes/reftex-vars.el
 (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
 (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22666,7 +22700,7 @@
 ;;;;;;  rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers
 ;;;;;;  rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names
 ;;;;;;  rmail-movemail-variant-p) "rmail" "mail/rmail.el" (17963
-;;;;;;  18438))
+;;;;;;  21010))
 ;;; Generated autoloads from mail/rmail.el
 
 (autoload (quote rmail-movemail-variant-p) "rmail" "\
@@ -23961,16 +23995,16 @@
 \\[mail-send-and-exit]  mail-send-and-exit (send the message and exit)
 
 Here are commands that move to a header field (and create it if there isn't):
-	 \\[mail-to]  move to To:	\\[mail-subject]  move to Subject:
-	 \\[mail-cc]  move to CC:	\\[mail-bcc]  move to BCC:
+	 \\[mail-to]  move to To:	\\[mail-subject]  move to Subj:
+	 \\[mail-bcc]  move to BCC:	\\[mail-cc]  move to CC:
 	 \\[mail-fcc]  move to FCC:	\\[mail-reply-to] move to Reply-To:
          \\[mail-mail-reply-to]  move to Mail-Reply-To:
          \\[mail-mail-followup-to] move to Mail-Followup-To:
-\\[mail-text]  mail-text (move to beginning of message text).
+\\[mail-text]  move to message text.
 \\[mail-signature]  mail-signature (insert `mail-signature-file' file).
 \\[mail-yank-original]  mail-yank-original (insert current message, in Rmail).
 \\[mail-fill-yanked-message]  mail-fill-yanked-message (fill what was yanked).
-\\[mail-sent-via]  mail-sent-via (add a Sent-via field for each To or CC).
+\\[mail-sent-via]  mail-sent-via (add a sent-via field for each To or CC).
 Turning on Mail mode runs the normal hooks `text-mode-hook' and
 `mail-mode-hook' (in that order).
 
@@ -24445,7 +24479,7 @@
 
 ;;;***
 
-;;;### (autoloads nil "simple" "simple.el" (17963 19313))
+;;;### (autoloads nil "simple" "simple.el" (17963 21011))
 ;;; Generated autoloads from simple.el
 (put 'fill-prefix 'safe-local-variable 'string-or-null-p)
 
@@ -24648,7 +24682,7 @@
 ;;;***
 
 ;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
-;;;;;;  "mail/smtpmail.el" (17888 36928))
+;;;;;;  "mail/smtpmail.el" (17963 21010))
 ;;; Generated autoloads from mail/smtpmail.el
 
 (autoload (quote smtpmail-send-it) "smtpmail" "\
@@ -25708,7 +25742,7 @@
 
 ;;;***
 
-;;;### (autoloads (locate-library) "subr" "subr.el" (17963 19313))
+;;;### (autoloads (locate-library) "subr" "subr.el" (17963 21011))
 ;;; Generated autoloads from subr.el
 
 (autoload (quote locate-library) "subr" "\
@@ -25762,7 +25796,7 @@
 
 ;;;***
 
-;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (17963 19313))
+;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (17963 21011))
 ;;; Generated autoloads from t-mouse.el
 
 (defvar t-mouse-mode nil "\
@@ -26591,7 +26625,7 @@
 ;;;***
 
 ;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el"
-;;;;;;  (17888 32279))
+;;;;;;  (17963 20867))
 ;;; Generated autoloads from emacs-lisp/testcover.el
 
 (autoload (quote testcover-this-defun) "testcover" "\
@@ -26601,7 +26635,7 @@
 
 ;;;***
 
-;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17963 18455))
+;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17963 21010))
 ;;; Generated autoloads from play/tetris.el
 
 (autoload (quote tetris) "tetris" "\
@@ -27577,7 +27611,7 @@
 
 ;;;### (autoloads (with-timeout run-with-idle-timer add-timeout run-with-timer
 ;;;;;;  run-at-time cancel-function-timers cancel-timer) "timer"
-;;;;;;  "emacs-lisp/timer.el" (17888 32279))
+;;;;;;  "emacs-lisp/timer.el" (17963 21006))
 ;;; Generated autoloads from emacs-lisp/timer.el
 
 (defalias (quote disable-timeout) (quote cancel-timer))
@@ -27597,11 +27631,16 @@
 (autoload (quote run-at-time) "timer" "\
 Perform an action at time TIME.
 Repeat the action every REPEAT seconds, if REPEAT is non-nil.
-TIME should be a string like \"11:23pm\", nil meaning now, a number of seconds
-from now, a value from `current-time', or t (with non-nil REPEAT)
-meaning the next integral multiple of REPEAT.
-REPEAT may be an integer or floating point number.
-The action is to call FUNCTION with arguments ARGS.
+TIME should be one of: a string giving an absolute time like
+\"11:23pm\" (the acceptable formats are those recognized by
+`diary-entry-time'; note that such times are interpreted as times
+today, even if in the past); a string giving a relative time like
+\"2 hours 35 minutes\" (the acceptable formats are those
+recognized by `timer-duration'); nil meaning now; a number of
+seconds from now; a value from `encode-time'; or t (with non-nil
+REPEAT) meaning the next integral multiple of REPEAT.  REPEAT may
+be an integer or floating point number.  The action is to call
+FUNCTION with arguments ARGS.
 
 This function returns a timer object which you can use in `cancel-timer'.
 
@@ -27700,7 +27739,7 @@
 ;;;***
 
 ;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
-;;;;;;  "tmm.el" (17888 32281))
+;;;;;;  "tmm.el" (17963 21011))
 ;;; Generated autoloads from tmm.el
  (define-key global-map "\M-`" 'tmm-menubar)
  (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -27972,7 +28011,7 @@
 ;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
 ;;;;;;  tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
 ;;;;;;  tramp-file-name-handler tramp-completion-file-name-regexp
-;;;;;;  tramp-file-name-regexp) "tramp" "net/tramp.el" (17963 19047))
+;;;;;;  tramp-file-name-regexp) "tramp" "net/tramp.el" (17963 21006))
 ;;; Generated autoloads from net/tramp.el
 
 (defvar tramp-unified-filenames (not (featurep (quote xemacs))) "\
@@ -28056,11 +28095,15 @@
 Invoke tramp file name completion handler.
 Falls back to normal file name handler if no tramp file name handler exists." (let ((fn (assoc operation tramp-completion-file-name-handler-alist))) (if fn (save-match-data (apply (cdr fn) args)) (tramp-completion-run-real-handler operation args))))
 
-(defsubst tramp-register-file-name-handlers nil "\
-Add tramp file name handlers to `file-name-handler-alist'." (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (when (or (not (boundp (quote partial-completion-mode))) (symbol-value (quote partial-completion-mode)) (featurep (quote ido))) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t)) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
+(defsubst tramp-register-file-name-handler nil "\
+Add tramp file name handler to `file-name-handler-alist'." (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
+
+(defsubst tramp-register-completion-file-name-handler nil "\
+Add tramp completion file name handler to `file-name-handler-alist'." (when (or (not (boundp (quote partial-completion-mode))) (symbol-value (quote partial-completion-mode)) (featurep (quote ido))) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t)) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
+(tramp-register-file-name-handler)
 (add-hook
  'after-init-hook
- '(lambda () (tramp-register-file-name-handlers)))
+ '(lambda () (tramp-register-completion-file-name-handler)))
 
 (autoload (quote tramp-unload-file-name-handlers) "tramp" "\
 Not documented
@@ -28774,7 +28817,7 @@
 ;;;***
 
 ;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p
-;;;;;;  url-http) "url-http" "url/url-http.el" (17888 36646))
+;;;;;;  url-http) "url-http" "url/url-http.el" (17963 21008))
 ;;; Generated autoloads from url/url-http.el
 
 (autoload (quote url-http) "url-http" "\
@@ -29487,7 +29530,7 @@
 
 ;;;***
 
-;;;### (autoloads nil "vc-arch" "vc-arch.el" (17888 32281))
+;;;### (autoloads nil "vc-arch" "vc-arch.el" (17963 20999))
 ;;; Generated autoloads from vc-arch.el
  (defun vc-arch-registered (file)
   (if (vc-find-root file "{arch}/=tagging-method")
@@ -29518,7 +29561,7 @@
 ;;;***
 
 ;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el"
-;;;;;;  (17888 32281))
+;;;;;;  (17963 20867))
 ;;; Generated autoloads from vc-rcs.el
 
 (defvar vc-rcs-master-templates (quote ("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
@@ -30208,8 +30251,8 @@
 
 ;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame
 ;;;;;;  view-buffer-other-window view-buffer view-file-other-frame
-;;;;;;  view-file-other-window view-file) "view" "view.el" (17888
-;;;;;;  32281))
+;;;;;;  view-file-other-window view-file) "view" "view.el" (17963
+;;;;;;  20999))
 ;;; Generated autoloads from view.el
 
 (defvar view-mode nil "\
@@ -30372,7 +30415,7 @@
 \\[View-leave]	quit View mode and maybe switch buffers, but don't kill this buffer.
 \\[View-kill-and-leave]	quit View mode, kill current buffer and go back to other buffer.
 
-The effect of \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered.  If it was
+The effect of \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered.  If it was
 entered by view-file, view-file-other-window, view-file-other-frame, or
 \\[dired-view-file] (\\[view-file], \\[view-file-other-window],
 \\[view-file-other-frame], or the Dired mode v command),
@@ -30380,7 +30423,7 @@
 If view-mode was entered from another buffer, by \\[view-buffer],
 \\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file],
 \\[view-file-other-window], or \\[view-file-other-frame],
-then \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
+then \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
 
 Entry to view-mode runs the normal hook `view-mode-hook'.
 
@@ -30435,7 +30478,7 @@
 ;;;***
 
 ;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el"
-;;;;;;  (17888 32279))
+;;;;;;  (17963 20865))
 ;;; Generated autoloads from emulation/viper.el
 
 (autoload (quote toggle-viper-mode) "viper" "\
@@ -30452,7 +30495,7 @@
 ;;;***
 
 ;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el"
-;;;;;;  (17888 32279))
+;;;;;;  (17963 21006))
 ;;; Generated autoloads from emacs-lisp/warnings.el
 
 (defvar warning-prefix-function nil "\
@@ -30499,8 +30542,9 @@
 	      but raise suspicion of a possible problem.
 :debug     -- info for debugging only.
 
-BUFFER-NAME, if specified, is the name of the buffer for logging the
-warning.  By default, it is `*Warnings*'.
+BUFFER-NAME, if specified, is the name of the buffer for logging
+the warning.  By default, it is `*Warnings*'.  If this function
+has to create the buffer, it disables undo in the buffer.
 
 See the `warnings' custom group for user customization features.
 
@@ -30607,7 +30651,7 @@
 ;;;;;;  whitespace-buffer whitespace-toggle-ateol-check whitespace-toggle-spacetab-check
 ;;;;;;  whitespace-toggle-indent-check whitespace-toggle-trailing-check
 ;;;;;;  whitespace-toggle-leading-check) "whitespace" "whitespace.el"
-;;;;;;  (17888 32281))
+;;;;;;  (17963 20867))
 ;;; Generated autoloads from whitespace.el
 
 (autoload (quote whitespace-toggle-leading-check) "whitespace" "\
@@ -30843,7 +30887,7 @@
 ;;;***
 
 ;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman"
-;;;;;;  "woman.el" (17963 19299))
+;;;;;;  "woman.el" (17963 21006))
 ;;; Generated autoloads from woman.el
 
 (autoload (quote woman) "woman" "\
@@ -31017,8 +31061,8 @@
 
 ;;;***
 
-;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17888
-;;;;;;  32281))
+;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17963
+;;;;;;  21011))
 ;;; Generated autoloads from xt-mouse.el
 
 (defvar xterm-mouse-mode nil "\
@@ -31088,7 +31132,7 @@
 
 ;;;***
 
-;;;### (autoloads (zone) "zone" "play/zone.el" (17888 32281))
+;;;### (autoloads (zone) "zone" "play/zone.el" (17963 21010))
 ;;; Generated autoloads from play/zone.el
 
 (autoload (quote zone) "zone" "\
@@ -31228,7 +31272,7 @@
 ;;;;;;  "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el"
 ;;;;;;  "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el"
 ;;;;;;  "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el"
-;;;;;;  "x-dnd.el") (17963 20717 345010))
+;;;;;;  "x-dnd.el") (17963 21179 886390))
 
 ;;;***
 
--- a/lisp/loadhist.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/loadhist.el	Sun Apr 22 12:42:47 2007 +0000
@@ -111,17 +111,18 @@
 	  (setq dependents (cons (car x) dependents))))
     dependents))
 
-(defun read-feature (prompt)
-  "Read a feature name \(string\) from the minibuffer.
-Prompt with PROMPT and completing from `features', and
-return the feature \(symbol\)."
-  (intern (completing-read prompt
-			   (mapcar (lambda (feature)
-				     (list (symbol-name feature)))
-				   features)
-			   ;; Complete only features loaded from a file
-			   #'(lambda (f) (feature-file (intern (car f))))
-			   t)))
+(defun read-feature (prompt &optional loaded-p)
+  "Read feature name from the minibuffer, prompting with string PROMPT.
+If optional second arg LOADED-P is non-nil, the feature must be loaded
+from a file."
+  (intern
+   (completing-read prompt
+		    (cons nil features)
+		    (and loaded-p
+			 #'(lambda (f)
+			     (and f	; ignore nil
+				  (feature-file f))))
+		    loaded-p)))
 
 (defvaralias 'loadhist-hook-functions 'unload-feature-special-hooks)
 (defvar unload-feature-special-hooks
@@ -162,7 +163,10 @@
 variable `unload-hook-features-list' and could remove features from it
 in the event that the package has done something normally-ill-advised,
 such as redefining an Emacs function."
-  (interactive (list (read-feature "Feature: ") current-prefix-arg))
+  (interactive
+   (list
+    (read-feature "Unload feature: " t)
+    current-prefix-arg))
   (unless (featurep feature)
     (error "%s is not a currently loaded feature" (symbol-name feature)))
   (unless force
--- a/lisp/mail/footnote.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/mail/footnote.el	Sun Apr 22 12:42:47 2007 +0000
@@ -267,14 +267,17 @@
 
 ;; Latin-1
 
-(defconst footnote-latin-regexp "¹²³ºª§¶"
+(defconst footnote-latin-string "¹²³ºª§¶"
+  "String of Latin-1 footnoting characters.")
+
+(defconst footnote-latin-regexp (concat "[" footnote-latin-string "]")
   "Regexp for Latin-1 footnoting characters.")
 
 (defun Footnote-latin (n)
   "Latin-1 footnote style.
 Use a range of Latin-1 non-ASCII characters for footnoting."
-  (string (aref footnote-latin-regexp
-		(mod (1- n) (length footnote-latin-regexp)))))
+  (string (aref footnote-latin-string
+		(mod (1- n) (length footnote-latin-string)))))
 
 ;;; list of all footnote styles
 (defvar footnote-style-alist
@@ -291,14 +294,18 @@
 exciting styles.")
 
 (defcustom footnote-style 'numeric
-  "*Style used for footnoting.
+  "*Default style used for footnoting.
 numeric == 1, 2, 3, ...
 english-lower == a, b, c, ...
 english-upper == A, B, C, ...
 roman-lower == i, ii, iii, iv, v, ...
 roman-upper == I, II, III, IV, V, ...
 latin == ¹ ² ³ º ª § ¶
-See also variables `footnote-start-tag' and `footnote-end-tag'."
+See also variables `footnote-start-tag' and `footnote-end-tag'.
+
+Customizing this variable has no effect on buffers already
+displaying footnotes.  You can change the style of existing
+buffers using the command `Footnote-set-style'."
   :type (cons 'choice (mapcar (lambda (x) (list 'const (car x)))
 			      footnote-style-alist))
   :group 'footnote)
@@ -654,7 +661,7 @@
       (while (< i notes)
 	(setq alist-ptr (nth i footnote-pointer-marker-alist))
 	(setq alist-txt (nth i footnote-text-marker-alist))
-	(unless (eq (1+ i) (car alist-ptr))
+	(unless (= (1+ i) (car alist-ptr))
 	  (Footnote-renumber (car alist-ptr) (1+ i) alist-ptr alist-txt))
 	(setq i (1+ i))))))
 
--- a/lisp/mail/rmail.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/mail/rmail.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1959,9 +1959,13 @@
 			(base64-header-field-end
 			 (save-excursion
 			   (goto-char start)
-			   (re-search-forward
-			    "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
-			    header-end t))))
+			   (and (re-search-forward
+				 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
+				 header-end t)
+				;; Don't try to decode non-text data.
+				(re-search-forward
+				 "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
+				 header-end t)))))
 		   (if quoted-printable-header-field-end
 		       (save-excursion
 			 (unless
@@ -2061,10 +2065,16 @@
 			  "^content-transfer-encoding:\\(\n?[\t ]\\)*quoted-printable\\(\n?[\t ]\\)*"
 			  header-end t)))
 		      (base64-header-field-end
-		       (save-excursion
-			 (re-search-forward
-			  "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
-			  header-end t)))
+		       (and
+			(save-excursion
+			  (re-search-forward
+			   "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
+			   header-end t))
+			;; Don't decode non-text data.
+			(save-excursion
+			  (re-search-forward
+			   "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
+			   header-end t))))
 		      (size
 		       ;; Get the numeric value from the Content-Length field.
 		       (save-excursion
--- a/lisp/mail/sendmail.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/mail/sendmail.el	Sun Apr 22 12:42:47 2007 +0000
@@ -620,16 +620,16 @@
 \\[mail-send-and-exit]  mail-send-and-exit (send the message and exit)
 
 Here are commands that move to a header field (and create it if there isn't):
-	 \\[mail-to]  move to To:	\\[mail-subject]  move to Subject:
-	 \\[mail-cc]  move to CC:	\\[mail-bcc]  move to BCC:
+	 \\[mail-to]  move to To:	\\[mail-subject]  move to Subj:
+	 \\[mail-bcc]  move to BCC:	\\[mail-cc]  move to CC:
 	 \\[mail-fcc]  move to FCC:	\\[mail-reply-to] move to Reply-To:
          \\[mail-mail-reply-to]  move to Mail-Reply-To:
          \\[mail-mail-followup-to] move to Mail-Followup-To:
-\\[mail-text]  mail-text (move to beginning of message text).
+\\[mail-text]  move to message text.
 \\[mail-signature]  mail-signature (insert `mail-signature-file' file).
 \\[mail-yank-original]  mail-yank-original (insert current message, in Rmail).
 \\[mail-fill-yanked-message]  mail-fill-yanked-message (fill what was yanked).
-\\[mail-sent-via]  mail-sent-via (add a Sent-via field for each To or CC).
+\\[mail-sent-via]  mail-sent-via (add a sent-via field for each To or CC).
 Turning on Mail mode runs the normal hooks `text-mode-hook' and
 `mail-mode-hook' (in that order)."
   (make-local-variable 'mail-reply-action)
@@ -1392,7 +1392,7 @@
       nil)))
 
 (defun mail-text ()
-  "Move point to beginning of message text."
+  "Move point to beginning of text field."
   (interactive)
   (expand-abbrev)
   (goto-char (mail-text-start)))
--- a/lisp/mail/smtpmail.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/mail/smtpmail.el	Sun Apr 22 12:42:47 2007 +0000
@@ -691,20 +691,22 @@
 			  (>= (car response-code) 400))
 		      (throw 'done nil)))
 	      (dolist (line (cdr (cdr response-code)))
-		(let ((name (mapcar (lambda (s) (intern (downcase s)))
-				    (split-string (substring line 4) "[ ]"))))
+		(let ((name
+		       (with-case-table ascii-case-table
+			 (mapcar (lambda (s) (intern (downcase s)))
+				 (split-string (substring line 4) "[ ]")))))
 		  (and (eq (length name) 1)
 		       (setq name (car name)))
-		    (and name
+		  (and name
 		       (cond ((memq (if (consp name) (car name) name)
 				    '(verb xvrb 8bitmime onex xone
-						  expn size dsn etrn
-				      enhancedstatuscodes
-				      help xusr
-				      auth=login auth starttls))
-				(setq supported-extensions
-				      (cons name supported-extensions)))
-			       (smtpmail-warn-about-unknown-extensions
+					   expn size dsn etrn
+					   enhancedstatuscodes
+					   help xusr
+					   auth=login auth starttls))
+			      (setq supported-extensions
+				    (cons name supported-extensions)))
+			     (smtpmail-warn-about-unknown-extensions
 			      (message "Unknown extension %s" name)))))))
 
 	    (if (and do-starttls
--- a/lisp/man.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/man.el	Sun Apr 22 12:42:47 2007 +0000
@@ -628,7 +628,14 @@
     (setq Man-support-local-filenames
           (with-temp-buffer
             (and (equal (condition-case nil
-                            (call-process manual-program nil t nil "--help")
+			    (let ((default-directory
+				    ;; Assure that `default-directory' exists
+				    ;; and is readable.
+ 				    (if (and (file-directory-p default-directory)
+ 					     (file-readable-p default-directory))
+ 					default-directory
+ 				      (expand-file-name "~/"))))
+ 			      (call-process manual-program nil t nil "--help"))
                           (error nil))
                         0)
                  (progn
--- a/lisp/menu-bar.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/menu-bar.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1201,8 +1201,8 @@
   '(menu-item "Compile..." compile
 	      :help "Invoke compiler or Make, view compilation errors"))
 (define-key menu-bar-tools-menu [grep]
-  '(menu-item "Search Files (with grep)..." grep
-	      :help "Search files for strings or regexps (with grep)"))
+  '(menu-item "Search Files (Grep)..." grep
+	      :help "Search files for strings or regexps (with Grep)"))
 
 
 ;; The "Help" menu items
--- a/lisp/mouse.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/mouse.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1521,7 +1521,11 @@
     (with-current-buffer (window-buffer (posn-window posn))
       (if (numberp (posn-point posn))
 	  (setq beg (posn-point posn)))
-      (move-overlay mouse-secondary-overlay beg (posn-point end)))))
+      (move-overlay mouse-secondary-overlay beg (posn-point end))
+      (x-set-selection
+       'SECONDARY
+       (buffer-substring (overlay-start mouse-secondary-overlay)
+			 (overlay-end mouse-secondary-overlay))))))
 
 (defun mouse-drag-secondary (start-event)
   "Set the secondary selection to the text that the mouse is dragged over.
--- a/lisp/net/tls.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/net/tls.el	Sun Apr 22 12:42:47 2007 +0000
@@ -125,12 +125,17 @@
  with any buffer
 Third arg is name of the host to connect to, or its IP address.
 Fourth arg PORT is an integer specifying a port to connect to."
-  (let ((cmds tls-program) cmd done)
+  (let ((cmds tls-program)
+	(use-temp-buffer (null buffer))
+	process	cmd done)
+    (if use-temp-buffer
+	(setq buffer (generate-new-buffer " TLS")))
     (message "Opening TLS connection to `%s'..." host)
     (while (and (not done) (setq cmd (pop cmds)))
       (message "Opening TLS connection with `%s'..." cmd)
-      (let* ((process-connection-type tls-process-connection-type)
-	     (process (start-process
+      (let ((process-connection-type tls-process-connection-type)
+	    response)
+	(setq process (start-process
 		       name buffer shell-file-name shell-command-switch
 		       (format-spec
 			cmd
@@ -139,7 +144,6 @@
 			 ?p (if (integerp port)
 				(int-to-string port)
 			      port)))))
-	     response)
 	(while (and process
 		    (memq (process-status process) '(open run))
 		    (save-excursion
@@ -155,6 +159,9 @@
 	  (delete-process process))))
     (message "Opening TLS connection to `%s'...%s"
 	     host (if done "done" "failed"))
+    (when use-temp-buffer
+      (if done (set-process-buffer process nil))
+      (kill-buffer buffer))
     done))
 
 (provide 'tls)
--- a/lisp/net/tramp.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/net/tramp.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4422,10 +4422,20 @@
       (tramp-completion-run-real-handler operation args)))))
 
 ;;;###autoload
-(defsubst tramp-register-file-name-handlers ()
-  "Add tramp file name handlers to `file-name-handler-alist'."
+(defsubst tramp-register-file-name-handler ()
+  "Add tramp file name handler to `file-name-handler-alist'."
   (add-to-list 'file-name-handler-alist
 	       (cons tramp-file-name-regexp 'tramp-file-name-handler))
+  ;; If jka-compr is already loaded, move it to the front of
+  ;; `file-name-handler-alist'.
+  (let ((jka (rassoc 'jka-compr-handler file-name-handler-alist)))
+    (when jka
+      (setq file-name-handler-alist
+	    (cons jka (delete jka file-name-handler-alist))))))
+
+;;;###autoload
+(defsubst tramp-register-completion-file-name-handler ()
+  "Add tramp completion file name handler to `file-name-handler-alist'."
   ;; `partial-completion-mode' is unknown in XEmacs.  So we should
   ;; load it unconditionally there.  In the GNU Emacs case, method/
   ;; user/host name completion shall be bound to `partial-completion-mode'.
@@ -4443,13 +4453,18 @@
       (setq file-name-handler-alist
 	    (cons jka (delete jka file-name-handler-alist))))))
 
+;; `tramp-file-name-handler' must be registered before evaluation of
+;; site-start and init files, because there might exist remote files
+;; already, f.e. files kept via recentf-mode.
+;;;###autoload(tramp-register-file-name-handler)
 ;; During autoload, it shall be checked whether
-;; `partial-completion-mode' is active.  Therefore registering will be
-;; delayed.
+;; `partial-completion-mode' is active.  Therefore registering of
+;; `tramp-completion-file-name-handler' will be delayed.
 ;;;###autoload(add-hook
 ;;;###autoload 'after-init-hook
-;;;###autoload '(lambda () (tramp-register-file-name-handlers)))
-(tramp-register-file-name-handlers)
+;;;###autoload '(lambda () (tramp-register-completion-file-name-handler)))
+(tramp-register-file-name-handler)
+(tramp-register-completion-file-name-handler)
 
 ;;;###autoload
 (defun tramp-unload-file-name-handlers ()
--- a/lisp/newcomment.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/newcomment.el	Sun Apr 22 12:42:47 2007 +0000
@@ -391,7 +391,9 @@
 		 pt (or limit (point-max)) nil nil
 		 (list nil nil nil (nth 3 s) nil nil nil nil)
 		 t)))
-      (if (not (and (nth 8 s) (not (nth 3 s))))
+      (if (or (not (and (nth 8 s) (not (nth 3 s))))
+	      ;; Make sure the comment starts after PT.
+	      (< (nth 8 s) pt))
 	  (unless noerror (error "No comment"))
 	;; We found the comment.
 	(let ((pos (point))
--- a/lisp/outline.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/outline.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1000,7 +1000,8 @@
 	  (error "No following same-level heading"))))))
 
 (defun outline-get-next-sibling ()
-  "Move to next heading of the same level, and return point or nil if none."
+  "Move to next heading of the same level, and return point.
+If there is no such heading, return nil."
   (let ((level (funcall outline-level)))
     (outline-next-visible-heading 1)
     (while (and (not (eobp)) (> (funcall outline-level) level))
@@ -1026,15 +1027,18 @@
 	  (error "No previous same-level heading"))))))
 
 (defun outline-get-last-sibling ()
-  "Move to previous heading of the same level, and return point or nil if none."
-  (let ((level (funcall outline-level)))
+  "Move to previous heading of the same level, and return point.
+If there is no such heading, return nil."
+  (let ((opoint (point))
+	(level (funcall outline-level)))
     (outline-previous-visible-heading 1)
-    (while (and (> (funcall outline-level) level)
-		(not (bobp)))
-      (outline-previous-visible-heading 1))
-    (if (< (funcall outline-level) level)
-	nil
-        (point))))
+    (when (and (/= (point) opoint) (outline-on-heading-p))
+      (while (and (> (funcall outline-level) level)
+		  (not (bobp)))
+	(outline-previous-visible-heading 1))
+      (if (< (funcall outline-level) level)
+	  nil
+        (point)))))
 
 (defun outline-headers-as-kill (beg end)
   "Save the visible outline headers in region at the start of the kill ring.
--- a/lisp/pcomplete.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/pcomplete.el	Sun Apr 22 12:42:47 2007 +0000
@@ -33,7 +33,6 @@
 ;; To use pcomplete with shell-mode, for example, you will need the
 ;; following in your .emacs file:
 ;;
-;;   (load "pcmpl-auto")
 ;;   (add-hook 'shell-mode-hook 'pcomplete-shell-setup)
 ;;
 ;; Most of the code below simply provides support mechanisms for
@@ -947,10 +946,9 @@
 (unless (fboundp 'event-matches-key-specifier-p)
   (defalias 'event-matches-key-specifier-p 'eq))
 
-(if (fboundp 'read-event)
-    (defsubst pcomplete-read-event (&optional prompt)
-      (read-event prompt))
-  (defsubst pcomplete-read-event (&optional prompt)
+(defun pcomplete-read-event (&optional prompt)
+  (if (fboundp 'read-event)
+      (read-event prompt)
     (aref (read-key-sequence prompt) 0)))
 
 (unless (fboundp 'event-basic-type)
--- a/lisp/play/5x5.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/play/5x5.el	Sun Apr 22 12:42:47 2007 +0000
@@ -519,6 +519,8 @@
       (y-or-n-p prompt)
     t))
 
+(random t)
+
 (provide '5x5)
 
 ;;; arch-tag: ec4dabd5-572d-41ea-b48c-ec5ce0d68fa9
--- a/lisp/play/animate.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/play/animate.el	Sun Apr 22 12:42:47 2007 +0000
@@ -189,5 +189,9 @@
   (animate-string "my sunshine" 18 34)
   (animate-string "to stay!" 19 34))
 
+(random t)
+
+(provide 'animate)
+
 ;;; arch-tag: 275289a3-6ac4-41da-b527-a1147045392f
 ;;; animate.el ends here
--- a/lisp/play/dissociate.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/play/dissociate.el	Sun Apr 22 12:42:47 2007 +0000
@@ -99,6 +99,8 @@
 		 (funcall search-function overlap opoint t))))))
       (sit-for 0))))
 
+(random t)
+
 (provide 'dissociate)
 
 ;;; arch-tag: 90d197d1-409b-45c5-a0b5-fbfb2e06334f
--- a/lisp/play/doctor.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/play/doctor.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1657,6 +1657,8 @@
 
 (defun doctor-chat () (doctor-type (doc$ chatlst)))
 
+(random t)
+
 (provide 'doctor)
 
 ;; arch-tag: 579380f6-4902-4ea5-bccb-6339e30e1257
--- a/lisp/play/gomoku.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/play/gomoku.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1209,6 +1209,8 @@
   (move-to-column (+ gomoku-x-offset
 		     (* gomoku-square-width (1- gomoku-board-width)))))
 
+(random t)
+
 (provide 'gomoku)
 
 ;;; arch-tag: b1b8205e-77fc-4597-b373-3ea2c04311eb
--- a/lisp/play/landmark.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/play/landmark.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1705,6 +1705,8 @@
 ;;;allout-layout: (0 : -1 -1 0)
 ;;;End:
 
+(random t)
+
 (provide 'landmark)
 
 ;;; arch-tag: ae5031be-96e6-459e-a3df-1df53117d3f2
--- a/lisp/play/tetris.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/play/tetris.el	Sun Apr 22 12:42:47 2007 +0000
@@ -652,6 +652,8 @@
   (tetris-mode)
   (tetris-start-game))
 
+(random t)
+
 (provide 'tetris)
 
 ;;; arch-tag: fb780d53-3ff0-49f0-8e19-f7f13cf2d49e
--- a/lisp/play/zone.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/play/zone.el	Sun Apr 22 12:42:47 2007 +0000
@@ -692,6 +692,7 @@
       (life (or zone-pgm-random-life-wait (random 4)))
       (kill-buffer nil))))
 
+(random t)
 
 ;;;;;;;;;;;;;;;
 (provide 'zone)
--- a/lisp/progmodes/cc-awk.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-awk.el	Sun Apr 22 12:42:47 2007 +0000
@@ -988,6 +988,7 @@
 Note that this function might do hidden buffer changes.  See the
 comment at the start of cc-engine.el for more info."
   (interactive "p")
+  (or arg (setq arg 1))
   (save-match-data
     (c-save-buffer-state                ; ensures the buffer is writable.
      nil
--- a/lisp/progmodes/cc-cmds.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-cmds.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1262,11 +1262,11 @@
 		     (backward-char)
 		     (skip-chars-backward " \t")
 		     (setq beg (point))
-		     (c-save-buffer-state () (c-on-identifier))
-		     ;; Don't add a space into #define FOO()....
-		     (not (and (c-beginning-of-macro)
-			       (c-forward-over-cpp-define-id)
-			       (eq (point) beg)))))
+		     (and (c-save-buffer-state () (c-on-identifier))
+                          ;; Don't add a space into #define FOO()....
+                          (not (and (c-beginning-of-macro)
+                                    (c-forward-over-cpp-define-id)
+                                    (eq (point) beg))))))
 	      (save-excursion
 		(delete-region beg end)
 		(goto-char beg)
@@ -1477,9 +1477,7 @@
     (c-syntactic-re-search-forward "{")
     (backward-char)
     (setq n (1- n)))
-   (;; (or (eq where 'at-header) (eq where 'outwith-function)
-;; 	(eq where 'at-function-end) (eq where 'in-trailer))
-    (memq where '(at-header outwith-function at-function-end in-trailer))
+   ((memq where '(at-header outwith-function at-function-end in-trailer))
     (c-syntactic-skip-backward "^}")
     (when (eq (char-before) ?\})
       (backward-sexp)
@@ -1513,7 +1511,8 @@
   (or arg (setq arg 1))
 
   (c-save-buffer-state
-      ((start (point))
+      (beginning-of-defun-function end-of-defun-function
+       (start (point))
        where paren-state pos)
 
     ;; Move back out of any macro/comment/string we happen to be in.
@@ -1526,8 +1525,7 @@
     (if (< arg 0)
 	;; Move forward to the closing brace of a function.
 	(progn
-	  (if ;; (or (eq where 'at-function-end) (eq where 'outwith-function))
-	      (memq where '(at-function-end outwith-function))
+	  (if (memq where '(at-function-end outwith-function))
 	      (setq arg (1+ arg)))
 	  (if (< arg 0)
 	      (setq arg (c-forward-to-nth-EOF-} (- arg) where)))
@@ -1587,13 +1585,11 @@
    ((eq where 'in-trailer)
     (c-syntactic-skip-backward "^}")
     (setq n (1- n)))
-   (;; (or (eq where 'at-function-end) (eq where 'outwith-function)
-;; 	(eq where 'at-header) (eq where 'in-header))
-    (memq where '(at-function-end outwith-function at-header in-header))
-    (c-syntactic-re-search-forward "{")
-    (backward-char)
-    (forward-sexp)
-    (setq n (1- n)))
+   ((memq where '(at-function-end outwith-function at-header in-header))
+    (when (c-syntactic-re-search-forward "{" nil 'eob)
+      (backward-char)
+      (forward-sexp)
+      (setq n (1- n))))
    (t (error "c-forward-to-nth-EOF-}: `where' is %s" where)))
 
   ;; Each time round the loop, go forward to a "}" at the outermost level.
@@ -1618,7 +1614,8 @@
   (or arg (setq arg 1))
 
   (c-save-buffer-state
-      ((start (point))
+      (beginning-of-defun-function end-of-defun-function
+       (start (point))
        where paren-state pos)
 
     ;; Move back out of any macro/comment/string we happen to be in.
@@ -1631,15 +1628,12 @@
     (if (< arg 0)
 	;; Move backwards to the } of a function
 	(progn
-	  (if ;; (or (eq where 'at-header) (eq where 'outwith-function))
-	      (memq where '(at-header outwith-function))
+	  (if (memq where '(at-header outwith-function))
 	      (setq arg (1+ arg)))
 	  (if (< arg 0)
 	      (setq arg (c-backward-to-nth-BOF-{ (- arg) where)))
-	  (when (and (= arg 0)
-		     (c-syntactic-skip-backward "^}")
-		     (eq (char-before) ?\}))
-	    t))
+	  (if (= arg 0)
+	      (c-syntactic-skip-backward "^}")))
 
       ;; Move forward to the } of a function
       (if (> arg 0)
--- a/lisp/progmodes/cc-defs.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-defs.el	Sun Apr 22 12:42:47 2007 +0000
@@ -74,12 +74,12 @@
 ; (eval-after-load "font-lock"  ; 2006-07-09.  font-lock is now preloaded
 ;   '
 (if (and (not (featurep 'cc-fix)) ; only load the file once.
-	    (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS
-			       ; to make the call to f-l-c-k throw an error.
-            (let (font-lock-keywords)
-              (font-lock-compile-keywords '("\\<\\>"))
-	      font-lock-keywords))     ; did the previous call foul this up?
-       (load "cc-fix")) ;)
+	 (featurep 'xemacs)	; There is now (2005/12) code in GNU Emacs CVS
+				; to make the call to f-l-c-k throw an error.
+	 (let (font-lock-keywords)
+	   (font-lock-compile-keywords '("\\<\\>"))
+	   font-lock-keywords))     ; did the previous call foul this up?
+    (load "cc-fix")) ;)
 
 ;; The above takes care of the delayed loading, but this is necessary
 ;; to ensure correct byte compilation.
@@ -708,7 +708,8 @@
 	    ;; c-parse-state to between 3 and 60 times faster when
 	    ;; braces are hung.  It can also degrade performance by
 	    ;; about as much when braces are not hung.
-	    '(let (pos)
+	    '(let (beginning-of-defun-function end-of-defun-function
+					       pos)
 	       (while (not pos)
 		 (save-restriction
 		   (widen)
@@ -731,7 +732,8 @@
 		  ))
 	       (goto-char pos)))
        ;; Emacs, which doesn't have buffer-syntactic-context-depth
-       (beginning-of-defun))
+       (let (beginning-of-defun-function end-of-defun-function)
+	 (beginning-of-defun)))
      ;; if defun-prompt-regexp is non-nil, b-o-d won't leave us at the
      ;; open brace.
      (and defun-prompt-regexp
--- a/lisp/progmodes/cc-engine.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-engine.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1917,9 +1917,8 @@
   ;; Is the region (beg end) WS, and is there WS (or BOB/EOB) next to the
   ;; region?  This is a "heuristic" function.  .....
   ;; 
-  ;; The motivation for the second bit is to check whether the removal of this
-  ;; space is to check whether removing this region would coalesce two
-  ;; symbols.
+  ;; The motivation for the second bit is to check whether removing this
+  ;; region would coalesce two symbols.
   ;;
   ;; FIXME!!!  This function doesn't check virtual semicolons in any way.  Be
   ;; careful about using this function for, e.g. AWK.  (2007/3/7)
@@ -5372,7 +5371,7 @@
 	  ;; True if there's a prefix match outside the outermost
 	  ;; paren pair that surrounds the declarator.
 	  got-prefix-before-parens
-y	  ;; True if there's a suffix match outside the outermost
+	  ;; True if there's a suffix match outside the outermost
 	  ;; paren pair that surrounds the declarator.  The value is
 	  ;; the position of the first suffix match.
 	  got-suffix-after-parens
@@ -5878,19 +5877,23 @@
 
 (defun c-forward-label (&optional assume-markup preceding-token-end limit)
   ;; Assuming that point is at the beginning of a token, check if it starts a
-  ;; label and if so move over it and return t, otherwise don't move and
-  ;; return nil.  "Label" here means "most things with a colon".
+  ;; label and if so move over it and return non-nil (t in default situations,
+  ;; specific symbols (see below) for interesting situations), otherwise don't
+  ;; move and return nil.  "Label" here means "most things with a colon".
   ;;
   ;; More precisely, a "label" is regarded as one of:
-  ;; (i) a goto target like "foo:";
-  ;; (ii) A case label - either the entire construct "case FOO:" or just the
-  ;;   bare "case", should the colon be missing;
-  ;; (iii) a keyword which needs a colon, like "default:" or "private:";
+  ;; (i) a goto target like "foo:" - returns the symbol `goto-target';
+  ;; (ii) A case label - either the entire construct "case FOO:", or just the
+  ;;   bare "case", should the colon be missing.  We return t;
+  ;; (iii) a keyword which needs a colon, like "default:" or "private:";  We
+  ;;   return t;
   ;; (iv) One of QT's "extended" C++ variants of
-  ;; "private:"/"protected:"/"public:"/"more:" looking like "public slots:".
+  ;;   "private:"/"protected:"/"public:"/"more:" looking like "public slots:".
+  ;;   Returns the symbol `qt-2kwds-colon'.
+  ;; (v) QT's construct "signals:".  Returns the symbol `qt-1kwd-colon'.
   ;; (v) One of the keywords matched by `c-opt-extra-label-key' (without any
   ;;   colon).  Currently (2006-03), this applies only to Objective C's
-  ;;   keywords "@private", "@protected", and "@public".
+  ;;   keywords "@private", "@protected", and "@public".  Returns t.
   ;;
   ;; One of the things which will NOT be recognised as a label is a bit-field
   ;; element of a struct, something like "int foo:5".
@@ -5919,8 +5922,10 @@
   ;; This function might do hidden buffer changes.
 
   (let ((start (point))
+	label-end
 	qt-symbol-idx
-	macro-start)			; if we're in one.
+	macro-start			; if we're in one.
+	label-type)
     (cond
      ;; "case" or "default" (Doesn't apply to AWK). 
      ((looking-at c-label-kwds-regexp)
@@ -5933,25 +5938,26 @@
 
 	;; Find the label end.
 	(goto-char kwd-end)
-	(if (and (c-syntactic-re-search-forward
-		  ;; Stop on chars that aren't allowed in expressions,
-		  ;; and on operator chars that would be meaningless
-		  ;; there.  FIXME: This doesn't cope with ?: operators.
-		  "[;{=,@]\\|\\(\\=\\|[^:]\\):\\([^:]\\|\\'\\)"
-		  limit t t nil 1)
-		 (match-beginning 2))
-
-	    (progn
-	      (goto-char (match-beginning 2)) ; just after the :
-	      (c-put-c-type-property (1- (point)) 'c-decl-end)
-	      t)
-
-	  ;; It's an unfinished label.  We consider the keyword enough
-	  ;; to recognize it as a label, so that it gets fontified.
-	  ;; Leave the point at the end of it, but don't put any
-	  ;; `c-decl-end' marker.
-	  (goto-char kwd-end)
-	  t)))
+	(setq label-type
+	      (if (and (c-syntactic-re-search-forward
+			;; Stop on chars that aren't allowed in expressions,
+			;; and on operator chars that would be meaningless
+			;; there.  FIXME: This doesn't cope with ?: operators.
+			"[;{=,@]\\|\\(\\=\\|[^:]\\):\\([^:]\\|\\'\\)"
+			limit t t nil 1)
+		       (match-beginning 2))
+
+		  (progn		; there's a proper :
+		    (goto-char (match-beginning 2)) ; just after the :
+		    (c-put-c-type-property (1- (point)) 'c-decl-end)
+		    t)
+
+	      ;; It's an unfinished label.  We consider the keyword enough
+	      ;; to recognize it as a label, so that it gets fontified.
+	      ;; Leave the point at the end of it, but don't put any
+	      ;; `c-decl-end' marker.
+		(goto-char kwd-end)
+		t))))
 
      ;; @private, @protected, @public, in Objective C, or similar.
      ((and c-opt-extra-label-key
@@ -5963,7 +5969,7 @@
       (when c-record-type-identifiers
 	(c-record-ref-id (cons (match-beginning 1) (point))))
       (c-put-c-type-property (1- (point)) 'c-decl-end)
-      t)
+      (setq label-type t))
 
      ;; All other cases of labels.
      ((and c-recognize-colon-labels	; nil for AWK and IDL, otherwise t.
@@ -6039,26 +6045,49 @@
 			 (c-forward-syntactic-ws)
 			 (c-forward-label nil pte start))))))))))
 
+	   ;; Point is still at the beginning of the possible label construct.
+	   ;; 
 	   ;; Check that the next nonsymbol token is ":", or that we're in one
 	   ;; of QT's "slots" declarations.  Allow '(' for the sake of macro
 	   ;; arguments.  FIXME: Should build this regexp from the language
 	   ;; constants.
-	   (when (c-syntactic-re-search-forward
-		  "[ \t[:?;{=*/%&|,<>!@+-]" limit t t) ; not at EOB
-	     (backward-char)
-	     (setq qt-symbol-idx
-		   (and (c-major-mode-is 'c++-mode)
-			(string-match
-			 "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>"
-			 (buffer-substring start (point)))))
-	     (c-forward-syntactic-ws limit)
-	     (when (or (looking-at ":\\([^:]\\|\\'\\)") ; A single colon.
-		       (and qt-symbol-idx
-			    (search-forward-regexp "\\=slots\\>" limit t)
-			    (progn (c-forward-syntactic-ws limit)
-				   (looking-at ":\\([^:]\\|\\'\\)")))) ; A single colon
-	       (forward-char)		; to after the colon.
-	       t)))
+	   (cond
+	    ;; public: protected: private:
+	    ((and
+	      (c-major-mode-is 'c++-mode)
+	      (search-forward-regexp
+	       "\\=p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\>[^_]" nil t)
+	      (progn (backward-char)
+		     (c-forward-syntactic-ws limit)
+		     (looking-at ":\\([^:]\\|\\'\\)"))) ; A single colon.
+	     (forward-char)
+	     (setq label-type t))
+	    ;; QT double keyword like "protected slots:" or goto target.
+	    ((progn (goto-char start) nil))
+	    ((when (c-syntactic-re-search-forward
+		    "[ \t\n[:?;{=*/%&|,<>!@+-]" limit t t) ; not at EOB
+	       (backward-char)
+	       (setq label-end (point))
+	       (setq qt-symbol-idx
+		     (and (c-major-mode-is 'c++-mode)
+			  (string-match
+			   "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>"
+			   (buffer-substring start (point)))))  
+	       (c-forward-syntactic-ws limit)
+	       (cond
+		((looking-at ":\\([^:]\\|\\'\\)") ; A single colon.
+		 (forward-char)
+		 (setq label-type
+		       (if (string= "signals" ; Special QT macro
+				    (buffer-substring-no-properties start label-end))
+			   'qt-1kwd-colon
+			 'goto-target)))
+		((and qt-symbol-idx
+		      (search-forward-regexp "\\=slots\\>" limit t)
+		      (progn (c-forward-syntactic-ws limit)
+			     (looking-at ":\\([^:]\\|\\'\\)"))) ; A single colon
+		 (forward-char)
+		 (setq label-type 'qt-2kwds-colon)))))))
 
       (save-restriction
 	(narrow-to-region start (point))
@@ -6069,6 +6098,7 @@
 	  (while (progn
 		   (when (looking-at c-nonlabel-token-key)
 		     (goto-char start)
+		     (setq label-type nil)
 		     (throw 'check-label nil))
 		   (and (c-safe (c-forward-sexp)
 				(c-forward-syntactic-ws)
@@ -6088,12 +6118,12 @@
 
 	  (c-put-c-type-property (1- (point-max)) 'c-decl-end)
 	  (goto-char (point-max))
-	  t)))
+	  )))
 
      (t
       ;; Not a label.
-      (goto-char start)
-      nil))))
+      (goto-char start)))
+    label-type))
 
 (defun c-forward-objc-directive ()
   ;; Assuming the point is at the beginning of a token, try to move
--- a/lisp/progmodes/cc-fonts.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-fonts.el	Sun Apr 22 12:42:47 2007 +0000
@@ -704,8 +704,13 @@
       ))
 
 (defun c-font-lock-complex-decl-prepare (limit)
+  ;; This function will be called from font-lock for a region bounded by POINT
+  ;; and LIMIT, as though it were to identify a keyword for
+  ;; font-lock-keyword-face.  It always returns NIL to inhibit this and
+  ;; prevent a repeat invocation.  See elisp/lispref page "Search-based
+  ;; Fontification".
+  ;;
   ;; Called before any of the matchers in `c-complex-decl-matchers'.
-  ;; Nil is always returned.
   ;;
   ;; This function does hidden buffer changes.
 
@@ -742,10 +747,15 @@
   nil)
 
 (defun c-font-lock-<>-arglists (limit)
+  ;; This function will be called from font-lock for a region bounded by POINT
+  ;; and LIMIT, as though it were to identify a keyword for
+  ;; font-lock-keyword-face.  It always returns NIL to inhibit this and
+  ;; prevent a repeat invocation.  See elisp/lispref page "Search-based
+  ;; Fontification".
+  ;;
   ;; Fontify types and references in names containing angle bracket
   ;; arglists from the point to LIMIT.  Note that
-  ;; `c-font-lock-declarations' already has handled many of them.  Nil
-  ;; is always returned.
+  ;; `c-font-lock-declarations' already has handled many of them.
   ;;
   ;; This function might do hidden buffer changes.
 
@@ -971,9 +981,14 @@
 	font-lock-keyword-face))
 
 (defun c-font-lock-declarations (limit)
+  ;; This function will be called from font-lock for a region bounded by POINT
+  ;; and LIMIT, as though it were to identify a keyword for
+  ;; font-lock-keyword-face.  It always returns NIL to inhibit this and
+  ;; prevent a repeat invocation.  See elisp/lispref page "Search-based
+  ;; Fontification".
+  ;;
   ;; Fontify all the declarations, casts and labels from the point to LIMIT.
-  ;; Assumes that strings and comments have been fontified already.  Nil is
-  ;; always returned.
+  ;; Assumes that strings and comments have been fontified already.
   ;;
   ;; This function might do hidden buffer changes.
 
@@ -1009,6 +1024,7 @@
 	  ;; `c-forward-decl-or-cast-1' and `c-forward-label' for
 	  ;; later fontification.
 	  (c-record-type-identifiers t)
+	  label-type
 	  c-record-ref-identifiers
 	  ;; Make `c-forward-type' calls mark up template arglists if
 	  ;; it finds any.  That's necessary so that we later will
@@ -1174,39 +1190,31 @@
 	      (c-fontify-recorded-types-and-refs)
 	      nil))
 
-	  ;; It was a false alarm.
+	  ;; It was a false alarm.  Check if we're in a label (or other
+	  ;; construct with `:' except bitfield) instead.
 	  (goto-char start-pos)
-	  ;; The below code attempts to fontify the case constants in
-	  ;; c-label-face-name, but it cannot catch every case [sic].
-	  ;; And do we want to fontify case constants anyway?
-	  (c-forward-label t match-pos nil)
-;;;	  (when (c-forward-label t match-pos nil)
-;;;	    ;; Can't use `c-fontify-types-and-refs' here since we
-;;;	    ;; should use the label face.
-;;;	    (save-excursion
-;;;	      (while c-record-ref-identifiers
-;;;		(let ((elem (car c-record-ref-identifiers))
-;;;		      c-record-type-identifiers)
-;;;		  (goto-char (cdr elem))
-;;;		  ;; Find the end of any label.
-;;;		  (while (and (re-search-forward "\\sw\\|:" nil t)
-;;;			      (progn (backward-char 1) t)
-;;;			      (or (re-search-forward
-;;;				   "\\=0[Xx][0-9A-Fa-f]+\\|\\([0-9]+\\)" nil t)
-;;;				  (c-forward-name)))
-;;;		    (c-backward-syntactic-ws)
-;;;		    (let ((end (point)))
-;;;		      ;; Now find the start of the bit we regard as the label.
-;;;		      (when (and (c-simple-skip-symbol-backward)
-;;;				 (not (c-get-char-property (point) 'face)))
-;;;			(c-put-font-lock-face (point) end c-label-face-name))
-;;;		      (goto-char end))))
-;;;		(setq c-record-ref-identifiers (cdr c-record-ref-identifiers))))
-;;;	    ;; `c-forward-label' probably has added a `c-decl-end'
-;;;	    ;; marker, so return t to `c-find-decl-spots' to signal
-;;;	    ;; that.
-;;;	    t)
-	  )))
+	  (when (setq label-type (c-forward-label t match-pos nil))
+	    ;; Can't use `c-fontify-types-and-refs' here since we
+	    ;; use the label face at times.
+	    (cond ((eq label-type 'goto-target)
+		   (c-put-font-lock-face (caar c-record-ref-identifiers)
+					 (cdar c-record-ref-identifiers)
+					 c-label-face-name))
+		  ((eq label-type 'qt-1kwd-colon)
+		   (c-put-font-lock-face (caar c-record-ref-identifiers)
+					 (cdar c-record-ref-identifiers)
+					 'font-lock-keyword-face))
+		  ((eq label-type 'qt-2kwds-colon)
+		   (mapc
+		    (lambda (kwd)
+		      (c-put-font-lock-face (car kwd) (cdr kwd)
+					    'font-lock-keyword-face))
+		    c-record-ref-identifiers)))
+	    (setq c-record-ref-identifiers nil)
+	    ;; `c-forward-label' has probably added a `c-decl-end'
+	    ;; marker, so return t to `c-find-decl-spots' to signal
+	    ;; that.
+	    t))))
 
       nil)))
 
@@ -1285,6 +1293,14 @@
   "Complex font lock matchers for types and declarations.  Used on level
 3 and higher."
 
+  ;; Note: This code in this form dumps a number of funtions into the
+  ;; resulting constant, `c-matchers-3'.  At run time, font lock will call
+  ;; each of them as a "FUNCTION" (see Elisp page "Search-based
+  ;; Fontification").  The font lock region is delimited by POINT and the
+  ;; single parameter, LIMIT.  Each of these functions returns NIL (thus
+  ;; inhibiting spurious font-lock-keyword-face highlighting and another
+  ;; call).
+
   t `(;; Initialize some things before the search functions below.
       c-font-lock-complex-decl-prepare
 
@@ -1397,6 +1413,8 @@
 
       ;; Fontify the type in C++ "new" expressions.
       ,@(when (c-major-mode-is 'c++-mode)
+	  ;; This pattern is a probably a "(MATCHER . ANCHORED-HIGHLIGHTER)"
+	  ;; (see Elisp page "Search-based Fontification").
 	  `(("\\<new\\>"
 	     (c-font-lock-c++-new))))
       ))
--- a/lisp/progmodes/cc-langs.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-langs.el	Sun Apr 22 12:42:47 2007 +0000
@@ -221,11 +221,6 @@
     ;; with the group symbol for each group and should return non-nil
     ;; if that group is to be included.
     ;;
-    ;; OP-FILTER filters the individual operators in each group.  It
-    ;; can be t to choose all operators, a regexp to test against each
-    ;; operator, or a function which will be called for each operator
-    ;; and should return non-nil for those to include.
-    ;;
     ;; If XLATE is given, it's a function which is called for each
     ;; matching operator and its return value is collected instead.
     ;; If it returns a list, the elements are spliced directly into
@@ -1376,6 +1371,26 @@
   (c-lang-const c-vsemi-status-unknown-p-fn))
 
 
+;;; Defun functions
+
+;; The Emacs variables beginning-of-defun-function and
+;; end-of-defun-function will be set so that commands like
+;; `mark-defun' and `narrow-to-defun' work right.  The key sequences
+;; C-M-a and C-M-e are, however, bound directly to the CC Mode
+;; functions, allowing optimisation for large n.
+(c-lang-defconst beginning-of-defun-function
+  "Function to which beginning-of-defun-function will be set."
+  t 'c-beginning-of-defun
+  awk 'c-awk-beginning-of-defun)
+(c-lang-setvar beginning-of-defun-function
+	       (c-lang-const beginning-of-defun-function))
+
+(c-lang-defconst end-of-defun-function
+  "Function to which end-of-defun-function will be set."
+  t 'c-end-of-defun
+  awk 'c-awk-end-of-defun)
+(c-lang-setvar end-of-defun-function (c-lang-const end-of-defun-function))
+
 ;;; In-comment text handling.
 
 (c-lang-defconst c-paragraph-start
--- a/lisp/progmodes/cc-mode.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-mode.el	Sun Apr 22 12:42:47 2007 +0000
@@ -158,8 +158,8 @@
 ;; These are typically standard emacs variables such as `comment-start'.
 (defmacro c-make-emacs-variables-local ()
   `(progn
-     ,@(mapcan (lambda (init)
-		 `((make-local-variable ',(car init))))
+     ,@(mapcar (lambda (init)
+		 `(make-local-variable ',(car init)))
 	       (cdr c-emacs-variable-inits))))
 
 (defun c-init-language-vars-for (mode)
@@ -509,9 +509,9 @@
 	      type type-pos
 	      marked-id term-pos
 	      (end1
-	       (if (eq (get-text-property end 'face) 'font-lock-comment-face)
-		   (previous-single-property-change end 'face)
-		 end)))
+	       (or (and (eq (get-text-property end 'face) 'font-lock-comment-face)
+			(previous-single-property-change end 'face))
+		   end)))
 	  (when (>= end1 beg) ; Don't hassle about changes entirely in comments.
 	    ;; Find a limit for the search for a `c-type' property
 	    (while
--- a/lisp/progmodes/cc-subword.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-subword.el	Sun Apr 22 12:42:47 2007 +0000
@@ -218,38 +218,52 @@
   (interactive "*p")
   (transpose-subr 'c-forward-subword arg))
 
+
+
+(defun c-downcase-subword (arg)
+  "Do the same as `downcase-word' but on subwords.
+See the command `c-subword-mode' for a description of subwords.
+Optional argument ARG is the same as for `downcase-word'."
+  (interactive "p")
+  (let ((start (point)))
+    (downcase-region (point) (c-forward-subword arg))
+    (when (< arg 0) 
+      (goto-char start))))
+
+(defun c-upcase-subword (arg)
+  "Do the same as `upcase-word' but on subwords.
+See the command `c-subword-mode' for a description of subwords.
+Optional argument ARG is the same as for `upcase-word'."
+  (interactive "p")
+  (let ((start (point)))
+    (upcase-region (point) (c-forward-subword arg))
+    (when (< arg 0) 
+      (goto-char start))))
+
 (defun c-capitalize-subword (arg)
   "Do the same as `capitalize-word' but on subwords.
 See the command `c-subword-mode' for a description of subwords.
 Optional argument ARG is the same as for `capitalize-word'."
   (interactive "p")
   (let ((count (abs arg))
-	(direction (if (< 0 arg) 1 -1)))
+	(start (point))
+	(advance (if (< arg 0) nil t)))
     (dotimes (i count)
-      (when (re-search-forward
-	     (concat "[" c-alpha "]")
-	     nil t)
-	(goto-char (match-beginning 0)))
+      (if advance
+	  (progn (re-search-forward
+		  (concat "[" c-alpha "]")
+		  nil t)
+		 (goto-char (match-beginning 0)))
+	(c-backward-subword))
       (let* ((p (point))
 	     (pp (1+ p))
-	     (np (c-forward-subword direction)))
+	     (np (c-forward-subword)))
 	(upcase-region p pp)
 	(downcase-region pp np)
-	(goto-char np)))))
+	(goto-char (if advance np p))))
+    (unless advance
+      (goto-char start))))
 
-(defun c-downcase-subword (arg)
-  "Do the same as `downcase-word' but on subwords.
-See the command `c-subword-mode' for a description of subwords.
-Optional argument ARG is the same as for `downcase-word'."
-  (interactive "p")
-  (downcase-region (point) (c-forward-subword arg)))
-
-(defun c-upcase-subword (arg)
-  "Do the same as `upcase-word' but on subwords.
-See the command `c-subword-mode' for a description of subwords.
-Optional argument ARG is the same as for `upcase-word'."
-  (interactive "p")
-  (upcase-region (point) (c-forward-subword arg)))
 
 
 ;;
--- a/lisp/progmodes/cc-vars.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cc-vars.el	Sun Apr 22 12:42:47 2007 +0000
@@ -890,7 +890,8 @@
 
 (defcustom c-special-indent-hook nil
   "*Hook for user defined special indentation adjustments.
-This hook gets called after a line is indented by the mode."
+This hook gets called after each line is indented by the mode.  It is only
+called if `c-syntactic-indentation' is non-nil."
   :type 'hook
   :group 'c)
 
--- a/lisp/progmodes/compile.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/compile.el	Sun Apr 22 12:42:47 2007 +0000
@@ -391,6 +391,7 @@
 		    ,(expand-file-name "compilation.txt" data-directory))
   :group 'compilation)
 
+;;;###autoload(put 'compilation-directory 'safe-local-variable 'stringp)
 (defvar compilation-directory nil
   "Directory to restore to when doing `recompile'.")
 
@@ -625,7 +626,7 @@
 		   (cons (match-string-no-properties idx) dir))
       mouse-face highlight
       keymap compilation-button-map
-      help-echo "mouse-2: visit this directory")))
+      help-echo "mouse-2: visit destination directory")))
 
 ;; Data type `reverse-ordered-alist' retriever.  This function retrieves the
 ;; KEY element from the ALIST, creating it in the right position if not already
--- a/lisp/progmodes/cperl-mode.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/cperl-mode.el	Sun Apr 22 12:42:47 2007 +0000
@@ -233,6 +233,7 @@
   "*Indentation of CPerl statements with respect to containing block."
   :type 'integer
   :group 'cperl-indentation-details)
+(put 'cperl-indent-level 'safe-local-variable 'integerp)
 
 (defcustom cperl-lineup-step nil
   "*`cperl-lineup' will always lineup at multiple of this number.
@@ -1871,9 +1872,7 @@
       (easy-menu-add cperl-menu))	; A NOP in Emacs.
   (run-mode-hooks 'cperl-mode-hook)
   (if cperl-hook-after-change
-      (progn
-	(make-local-hook 'after-change-functions)
-	(add-hook 'after-change-functions 'cperl-after-change-function nil t)))
+      (add-hook 'after-change-functions 'cperl-after-change-function nil t))
   ;; After hooks since fontification will break this
   (if cperl-pod-here-scan
       (or cperl-syntaxify-by-font-lock
--- a/lisp/progmodes/dcl-mode.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/dcl-mode.el	Sun Apr 22 12:42:47 2007 +0000
@@ -71,6 +71,9 @@
 
 ;;; Code:
 
+(require 'tempo)
+
+
 ;;; *** Customization *****************************************************
 
 
@@ -1935,8 +1938,6 @@
 ;; standard Emacs.  I would have liked something closer to the functionality
 ;; of LSE templates...
 
-
-(require 'tempo)
 (defvar dcl-tempo-tags nil
   "Tempo tags for DCL mode.")
 
--- a/lisp/progmodes/ebnf2ps.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/ebnf2ps.el	Sun Apr 22 12:42:47 2007 +0000
@@ -2609,7 +2609,7 @@
   (and (assoc name ebnf-style-database)
        (error "Style name already exists: %s" name))
   (or (assoc inherits ebnf-style-database)
-      (error "Style inheritance name does'nt exist: %s" inherits))
+      (error "Style inheritance name doesn't exist: %s" inherits))
   (setq ebnf-style-database
 	(cons (cons name (cons inherits (ebnf-check-style-values values)))
 	      ebnf-style-database)))
@@ -2639,7 +2639,7 @@
 See `ebnf-style-database' documentation."
   (interactive "SStyle name: \nXStyle values: ")
   (let ((style (or (assoc name ebnf-style-database)
-		   (error "Style name does'nt exist: %s" name)))
+		   (error "Style name doesn't exist: %s" name)))
 	(merge (ebnf-check-style-values values))
 	val elt new check)
     ;; modify value of existing variables
--- a/lisp/progmodes/flymake.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/flymake.el	Sun Apr 22 12:42:47 2007 +0000
@@ -931,8 +931,8 @@
       2 4 nil 5))
    ;; compilation-error-regexp-alist)
    (flymake-reformat-err-line-patterns-from-compile-el compilation-error-regexp-alist-alist))
-  "Patterns for matching error/warning lines.
-\(REGEXP FILE-IDX LINE-IDX ERR-TEXT-IDX).
+  "Patterns for matching error/warning lines.  Each pattern has the form
+\(REGEXP FILE-IDX LINE-IDX COL-IDX ERR-TEXT-IDX).
 Use `flymake-reformat-err-line-patterns-from-compile-el' to add patterns
 from compile.el")
 
--- a/lisp/progmodes/gdb-ui.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/gdb-ui.el	Sun Apr 22 12:42:47 2007 +0000
@@ -1771,10 +1771,15 @@
   :group 'gud)
 
 (defface breakpoint-disabled
-  ;; We use different values of grey for different background types,
-  ;; so that on low-color displays it will end up as something visible
-  ;; if it has to be approximated.
-  '((t :foreground  "grey70"))
+  '((((class color) (min-colors 88)) :foreground "grey70")
+    ;; Ensure that on low-color displays that we end up something visible.
+    (((class color) (min-colors 8) (background light))
+     :foreground "black")
+    (((class color) (min-colors 8) (background dark))
+     :foreground "white")
+    (((type tty) (class mono))
+     :inverse-video t)
+    (t :background "gray"))
   "Face for disabled breakpoint icon in fringe."
   :group 'gud)
 
--- a/lisp/progmodes/grep.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/grep.el	Sun Apr 22 12:42:47 2007 +0000
@@ -315,17 +315,7 @@
 This gets tacked on the end of the generated expressions.")
 
 ;;;###autoload
-(defvar grep-program
-  ;; Currently zgrep has trouble.  It runs egrep instead of grep,
-  ;; and it doesn't pass along long options right.
-  "grep"
-  ;; (if (equal (condition-case nil	; in case "zgrep" isn't in exec-path
-  ;; 		 (call-process "zgrep" nil nil nil
-  ;; 			       "foo" null-device)
-  ;; 	       (error nil))
-  ;; 	     1)
-  ;;     "zgrep"
-  ;;   "grep")
+(defvar grep-program "grep"
   "The default grep program for `grep-command' and `grep-find-command'.
 This variable's value takes effect when `grep-compute-defaults' is called.")
 
@@ -336,10 +326,10 @@
 
 ;;;###autoload
 (defvar grep-find-use-xargs nil
-  "Whether \\[grep-find] uses the `xargs' utility by default.
-
-If `exec', it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0';
-if not nil and not `gnu', it uses `find -print' and `xargs'.
+  "Non-nil means that `grep-find' uses the `xargs' utility by default.
+If `exec', use `find -exec'.
+If `gnu', use `find -print0' and `xargs -0'.
+Any other non-nil value means to use `find -print' and `xargs'.
 
 This variable's value takes effect when `grep-compute-defaults' is called.")
 
--- a/lisp/progmodes/gud.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/gud.el	Sun Apr 22 12:42:47 2007 +0000
@@ -147,8 +147,7 @@
     ([refresh]	"Refresh" . gud-refresh)
     ([run]	menu-item "Run" gud-run
                   :enable (not gud-running)
-		  :visible (and (memq gud-minor-mode '(gdbmi gdb dbx jdb))
-				(not (eq gud-minor-mode 'gdba))))
+		  :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
     ([go]	menu-item (if gdb-active-process "Continue" "Run") gud-go
 		  :visible (and (not gud-running)
 				(eq gud-minor-mode 'gdba)))
@@ -214,7 +213,45 @@
   :name "Gud")
 
 (easy-mmode-defmap gud-minor-mode-map
-  `(([menu-bar debug] . ("Gud" . ,gud-menu-map)))
+  (append
+     `(([menu-bar debug] . ("Gud" . ,gud-menu-map)))
+     ;; Get tool bar like functionality from the menu bar on a text only
+     ;; terminal.
+   (unless window-system
+     `(([menu-bar down]
+	. (,(propertize "down" 'face 'font-lock-doc-face) . gud-down))
+       ([menu-bar up]
+	. (,(propertize "up" 'face 'font-lock-doc-face) . gud-up))
+       ([menu-bar finish]
+	. (,(propertize "finish" 'face 'font-lock-doc-face) . gud-finish))
+       ([menu-bar step]
+	. (,(propertize "step" 'face 'font-lock-doc-face) . gud-step))
+       ([menu-bar next]
+	. (,(propertize "next" 'face 'font-lock-doc-face) . gud-next))
+       ([menu-bar until] menu-item
+	,(propertize "until" 'face 'font-lock-doc-face) gud-until
+		  :visible (memq gud-minor-mode '(gdbmi gdba gdb perldb)))
+       ([menu-bar cont] menu-item
+	,(propertize "cont" 'face 'font-lock-doc-face) gud-cont
+	:visible (not (eq gud-minor-mode 'gdba)))
+       ([menu-bar run] menu-item
+	,(propertize "run" 'face 'font-lock-doc-face) gud-run
+	:visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
+       ([menu-bar go] menu-item 
+	,(propertize " go " 'face 'font-lock-doc-face) gud-go
+	:visible (and (not gud-running)
+		      (eq gud-minor-mode 'gdba)))
+       ([menu-bar stop] menu-item
+	,(propertize "stop" 'face 'font-lock-doc-face) gud-stop-subjob
+	:visible (or gud-running
+		     (not (eq gud-minor-mode 'gdba))))
+       ([menu-bar print]
+	. (,(propertize "print" 'face 'font-lock-doc-face) . gud-print))
+       ([menu-bar tools] . undefined)
+       ([menu-bar buffer] . undefined)
+       ([menu-bar options] . undefined)
+       ([menu-bar edit] . undefined)
+       ([menu-bar file] . undefined))))
   "Map used in visited files.")
 
 (let ((m (assq 'gud-minor-mode minor-mode-map-alist)))
@@ -686,14 +723,13 @@
 session."
   (interactive (list (gud-query-cmdline 'gdb)))
 
-  (if (and gud-comint-buffer
+  (when (and gud-comint-buffer
 	   (buffer-name gud-comint-buffer)
 	   (get-buffer-process gud-comint-buffer)
 	   (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)))
-      (let ((same-window-regexps))
-	(display-buffer gud-comint-buffer)
+	(gdb-restore-windows)
 	(error
-	 "Multiple debugging requires restarting in text command mode")))
+	 "Multiple debugging requires restarting in text command mode"))
 
   (gud-common-init command-line nil 'gud-gdb-marker-filter)
   (set (make-local-variable 'gud-minor-mode) 'gdb)
@@ -2268,6 +2304,8 @@
   (gud-def gud-up     "up\C-Mwhere"   "<"    "Up one stack frame.")
   (gud-def gud-down   "down\C-Mwhere" ">"    "Up one stack frame.")
   (gud-def gud-run    "run"           nil    "Run the program.") ;if VM start using jdb
+  (gud-def gud-print  "print %e"  "\C-p" "Evaluate Java expression at point.")
+
 
   (setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ")
   (setq paragraph-start comint-prompt-regexp)
@@ -2817,7 +2855,9 @@
 	  (when (looking-at comint-prompt-regexp)
 	    (set-marker gud-delete-prompt-marker (point))
 	    (set-marker-insertion-type gud-delete-prompt-marker t))
-	  (insert (concat  expr " = ")))))
+	  (unless (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
+		      'jdb)
+	      (insert (concat  expr " = "))))))
     expr))
 
 ;; The next eight functions are hacked from gdbsrc.el by
--- a/lisp/progmodes/hideshow.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/hideshow.el	Sun Apr 22 12:42:47 2007 +0000
@@ -184,7 +184,6 @@
 ;; (5) Hideshow interacts badly with Ediff and `vc-diff'.  At the moment, the
 ;;     suggested workaround is to turn off hideshow entirely, for example:
 ;;
-;;     (defun turn-off-hideshow () (hs-minor-mode -1))
 ;;     (add-hook 'ediff-prepare-buffer-hook 'turn-off-hideshow)
 ;;     (add-hook 'vc-before-checkin-hook 'turn-off-hideshow)
 ;;
@@ -908,7 +907,7 @@
         (hs-grok-mode-type)
         ;; Turn off this mode if we change major modes.
 	(add-hook 'change-major-mode-hook
-		  (lambda () (hs-minor-mode -1))
+		  'turn-off-hideshow
 		  nil t)
         (easy-menu-add hs-minor-mode-menu)
         (set (make-local-variable 'line-move-ignore-invisible) t)
@@ -920,6 +919,11 @@
       (hs-show-all)))
   (run-hooks 'hs-minor-mode-hook))
 
+;;;###autoload
+(defun turn-off-hideshow ()
+  "Unconditionally turn off `hs-minor-mode'."
+  (hs-minor-mode -1))
+
 ;;---------------------------------------------------------------------------
 ;; load-time actions
 
--- a/lisp/progmodes/idlw-shell.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/idlw-shell.el	Sun Apr 22 12:42:47 2007 +0000
@@ -2698,7 +2698,7 @@
 	 (class (nth 2 module)))
     (if module
 	(progn 
-	  (setq module (idlwave-make-full-name (nth 2 module) (car module)))
+	  (setq module (idlwave-make-full-name class name))
 	  (idlwave-shell-module-source-query module type)
 	  (idlwave-shell-set-bp-in-module name type class))
       (error "No identifier at point"))))
@@ -2707,14 +2707,15 @@
 (defun idlwave-shell-set-bp-in-module (name type class)
   "Set breakpoint in module.  Assumes that `idlwave-shell-sources-alist'
 contains an entry for that module."
-  (let ((source-file 
-	 (car-safe (cdr-safe
-		    (or
-		     (assoc (upcase (idlwave-make-full-name class name))
-			    idlwave-shell-sources-alist)
-		     (nth 3 (idlwave-best-rinfo-assoc name type class 
-						      (idlwave-routines)))))))
-	buf)
+  (let* ((module (idlwave-make-full-name class name))
+	 (source-file 
+	  (car-safe (cdr-safe
+		     (or
+		      (assoc (upcase module)
+			     idlwave-shell-sources-alist)
+		      (nth 3 (idlwave-best-rinfo-assoc name type class 
+						       (idlwave-routines)))))))
+	 buf)
     (if (or (not source-file)
 	    (not (file-regular-p source-file))
 	    (not (setq buf
--- a/lisp/progmodes/idlwave.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/idlwave.el	Sun Apr 22 12:42:47 2007 +0000
@@ -3487,6 +3487,7 @@
 	  (idlwave-indent-line)
 	  ;; Prevent actions do-auto-fill which calls indent-line-function.
 	  (let (idlwave-do-actions
+		(paragraph-separate ".")
 		(fill-nobreak-predicate
 		 (if (and (idlwave-in-quote)
 			  idlwave-auto-fill-split-string)
--- a/lisp/progmodes/m4-mode.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/m4-mode.el	Sun Apr 22 12:42:47 2007 +0000
@@ -118,14 +118,19 @@
 (defun m4-m4-buffer ()
   "Send contents of the current buffer to m4."
   (interactive)
-  (shell-command-on-region (point-min) (point-max) m4-program "*m4-output*"
-			   nil)
+  (shell-command-on-region
+   (point-min) (point-max)
+   (mapconcat 'identity (cons m4-program m4-program-options) "\s")
+   "*m4-output*" nil)
   (switch-to-buffer-other-window "*m4-output*"))
 
 (defun m4-m4-region ()
   "Send contents of the current region to m4."
   (interactive)
-  (shell-command-on-region (point) (mark) m4-program "*m4-output*" nil)
+  (shell-command-on-region
+   (point) (mark)
+   (mapconcat 'identity (cons m4-program m4-program-options) "\s")
+   "*m4-output*" nil)
   (switch-to-buffer-other-window "*m4-output*"))
 
 ;;;###autoload
--- a/lisp/progmodes/perl-mode.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/perl-mode.el	Sun Apr 22 12:42:47 2007 +0000
@@ -391,6 +391,7 @@
   "*Indentation of Perl statements with respect to containing block."
   :type 'integer
   :group 'perl)
+(put 'perl-indent-level 'safe-local-variable 'integerp)
 (defcustom perl-continued-statement-offset 4
   "*Extra indent for lines not starting new statements."
   :type 'integer
--- a/lisp/progmodes/python.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/progmodes/python.el	Sun Apr 22 12:42:47 2007 +0000
@@ -981,11 +981,15 @@
 		       (_ (if (python-comment-line-p)
 			      (python-skip-comments/blanks t)))
 		       (ci (current-indentation))
-		       (open (python-open-block-statement-p)))
+		       (open (python-open-block-statement-p))
+		       opoint)
 		  (if (and (zerop ci) (not open))
 		      (not (goto-char point))
 		    (catch 'done
-		      (while (zerop (python-next-statement))
+		      (setq opoint (point))
+		      (while (and (zerop (python-next-statement))
+		      		  (not (= opoint (point))))
+			(setq opoint (point))
 			(when (or (and open (<= (current-indentation) ci))
 				  (< (current-indentation) ci))
 			  (python-skip-comments/blanks t)
@@ -2225,6 +2229,7 @@
 				   ;;  . python-font-lock-syntactic-face-function)
 				   ))
   (set (make-local-variable 'parse-sexp-lookup-properties) t)
+  (set (make-local-variable 'parse-sexp-ignore-comments) t)
   (set (make-local-variable 'comment-start) "# ")
   (set (make-local-variable 'indent-line-function) #'python-indent-line)
   (set (make-local-variable 'indent-region-function) #'python-indent-region)
--- a/lisp/recentf.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/recentf.el	Sun Apr 22 12:42:47 2007 +0000
@@ -72,7 +72,14 @@
 (defcustom recentf-save-file "~/.recentf"
   "*File to save the recent list into."
   :group 'recentf
-  :type 'file)
+  :type 'file
+  :initialize 'custom-initialize-default
+  :set (lambda (symbol value)
+         (let ((oldvalue (eval symbol)))
+           (custom-set-default symbol value)
+           (and (not (equal value oldvalue))
+                recentf-mode
+                (recentf-load-list)))))
 
 (defcustom recentf-save-file-modes 384 ;; 0600
   "Mode bits of recentf save file, as an integer, or nil.
--- a/lisp/replace.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/replace.el	Sun Apr 22 12:42:47 2007 +0000
@@ -844,7 +844,8 @@
        #'next-single-property-change)
      "No more matches")
     ;; In case the *Occur* buffer is visible in a nonselected window.
-    (set-window-point (get-buffer-window (current-buffer)) (point))
+    (let ((win (get-buffer-window (current-buffer) t)))
+      (if win (set-window-point win (point))))
     (occur-mode-goto-occurrence)))
 
 (defface match
--- a/lisp/simple.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/simple.el	Sun Apr 22 12:42:47 2007 +0000
@@ -118,8 +118,10 @@
 
 (defcustom next-error-highlight 0.5
   "*Highlighting of locations in selected source buffers.
-If number, highlight the locus in `next-error' face for given time in seconds.
-If t, highlight the locus indefinitely until some other locus replaces it.
+If a number, highlight the locus in `next-error' face for the given time
+in seconds, or until the next command is executed.
+If t, highlight the locus until the next command is executed, or until
+some other locus replaces it.
 If nil, don't highlight the locus in the source buffer.
 If `fringe-arrow', indicate the locus by the fringe arrow."
   :type '(choice (number :tag "Highlight for specified time")
@@ -3083,7 +3085,7 @@
 (defvar activate-mark-hook nil
   "Hook run when the mark becomes active.
 It is also run at the end of a command, if the mark is active and
-it is possible that the region may have changed")
+it is possible that the region may have changed.")
 
 (defvar deactivate-mark-hook nil
   "Hook run when the mark becomes inactive.")
@@ -3193,28 +3195,28 @@
   :group 'editing)
 
 (defun set-mark-command (arg)
-  "Set mark at where point is, or jump to mark.
-With no prefix argument, set mark, and push old mark position on local
-mark ring; also push mark on global mark ring if last mark was set in
+  "Set mark where point is, or jump to mark.
+Setting the mark also sets the \"region\", which is the closest
+equivalent in Emacs to what some editors call the \"selection\".
+
+With no prefix argument, set mark and push old mark position on local
+mark ring.  Also, push mark on global mark ring, if last mark was set in
 another buffer.  Immediately repeating the command activates
 `transient-mark-mode' temporarily.
 
-With argument, e.g. \\[universal-argument] \\[set-mark-command], \
-jump to mark, and pop a new position
-for mark off the local mark ring \(this does not affect the global
-mark ring\).  Use \\[pop-global-mark] to jump to a mark off the global
+With prefix argument \(e.g., \\[universal-argument] \\[set-mark-command]\), \
+jump to mark, and set mark from
+position popped off the local mark ring \(this does not affect the global
+mark ring\).  Use \\[pop-global-mark] to jump to a mark popped off the global
 mark ring \(see `pop-global-mark'\).
 
 If `set-mark-command-repeat-pop' is non-nil, repeating
-the \\[set-mark-command] command with no prefix pops the next position
+the \\[set-mark-command] command with no prefix argument pops the next position
 off the local (or global) mark ring and jumps there.
 
-With a double \\[universal-argument] prefix argument, e.g. \\[universal-argument] \
-\\[universal-argument] \\[set-mark-command], unconditionally
-set mark where point is.
-
-Setting the mark also sets the \"region\", which is the closest
-equivalent in Emacs to what some editors call the \"selection\".
+With a double \\[universal-argument] prefix argument \(e.g., \\[universal-argument] \
+\\[universal-argument] \\[set-mark-command]\), unconditionally
+set mark where point is, even if `set-mark-command-repeat-pop' is non-nil.
 
 Novice Emacs Lisp programmers often try to use the mark for the wrong
 purposes.  See the documentation of `set-mark' for more information."
@@ -4468,7 +4470,7 @@
       (save-excursion
 	(save-restriction
 	  (if blink-matching-paren-distance
-	      (narrow-to-region (max (point-min)
+	      (narrow-to-region (max (minibuffer-prompt-end)
 				     (- (point) blink-matching-paren-distance))
 				oldpos))
 	  (condition-case ()
@@ -4718,16 +4720,9 @@
 Each action has the form (FUNCTION . ARGS)."
   (interactive
    (list nil nil nil current-prefix-arg))
-  (let ((function (get mail-user-agent 'composefunc))
-	result-buffer)
-    (if switch-function
-	(save-window-excursion
-	  (prog1
-	      (funcall function to subject other-headers continue
-		       nil yank-action send-actions)
-	    (funcall switch-function (current-buffer))))
-      (funcall function to subject other-headers continue
-	       nil yank-action send-actions))))
+  (let ((function (get mail-user-agent 'composefunc)))
+    (funcall function to subject other-headers continue
+	     switch-function yank-action send-actions)))
 
 (defun compose-mail-other-window (&optional to subject other-headers continue
 					    yank-action send-actions)
--- a/lisp/startup.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/startup.el	Sun Apr 22 12:42:47 2007 +0000
@@ -51,8 +51,8 @@
   "Non-nil inhibits the startup screen.
 It also inhibits display of the initial message in the `*scratch*' buffer.
 
-This is for use in your personal init file, once you are familiar
-with the contents of the startup screen."
+This is for use in your personal init file (but NOT site-start.el), once
+you are familiar with the contents of the startup screen."
   :type 'boolean
   :group 'initialization)
 
@@ -514,7 +514,7 @@
 ;; Handle the X-like command-line arguments "-fg", "-bg", "-name", etc.
 (defun tty-handle-args (args)
   (let (rest)
-    (message "%s" args)
+    (message "%S" args)
     (while (and args
 		(not (equal (car args) "--")))
       (let* ((argi (pop args))
@@ -961,11 +961,11 @@
 	    (with-current-buffer (window-buffer)
 	      (deactivate-mark)))
 
-	;; If the user has a file of abbrevs, read it.  
+	;; If the user has a file of abbrevs, read it.
         ;; FIXME: after the 22.0 release this should be changed so
 	;; that it does not read the abbrev file when -batch is used
 	;; on the command line.
-	(when (and (file-exists-p abbrev-file-name) 
+	(when (and (file-exists-p abbrev-file-name)
 		   (file-readable-p abbrev-file-name))
 	    (quietly-read-abbrev-file abbrev-file-name))
 
--- a/lisp/subr.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/subr.el	Sun Apr 22 12:42:47 2007 +0000
@@ -579,7 +579,7 @@
 ;;;; substitute-key-definition and its subroutines.
 
 (defvar key-substitution-in-progress nil
- "Used internally by `substitute-key-definition'.")
+  "Used internally by `substitute-key-definition'.")
 
 (defun substitute-key-definition (olddef newdef keymap &optional oldmap prefix)
   "Replace OLDDEF with NEWDEF for any keys in KEYMAP now defined as OLDDEF.
@@ -821,11 +821,11 @@
 (defun posn-set-point (position)
   "Move point to POSITION.
 Select the corresponding window as well."
-    (if (not (windowp (posn-window position)))
-	(error "Position not in text area of window"))
-    (select-window (posn-window position))
-    (if (numberp (posn-point position))
-	(goto-char (posn-point position))))
+  (if (not (windowp (posn-window position)))
+      (error "Position not in text area of window"))
+  (select-window (posn-window position))
+  (if (numberp (posn-point position))
+      (goto-char (posn-point position))))
 
 (defsubst posn-x-y (position)
   "Return the x and y coordinates in POSITION.
@@ -949,20 +949,26 @@
 ;;;; Obsolescence declarations for variables, and aliases.
 
 (make-obsolete-variable 'directory-sep-char "do not use it." "21.1")
-(make-obsolete-variable 'mode-line-inverse-video "use the appropriate faces instead." "21.1")
-(make-obsolete-variable 'unread-command-char
-  "use `unread-command-events' instead.  That variable is a list of events
+(make-obsolete-variable
+ 'mode-line-inverse-video
+ "use the appropriate faces instead."
+ "21.1")
+(make-obsolete-variable
+ 'unread-command-char
+ "use `unread-command-events' instead.  That variable is a list of events
 to reread, so it now uses nil to mean `no event', instead of -1."
-  "before 19.15")
+ "before 19.15")
 
 ;; Lisp manual only updated in 22.1.
 (define-obsolete-variable-alias 'executing-macro 'executing-kbd-macro
-			      "before 19.34")
+  "before 19.34")
 
 (defvaralias 'x-lost-selection-hooks 'x-lost-selection-functions)
-(make-obsolete-variable 'x-lost-selection-hooks 'x-lost-selection-functions "22.1")
+(make-obsolete-variable 'x-lost-selection-hooks
+			'x-lost-selection-functions "22.1")
 (defvaralias 'x-sent-selection-hooks 'x-sent-selection-functions)
-(make-obsolete-variable 'x-sent-selection-hooks 'x-sent-selection-functions "22.1")
+(make-obsolete-variable 'x-sent-selection-hooks
+			'x-sent-selection-functions "22.1")
 
 (defvaralias 'messages-buffer-max-lines 'message-log-max)
 
@@ -1534,7 +1540,7 @@
 
 (when (featurep 'make-network-process)
   (defun open-network-stream (name buffer host service)
-  "Open a TCP connection for a service to a host.
+    "Open a TCP connection for a service to a host.
 Returns a subprocess-object to represent the connection.
 Input and output work as for subprocesses; `delete-process' closes it.
 
@@ -1548,14 +1554,15 @@
 HOST is name of the host to connect to, or its IP address.
 SERVICE is name of the service desired, or an integer specifying
  a port number to connect to."
-  (make-network-process :name name :buffer buffer
-			:host host :service service)))
+    (make-network-process :name name :buffer buffer
+				     :host host :service service)))
 
 ;; compatibility
 
-(make-obsolete 'process-kill-without-query
-               "use `process-query-on-exit-flag' or `set-process-query-on-exit-flag'."
-               "22.1")
+(make-obsolete
+ 'process-kill-without-query
+ "use `process-query-on-exit-flag' or `set-process-query-on-exit-flag'."
+ "22.1")
 (defun process-kill-without-query (process &optional flag)
   "Say no query needed if PROCESS is running when Emacs is exited.
 Optional second argument if non-nil says to require a query.
@@ -1588,8 +1595,8 @@
  'read-quoted-char-radix 8
  "*Radix for \\[quoted-insert] and other uses of `read-quoted-char'.
 Legitimate radix values are 8, 10 and 16."
-  :type '(choice (const 8) (const 10) (const 16))
-  :group 'editing-basics)
+ :type '(choice (const 8) (const 10) (const 16))
+ :group 'editing-basics)
 
 (defun read-quoted-char (&optional prompt)
   "Like `read-char', but do not allow quitting.
@@ -2232,9 +2239,9 @@
 	     (text-properties-at (1- end)))
 	(put-text-property (1- end) end 'rear-nonsticky t))
 
-    (if (eq yank-undo-function t)  ;; not set by FUNCTION
+    (if (eq yank-undo-function t)		   ;; not set by FUNCTION
 	(setq yank-undo-function (nth 3 handler))) ;; UNDO
-    (if (nth 4 handler) ;; COMMAND
+    (if (nth 4 handler)				   ;; COMMAND
 	(setq this-command (nth 4 handler)))))
 
 (defun insert-buffer-substring-no-properties (buffer &optional start end)
@@ -2497,6 +2504,20 @@
        (let ((combine-after-change-calls t))
 	 . ,body)
      (combine-after-change-execute)))
+
+(defmacro with-case-table (table &rest body)
+  "Execute the forms in BODY with TABLE as the current case table.
+The value returned is the value of the last form in BODY."
+  (declare (indent 1) (debug t))
+  (let ((old-case-table (make-symbol "table"))
+	(old-buffer (make-symbol "buffer")))
+    `(let ((,old-case-table (current-case-table))
+	   (,old-buffer (current-buffer)))
+       (unwind-protect
+	   (progn (set-case-table ,table)
+		  ,@body)
+	 (with-current-buffer ,old-buffer
+	   (set-case-table ,old-case-table))))))
 
 ;;;; Constructing completion tables.
 
@@ -2765,7 +2786,7 @@
     newstr))
 
 (defun replace-regexp-in-string (regexp rep string &optional
-                                 fixedcase literal subexp start)
+					fixedcase literal subexp start)
   "Replace all matches for REGEXP with REP in STRING.
 
 Return a new string containing the replacements.
@@ -2815,7 +2836,7 @@
 				       rep
 				     (funcall rep (match-string 0 str)))
 				   fixedcase literal str subexp)
-		    (cons (substring string start mb)       ; unmatched prefix
+		    (cons (substring string start mb) ; unmatched prefix
 			  matches)))
 	(setq start me))
       ;; Reconstruct a string from the pieces.
@@ -2836,7 +2857,8 @@
 (defun remove-from-invisibility-spec (element)
   "Remove ELEMENT from `buffer-invisibility-spec'."
   (if (consp buffer-invisibility-spec)
-    (setq buffer-invisibility-spec (delete element buffer-invisibility-spec))))
+      (setq buffer-invisibility-spec
+	    (delete element buffer-invisibility-spec))))
 
 ;;;; Syntax tables.
 
@@ -3182,7 +3204,7 @@
 
 (defvar version-regexp-alist
   '(("^[-_+ ]?a\\(lpha\\)?$"   . -3)
-    ("^[-_+]$"                 . -3)	; treat "1.2.3-20050920" and "1.2-3" as alpha releases
+    ("^[-_+]$"                 . -3) ; treat "1.2.3-20050920" and "1.2-3" as alpha releases
     ("^[-_+ ]cvs$"             . -3)	; treat "1.2.3-CVS" as alpha release
     ("^[-_+ ]?b\\(eta\\)?$"    . -2)
     ("^[-_+ ]?\\(pre\\|rc\\)$" . -1))
@@ -3256,7 +3278,7 @@
   ;; Change .x.y to 0.x.y
   (if (and (>= (length ver) (length version-separator))
 	   (string-equal (substring ver 0 (length version-separator))
-		    version-separator))
+			 version-separator))
       (setq ver (concat "0" ver)))
   (save-match-data
     (let ((i 0)
--- a/lisp/t-mouse.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/t-mouse.el	Sun Apr 22 12:42:47 2007 +0000
@@ -144,7 +144,7 @@
 	 (event (if w
 		    (posn-at-x-y (- x left) (- y top) w t)
 		  (append (list nil 'menu-bar)
-			  (nthcdr 2 (posn-at-x-y x y w t))))))
+			  (nthcdr 2 (posn-at-x-y x y))))))
     (setcar (nthcdr 3 event) time)
     event))
 
--- a/lisp/term.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/term.el	Sun Apr 22 12:42:47 2007 +0000
@@ -627,7 +627,7 @@
   "Keyboard map for sending characters directly to the inferior process.")
 (defvar term-escape-char nil
   "Escape character for char sub-mode of term mode.
-Do not change it directly;  use `term-set-escape-char' instead.")
+Do not change it directly; use `term-set-escape-char' instead.")
 (defvar term-raw-escape-map nil)
 
 (defvar term-pager-break-map nil)
@@ -714,7 +714,7 @@
 (defvar term-buffer-maximum-size 2048
   "*The maximum size in lines for term buffers.
 Term buffers are truncated from the top to be no greater than this number.
-Notice that a setting of 0 means 'don't truncate anything'.  This variable
+Notice that a setting of 0 means \"don't truncate anything\".  This variable
 is buffer-local.")
 ;;;
 
@@ -856,7 +856,7 @@
 ;; Set up term-raw-map, etc.
 
 (defun term-set-escape-char (c)
-  "Change term-escape-char and keymaps that depend on it."
+  "Change `term-escape-char' and keymaps that depend on it."
   (when term-escape-char
     (define-key term-raw-map term-escape-char 'term-send-raw))
   (setq c (make-string 1 c))
@@ -1100,7 +1100,7 @@
   (make-local-variable 'term-current-face)
   (make-local-variable 'term-pending-frame)
   (setq term-pending-frame nil)
-  ;; Cua-mode's keybindings interfere with the term keybindings, disable it. 
+  ;; Cua-mode's keybindings interfere with the term keybindings, disable it.
   (set (make-local-variable 'cua-mode) nil)
   (run-mode-hooks 'term-mode-hook)
   (when (featurep 'xemacs)
@@ -1196,7 +1196,7 @@
   "Insert the last stretch of killed text at the position clicked on."
   (interactive "e\nP")
   (if (featurep 'xemacs)
-      (term-send-raw-string 
+      (term-send-raw-string
        (or (condition-case () (x-get-selection) (error ()))
 	   (x-get-cutbuffer)
 	   (error "No selection or cut buffer available")))
@@ -1314,7 +1314,7 @@
   "Start up a process in buffer for term modes.
 Blasts any old process running in the buffer.  Doesn't set the buffer mode.
 You can use this to cheaply run a series of processes in the same term
-buffer.  The hook term-exec-hook is run after each exec."
+buffer.  The hook `term-exec-hook' is run after each exec."
   (save-excursion
     (set-buffer buffer)
     (let ((proc (get-buffer-process buffer)))	; Blast any old process.
@@ -1344,7 +1344,7 @@
     (run-hooks 'term-exec-hook)
     buffer)))
 
-(defun term-sentinel  (proc msg)
+(defun term-sentinel (proc msg)
   "Sentinel for term buffers.
 The main purpose is to get rid of the local keymap."
   (let ((buffer (process-buffer proc)))
@@ -1404,7 +1404,7 @@
 :kb=^?:kD=^[[3~:sc=\\E7:rc=\\E8:r1=\\Ec:"
 ;;; : -undefine ic
 ;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
-  "termcap capabilities supported")
+  "Termcap capabilities supported.")
 
 ;;; This auxiliary function cranks up the process for term-exec in
 ;;; the appropriate environment.
@@ -2046,9 +2046,9 @@
 	(funcall term-input-sender proc input)))))
 
 (defun term-get-old-input-default ()
-  "Default for term-get-old-input.
+  "Default for `term-get-old-input'.
 Take the current line, and discard any initial text matching
-term-prompt-regexp."
+`term-prompt-regexp'."
   (save-excursion
     (beginning-of-line)
     (term-skip-prompt)
@@ -2068,7 +2068,7 @@
       (insert input))))
 
 (defun term-skip-prompt ()
-  "Skip past the text matching regexp term-prompt-regexp.
+  "Skip past the text matching regexp `term-prompt-regexp'.
 If this takes us past the end of the current line, don't skip at all."
   (let ((eol (save-excursion (end-of-line) (point))))
     (when (and (looking-at term-prompt-regexp)
@@ -2099,7 +2099,7 @@
 -- go straight to column 0.
 
 The prompt skip is done by skipping text matching the regular expression
-term-prompt-regexp, a buffer local variable."
+`term-prompt-regexp', a buffer local variable."
   (interactive "P")
   (beginning-of-line)
   (when (null arg) (term-skip-prompt)))
@@ -2182,8 +2182,8 @@
 
 (defun term-send-string (proc str)
   "Send to PROC the contents of STR as input.
-This is equivalent to process-send-string, except that long input strings
-are broken up into chunks of size term-input-chunk-size.  Processes
+This is equivalent to `process-send-string', except that long input strings
+are broken up into chunks of size `term-input-chunk-size'.  Processes
 are given a chance to output between chunks.  This can help prevent processes
 from hanging when you send them long inputs on some OS's."
   (let* ((len (length str))
@@ -2197,7 +2197,7 @@
 
 (defun term-send-region (proc start end)
   "Send to PROC the region delimited by START and END.
-This is a replacement for process-send-region that tries to keep
+This is a replacement for `process-send-region' that tries to keep
 your process from hanging on long inputs.  See `term-send-string'."
   (term-send-string proc (buffer-substring start end)))
 
@@ -2876,7 +2876,7 @@
 			 ;;  (setq term-terminal-state 0))
 			 ((eq char ?M) ;; scroll reversed (terminfo: ri)
 			  (if (or (< (term-current-row) term-scroll-start)
-				  (>= (1- (term-current-row)) 
+				  (>= (1- (term-current-row))
 				      term-scroll-start))
 			      ;; Scrolling up will not move outside
 			      ;; the scroll region.
@@ -2902,7 +2902,7 @@
 			  (when term-saved-cursor
 			    (term-goto (nth 0 term-saved-cursor)
 				       (nth 1 term-saved-cursor))
-			    (setq term-ansi-current-bg-color 
+			    (setq term-ansi-current-bg-color
 				  (nth 2 term-saved-cursor)
 				  term-ansi-current-bold
 				  (nth 3 term-saved-cursor)
@@ -3190,7 +3190,7 @@
 	  (when term-ansi-current-underline
 	    (setq term-current-face
 		  (append '(:underline t) term-current-face))))))
-  
+
 ;;;	(message "Debug %S" term-current-face)
   (setq term-ansi-face-already-done nil))
 
@@ -3219,7 +3219,7 @@
    ((eq char ?A)
     (term-handle-deferred-scroll)
     (let ((tcr (term-current-row)))
-      (term-down 
+      (term-down
        (if (< (- tcr term-terminal-parameter) term-scroll-start)
 	   ;; If the amount to move is before scroll start, move
 	   ;; to scroll start.
@@ -3231,7 +3231,7 @@
    ((eq char ?B)
     (let ((tcr (term-current-row)))
       (unless (= tcr (1- term-scroll-end))
-	(term-down 
+	(term-down
 	 (if (> (+ tcr term-terminal-parameter) term-scroll-end)
 	     (- term-scroll-end 1 tcr)
 	   (max 1 term-terminal-parameter)) t))))
@@ -3495,7 +3495,7 @@
 	  ((term-pager-continue deficit)))))
 
 (defun term-pager-page (arg)
-  "Proceed past the **MORE** break, allowing the next page of output to appear"
+  "Proceed past the **MORE** break, allowing the next page of output to appear."
   (interactive "p")
   (term-pager-line (* arg term-height)))
 
@@ -3564,7 +3564,7 @@
  (put 'term-fake-pager-disable 'menu-enable 'term-pager-count))
 
 (defun term-pager-help ()
-  "Provide help on commands available in a terminal-emulator **MORE** break"
+  "Provide help on commands available in a terminal-emulator **MORE** break."
   (interactive)
   (message "Terminal-emulator pager break help...")
   (sit-for 0)
@@ -3606,9 +3606,9 @@
 
 (defun term-handle-scroll (down)
   (let ((scroll-needed
-	 (- (+ (term-current-row) down) 
+	 (- (+ (term-current-row) down)
 	    (if (< down 0) term-scroll-start term-scroll-end))))
-    (when (or (and (< down 0) (< scroll-needed 0)) 
+    (when (or (and (< down 0) (< scroll-needed 0))
 	      (and (> down 0) (> scroll-needed 0)))
       (let ((save-point (copy-marker (point))) (save-top))
 	(goto-char term-home-marker)
@@ -3706,7 +3706,7 @@
       ;; contain a space, to force the previous line to continue to wrap.
       ;; We could do this always, but it seems preferable to not add the
       ;; extra space when wrapped is false.
-      (when wrapped 
+      (when wrapped
 	(insert ? ))
       (insert ?\n)
       (put-text-property saved-point (point) 'face 'default)
@@ -3797,8 +3797,8 @@
     ;; we need to go one line past it in order to ensure correct
     ;; scrolling.
     (if (< save-current-row term-scroll-start)
-	;; If point is before scroll start, 
-	(progn 
+	;; If point is before scroll start,
+	(progn
 	  (setq lines (- lines (- term-scroll-start save-current-row)))
 	  (term-down (- term-scroll-start save-current-row))
 	  (setq start (point)))
--- a/lisp/term/xterm.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/term/xterm.el	Sun Apr 22 12:42:47 2007 +0000
@@ -163,6 +163,22 @@
 (define-key xterm-function-map "\e[4~" [select])
 (define-key xterm-function-map "\e[29~" [print])
 
+(define-key xterm-function-map "\eOj" [kp-multiply])
+(define-key xterm-function-map "\eOk" [kp-add])
+(define-key xterm-function-map "\eOl" [kp-separator])
+(define-key xterm-function-map "\eOm" [kp-subtract])
+(define-key xterm-function-map "\eOo" [kp-divide])
+(define-key xterm-function-map "\eOp" [kp-0])
+(define-key xterm-function-map "\eOq" [kp-1])
+(define-key xterm-function-map "\eOr" [kp-2])
+(define-key xterm-function-map "\eOs" [kp-3])
+(define-key xterm-function-map "\eOt" [kp-4])
+(define-key xterm-function-map "\eOu" [kp-5])
+(define-key xterm-function-map "\eOv" [kp-6])
+(define-key xterm-function-map "\eOw" [kp-7])
+(define-key xterm-function-map "\eOx" [kp-8])
+(define-key xterm-function-map "\eOy" [kp-9])
+
 ;; These keys are available in xterm starting from version 216
 ;; if the modifyOtherKeys resource is set to 1.
 
@@ -177,7 +193,7 @@
 (define-key xterm-function-map "\e[27;5;49~"  [?\C-1])
 ;; Not all C-DIGIT keys have a distinct binding.
 (define-key xterm-function-map "\e[27;5;57~"  [?\C-9])
-(define-key xterm-function-map "\e[27;5;59~"  [(C-\;)])
+(define-key xterm-function-map "\e[27;5;59~"  [?\C-\;])
 (define-key xterm-function-map "\e[27;5;61~"  [?\C-=])
 (define-key xterm-function-map "\e[27;5;92~"  [?\C-\\])
 
@@ -186,7 +202,7 @@
 (define-key xterm-function-map "\e[27;6;35~"  [?\C-#])
 (define-key xterm-function-map "\e[27;6;36~"  [?\C-$])
 (define-key xterm-function-map "\e[27;6;37~"  [?\C-%])
-(define-key xterm-function-map "\e[27;6;38~"  [(C-&)])
+(define-key xterm-function-map "\e[27;6;38~"  [?\C-&])
 (define-key xterm-function-map "\e[27;6;40~"  [?\C-(])
 (define-key xterm-function-map "\e[27;6;41~"  [?\C-)])
 (define-key xterm-function-map "\e[27;6;42~"  [?\C-*])
@@ -194,13 +210,13 @@
 (define-key xterm-function-map "\e[27;6;58~"  [?\C-:])
 (define-key xterm-function-map "\e[27;6;60~"  [?\C-<])
 (define-key xterm-function-map "\e[27;6;62~"  [?\C->])
-(define-key xterm-function-map "\e[27;6;63~"  [(C-\?)])
+(define-key xterm-function-map "\e[27;6;63~"  [(control ??)])
 
 ;; These are the strings emitted for various C-M- combinations
 ;; for keyboards that the Meta and Alt modifiers are on the same
 ;; key (usually labeled "Alt").
-(define-key xterm-function-map "\e[27;13;9~"  [(C-M-tab)])
-(define-key xterm-function-map "\e[27;13;13~" [(C-M-return)])
+(define-key xterm-function-map "\e[27;13;9~"  [C-M-tab])
+(define-key xterm-function-map "\e[27;13;13~" [C-M-return])
 
 (define-key xterm-function-map "\e[27;13;39~" [?\C-\M-\'])
 (define-key xterm-function-map "\e[27;13;44~" [?\C-\M-,])
@@ -226,7 +242,7 @@
 (define-key xterm-function-map "\e[27;14;35~"  [?\C-\M-#])
 (define-key xterm-function-map "\e[27;14;36~"  [?\C-\M-$])
 (define-key xterm-function-map "\e[27;14;37~"  [?\C-\M-%])
-(define-key xterm-function-map "\e[27;14;38~"  [(C-M-&)])
+(define-key xterm-function-map "\e[27;14;38~"  [?\C-\M-&])
 (define-key xterm-function-map "\e[27;14;40~"  [?\C-\M-(])
 (define-key xterm-function-map "\e[27;14;41~"  [?\C-\M-)])
 (define-key xterm-function-map "\e[27;14;42~"  [?\C-\M-*])
@@ -234,11 +250,12 @@
 (define-key xterm-function-map "\e[27;14;58~"  [?\C-\M-:])
 (define-key xterm-function-map "\e[27;14;60~"  [?\C-\M-<])
 (define-key xterm-function-map "\e[27;14;62~"  [?\C-\M->])
-(define-key xterm-function-map "\e[27;14;63~"  [(C-M-\?)])
+(define-key xterm-function-map "\e[27;14;63~"  [(control meta ??)])
 
-(define-key xterm-function-map "\e[27;7;9~"  [(C-M-tab)])
-(define-key xterm-function-map "\e[27;7;13~" [(C-M-return)])
+(define-key xterm-function-map "\e[27;7;9~"  [C-M-tab])
+(define-key xterm-function-map "\e[27;7;13~" [C-M-return])
 
+(define-key xterm-function-map "\e[27;7;32~" [?\C-\M-\s])
 (define-key xterm-function-map "\e[27;7;39~" [?\C-\M-\'])
 (define-key xterm-function-map "\e[27;7;44~" [?\C-\M-,])
 (define-key xterm-function-map "\e[27;7;45~" [?\C-\M--])
@@ -263,7 +280,7 @@
 (define-key xterm-function-map "\e[27;8;35~"  [?\C-\M-#])
 (define-key xterm-function-map "\e[27;8;36~"  [?\C-\M-$])
 (define-key xterm-function-map "\e[27;8;37~"  [?\C-\M-%])
-(define-key xterm-function-map "\e[27;8;38~"  [(C-M-&)])
+(define-key xterm-function-map "\e[27;8;38~"  [?\C-\M-&])
 (define-key xterm-function-map "\e[27;8;40~"  [?\C-\M-(])
 (define-key xterm-function-map "\e[27;8;41~"  [?\C-\M-)])
 (define-key xterm-function-map "\e[27;8;42~"  [?\C-\M-*])
@@ -271,13 +288,13 @@
 (define-key xterm-function-map "\e[27;8;58~"  [?\C-\M-:])
 (define-key xterm-function-map "\e[27;8;60~"  [?\C-\M-<])
 (define-key xterm-function-map "\e[27;8;62~"  [?\C-\M->])
-(define-key xterm-function-map "\e[27;8;63~"  [(C-M-\?)])
+(define-key xterm-function-map "\e[27;8;63~"  [(control meta ??)])
 
 (define-key xterm-function-map "\e[27;2;9~"   [S-tab])
 (define-key xterm-function-map "\e[27;2;13~"  [S-return])
 
-(define-key xterm-function-map "\e[27;6;9~"   [(C-S-tab)])
-(define-key xterm-function-map "\e[27;6;13~"  [(C-S-return)])
+(define-key xterm-function-map "\e[27;6;9~"   [C-S-tab])
+(define-key xterm-function-map "\e[27;6;13~"  [C-S-return])
 
 ;; Other versions of xterm might emit these.
 (define-key xterm-function-map "\e[A" [up])
--- a/lisp/textmodes/bibtex.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/bibtex.el	Sun Apr 22 12:42:47 2007 +0000
@@ -224,7 +224,7 @@
   :group 'bibtex
   :type 'boolean)
 
-(defvar bibtex-entry-field-alist
+(defcustom bibtex-entry-field-alist
   '(("Article"
      ((("author" "Author1 [and Author2 ...] [and others]")
        ("title" "Title of the article (BibTeX converts it to lowercase)")
@@ -452,7 +452,47 @@
 field or a function, which is called to determine the initial content
 of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the
 field is an alternative.  ALTERNATIVE-FLAG may be t only in the
-REQUIRED or CROSSREF-REQUIRED lists.")
+REQUIRED or CROSSREF-REQUIRED lists."
+  :group 'bibtex
+  :type '(repeat (list (string :tag "Entry name")
+                       (list (repeat :tag "required"
+                                     (group (string :tag "Field")
+                                            (string :tag "Comment")
+                                            (option (choice :tag "Init" :value nil
+                                                            (const nil)
+                                                            (string :tag "string")
+                                                            (function :tag "function")))
+                                            (option (choice (const nil)
+                                                            (const :tag "Alternative" t)))))
+                             (repeat :tag "optional"
+                                     (group (string :tag "Field")
+                                            (string :tag "Comment")
+                                            (option (choice :tag "Init" :value nil
+                                                            (const nil)
+                                                            (string :tag "string")
+                                                            (function :tag "function")))
+                                            (option (choice (const nil)
+                                                            (const :tag "Alternative" t))))))
+                       (option
+                        (list :tag "Crossref"
+                              (repeat :tag "required"
+                                      (group (string :tag "Field")
+                                             (string :tag "Comment")
+                                             (option (choice :tag "Init" :value nil
+                                                             (const nil)
+                                                             (string :tag "string")
+                                                             (function :tag "function")))
+                                             (option (choice (const nil)
+                                                             (const :tag "Alternative" t)))))
+                              (repeat :tag "optional"
+                                      (group (string :tag "Field")
+                                             (string :tag "Comment")
+                                             (option (choice :tag "Init" :value nil
+                                                             (const nil)
+                                                             (string :tag "string")
+                                                             (function :tag "function")))
+                                             (option (choice (const nil)
+                                                             (const :tag "Alternative" t))))))))))
 (put 'bibtex-entry-field-alist 'risky-local-variable t)
 
 (defcustom bibtex-comment-start "@Comment"
@@ -1785,7 +1825,7 @@
           (set-mark (point))
           (message "Mark set")
           (bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer
-                                      bibtex-field-kill-ring) t))
+                                      bibtex-field-kill-ring) t nil t))
       ;; insert past the current entry
       (bibtex-skip-to-valid-entry)
       (set-mark (point))
@@ -2831,7 +2871,7 @@
         (push (list "key"
                     "Used for reference key creation if author and editor fields are missing"
                     (if (or (stringp bibtex-include-OPTkey)
-                            (fboundp bibtex-include-OPTkey))
+                            (functionp bibtex-include-OPTkey))
                         bibtex-include-OPTkey))
               optional))
     (if (member-ignore-case entry-type bibtex-include-OPTcrossref)
@@ -3020,7 +3060,7 @@
       (if comment (message "%s" (nth 1 comment))
         (message "No comment available")))))
 
-(defun bibtex-make-field (field &optional move interactive)
+(defun bibtex-make-field (field &optional move interactive nodelim)
   "Make a field named FIELD in current BibTeX entry.
 FIELD is either a string or a list of the form
 \(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in
@@ -3028,7 +3068,8 @@
 If MOVE is non-nil, move point past the present field before making
 the new field.  If INTERACTIVE is non-nil, move point to the end of
 the new field.  Otherwise move point past the new field.
-MOVE and INTERACTIVE are t when called interactively."
+MOVE and INTERACTIVE are t when called interactively.
+INIT is surrounded by field delimiters, unless NODELIM is non-nil."
   (interactive
    (list (let ((completion-ignore-case t)
                (field-list (bibtex-field-list
@@ -3058,10 +3099,13 @@
     (indent-to-column (+ bibtex-entry-offset
                          bibtex-text-indentation)))
   (let ((init (nth 2 field)))
-    (insert (cond ((stringp init) init)
-                  ((fboundp init) (funcall init))
-                  (t (concat (bibtex-field-left-delimiter)
-                             (bibtex-field-right-delimiter))))))
+    (if (not init) (setq init "")
+      (if (functionp init) (setq init (funcall init)))
+      (unless (stringp init) (error "`%s' is not a string" init)))
+    ;; NODELIM is required by `bibtex-insert-kill'
+    (if nodelim (insert init)
+      (insert (bibtex-field-left-delimiter) init
+              (bibtex-field-right-delimiter))))
   (when interactive
     ;; (bibtex-find-text nil nil bibtex-help-message)
     (if (memq (preceding-char) '(?} ?\")) (forward-char -1))
--- a/lisp/textmodes/flyspell.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/flyspell.el	Sun Apr 22 12:42:47 2007 +0000
@@ -431,7 +431,7 @@
 (defface flyspell-incorrect
   '((((class color)) (:foreground "OrangeRed" :bold t :underline t))
     (t (:bold t)))
-  "Face used to display a misspelled word in Flyspell."
+  "Face used for marking a misspelled word in Flyspell."
   :group 'flyspell)
 ;; backward-compatibility alias
 (put 'flyspell-incorrect-face 'face-alias 'flyspell-incorrect)
@@ -439,7 +439,7 @@
 (defface flyspell-duplicate
   '((((class color)) (:foreground "Gold3" :bold t :underline t))
     (t (:bold t)))
-  "Face used to display subsequent occurrences of a misspelled word.
+  "Face used for marking a misspelled word that appears twice in the buffer.
 See also `flyspell-duplicate-distance'."
   :group 'flyspell)
 ;; backward-compatibility alias
@@ -1509,7 +1509,7 @@
     (if flyspell-issue-message-flag (message "Checking region..."))
     (set-buffer curbuf)
     (ispell-check-version)
-    (let ((c (apply 'call-process-region beg
+    (let ((c (apply 'ispell-call-process-region beg
 		    end
 		    ispell-program-name
 		    nil
--- a/lisp/textmodes/org.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/org.el	Sun Apr 22 12:42:47 2007 +0000
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 4.67c
+;; Version: 4.67d
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -7952,7 +7952,10 @@
 	entry s)
     (switch-to-buffer-other-window "*Edit Formulas*")
     (erase-buffer)
-    (fundamental-mode)
+    ;; Keep global-font-lock-mode from turning on font-lock-mode
+    (let ((font-lock-global-modes '(not fundamental-mode)))
+      (fundamental-mode))
+    (org-set-local 'font-lock-global-modes (list 'not major-mode))
     (org-set-local 'org-pos pos)
     (org-set-local 'org-window-configuration wc)
     (use-local-map org-edit-formulas-map)
@@ -12945,6 +12948,8 @@
   (setq org-agenda-undo-list nil
 	org-agenda-pending-undo-list nil)
   (setq major-mode 'org-agenda-mode)
+  ;; Keep global-font-lock-mode from turning on font-lock-mode
+  (org-set-local 'font-lock-global-modes (list 'not major-mode))
   (setq mode-name "Org-Agenda")
   (use-local-map org-agenda-mode-map)
   (easy-menu-add org-agenda-menu)
--- a/lisp/textmodes/reftex-auc.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-auc.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,6 +4,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 
 ;; This file is part of GNU Emacs.
--- a/lisp/textmodes/reftex-cite.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-cite.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,6 +4,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 
 ;; This file is part of GNU Emacs.
--- a/lisp/textmodes/reftex-dcr.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-dcr.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,8 +4,8 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
-;;
 
 ;; This file is part of GNU Emacs.
 
--- a/lisp/textmodes/reftex-global.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-global.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,6 +4,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 
 ;; This file is part of GNU Emacs.
--- a/lisp/textmodes/reftex-index.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-index.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,6 +4,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 
 ;; This file is part of GNU Emacs.
--- a/lisp/textmodes/reftex-parse.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-parse.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,8 +4,8 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
-;;
 
 ;; This file is part of GNU Emacs.
 
--- a/lisp/textmodes/reftex-ref.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-ref.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,6 +4,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 
 ;; This file is part of GNU Emacs.
--- a/lisp/textmodes/reftex-sel.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-sel.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,6 +4,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 
 ;; This file is part of GNU Emacs.
--- a/lisp/textmodes/reftex-toc.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-toc.el	Sun Apr 22 12:42:47 2007 +0000
@@ -3,6 +3,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 
 ;; This file is part of GNU Emacs.
--- a/lisp/textmodes/reftex-vars.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex-vars.el	Sun Apr 22 12:42:47 2007 +0000
@@ -4,6 +4,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 
 ;; This file is part of GNU Emacs.
--- a/lisp/textmodes/reftex.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/textmodes/reftex.el	Sun Apr 22 12:42:47 2007 +0000
@@ -3,6 +3,7 @@
 ;;   2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
 ;; Version: 4.31
 ;; Keywords: tex
 
--- a/lisp/tmm.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/tmm.el	Sun Apr 22 12:42:47 2007 +0000
@@ -41,7 +41,7 @@
 (defvar tmm-short-cuts)
 (defvar tmm-old-mb-map nil)
 (defvar tmm-old-comp-map)
-(defvar tmm-c-prompt)
+(defvar tmm-c-prompt nil)
 (defvar tmm-km-list)
 (defvar tmm-next-shortcut-digit)
 (defvar tmm-table-undef)
@@ -70,17 +70,22 @@
 				   (list this-one)))))
 	(setq list (cdr list))))
     (if x-position
-	(let ((tail menu-bar)
-	      this-one
-	      (column 0))
-	  (while (and tail (< column x-position))
+	(let ((tail menu-bar) (column 0)
+	      this-one name visible)
+	  (while (and tail (<= column x-position))
 	    (setq this-one (car tail))
-	    (if (and (consp (car tail))
-		     (consp (cdr (car tail)))
-		     (stringp (nth 1 (car tail))))
-		(setq column (+ column
-				(length (nth 1 (car tail)))
-				1)))
+	    (if (and (consp this-one)
+		     (consp (cdr this-one))
+		     (setq name  ;simple menu
+			   (cond ((stringp (nth 1  this-one))
+				  (nth 1  this-one))
+				 ;extended menu
+				 ((stringp (nth 2 this-one))
+				  (setq visible (plist-get
+						 (nthcdr 4 this-one) :visible))
+				  (unless (and visible (not (eval visible)))
+				    (nth 2 this-one))))))
+		(setq column (+ column (length name) 1)))
 	    (setq tail (cdr tail)))
 	  (setq menu-bar-item (car this-one))))
     (tmm-prompt menu-bar nil menu-bar-item)))
@@ -187,14 +192,20 @@
 	     ;; We use this to decide the initial minibuffer contents
 	     ;; and initial history position.
 	     (if default-item
-		 (let ((tail menu))
+		 (let ((tail menu) visible)
 		   (while (and tail
 			       (not (eq (car-safe (car tail)) default-item)))
 		     ;; Be careful to count only the elements of MENU
 		     ;; that actually constitute menu bar items.
 		     (if (and (consp (car tail))
 			      (or (stringp (car-safe (cdr (car tail))))
-				  (eq (car-safe (cdr (car tail))) 'menu-item)))
+				  (and
+				   (eq (car-safe (cdr (car tail))) 'menu-item)
+				   (progn
+				     (setq visible
+					   (plist-get
+					    (nthcdr 4 (car tail)) :visible))
+				     (or (not visible) (eval visible))))))
 			 (setq index-of-default (1+ index-of-default)))
 		     (setq tail (cdr tail)))))
              (let ((prompt (concat "^." (regexp-quote tmm-mid-prompt))))
@@ -209,21 +220,24 @@
 	     (setq history (append history history history history))
 	     (setq tmm-c-prompt (nth (- history-len 1 index-of-default) history))
 	     (add-hook 'minibuffer-setup-hook 'tmm-add-prompt)
-	     (save-excursion
-	       (unwind-protect
-		   (setq out
-			 (completing-read
-			  (concat gl-str " (up/down to change, PgUp to menu): ")
-			  tmm-km-list nil t nil
-			  (cons 'history (- (* 2 history-len) index-of-default))))
-		 (save-excursion
-		   (remove-hook 'minibuffer-setup-hook 'tmm-add-prompt)
-		   (if (get-buffer "*Completions*")
-		       (progn
-			 (set-buffer "*Completions*")
-			 (use-local-map tmm-old-comp-map)
-			 (bury-buffer (current-buffer)))))
-		 ))))
+	     (if default-item
+		 (setq out (car (nth index-of-default tmm-km-list)))
+	       (save-excursion
+		 (unwind-protect
+		     (setq out
+			   (completing-read
+			    (concat gl-str
+				    " (up/down to change, PgUp to menu): ")
+			    tmm-km-list nil t nil
+			    (cons 'history
+				  (- (* 2 history-len) index-of-default))))
+		   (save-excursion
+		     (remove-hook 'minibuffer-setup-hook 'tmm-add-prompt)
+		     (if (get-buffer "*Completions*")
+			 (progn
+			   (set-buffer "*Completions*")
+			   (use-local-map tmm-old-comp-map)
+			   (bury-buffer (current-buffer))))))))))
       (setq choice (cdr (assoc out tmm-km-list)))
       (and (null choice)
 	   (> (length out) (length tmm-c-prompt))
@@ -513,7 +527,7 @@
 we merge them into a single keymap which shows the proper order of the menu.
 However, for the menu bar itself, the value does not take account
 of `menu-bar-final-items'."
-  (let (allbind bind)
+  (let (allbind bind minorbind localbind globalbind)
     (setq bind (key-binding keyseq))
     ;; If KEYSEQ is a prefix key, then BIND is either nil
     ;; or a symbol defined as a keymap (which satisfies keymapp).
@@ -524,9 +538,21 @@
 	(progn
 	  ;; Otherwise, it is a prefix, so make a list of the subcommands.
 	  ;; Make a list of all the bindings in all the keymaps.
-	  (setq allbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
-	  (setq allbind (cons (local-key-binding keyseq) allbind))
-	  (setq allbind (cons (global-key-binding keyseq) allbind))
+	  (setq minorbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
+	  (setq localbind (local-key-binding keyseq))
+	  (setq globalbind (copy-sequence (cdr (global-key-binding keyseq))))
+
+	  ;; If items have been redefined/undefined locally, remove them from
+	  ;; the global list.
+	  (dolist (minor minorbind)
+	    (dolist (item (cdr minor))
+	      (setq globalbind (assq-delete-all (car-safe item) globalbind))))
+	  (dolist (item (cdr localbind))
+	    (setq globalbind (assq-delete-all (car-safe item) globalbind)))
+
+	  (setq globalbind (cons 'keymap globalbind))
+	  (setq allbind (cons globalbind (cons localbind minorbind)))
+
 	  ;; Merge all the elements of ALLBIND into one keymap.
 	  (mapc (lambda (in)
 		  (if (and (symbolp in) (keymapp in))
--- a/lisp/url/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/url/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,28 @@
+2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* url-parse.el (url-generic-parse-url): Revert 2006-10-09 changes.
+
+2007-04-13  Chong Yidong  <cyd@stupidchicken.com>
+
+	* url-http.el (url-http-parse-headers): Stop after a set number of
+	redirections.  Suggested by Diane Murray.
+
+	* url-vars.el (url-max-redirections): New var.
+
+2007-04-01  Diane Murray  <disumu@x3y2z1.net>  (tiny change)
+
+	* url-http.el (url-http-handle-cookies): Reverse list returned by
+	`mail-fetch-field', so that cookies are set in the correct order.
+
+	* url-cookie.el (url-cookie-retrieve, url-cookie-host-can-set-p):
+	Deal with wildcard dots in domain values.
+
+2007-03-31  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
+
+	* url-http.el (url-http-mark-connection-as-busy)
+	(url-http-mark-connection-as-free): Clear query-on-exit flag on
+	idle connections.
+
 2007-02-04  Chong Yidong  <cyd@stupidchicken.com>
 
 	* url-http.el (url-http-connection-opened): New variable.
@@ -51,7 +76,7 @@
 	(url-http-parse-response): Set it.
 	(url-http-parse-headers): Use it to determine keep-alive behavior.
 
-2006-11-23  Diane Murray  <disumu@x3y2z1.net>
+2006-11-23  Diane Murray  <disumu@x3y2z1.net>  (tiny change)
 
 	* url-http.el (url-http-content-length-after-change-function): Use
 	`url-lazy-message'.
@@ -160,7 +185,7 @@
 	getenv returns an empty string for http_proxy.  This prevents an
 	error when calling `format' later on.
 
-2006-08-31  Diane Murray  <disumu@x3y2z1.net>
+2006-08-31  Diane Murray  <disumu@x3y2z1.net>  (tiny change)
 
 	* url-parse.el (url-recreate-url-attributes): New function, code
 	simply moved from `url-recreate-url'.
@@ -170,7 +195,7 @@
 	* url-http.el (url-http-create-request):
 	Use `url-recreate-url-attributes' when setting real-fname.
 
-2006-08-29  Diane Murray  <disumu@x3y2z1.net>
+2006-08-29  Diane Murray  <disumu@x3y2z1.net>  (tiny change)
 
 	* url-cookie.el (url-cookie-write-file): Really don't use versioned
 	backups.
--- a/lisp/url/url-cookie.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/url/url-cookie.el	Sun Apr 22 12:42:47 2007 +0000
@@ -272,7 +272,15 @@
 	    storage (cdr storage)
 	    cookies (cdr cur))
       (if (and (car cur)
-	       (string-match (concat "^.*" (regexp-quote (car cur)) "$") host))
+	       (string-match
+                (concat "^.*"
+                        (regexp-quote
+                         ;; Remove the dot from wildcard domains
+                         ;; before matching.
+			 (if (eq ?. (aref (car cur) 0))
+                             (substring (car cur) 1)
+                           (car cur)))
+                        "$") host))
 	  ;; The domains match - a possible hit!
 	  (while cookies
 	    (setq cur (car cookies)
@@ -344,7 +352,13 @@
      ((>= numdots mindots)		; We have enough dots in domain name
       ;; Need to check and make sure the host is actually _in_ the
       ;; domain it wants to set a cookie for though.
-      (string-match (concat (regexp-quote domain) "$") host))
+      (string-match (concat (regexp-quote
+                             ;; Remove the dot from wildcard domains
+                             ;; before matching.
+                             (if (eq ?. (aref domain 0))
+                                 (substring domain 1)
+                               domain))
+                            "$") host))
      (t
       nil))))
 
--- a/lisp/url/url-http.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/url/url-http.el	Sun Apr 22 12:42:47 2007 +0000
@@ -87,6 +87,7 @@
 
 (defun url-http-mark-connection-as-busy (host port proc)
   (url-http-debug "Marking connection as busy: %s:%d %S" host port proc)
+  (set-process-query-on-exit-flag proc t)
   (puthash (cons host port)
 	      (delq proc (gethash (cons host port) url-http-open-connections))
 	      url-http-open-connections)
@@ -97,6 +98,7 @@
   (when (memq (process-status proc) '(open run connect))
     (set-process-buffer proc nil)
     (set-process-sentinel proc 'url-http-idle-sentinel)
+    (set-process-query-on-exit-flag proc nil)
     (puthash (cons host port)
 	     (cons proc (gethash (cons host port) url-http-open-connections))
 	     url-http-open-connections))
@@ -379,8 +381,8 @@
   "Handle all set-cookie / set-cookie2 headers in an HTTP response.
 The buffer must already be narrowed to the headers, so `mail-fetch-field' will
 work correctly."
-  (let ((cookies (mail-fetch-field "Set-Cookie" nil nil t))
-	(cookies2 (mail-fetch-field "Set-Cookie2" nil nil t)))
+  (let ((cookies (nreverse (mail-fetch-field "Set-Cookie" nil nil t)))
+	(cookies2 (nreverse (mail-fetch-field "Set-Cookie2" nil nil t))))
     (and cookies (url-http-debug "Found %d Set-Cookie headers" (length cookies)))
     (and cookies2 (url-http-debug "Found %d Set-Cookie2 headers" (length cookies2)))
     (while cookies
@@ -554,21 +556,43 @@
            (let ((url-request-method url-http-method)
 		 (url-request-data url-http-data)
 		 (url-request-extra-headers url-http-extra-headers))
-	     ;; Remember that the request was redirected.
-	     (setf (car url-callback-arguments)
-		   (nconc (list :redirect redirect-uri)
-			  (car url-callback-arguments)))
-              ;; Put in the current buffer a forwarding pointer to the new
-              ;; destination buffer.
-              ;; FIXME: This is a hack to fix url-retrieve-synchronously
-              ;; without changing the API.  Instead url-retrieve should
-              ;; either simply not return the "destination" buffer, or it
-              ;; should take an optional `dest-buf' argument.
-              (set (make-local-variable 'url-redirect-buffer)
-		   (url-retrieve-internal
-		    redirect-uri url-callback-function
-		    url-callback-arguments))
-	      (url-mark-buffer-as-dead (current-buffer))))))
+	     ;; Check existing number of redirects
+	     (if (or (< url-max-redirections 0)
+		     (and (> url-max-redirections 0)
+			  (let ((events (car url-callback-arguments))
+				(old-redirects 0))
+			    (while events
+			      (if (eq (car events) :redirect)
+				  (setq old-redirects (1+ old-redirects)))
+			      (and (setq events (cdr events))
+				   (setq events (cdr events))))
+			    (< old-redirects url-max-redirections))))
+		 ;; url-max-redirections hasn't been reached, so go
+		 ;; ahead and redirect.
+		 (progn
+		   ;; Remember that the request was redirected.
+		   (setf (car url-callback-arguments)
+			 (nconc (list :redirect redirect-uri)
+				(car url-callback-arguments)))
+		   ;; Put in the current buffer a forwarding pointer to the new
+		   ;; destination buffer.
+		   ;; FIXME: This is a hack to fix url-retrieve-synchronously
+		   ;; without changing the API.  Instead url-retrieve should
+		   ;; either simply not return the "destination" buffer, or it
+		   ;; should take an optional `dest-buf' argument.
+		   (set (make-local-variable 'url-redirect-buffer)
+			(url-retrieve-internal
+			 redirect-uri url-callback-function
+			 url-callback-arguments))
+		   (url-mark-buffer-as-dead (current-buffer)))
+	       ;; We hit url-max-redirections, so issue an error and
+	       ;; stop redirecting.
+	       (url-http-debug "Maximum redirections reached")
+	       (setf (car url-callback-arguments)
+		     (nconc (list :error (list 'error 'http-redirect-limit
+					       redirect-uri))
+			    (car url-callback-arguments)))
+	       (setq success t))))))
       (4				; Client error
        ;; 400 Bad Request
        ;; 401 Unauthorized
--- a/lisp/url/url-parse.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/url/url-parse.el	Sun Apr 22 12:42:47 2007 +0000
@@ -108,7 +108,7 @@
 (defun url-recreate-url-attributes (urlobj)
   "Recreate the attributes of an URL string from the parsed URLOBJ."
   (when (url-attributes urlobj)
-    (concat "?"
+    (concat ";"
 	    (mapconcat (lambda (x)
                          (if (cdr x)
                              (concat (car x) "=" (cdr x))
@@ -168,7 +168,7 @@
 	      (setq full t)
 	      (forward-char 2)
 	      (setq save-pos (point))
-	      (skip-chars-forward "^/\\?#")
+	      (skip-chars-forward "^/")
 	      (setq host (buffer-substring save-pos (point)))
 	      (if (string-match "^\\([^@]+\\)@" host)
 		  (setq user (match-string 1 host)
@@ -189,25 +189,29 @@
 	    (setq port (url-scheme-get-property prot 'default-port)))
 
 	;; 3.3. Path
+	;; Gross hack to preserve ';' in data URLs
 	(setq save-pos (point))
-	(skip-chars-forward "^#?")
-	(setq file (buffer-substring save-pos (point)))
 
 	;; 3.4. Query
-	(when (looking-at "\\?")
-	  (forward-char 1)
-	  (setq save-pos (point))
+	(if (string= "data" prot)
+	    (goto-char (point-max))
+	  ;; Now check for references
 	  (skip-chars-forward "^#")
-	  ;; RFC 3986 specifies no general way of parsing the query
-	  ;; string, but `url-parse-args' seems universal enough.
-	  (setq attr (url-parse-args (buffer-substring save-pos (point)) t)
-		attr (nreverse attr)))
+	  (if (eobp)
+	      nil
+	    (delete-region
+	     (point)
+	     (progn
+	       (skip-chars-forward "#")
+	       (setq refs (buffer-substring (point) (point-max)))
+	       (point-max))))
+	  (goto-char save-pos)
+	  (skip-chars-forward "^;")
+	  (if (not (eobp))
+	      (setq attr (url-parse-args (buffer-substring (point) (point-max)) t)
+		    attr (nreverse attr))))
 
-	;; 3.5. Fragment
-	(when (looking-at "#")
-	  (forward-char 1)
-	  (setq refs (buffer-substring (point) (point-max))))
-
+	(setq file (buffer-substring save-pos (point)))
 	(if (and host (string-match "%[0-9][0-9]" host))
 	    (setq host (url-unhex-string host)))
 	(vector prot user pass host port file refs attr full))))))
--- a/lisp/url/url-vars.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/url/url-vars.el	Sun Apr 22 12:42:47 2007 +0000
@@ -320,6 +320,12 @@
   "\\`\\([-a-zA-Z0-9+.]+:\\)"
   "A regular expression that will match an absolute URL.")
 
+(defcustom url-max-redirections 30
+  "*The maximum number of redirection requests to honor in a HTTP connection.
+A negative number means to honor an unlimited number of redirection requests."
+  :type 'integer
+  :group 'url)
+
 (defcustom url-confirmation-func 'y-or-n-p
   "*What function to use for asking yes or no functions.
 Possible values are `yes-or-no-p' or `y-or-n-p', or any function that
--- a/lisp/vc-arch.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/vc-arch.el	Sun Apr 22 12:42:47 2007 +0000
@@ -109,6 +109,19 @@
 
 (defconst vc-arch-tagline-re "^\\W*arch-tag:[ \t]*\\(.*[^ \t\n]\\)")
 
+(defmacro vc-with-current-file-buffer (file &rest body)
+  (declare (indent 2) (debug t))
+  `(let ((-kill-buf- nil)
+         (-file- ,file))
+     (with-current-buffer (or (find-buffer-visiting -file-)
+                              (setq -kill-buf- (generate-new-buffer " temp")))
+       ;; Avoid find-file-literally since it can do many undesirable extra
+       ;; things (among which, call us back into an infinite loop).
+       (if -kill-buf- (insert-file-contents -file-))
+       (unwind-protect
+           (progn ,@body)
+         (if (buffer-live-p -kill-buf-) (kill-buffer -kill-buf-))))))
+
 (defun vc-arch-file-source-p (file)
   "Can return nil, `maybe' or a non-nil value.
 Only the value `maybe' can be trusted :-(."
@@ -122,7 +135,7 @@
 	  (concat ".arch-ids/" (file-name-nondirectory file) ".id")
 	  (file-name-directory file)))
 	;; Check the presence of a tagline.
-	(with-current-buffer (find-file-noselect file)
+	(vc-with-current-file-buffer file
 	  (save-excursion
 	    (goto-char (point-max))
 	    (or (re-search-backward vc-arch-tagline-re (- (point) 1000) t)
--- a/lisp/vc-rcs.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/vc-rcs.el	Sun Apr 22 12:42:47 2007 +0000
@@ -666,6 +666,7 @@
                              "  "
                              (aref rda 0)
                              ls)
+                      :vc-annotate-prefix t
                       :vc-rcs-r/d/a rda)))
         (maphash
          (if all-me
@@ -688,9 +689,9 @@
   "Return the time of the next annotation (as fraction of days)
 systime, or nil if there is none.  Also, reposition point."
   (unless (eobp)
-    (search-forward ": ")
-    (vc-annotate-convert-time
-     (aref (get-text-property (point) :vc-rcs-r/d/a) 1))))
+    (prog1 (vc-annotate-convert-time
+            (aref (get-text-property (point) :vc-rcs-r/d/a) 1))
+      (goto-char (next-single-property-change (point) :vc-annotate-prefix)))))
 
 (defun vc-rcs-annotate-extract-revision-at-line ()
   (aref (get-text-property (point) :vc-rcs-r/d/a) 0))
@@ -907,7 +908,7 @@
 	  (vc-file-setprop file 'vc-state
 			   (cond
 			    ((eq locking-user 'none) 'up-to-date)
-			    ((string= locking-user (vc-user-login-name file)) 
+			    ((string= locking-user (vc-user-login-name file))
                              'edited)
 			    (t locking-user)))
 	  ;; If the file has headers, we don't want to query the
--- a/lisp/view.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/view.el	Sun Apr 22 12:42:47 2007 +0000
@@ -438,7 +438,7 @@
 \\[View-leave]	quit View mode and maybe switch buffers, but don't kill this buffer.
 \\[View-kill-and-leave]	quit View mode, kill current buffer and go back to other buffer.
 
-The effect of \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered.  If it was
+The effect of \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered.  If it was
 entered by view-file, view-file-other-window, view-file-other-frame, or
 \\[dired-view-file] \(\\[view-file], \\[view-file-other-window],
 \\[view-file-other-frame], or the Dired mode v command),
@@ -446,7 +446,7 @@
 If view-mode was entered from another buffer, by \\[view-buffer],
 \\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file],
 \\[view-file-other-window], or \\[view-file-other-frame],
-then \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
+then \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
 
 Entry to view-mode runs the normal hook `view-mode-hook'."
   (interactive "P")
--- a/lisp/whitespace.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/whitespace.el	Sun Apr 22 12:42:47 2007 +0000
@@ -102,42 +102,34 @@
 (defvar whitespace-mode nil
   "Non-nil when Whitespace mode (a minor mode) is enabled.")
 (make-variable-buffer-local 'whitespace-mode)
-(put 'whitespace-mode 'permanent-local nil)
 
 (defvar whitespace-mode-line nil
   "String to display in the mode line for Whitespace mode.")
 (make-variable-buffer-local 'whitespace-mode-line)
-(put 'whitespace-mode-line 'permanent-local nil)
 
 (defvar whitespace-check-buffer-leading nil
   "Test leading whitespace for file in current buffer if t.")
 (make-variable-buffer-local 'whitespace-check-buffer-leading)
-(put 'whitespace-check-buffer-leading 'permanent-local nil)
 
 (defvar whitespace-check-buffer-trailing nil
   "Test trailing whitespace for file in current buffer if t.")
 (make-variable-buffer-local 'whitespace-check-buffer-trailing)
-(put 'whitespace-check-buffer-trailing 'permanent-local nil)
 
 (defvar whitespace-check-buffer-indent nil
   "Test indentation whitespace for file in current buffer if t.")
 (make-variable-buffer-local 'whitespace-check-buffer-indent)
-(put 'whitespace-check-buffer-indent 'permanent-local nil)
 
 (defvar whitespace-check-buffer-spacetab nil
   "Test Space-followed-by-TABS whitespace for file in current buffer if t.")
 (make-variable-buffer-local 'whitespace-check-buffer-spacetab)
-(put 'whitespace-check-buffer-spacetab 'permanent-local nil)
 
 (defvar whitespace-check-buffer-ateol nil
   "Test end-of-line whitespace for file in current buffer if t.")
 (make-variable-buffer-local 'whitespace-check-buffer-ateol)
-(put 'whitespace-check-buffer-ateol 'permanent-local nil)
 
 (defvar whitespace-highlighted-space nil
   "The variable to store the extent to highlight.")
 (make-variable-buffer-local 'whitespace-highlighted-space)
-(put 'whitespace-highlighted-space 'permanent-local nil)
 
 ;; For flavors of Emacs which don't define `defgroup' and `defcustom'.
 (eval-when-compile
--- a/lisp/wid-edit.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/wid-edit.el	Sun Apr 22 12:42:47 2007 +0000
@@ -84,7 +84,7 @@
   :group 'hypermedia)
 
 (defgroup widget-documentation nil
-  "Options controling the display of documentation strings."
+  "Options controlling the display of documentation strings."
   :group 'widgets)
 
 (defgroup widget-faces nil
--- a/lisp/woman.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/woman.el	Sun Apr 22 12:42:47 2007 +0000
@@ -486,24 +486,28 @@
 
 (defun woman-Cyg-to-Win (file)
   "Convert an absolute filename FILE from Cygwin to Windows form."
-  ;; Code taken from w32-symlinks.el
-  (if (eq (aref file 0) ?/)
-      ;; Try to use Cygwin mount table via `cygpath.exe'.
-      (condition-case nil
-	  (with-temp-buffer
-	    ;; cygpath -m file
-	    (call-process "cygpath" nil t nil "-m" file)
-	    (buffer-substring 1 (buffer-size)))
-	(error
-	 ;; Assume no `cygpath' program available.
-	 ;; Hack /cygdrive/x/ or /x/ or (obsolete) //x/ to x:/
-	 (when (string-match "\\`\\(/cygdrive\\|/\\)?/./" file)
-	   (if (match-string 1)		; /cygdrive/x/ or //x/ -> /x/
-	       (setq file (substring file (match-end 1))))
-	   (aset file 0 (aref file 1))	; /x/ -> xx/
-	   (aset file 1 ?:))		; xx/ -> x:/
-	 file))
-    file))
+  ;; MANPATH_MAP conses are not converted since they presumably map
+  ;; Cygwin to Cygwin form.
+  (if (consp file)
+      file
+    ;; Code taken from w32-symlinks.el
+    (if (eq (aref file 0) ?/)
+	;; Try to use Cygwin mount table via `cygpath.exe'.
+	(condition-case nil
+	    (with-temp-buffer
+	      ;; cygpath -m file
+	      (call-process "cygpath" nil t nil "-m" file)
+	      (buffer-substring 1 (buffer-size)))
+	  (error
+	   ;; Assume no `cygpath' program available.
+	   ;; Hack /cygdrive/x/ or /x/ or (obsolete) //x/ to x:/
+	   (when (string-match "\\`\\(/cygdrive\\|/\\)?/./" file)
+	     (if (match-string 1)		; /cygdrive/x/ or //x/ -> /x/
+		 (setq file (substring file (match-end 1))))
+	     (aset file 0 (aref file 1))	; /x/ -> xx/
+	     (aset file 1 ?:))		; xx/ -> x:/
+	   file))
+      file)))
 
 
 ;;; User options:
@@ -547,11 +551,12 @@
 	(mapcar 'woman-Cyg-to-Win path)
       path))
   "*List of dirs to search and/or files to try for man config file.
-A trailing separator (`/' for UNIX etc.) on directories is optional,
-and the filename is used if a directory specified is the first to
-contain the strings \"man\" and \".conf\" (in that order).
-If MANPATH is not set but a config file is found then it is parsed
-instead to provide a default value for `woman-manpath'."
+A trailing separator (`/' for UNIX etc.) on directories is
+optional, and the filename is used if a directory specified is
+the first to start with \"man\" and has an extension starting
+with \".conf\".  If MANPATH is not set but a config file is found
+then it is parsed instead to provide a default value for
+`woman-manpath'."
   :type '(repeat string)
   :group 'woman-interface)
 
@@ -564,7 +569,9 @@
 or
   MANDATORY_MANPATH  /usr/man
 or
-  OPTIONAL_MANPATH  /usr/man"
+  OPTIONAL_MANPATH  /usr/man
+or
+  MANPATH_MAP /opt/bin /opt/man"
   ;; Functionality suggested by Charles Curley.
   (let ((path woman-man.conf-path)
 	file manpath)
@@ -576,7 +583,7 @@
 		  (or (not (file-directory-p file))
 		      (and
 		       (setq file
-			     (directory-files file t "man.*\\.conf" t))
+			     (directory-files file t "\\`man.*\\.conf[a-z]*\\'" t))
 		       (file-readable-p (setq file (car file)))))
 		  ;; Parse the file -- if no MANPATH data ignore it:
 		  (with-temp-buffer
@@ -584,8 +591,13 @@
 		    (while (re-search-forward
 			    ;; `\(?: ... \)' is a "shy group"
 			    "\
-^[ \t]*\\(?:MANDATORY_\\|OPTIONAL_\\)?MANPATH[ \t]+\\(\\S-+\\)" nil t)
-		      (setq manpath (cons (match-string 1) manpath)))
+^[ \t]*\\(?:\\(?:MANDATORY_\\|OPTIONAL_\\)?MANPATH[ \t]+\\(\\S-+\\)\\|\
+MANPATH_MAP[ \t]+\\(\\S-+\\)[ \t]+\\(\\S-+\\)\\)" nil t)
+		      (add-to-list 'manpath
+				   (if (match-beginning 1)
+				       (match-string 1) 
+				     (cons (match-string 2)
+					   (match-string 3)))))
 		    manpath))
 		 ))
       (setq path (cdr path)))
@@ -600,6 +612,11 @@
 selected by the value of `woman-manpath-man-regexp'.  Non-directory
 and unreadable files are ignored.
 
+Elements can also be a cons cell indicating a mapping from PATH
+to manual trees: if such an element's car is equal to a path
+element of the environment variable PATH, the cdr of the cons
+cell is included in the directory tree search.
+
 If not set then the environment variable MANPATH is used.  If no such
 environment variable is found, the default list is determined by
 consulting the man configuration file if found, which is determined by
@@ -618,7 +635,7 @@
 
 The MANPATH environment variable may be set using DOS semi-colon-
 separated or UN*X/Cygwin colon-separated syntax (but not mixed)."
-  :type '(repeat string)
+  :type '(repeat (choice string (cons string string)))
   :group 'woman-interface)
 
 (defcustom woman-manpath-man-regexp "[Mm][Aa][Nn]"
@@ -1159,7 +1176,14 @@
 Called both to generate and to check the cache!"
   ;; Must use substituted paths because values of env vars may change!
   (list woman-cache-level
-	(mapcar 'substitute-in-file-name woman-manpath)
+	(let (lst path)
+	  (dolist (dir woman-manpath (nreverse lst))
+	    (when (consp dir)
+	      (unless path
+		(setq path
+		      (split-string (getenv "PATH") path-separator t)))
+	      (setq dir (and (member (car dir) path) (cdr dir))))
+	    (when dir (add-to-list 'lst (substitute-in-file-name dir)))))
 	(mapcar 'substitute-in-file-name woman-path)))
 
 (defun woman-read-directory-cache ()
@@ -1320,10 +1344,15 @@
   ;; Allow each path to be a single string or a list of strings:
   (if (not (listp woman-manpath)) (setq woman-manpath (list woman-manpath)))
   (if (not (listp woman-path)) (setq woman-path (list woman-path)))
-  (let (dir head dirs)
+  (let (dir head dirs path)
     (while woman-manpath
       (setq dir (car woman-manpath)
 	    woman-manpath (cdr woman-manpath))
+      (when (consp dir)
+	(unless path
+	  (setq path (split-string (getenv "PATH") path-separator t)))
+	(setq dir (and (member (car dir) path)
+		       (cdr dir))))
       (if (and dir (woman-file-readable-p dir))
 	  ;; NB: `parse-colon-path' creates null elements for
 	  ;; redundant (semi-)colons and trailing `/'s!
@@ -2102,18 +2131,6 @@
   (interactive)				; mainly for testing
   (WoMan-log-begin)
   (run-hooks 'woman-pre-format-hook)
-
-  ;; look for macro sets that woman cannot handle:
-  (goto-char (point-min))
-  (let ((case-fold-search nil))
-    (unless (and (re-search-forward "^\\.SH[ \n]" (point-max) t)
-		 (progn (goto-char (point-min))
-			(re-search-forward "^\\.TH[ \n]" (point-max) t))
-		 (progn (goto-char (point-min))
-			(not (re-search-forward "^\\.\\([pnil]p\\|sh\\)[ \n]"
-						(point-max) t))))
-      (error "WoMan can only format man pages written with the usual `-man' macros")))
-
   (and (boundp 'font-lock-mode) font-lock-mode (font-lock-mode -1))
   ;; (fundamental-mode)
   (let ((start-time (current-time))	; (HIGH LOW MICROSEC)
@@ -2269,6 +2286,18 @@
     ;; conditionals and switch source requests:
     (woman0-roff-buffer from)
 
+    ;; Check for macro sets that woman cannot handle.  We can only
+    ;; because do this after processing source-switch directives.
+    (goto-char (point-min))
+    (let ((case-fold-search nil))
+      (unless (and (re-search-forward "^\\.SH[ \n]" (point-max) t)
+		   (progn (goto-char (point-min))
+			  (re-search-forward "^\\.TH[ \n]" (point-max) t))
+		   (progn (goto-char (point-min))
+			  (not (re-search-forward "^\\.\\([pnil]p\\|sh\\)[ \n]"
+						  (point-max) t))))
+	(error "WoMan can only format man pages written with the usual `-man' macros")))
+
     ;; Process \k escapes BEFORE changing tab width (?):
     (goto-char from)
     (woman-mark-horizonal-position)
--- a/lisp/xt-mouse.el	Sun Apr 22 12:12:29 2007 +0000
+++ b/lisp/xt-mouse.el	Sun Apr 22 12:42:47 2007 +0000
@@ -50,7 +50,8 @@
 
 ;; Mouse events symbols must have an 'event-kind property with
 ;; the value 'mouse-click.
-(dolist (event-type '(mouse-1 mouse-2 mouse-3))
+(dolist (event-type '(mouse-1 mouse-2 mouse-3
+			      M-down-mouse-1 M-down-mouse-2 M-down-mouse-3))
   (put event-type 'event-kind 'mouse-click))
 
 (defun xterm-mouse-translate (event)
@@ -108,6 +109,8 @@
 ;;(defvar xterm-mouse-y 0
 ;;  "Position of last xterm mouse event relative to the frame.")
 
+(defvar xt-mouse-epoch nil)
+
 ;; Indicator for the xterm-mouse mode.
 
 (defun xterm-mouse-position-function (pos)
@@ -129,6 +132,13 @@
   (let* ((type (- (xterm-mouse-event-read) #o40))
 	 (x (- (xterm-mouse-event-read) #o40 1))
 	 (y (- (xterm-mouse-event-read) #o40 1))
+	 ;; Emulate timestamp information.  This is accurate enough
+	 ;; for default value of mouse-1-click-follows-link (450msec).
+	 (timestamp (truncate
+		     (* 1000
+			(- (float-time)
+			   (or xt-mouse-epoch
+			       (setq xt-mouse-epoch (float-time)))))))
 	 (mouse (intern
 		 ;; For buttons > 3, the release-event looks
 		 ;; differently (see xc/programs/xterm/button.c,
@@ -136,6 +146,11 @@
 		 ;; a release-event only, no down-event.
 		 (cond ((>= type 64)
 			(format "mouse-%d" (- type 60)))
+		       ((memq type '(8 9 10))
+			(setq xterm-mouse-last type)
+			(format "M-down-mouse-%d" (- type 7)))
+		       ((= type 11)
+			(format "mouse-%d" (- xterm-mouse-last 7)))
 		       ((= type 3)
 			(format "mouse-%d" (+ 1 xterm-mouse-last)))
 		       (t
@@ -150,10 +165,13 @@
     (set-terminal-parameter nil 'xterm-mouse-y y)
     (setq
      last-input-event
-     (if w
-	 (list mouse (posn-at-x-y (- x left) (- y top) w t))
-       (list mouse
-	     (append (list nil 'menu-bar) (nthcdr 2 (posn-at-x-y x y w t))))))))
+     (list mouse
+	   (let ((event (if w
+			    (posn-at-x-y (- x left) (- y top) w t)
+			  (append (list nil 'menu-bar)
+				  (nthcdr 2 (posn-at-x-y x y))))))
+	     (setcar (nthcdr 3 event) timestamp)
+	     event)))))
 
 ;;;###autoload
 (define-minor-mode xterm-mouse-mode
--- a/lispref/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,282 @@
+2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* frames.texi (Multiple Displays): Add note about "multi-monitor"
+	setups.
+	(Display Feature Testing): Note that display refers to all
+	physical monitors for multi-monitor setups.
+
+2007-04-14  Richard Stallman  <rms@gnu.org>
+
+	* lists.texi (Sets And Lists): Clarify `delete' examples.
+	Remove spurious xref to same node.
+	Clarify xref for add-to-list.
+
+2007-04-12  Nick Roberts  <nickrob@snap.net.nz>
+
+	* keymaps.texi (Format of Keymaps): Remove spurious ")" from
+	value of lisp-mode-map.
+
+2007-04-11  Karl Berry  <karl@gnu.org>
+
+	* anti.texi (Antinews),
+	* display.texi (Overlay Properties) and (Defining Images),
+	* processes.texi (Synchronous Processes) and (Sentinels),
+	* syntax.texi (Syntax Table Internals),
+	* searching.texi (Regexp Special),
+	* nonascii.texi (Default Coding Systems),
+	* text.texi (Special Properties),
+	* minibuf.texi (Basic Completion): Wording to improve breaks in
+	8.5x11 format.
+	* elisp.texi (smallbook): new @set to more easily switch between
+	smallbook and 8.5x11.
+
+2007-04-11  Richard Stallman  <rms@gnu.org>
+
+	* text.texi (Lazy Properties): Minor fix.
+
+2007-04-08  Karl Berry  <karl@gnu.org>
+
+	* symbols.texi (Plists and Alists): Period after "vs" in index entries.
+	* macros.texi (Backquote): Downcase Backquote in index entries for
+	consistency.
+
+2007-04-08  Richard Stallman  <rms@gnu.org>
+
+	* text.texi (Adaptive Fill): Just describe default,
+	don't show it (since it contains non-ASCII chars).
+
+2007-04-07  Karl Berry  <karl@gnu.org>
+
+	* text.texi (Adaptive Fill) [@iftex]: Omit binary characters in
+	adaptive-fill-regexp's value, since they are not in the standard
+	TeX fonts.
+
+2007-04-07  Herbert Euler  <herberteuler@hotmail.com>
+
+	* display.texi (Defining Faces): Fix example.
+
+2007-04-07  Karl Berry  <karl@gnu.org>
+
+	* display.texi (Button Buffer Commands): Improve page break.
+
+2007-04-07  Richard Stallman  <rms@gnu.org>
+
+	* advice.texi (Activation of Advice): Remove redundant index entry.
+
+	* backups.texi: Improve index entries.  Remove redundant ones.
+
+	* compile.texi (Byte Compilation): Improve index entry.
+
+	* hash.texi (Creating Hash): Improve index entry.
+
+	* symbols.texi (Definitions): Improve index entry.
+
+	* edebug.texi: Improve index entries.  Remove redundant/useless ones.
+
+	* maps.texi (Standard Keymaps): Remove useless index entry.
+
+	* help.texi (Documentation Basics): Remove redundant index entries.
+
+	* customize.texi: Improve index entries.
+	Remove redundant/useless ones.
+
+	* locals.texi (Standard Buffer-Local Variables): Clarify intro text.
+
+	* streams.texi (Output Variables): Improve index entry.
+
+	* abbrevs.texi (Abbrevs): Remove useless index entry.
+
+	* macros.texi (Expansion): Remove useless index entry.
+
+	* text.texi: Improve index entries.  Remove redundant/useless ones.
+	(Text Properties, Examining Properties)
+	(Special Properties): Use "property category" instead of "category"
+	to refer to the `category' property.
+
+	* positions.texi: Improve index entries.  Remove useless one.
+
+	* lists.texi: Improve index entries.  Remove redundant/useless ones.
+
+	* os.texi: Improve index entries.
+	(Timers): Fix previous change.
+
+	* buffers.texi: Improve index entries.
+	(Modification Time): Get rid of term "obsolete buffer".
+
+	* debugging.texi: Improve index entries.
+	(Test Coverage): Add xref to other test coverage ftr.
+
+	* eval.texi: Improve index entry.  Remove redundant ones.
+
+	* numbers.texi: Improve index entries.  Remove redundant/useless ones.
+
+	* files.texi: Improve index entries.  Remove redundant/useless ones.
+
+	* objects.texi: Improve index entries.
+
+	* processes.texi: Improve index entries.
+
+	* modes.texi: Improve index entry.  Remove redundant one.
+
+	* nonascii.texi: Improve index entries.
+
+	* internals.texi: Improve index entries.
+
+	* syntax.texi: Improve index entries.
+
+	* keymaps.texi (Active Keymaps): Improve index entries.
+
+	* commands.texi: Improve index entries.  Remove redundant/useless ones.
+
+	* frames.texi: Improve index entries.  Remove redundant/useless ones.
+
+	* markers.texi: Improve index entries.  Remove redundant ones.
+
+	* tips.texi: Improve index entries.
+
+	* loading.texi (Unloading): Improve index entry.
+
+	* variables.texi: Improve index entries.  Remove redundant one.
+
+	* sequences.texi: Improve index entry.
+
+	* display.texi: Improve index entries.  Remove redundant ones.
+
+	* windows.texi: Improve index entries.
+
+	* searching.texi: Improve index entries.  Remove redundant one.
+
+	* strings.texi (Case Tables): Improve last change.
+
+2007-04-04  Chong Yidong  <cyd@stupidchicken.com>
+
+	* strings.texi (Case Tables): Document with-case-table and
+	ascii-case-table.
+
+2007-04-03  Karl Berry  <karl@gnu.org>
+
+	* processes.texi (Network): Reword to improve page break.
+
+2007-04-03  Eli Zaretskii  <eliz@gnu.org>
+
+	* functions.texi (Inline Functions): Describe more disadvantages
+	of defsubst, and make advice against it stronger.
+
+2007-04-02  Karl Berry  <karl@gnu.org>
+
+	* backups.texi (Backup Names): Avoid widow words.
+	* modes.texi (Example Major Modes): Align last comment.
+
+2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
+
+	* keymaps.texi (Remapping Commands): Document new arg to
+	command-remapping.
+
+2007-04-01  Karl Berry  <karl@gnu.org>
+
+	* processes.texi (Low-Level Network): typo.
+	* loading.texi (Hooks for Loading): avoid double "the".
+	* keymaps.texi (Key Sequences): no double "and".
+	(Changing Key Bindings): shorten to improve line break.
+
+2007-03-31  Glenn Morris  <rgm@gnu.org>
+
+	* os.texi (Timers): Fix description of run-at-time TIME formats.
+
+2007-03-31  Richard Stallman  <rms@gnu.org>
+
+	* display.texi (Invisible Text): Correct buffer-invisibility-spec
+	regarding ellipsis.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+	* intro.texi (nil and t):
+	* symbols.texi (Plists and Alists):
+	* variables.texi (Variable Aliases, Constant Variables):
+	* functions.texi (Defining Functions):
+	* advice.texi (Advising Primitives):
+	* debugging.texi (Syntax Errors, Compilation Errors):
+	* minibuf.texi (Minibuffer Windows):
+	* commands.texi (Adjusting Point):
+	* modes.texi (Syntactic Font Lock, Faces for Font Lock)
+	(Auto Major Mode, Major Mode Conventions):
+	* help.texi (Describing Characters):
+	* files.texi (Create/Delete Dirs, Information about Files)
+	(File Locks, Writing to Files, Reading from Files)
+	(Saving Buffers):
+	* windows.texi (Resizing Windows, Cyclic Window Ordering):
+	* frames.texi (Finding All Frames):
+	* positions.texi (Buffer End, Motion):
+	* markers.texi (The Region):
+	* text.texi (Deletion, Near Point):
+	* display.texi (Displaying Messages, Truncation):
+	* os.texi (Processor Run Time):
+	* tips.texi (Key Binding Conventions, Programming Tips)
+	(Warning Tips, Documentation Tips, Comment Tips):
+	* internals.texi (Memory Usage): Improve indexing.
+
+	* variables.texi (Frame-Local Variables):
+	* functions.texi (Argument List):
+	* loading.texi (Library Search):
+	* streams.texi (Output Variables):
+	* keymaps.texi (Translation Keymaps, Searching Keymaps):
+	* searching.texi (Replacing Match, Search and Replace):
+	* processes.texi (Byte Packing, Decoding Output)
+	(Accepting Output, Network Servers, Shell Arguments):
+	* display.texi (Abstract Display, Image Cache, Scroll Bars):
+	* windows.texi (Window Point, Window Start):
+	* frames.texi (Management Parameters, Frame Parameters, Frame Titles):
+	* commands.texi (Reading Input, Keyboard Events):
+	* minibuf.texi (Reading File Names, Minibuffer Completion)
+	(Recursive Mini):
+	* positions.texi (List Motion):
+	* hash.texi (Hash Tables, Creating Hash, Defining Hash):
+	* numbers.texi (Arithmetic Operations, Math Functions)
+	(Predicates on Numbers, Comparison of Numbers):
+	(Numeric Conversions):
+	* locals.texi (Standard Buffer-Local Variables):
+	* maps.texi (Standard Keymaps):
+	* os.texi (User Identification, System Environment, Recording Input)
+	(X11 Keysyms):
+	* nonascii.texi (Non-ASCII Characters, Splitting Characters):
+	* backups.texi (Backups and Auto-Saving):
+	* customize.texi (Customization, Group Definitions)
+	(Variable Definitions):
+	* compile.texi (Byte Compilation): Improve index entries.
+
+2007-03-31  Karl Berry  <karl@gnu.org>
+
+	* macros.texi (Defining Macros): Avoid widow syllable.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+	* elisp.texi (Top): Postscript -> PostScript.
+
+	* display.texi (Images, Postscript Images): Postscript -> PostScript.
+
+2007-03-31  Markus Triska  <markus.triska@gmx.at>
+
+	* internals.texi (Writing Emacs Primitives): Untabify `For'.
+
+2007-03-30  Karl Berry  <karl@gnu.org>
+
+	* lists.texi (List-related Predicates): Remove spurious @need.
+	(Setcdr): Use @smallexample to improve page break.
+	(Association Lists) <assoc>: Reword to improve page break.
+
+	* strings.texi (String Conversion): Insert blank line to improve
+	page break.
+
+	* numbers.texi (Random Numbers): Use @minus{}.
+	(Math Functions): Use @minus{}.
+
+	* intro.texi (Acknowledgements): Avoid line breaks before middle
+	initials.
+
+2007-03-24  Eli Zaretskii  <eliz@gnu.org>
+
+	* errors.texi (Standard Errors): Add an index entry.
+
 2007-03-19  Richard Stallman  <rms@gnu.org>
 
 	* os.texi (Recording Input): recent-keys now gives 300 keys.
--- a/lispref/abbrevs.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/abbrevs.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -7,7 +7,7 @@
 @node Abbrevs, Processes, Syntax Tables, Top
 @chapter Abbrevs and Abbrev Expansion
 @cindex abbrev
-@cindex abbrev table
+@c  @cindex abbrev table  Redundant with "abbrev".
 
   An abbreviation or @dfn{abbrev} is a string of characters that may be
 expanded to a longer string.  The user can insert the abbrev string and
--- a/lispref/advice.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/advice.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -384,7 +384,7 @@
 @deffn Command ad-deactivate function
 This command deactivates the advice for @var{function}.
 @cindex deactivating advice
-@cindex advice, deactivating
+@c @cindex advice, deactivating   "advice, activating" is just above
 @end deffn
 
 @deffn Command ad-update function &optional compile
@@ -673,6 +673,7 @@
 
 @node Advising Primitives
 @section Advising Primitives
+@cindex advising primitives
 
   Advising a primitive function (also called a ``subr'') is risky.
 Some primitive functions are used by the advice mechanism; advising
--- a/lispref/anti.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/anti.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -433,11 +433,10 @@
 a char-table; it has to be a string.
 
 @item
-The two functions @code{merge-coding-systems} and
-@code{decode-coding-inserted-region}, and the variable
-@code{auto-coding-functions}, have been deleted.  The
-@code{mime-text-unsuitable} coding system property no longer has any
-special meaning.
+The variable @code{auto-coding-functions} and the two functions
+@code{merge-coding-systems} and @code{decode-coding-inserted-region}
+have been deleted.  The coding system property
+@code{mime-text-unsuitable} no longer has any special meaning.
 
 @item
 If pure storage overflows while dumping, Emacs won't tell you how much
--- a/lispref/backups.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/backups.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -6,6 +6,7 @@
 @setfilename ../info/backups
 @node Backups and Auto-Saving, Buffers, Files, Top
 @chapter Backups and Auto-Saving
+@cindex backups and auto-saving
 
   Backup files and auto-save files are two methods by which Emacs tries
 to protect the user from the consequences of crashes or of the user's
@@ -25,10 +26,10 @@
 
   A @dfn{backup file} is a copy of the old contents of a file you are
 editing.  Emacs makes a backup file the first time you save a buffer
-into its visited file.  Normally, this means that the backup file
-contains the contents of the file as it was before the current editing
-session.  The contents of the backup file normally remain unchanged once
-it exists.
+into its visited file.  Thus, normally, the backup file contains the
+contents of the file as it was before the current editing session.
+The contents of the backup file normally remain unchanged once it
+exists.
 
   Backups are usually made by renaming the visited file to a new name.
 Optionally, you can specify that backup files should be made by copying
@@ -66,11 +67,11 @@
 @end defun
 
 @defvar buffer-backed-up
-  This buffer-local variable indicates whether this buffer's file has
-been backed up on account of this buffer.  If it is non-@code{nil}, then
+  This buffer-local variable says whether this buffer's file has
+been backed up on account of this buffer.  If it is non-@code{nil},
 the backup file has been written.  Otherwise, the file should be backed
 up when it is next saved (if backups are enabled).  This is a
-permanent local; @code{kill-all-local-variables} does not alter it.
+permanent local; @code{kill-all-local-variables} does not alter@tie{}it.
 @end defvar
 
 @defopt make-backup-files
@@ -162,7 +163,7 @@
 
 @node Rename or Copy
 @subsection Backup by Renaming or by Copying?
-@cindex backup files, how to make them
+@cindex backup files, rename or copy
 
   There are two ways that Emacs can make a backup file:
 
@@ -268,12 +269,12 @@
 @defopt kept-new-versions
 The value of this variable is the number of newest versions to keep
 when a new numbered backup is made.  The newly made backup is included
-in the count.  The default value is 2.
+in the count.  The default value is@tie{}2.
 @end defopt
 
 @defopt kept-old-versions
 The value of this variable is the number of oldest versions to keep
-when a new numbered backup is made.  The default value is 2.
+when a new numbered backup is made.  The default value is@tie{}2.
 @end defopt
 
   If there are backups numbered 1, 2, 3, 5, and 7, and both of these
@@ -294,7 +295,7 @@
 This variable specifies how many of the newest backup versions to keep
 in the Dired command @kbd{.} (@code{dired-clean-directory}).  That's the
 same thing @code{kept-new-versions} specifies when you make a new backup
-file.  The default value is 2.
+file.  The default is@tie{}2.
 @end defopt
 
 @node Backup Names
@@ -306,8 +307,8 @@
 
 @defun backup-file-name-p filename
 This function returns a non-@code{nil} value if @var{filename} is a
-possible name for a backup file.  A file with the name @var{filename}
-need not exist; the function just checks the name.
+possible name for a backup file.  It just checks the name, not whether
+a file with the name @var{filename} exists.
 
 @smallexample
 @group
@@ -417,7 +418,7 @@
 
 @node Auto-Saving
 @section Auto-Saving
-@cindex auto-saving
+@c @cindex auto-saving   Lots of symbols starting with auto-save here.
 
   Emacs periodically saves all files that you are visiting; this is
 called @dfn{auto-saving}.  Auto-saving prevents you from losing more
--- a/lispref/buffers.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/buffers.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -593,16 +593,17 @@
 
 @node Modification Time
 @comment  node-name,  next,  previous,  up
-@section Comparison of Modification Time
-@cindex comparison of modification time
-@cindex modification time, comparison of
+@section Buffer Modification Time
+@cindex comparing file modification time
+@cindex modification time of buffer
 
   Suppose that you visit a file and make changes in its buffer, and
 meanwhile the file itself is changed on disk.  At this point, saving the
 buffer would overwrite the changes in the file.  Occasionally this may
 be what you want, but usually it would lose valuable information.  Emacs
 therefore checks the file's modification time using the functions
-described below before saving the file.
+described below before saving the file.  (@xref{File Attributes},
+for how to examine a file's modification time.)
 
 @defun verify-visited-file-modtime buffer
 This function compares what @var{buffer} has recorded for the
@@ -679,12 +680,11 @@
 @end defun
 
 @defun ask-user-about-supersession-threat filename
-@cindex obsolete buffer
 This function is used to ask a user how to proceed after an attempt to
-modify an obsolete buffer visiting file @var{filename}.  An
-@dfn{obsolete buffer} is an unmodified buffer for which the associated
-file on disk is newer than the last save-time of the buffer.  This means
-some other program has probably altered the file.
+modify an buffer visiting file @var{filename} when the file is newer
+than the buffer text.  Emacs detects this because the modification
+time of the file on disk is newer than the last save-time of the
+buffer.  This means some other program has probably altered the file.
 
 @kindex file-supersession
 Depending on the user's answer, the function may return normally, in
--- a/lispref/commands.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/commands.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -116,13 +116,13 @@
 
 @node Using Interactive
 @subsection Using @code{interactive}
+@cindex arguments, interactive entry
 
   This section describes how to write the @code{interactive} form that
 makes a Lisp function an interactively-callable command, and how to
 examine a command's @code{interactive} form.
 
 @defspec interactive arg-descriptor
-@cindex argument descriptors
 This special form declares that the function in which it appears is a
 command, and that it may therefore be called interactively (via
 @kbd{M-x} or by entering a key sequence bound to it).  The argument
@@ -151,7 +151,6 @@
 or more arguments.
 
 @item
-@cindex argument prompt
 It may be a string; then its contents should consist of a code character
 followed by a prompt (which some code characters use and some ignore).
 The prompt ends either with the end of the string or with a newline.
@@ -207,7 +206,6 @@
 command.  Usually this form will call various functions to read input
 from the user, most often through the minibuffer (@pxref{Minibuffers})
 or directly from the keyboard (@pxref{Reading Input}).
-@cindex argument evaluation form
 
 Providing point or the mark as an argument value is also common, but
 if you do this @emph{and} read input (whether using the minibuffer or
@@ -865,6 +863,10 @@
 
 @node Adjusting Point
 @section Adjusting Point After Commands
+@cindex adjusting point
+@cindex invisible/intangible text, and point
+@cindex @code{display} property, and point display
+@cindex @code{composition} property, and point display
 
   It is not easy to display a value of point in the middle of a
 sequence of text that has the @code{display}, @code{composition} or
@@ -933,6 +935,7 @@
 
 @node Keyboard Events
 @subsection Keyboard Events
+@cindex keyboard events
 
 There are two kinds of input you can get from the keyboard: ordinary
 keys, and function keys.  Ordinary keys correspond to characters; the
@@ -1600,19 +1603,19 @@
 The command is called with no arguments, and the specific signal event is
 available in @code{last-input-event}.  For example:
 
-@example
+@smallexample
 (defun sigusr-handler ()
   (interactive)
   (message "Caught signal %S" last-input-event))
 
 (define-key special-event-map [sigusr1] 'sigusr-handler)
-@end example
+@end smallexample
 
 To test the signal handler, you can make Emacs send a signal to itself:
 
-@example
+@smallexample
 (signal-process (emacs-pid) 'sigusr1)
-@end example
+@end smallexample
 @end table
 
   If one of these events arrives in the middle of a key sequence---that
@@ -1776,8 +1779,7 @@
 
 @node Accessing Events
 @subsection Accessing Events
-@cindex mouse events, accessing the data
-@cindex accessing data of mouse events
+@cindex mouse events, data in
 
   This section describes convenient functions for accessing the data in
 a mouse button or motion event.
@@ -1892,7 +1894,6 @@
 is a buffer position, return the size of the character at that position.
 @end defun
 
-@cindex mouse event, timestamp
 @cindex timestamp of a mouse event
 @defun posn-timestamp position
 Return the timestamp in @var{position}.  This is the time at which the
@@ -2077,6 +2078,8 @@
 
 @node Reading Input
 @section Reading Input
+@cindex read input
+@cindex keyboard input
 
   The editor command loop reads key sequences using the function
 @code{read-key-sequence}, which uses @code{read-event}.  These and other
@@ -2106,7 +2109,6 @@
 for example, @code{describe-key} uses it to read the key to describe.
 
 @defun read-key-sequence prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop
-@cindex key sequence
 This function reads a key sequence and returns it as a string or
 vector.  It keeps reading events until it has accumulated a complete key
 sequence; that is, enough to specify a non-prefix command using the
@@ -2539,7 +2541,6 @@
 as the events will already have been added once as they were read for
 the first time.  An element of the form @code{(@code{t} . @var{event})}
 forces @var{event} to be added to the current command's key sequence.
-
 @end defvar
 
 @defun listify-key-sequence key
@@ -2613,9 +2614,9 @@
 @end defmac
 
 @defun discard-input
-@cindex flush input
-@cindex discard input
-@cindex terminate keyboard macro
+@cindex flushing input
+@cindex discarding input
+@cindex keyboard macro, terminating
 This function discards the contents of the terminal input buffer and
 cancels any keyboard macro that might be in the process of definition.
 It returns @code{nil}.
@@ -2661,7 +2662,6 @@
 
 @node Waiting
 @section Waiting for Elapsed Time or Input
-@cindex pausing
 @cindex waiting
 
   The wait functions are designed to wait for a certain amount of time
@@ -2768,7 +2768,7 @@
 case of @code{read-quoted-char}, this is so that @kbd{C-q} can be used
 to quote a @kbd{C-g}.
 
-@cindex prevent quitting
+@cindex preventing quitting
   You can prevent quitting for a portion of a Lisp function by binding
 the variable @code{inhibit-quit} to a non-@code{nil} value.  Then,
 although @kbd{C-g} still sets @code{quit-flag} to @code{t} as usual, the
--- a/lispref/compile.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/compile.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -6,8 +6,9 @@
 @setfilename ../info/compile
 @node Byte Compilation, Advising Functions, Loading, Top
 @chapter Byte Compilation
+@cindex byte compilation
 @cindex byte-code
-@cindex compilation
+@cindex compilation (Emacs Lisp)
 
   Emacs Lisp has a @dfn{compiler} that translates functions written
 in Lisp into a special representation called @dfn{byte-code} that can be
--- a/lispref/customize.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/customize.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -186,9 +186,10 @@
 @end defvar
 
 @node Group Definitions
-@section Defining Custom Groups
+@section Defining Customization Groups
+@cindex define customization group
+@cindex customization groups, defining
 
-@cindex custom groups, how to define
   Each Emacs Lisp package should have one main customization group which
 contains all the options, faces and other groups in the package.  If the
 package has a small number of options and faces, use just one group and
@@ -259,10 +260,10 @@
 
 @node Variable Definitions
 @section Defining Customization Variables
-
+@cindex define customization options
 @cindex customization variables, how to define
-@cindex declare user-editable variables
-  Use @code{defcustom} to declare user-editable variables.
+
+  Use @code{defcustom} to declare user-customizable variables.
 
 @defmac defcustom option standard doc [keyword value]@dots{}
 This construct declares @var{option} as a customizable user option
@@ -701,7 +702,7 @@
 
 @node Composite Types
 @subsection Composite Types
-@cindex arguments (of composite type)
+@cindex Composite Types (customization)
 
   When none of the simple types is appropriate, you can use composite
 types, which build new types from other types or from specified data.
--- a/lispref/debugging.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/debugging.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -44,7 +44,7 @@
 
 @node Debugger
 @section The Lisp Debugger
-@cindex debugger
+@cindex debugger for Emacs Lisp
 @cindex Lisp debugger
 @cindex break
 
@@ -675,6 +675,7 @@
 
 @node Syntax Errors
 @section Debugging Invalid Lisp Syntax
+@cindex debugging invalid Lisp syntax
 
   The Lisp reader reports invalid syntax, but cannot say where the real
 problem is.  For example, the error ``End of file during parsing'' in
@@ -690,6 +691,8 @@
 if it goes to the place where that defun appears to end.  If it does
 not, there is a problem in that defun.
 
+@cindex unbalanced parentheses
+@cindex parenthesis mismatch, debugging
   However, unmatched parentheses are the most common syntax errors in
 Lisp, and we can give further advice for those cases.  (In addition,
 just moving point through the code with Show Paren mode enabled might
@@ -796,8 +799,13 @@
 never return.  If it ever does return, you get a run-time error.
 @end defmac
 
+  Edebug also has a coverage testing feature (@pxref{Coverage
+Testing}).  These features partly duplicate each other, and it would
+be cleaner to combine them.
+
 @node Compilation Errors
 @section Debugging Problems in Compilation
+@cindex debugging byte compilation problems
 
   When an error happens during byte compilation, it is normally due to
 invalid syntax in the program you are compiling.  The compiler prints a
--- a/lispref/display.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/display.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -126,6 +126,7 @@
 @node Truncation
 @section Truncation
 @cindex line wrapping
+@cindex line truncation
 @cindex continuation lines
 @cindex @samp{$} in display
 @cindex @samp{\} in display
@@ -216,6 +217,7 @@
 
 @node Displaying Messages
 @subsection Displaying Messages in the Echo Area
+@cindex display message in echo area
 
   This section describes the functions for explicitly producing echo
 area messages.  Many other Emacs features display messages there, too.
@@ -760,10 +762,9 @@
 is @var{atom} or if it is a list with @var{atom} as a member.
 
 @item (@var{atom} . t)
-A character is invisible if its @code{invisible} property value
-is @var{atom} or if it is a list with @var{atom} as a member.
-Moreover, if this character is at the end of a line and is followed
-by a visible newline, it displays an ellipsis.
+A character is invisible if its @code{invisible} property value is
+@var{atom} or if it is a list with @var{atom} as a member.  Moreover,
+a sequence of such characters displays as an ellipsis.
 @end table
 @end table
 @end defvar
@@ -839,7 +840,7 @@
 
 @node Selective Display
 @section Selective Display
-@cindex selective display
+@c @cindex selective display   Duplicates selective-display
 
   @dfn{Selective display} refers to a pair of related features for
 hiding certain lines on the screen.
@@ -1364,7 +1365,7 @@
 Attributes}.
 
 @item
-A cons cell of the form @code{(foreground-color . @var{color-name})} or
+A cons cell, either of the form @code{(foreground-color . @var{color-name})} or
 @code{(background-color . @var{color-name})}.  These elements specify
 just the foreground color or just the background color.
 
@@ -1832,6 +1833,7 @@
 
 @example
 @group
+(defface region
   '((((class color) (min-colors 88) (background dark))
      :background "blue3")
 @end group
@@ -2501,7 +2503,6 @@
 @cindex automatic face assignment
 @cindex faces, automatic choice
 
-@cindex Font-Lock mode
   This hook is used for automatically assigning faces to text in the
 buffer.  It is part of the implementation of Font-Lock mode.
 
@@ -2743,7 +2744,7 @@
 
 @node Fringes
 @section Fringes
-@cindex Fringes
+@cindex fringes
 
   The @dfn{fringes} of a window are thin vertical strips down the
 sides that are used for displaying bitmaps that indicate truncation,
@@ -3073,7 +3074,7 @@
 
 @node Overlay Arrow
 @subsection The Overlay Arrow
-@cindex overlay arrow
+@c @cindex overlay arrow  Duplicates variable names
 
   The @dfn{overlay arrow} is useful for directing the user's attention
 to a particular line in a buffer.  For example, in the modes used for
@@ -3131,6 +3132,7 @@
 
 @node Scroll Bars
 @section Scroll Bars
+@cindex scroll bars
 
 Normally the frame parameter @code{vertical-scroll-bars} controls
 whether the windows in the frame have vertical scroll bars, and
@@ -3290,7 +3292,6 @@
 @node Specified Space
 @subsection Specified Spaces
 @cindex spaces, specified height or width
-@cindex specified spaces
 @cindex variable-width spaces
 
   To display a space of specified width and/or height, use a display
@@ -3603,7 +3604,7 @@
 
   The supported image formats include XBM, XPM (this requires the
 libraries @code{libXpm} version 3.4k and @code{libz}), GIF (requiring
-@code{libungif} 4.1.0), Postscript, PBM, JPEG (requiring the
+@code{libungif} 4.1.0), PostScript, PBM, JPEG (requiring the
 @code{libjpeg} library version v6a), TIFF (requiring @code{libtiff}
 v3.4), and PNG (requiring @code{libpng} 1.0.2).
 
@@ -3658,7 +3659,7 @@
 * XBM Images::          Special features for XBM format.
 * XPM Images::          Special features for XPM format.
 * GIF Images::          Special features for GIF format.
-* Postscript Images::   Special features for Postscript format.
+* PostScript Images::   Special features for PostScript format.
 * Other Image Types::   Various other formats are supported.
 * Defining Images::     Convenient ways to define an image for later use.
 * Showing Images::      Convenient ways to display an image once it is defined.
@@ -3980,11 +3981,11 @@
     (run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil)))
 @end ignore
 
-@node Postscript Images
-@subsection Postscript Images
-@cindex Postscript images
-
-  To use Postscript for an image, specify image type @code{postscript}.
+@node PostScript Images
+@subsection PostScript Images
+@cindex postscript images
+
+  To use PostScript for an image, specify image type @code{postscript}.
 This works only if you have Ghostscript installed.  You must always use
 these three properties:
 
@@ -3999,15 +4000,15 @@
 
 @item :bounding-box @var{box}
 The value, @var{box}, must be a list or vector of four integers, which
-specifying the bounding box of the Postscript image, analogous to the
-@samp{BoundingBox} comment found in Postscript files.
+specifying the bounding box of the PostScript image, analogous to the
+@samp{BoundingBox} comment found in PostScript files.
 
 @example
 %%BoundingBox: 22 171 567 738
 @end example
 @end table
 
-  Displaying Postscript images from Lisp data is not currently
+  Displaying PostScript images from Lisp data is not currently
 implemented, but it may be implemented by the time you read this.
 See the @file{etc/NEWS} file to make sure.
 
@@ -4137,8 +4138,8 @@
 This function returns a suitable search path for images used by the
 Lisp package @var{library}.
 
-The function searches for @var{image} first in @code{image-load-path}
-(excluding @file{@code{data-directory}/images}) and then in
+The function searches for @var{image} first using @code{image-load-path},
+excluding @file{@code{data-directory}/images}, and then in
 @code{load-path}, followed by a path suitable for @var{library}, which
 includes @file{../../etc/images} and @file{../etc/images} relative to
 the library file itself, and finally in
@@ -4270,6 +4271,7 @@
 
 @node Image Cache
 @subsection Image Cache
+@cindex image cache
 
   Emacs stores images in an image cache when it displays them, so it can
 display them again more efficiently.  It removes an image from the cache
@@ -4297,7 +4299,6 @@
 
 @node Buttons
 @section Buttons
-@cindex buttons
 @cindex buttons in buffers
 @cindex clickable buttons in buffers
 
@@ -4607,15 +4608,11 @@
 @end deffn
 
 @defun next-button pos &optional count-current
-Return the next button after position @var{pos} in the current buffer.
-If @var{count-current} is non-@code{nil}, count any button at
-@var{pos} in the search, instead of starting at the next button.
-@end defun
-
-@defun previous-button pos &optional count-current
-Return the @var{n}th button before position @var{pos} in the current
-buffer.  If @var{count-current} is non-@code{nil}, count any button at
-@var{pos} in the search, instead of starting at the next button.
+@defunx previous-button pos &optional count-current
+Return the next button after (for @code{next-button} or before (for
+@code{previous-button}) position @var{pos} in the current buffer.  If
+@var{count-current} is non-@code{nil}, count any button at @var{pos}
+in the search, instead of starting at the next button.
 @end defun
 
 @node Abstract Display
@@ -4954,9 +4951,8 @@
 @node Blinking
 @section Blinking Parentheses
 @cindex parenthesis matching
-@cindex blinking
+@cindex blinking parentheses
 @cindex balancing parentheses
-@cindex close parenthesis
 
   This section describes the mechanism by which Emacs shows a matching
 open parenthesis when the user inserts a close parenthesis.
@@ -5328,7 +5324,7 @@
 
 @node Beeping
 @section Beeping
-@cindex beeping
+@c  @cindex beeping   "beep" is adjacent
 @cindex bell
 
   This section describes how to make Emacs ring the bell (or blink the
--- a/lispref/edebug.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/edebug.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -12,9 +12,8 @@
 
 @node Edebug, Syntax Errors, Debugger, Debugging
 @section Edebug
-@cindex Edebug mode
+@cindex Edebug debugging facility
 
-@cindex Edebug
   Edebug is a source-level debugger for Emacs Lisp programs with which
 you can:
 
@@ -195,12 +194,6 @@
 (@pxref{Jumping}), which steps into the call after instrumenting the
 function.
 
-@cindex special forms (Edebug)
-@cindex interactive commands (Edebug)
-@cindex anonymous lambda expressions (Edebug)
-@cindex Common Lisp (Edebug)
-@pindex cl.el @r{(Edebug)}
-@pindex cl-specs.el
   Edebug knows how to instrument all the standard special forms,
 @code{interactive} forms with an expression argument, anonymous lambda
 expressions, and other defining forms.  However, Edebug cannot determine
@@ -441,9 +434,9 @@
 @end menu
 
 @node Breakpoints
-@subsubsection Breakpoints
+@subsubsection Edebug Breakpoints
 
-@cindex breakpoints
+@cindex breakpoints (Edebug)
 While using Edebug, you can specify @dfn{breakpoints} in the program you
 are testing: these are places where execution should stop.  You can set a
 breakpoint at any stop point, as defined in @ref{Using Edebug}.  For
@@ -867,10 +860,10 @@
 @node Coverage Testing
 @subsection Coverage Testing
 
-@cindex coverage testing
+@cindex coverage testing (Edebug)
 @cindex frequency counts
 @cindex performance analysis
-Edebug provides rudimentary coverage testing and display of execution
+  Edebug provides rudimentary coverage testing and display of execution
 frequency.
 
   Coverage testing works by comparing the result of each expression with
--- a/lispref/elisp.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/elisp.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -7,24 +7,29 @@
 @c Version of the manual and of Emacs.
 @c Please remember to update the edition number in README as well.
 @set VERSION  2.9
-@set EMACSVER 22.0.96
+@set EMACSVER 22.0.98
 
 @dircategory Emacs
 @direntry
 * Elisp: (elisp).       The Emacs Lisp Reference Manual.
 @end direntry
 
-@c So that anyone making the printed manual gets the version we have
-@c tuned to avoid bad line breaks, etc.
+@c for full 8.5x11, comment this out.
+@set smallbook
+
+@ifset smallbook
 @smallbook
+@end ifset
 
 @c per rms and peterb, use 10pt fonts for the main text, mostly to
 @c save on paper cost.  Also, do not declare @setchapternewpage odd,
 @c for the same reason. Do this inside @tex for now, so the
 @c last-released makeinfo does not complain.
 @tex
+@ifset smallbook
 @fonttextsize 10
-\global\hbadness=6000 % don't worry about not-too-underfull boxes
+@end ifset
+\global\hbadness=6666 % don't worry about not-too-underfull boxes
 @end tex
 
 @c Combine indices.
@@ -61,7 +66,7 @@
 @titlepage
 @title GNU Emacs Lisp Reference Manual
 @subtitle For Emacs Version @value{EMACSVER}
-@subtitle Revision @value{VERSION}, January 2002
+@subtitle Revision @value{VERSION}, April 2007
 
 @author by Bil Lewis, Dan LaLiberte, Richard Stallman
 @author and the GNU Manual Group
@@ -1297,7 +1302,7 @@
 * XBM Images::              Special features for XBM format.
 * XPM Images::              Special features for XPM format.
 * GIF Images::              Special features for GIF format.
-* Postscript Images::       Special features for Postscript format.
+* PostScript Images::       Special features for PostScript format.
 * Other Image Types::       Various other formats are supported.
 * Defining Images::         Convenient ways to define an image for later use.
 * Showing Images::          Convenient ways to display an image once
--- a/lispref/errors.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/errors.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -6,6 +6,7 @@
 @setfilename ../info/errors
 @node Standard Errors, Standard Buffer-Local Variables, GNU Emacs Internals, Top
 @appendix Standard Errors
+@cindex standard errors
 
   Here is the complete list of the error symbols in standard Emacs,
 grouped by concept.  The list includes each symbol's message (on the
--- a/lispref/eval.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/eval.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -233,7 +233,7 @@
 @node Function Indirection
 @subsection Symbol Function Indirection
 @cindex symbol function indirection
-@cindex indirection
+@cindex indirection for functions
 @cindex void function
 
   If the first element of the list is a symbol then evaluation examines
@@ -252,7 +252,6 @@
 which ought to be a function or other suitable object.
 
 @kindex invalid-function
-@cindex invalid function
   More precisely, we should now have a Lisp function (a lambda
 expression), a byte-code function, a primitive function, a Lisp macro, a
 special form, or an autoload object.  Each of these types is a case
@@ -530,7 +529,6 @@
 
 @node Quoting
 @section Quoting
-@cindex quoting
 
   The special form @code{quote} returns its single argument, as written,
 without evaluating it.  This provides a way to include constant symbols
--- a/lispref/files.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/files.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -296,6 +296,7 @@
 
 @node Saving Buffers
 @section Saving Buffers
+@cindex saving buffers
 
   When you edit a file in Emacs, you are actually working on a buffer
 that is visiting that file---that is, the contents of the file are
@@ -481,6 +482,7 @@
 @node Reading from Files
 @comment  node-name,  next,  previous,  up
 @section Reading from Files
+@cindex reading from files
 
   You can copy a file from the disk and insert it into a buffer
 using the @code{insert-file-contents} function.  Don't use the user-level
@@ -544,6 +546,7 @@
 @node Writing to Files
 @comment  node-name,  next,  previous,  up
 @section Writing to Files
+@cindex writing to files
 
   You can write the contents of a buffer, or part of a buffer, directly
 to a file on disk using the @code{append-to-file} and
@@ -647,6 +650,7 @@
 @node File Locks
 @section File Locks
 @cindex file locks
+@cindex lock file
 
   When two users edit the same file at the same time, they are likely
 to interfere with each other.  Emacs tries to prevent this situation
@@ -736,6 +740,7 @@
 
 @node Information about Files
 @section Information about Files
+@cindex file, information about
 
   The functions described in this section all operate on strings that
 designate file names.  With a few exceptions, all the functions have
@@ -1172,6 +1177,7 @@
 
 @item
 The time of last modification as a list of two integers (as above).
+@cindex modification time of file
 
 @item
 The time of last status change as a list of two integers (as above).
@@ -1262,13 +1268,13 @@
 
 @node Locating Files
 @subsection How to Locate Files in Standard Places
-@cindex locate files
-@cindex find files
+@cindex locate file in path
+@cindex find file in path
 
   This section explains how to search for a file in a list of
-directories.  One example is when you need to look for a program's
-executable file, e.g., to find out whether a given program is
-installed on the user's system.  Another example is the search for
+directories (a @dfn{path}).  One example is when you need to look for
+a program's executable file, e.g., to find out whether a given program
+is installed on the user's system.  Another example is the search for
 Lisp libraries (@pxref{Library Search}).  Such searches generally need
 to try various possible file name extensions, in addition to various
 possible directories.  Emacs provides a function for such a
@@ -1311,7 +1317,6 @@
 a list of one or more of these symbols.
 @end defun
 
-@cindex find executable program
 @defun executable-find program
 This function searches for the executable file of the named
 @var{program} and returns the full absolute name of the executable,
@@ -1323,7 +1328,7 @@
 
 @node Changing Files
 @section Changing File Names and Attributes
-@cindex renaming files
+@c @cindex renaming files  Duplicates rename-file
 @cindex copying files
 @cindex deleting files
 @cindex linking files
@@ -2459,6 +2464,7 @@
 
 @node Create/Delete Dirs
 @section Creating and Deleting Directories
+@cindex creating and deleting directories
 @c Emacs 19 features
 
   Most Emacs Lisp file-manipulation functions get errors when used on
--- a/lispref/frames.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/frames.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -150,6 +150,13 @@
 names that they share a single keyboard, and it treats them as a single
 terminal.
 
+  Note that some graphical terminals can output to more than a one
+monitor (or other output device) at the same time.  On these
+``multi-monitor'' setups, a single @var{display} value controls the
+output to all the physical monitors.  In this situation, there is
+currently no platform-independent way for Emacs to distinguish between
+the different physical monitors.
+
 @deffn Command make-frame-on-display display &optional parameters
 This creates and returns a new frame on display @var{display}, taking
 the other frame parameters from @var{parameters}.  Aside from the
@@ -193,6 +200,7 @@
 
 @node Frame Parameters
 @section Frame Parameters
+@cindex frame parameters
 
   A frame has many parameters that control its appearance and behavior.
 Just what parameters a frame has depends on what display mechanism it
@@ -555,6 +563,7 @@
 
 @node Management Parameters
 @subsubsection Window Management Parameters
+@cindex window manager, and frame parameters
 
   These frame parameters, meaningful only on window system displays,
 interact with the window manager.
@@ -885,6 +894,7 @@
 
 @node Frame Titles
 @section Frame Titles
+@cindex frame title
 
   Every frame has a @code{name} parameter; this serves as the default
 for the frame title which window systems typically display at the top of
@@ -924,7 +934,7 @@
 
 @node Deleting Frames
 @section Deleting Frames
-@cindex deletion of frames
+@cindex deleting frames
 
 Frames remain potentially visible until you explicitly @dfn{delete}
 them.  A deleted frame cannot appear on the screen, but continues to
@@ -956,6 +966,7 @@
 
 @node Finding All Frames
 @section Finding All Frames
+@cindex frames, scanning all
 
 @defun frame-list
 The function @code{frame-list} returns a list of all the frames that
@@ -1077,7 +1088,7 @@
 @node Input Focus
 @section Input Focus
 @cindex input focus
-@cindex selected frame
+@c @cindex selected frame    Duplicates selected-frame
 
 At any time, one frame in Emacs is the @dfn{selected frame}.  The selected
 window always resides on the selected frame.
@@ -1260,7 +1271,7 @@
 the one underneath.  Even a window at the bottom of the stack can be
 seen if no other window overlaps it.
 
-@cindex raising a frame
+@c @cindex raising a frame  redundant with raise-frame
 @cindex lowering a frame
   A window's place in this ordering is not fixed; in fact, users tend
 to change the order frequently.  @dfn{Raising} a window means moving
@@ -1315,14 +1326,14 @@
 @node Mouse Tracking
 @section Mouse Tracking
 @cindex mouse tracking
-@cindex tracking the mouse
+@c @cindex tracking the mouse   Duplicates track-mouse
 
-Sometimes it is useful to @dfn{track} the mouse, which means to display
+  Sometimes it is useful to @dfn{track} the mouse, which means to display
 something to indicate where the mouse is and move the indicator as the
 mouse moves.  For efficient mouse tracking, you need a way to wait until
 the mouse actually moves.
 
-The convenient way to track the mouse is to ask for events to represent
+  The convenient way to track the mouse is to ask for events to represent
 mouse motion.  Then you can wait for motion by waiting for an event.  In
 addition, you can easily handle any other sorts of events that may
 occur.  That is useful, because normally you don't want to track the
@@ -2015,8 +2026,6 @@
 @end defun
 
 @defun display-graphic-p &optional display
-@cindex frames, more than one on display
-@cindex fonts, more than one on display
 This function returns @code{t} if @var{display} is a graphic display
 capable of displaying several frames and several different fonts at
 once.  This is true for displays that use a window system such as X, and
@@ -2087,11 +2096,19 @@
 @defun display-pixel-height &optional display
 This function returns the height of the screen in pixels.
 On a character terminal, it gives the height in characters.
+
+For graphical terminals, note that on ``multi-monitor'' setups this
+refers to the pixel width for all physical monitors associated with
+@var{display}.  @xref{Multiple Displays}.
 @end defun
 
 @defun display-pixel-width &optional display
 This function returns the width of the screen in pixels.
 On a character terminal, it gives the width in characters.
+
+For graphical terminals, note that on ``multi-monitor'' setups this
+refers to the pixel width for all physical monitors associated with
+@var{display}.  @xref{Multiple Displays}.
 @end defun
 
 @defun display-mm-height &optional display
--- a/lispref/functions.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/functions.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -293,6 +293,7 @@
 @kindex wrong-number-of-arguments
 @cindex argument binding
 @cindex binding arguments
+@cindex argument lists, features
 
   Our simple sample function, @code{(lambda (a b c) (+ a b c))},
 specifies three argument variables, so it must be called with three
@@ -583,6 +584,7 @@
 deliberate redefinition from unintentional redefinition.
 @end defspec
 
+@cindex function aliases
 @defun defalias name definition &optional docstring
 @anchor{Definition of defalias}
 This special form defines the symbol @var{name} as a function, with
@@ -1191,17 +1193,22 @@
 the function's definition is open-coded into the caller.
 
 Making a function inline makes explicit calls run faster.  But it also
-has disadvantages.  For one thing, it reduces flexibility; if you change
-the definition of the function, calls already inlined still use the old
-definition until you recompile them.  Since the flexibility of
-redefining functions is an important feature of Emacs, you should not
-make a function inline unless its speed is really crucial.
+has disadvantages.  For one thing, it reduces flexibility; if you
+change the definition of the function, calls already inlined still use
+the old definition until you recompile them.
 
 Another disadvantage is that making a large function inline can increase
 the size of compiled code both in files and in memory.  Since the speed
 advantage of inline functions is greatest for small functions, you
 generally should not make large functions inline.
 
+Also, inline functions do not behave well with respect to debugging,
+tracing, and advising (@pxref{Advising Functions}).  Since ease of
+debugging and the flexibility of redefining functions are important
+features of Emacs, you should not make a function inline, even if it's
+small, unless its speed is really crucial, and you've timed the code
+to verify that using @code{defun} actually has performance problems.
+
 It's possible to define a macro to expand into the same code that an
 inline function would execute.  (@xref{Macros}.)  But the macro would be
 limited to direct use in expressions---a macro cannot be called with
--- a/lispref/hash.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/hash.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -7,10 +7,11 @@
 @node Hash Tables, Symbols, Sequences Arrays Vectors, Top
 @chapter Hash Tables
 @cindex hash tables
+@cindex lookup tables
 
-  A hash table is a very fast kind of lookup table, somewhat like
-an alist in that it maps keys to corresponding values.  It differs
-from an alist in these ways:
+  A hash table is a very fast kind of lookup table, somewhat like an
+alist (@pxref{Association Lists}) in that it maps keys to
+corresponding values.  It differs from an alist in these ways:
 
 @itemize @bullet
 @item
@@ -55,6 +56,7 @@
 
 @node Creating Hash
 @section Creating Hash Tables
+@cindex creating hash tables
 
   The principal function for creating a hash table is
 @code{make-hash-table}.
@@ -212,6 +214,7 @@
 @node Defining Hash
 @section Defining Hash Comparisons
 @cindex hash code
+@cindex define hash comparisons
 
   You can define new methods of key lookup by means of
 @code{define-hash-table-test}.  In order to use this feature, you need
--- a/lispref/help.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/help.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -91,9 +91,7 @@
 function @code{documentation-property} knows how to retrieve it.
 @end itemize
 
-@cindex @file{DOC} (documentation) file
-@cindex @file{emacs/etc/DOC-@var{version}}
-@cindex @file{etc/DOC-@var{version}}
+@cindex @file{DOC-@var{version}} (documentation) file
 To save space, the documentation for preloaded functions and variables
 (including primitive functions and autoloaded functions) is stored in
 the file @file{emacs/etc/DOC-@var{version}}---not inside Emacs.  The
@@ -388,6 +386,7 @@
 
 @node Describing Characters
 @section Describing Characters for Help Messages
+@cindex describe characters and events
 
   These functions convert events, key sequences, or characters to
 textual descriptions.  These descriptions are useful for including
--- a/lispref/internals.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/internals.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -204,7 +204,7 @@
 
 @node Garbage Collection
 @appendixsec Garbage Collection
-@cindex garbage collector
+@cindex garbage collection
 
 @cindex memory allocation
   When a program creates a list or the user defines a new function (such
@@ -441,6 +441,7 @@
 
 @node Memory Usage
 @section Memory Usage
+@cindex memory usage
 
   These functions and variables give information about the total amount
 of memory allocation that Emacs has done, broken down by data type.
@@ -530,7 +531,7 @@
     @{
       val = Feval (XCAR (args));
       if (!NILP (val))
-	break;
+        break;
       args = XCDR (args);
     @}
 @end group
@@ -715,7 +716,7 @@
 defined with @code{DEFVAR_BOOL} are automatically added to the list
 @code{byte-boolean-vars} used by the byte compiler.
 
-@cindex @code{staticpro}, protect file-scope variables from GC
+@cindex @code{staticpro}, protection from GC
   If you define a file-scope C variable of type @code{Lisp_Object},
 you must protect it from garbage-collection by calling @code{staticpro}
 in @code{syms_of_@var{filename}}, like this:
--- a/lispref/intro.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/intro.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -170,11 +170,11 @@
 
 @node nil and t
 @subsection @code{nil} and @code{t}
-@cindex @code{nil}, uses of
 @cindex truth value
 @cindex boolean
+
+@cindex @code{nil}
 @cindex false
-
   In Lisp, the symbol @code{nil} has three separate meanings: it
 is a symbol with the name @samp{nil}; it is the logical truth value
 @var{false}; and it is the empty list---the list of zero elements.
@@ -197,7 +197,7 @@
 (setq foo-flag nil)           ; @r{Emphasize the truth value @var{false}}
 @end example
 
-@cindex @code{t}, uses of
+@cindex @code{t}
 @cindex true
   In contexts where a truth value is expected, any non-@code{nil} value
 is considered to be @var{true}.  However, @code{t} is the preferred way
@@ -535,11 +535,12 @@
 @section Acknowledgements
 
   This manual was written by Robert Krawitz, Bil Lewis, Dan LaLiberte,
-Richard M. Stallman and Chris Welty, the volunteers of the GNU manual
-group, in an effort extending over several years.  Robert J. Chassell
-helped to review and edit the manual, with the support of the Defense
-Advanced Research Projects Agency, ARPA Order 6082, arranged by Warren
-A. Hunt, Jr.@: of Computational Logic, Inc.
+Richard@tie{}M. Stallman and Chris Welty, the volunteers of the GNU
+manual group, in an effort extending over several years.
+Robert@tie{}J. Chassell helped to review and edit the manual, with the
+support of the Defense Advanced Research Projects Agency, ARPA Order
+6082, arranged by Warren@tie{}A. Hunt, Jr.@: of Computational Logic,
+Inc.
 
   Corrections were supplied by Karl Berry, Jim Blandy, Bard Bloom,
 Stephane Boucher, David Boyes, Alan Carroll, Richard Davis, Lawrence
--- a/lispref/keymaps.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/keymaps.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -53,7 +53,7 @@
 a key sequence as an argument can handle both representations.
 
   In the string representation, alphanumeric characters ordinarily
-stand for themselves; for example, @code{"a"} represents @kbd{a} and
+stand for themselves; for example, @code{"a"} represents @kbd{a}
 and @code{"2"} represents @kbd{2}.  Control character events are
 prefixed by the substring @code{"\C-"}, and meta characters by
 @code{"\M-"}; for example, @code{"\C-x"} represents the key @kbd{C-x}.
@@ -255,7 +255,7 @@
      (24 . lisp-send-defun)
      keymap
      ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}}
-     (17 . indent-sexp)))
+     (17 . indent-sexp))
 @end group
 @group
  ;; @r{This part is inherited from @code{lisp-mode-shared-map}.}
@@ -697,6 +697,7 @@
 
 @node Searching Keymaps
 @section Searching the Active Keymaps
+@cindex searching active keymaps for keys
 
   After translation of event subsequences (@pxref{Translation
 Keymaps}) Emacs looks for them in the active keymaps.  Here is a
@@ -1277,7 +1278,7 @@
 does matter for menu keymaps (@pxref{Menu Keymaps}).
 @end defun
 
-  Here is an example that creates a sparse keymap and makes a number of
+  This example creates a sparse keymap and makes a number of
 bindings in it:
 
 @smallexample
@@ -1488,17 +1489,22 @@
 if an ordinary binding specifies @code{my-kill-line}, this keymap will
 remap it to @code{my-other-kill-line}.
 
-@defun command-remapping command &optional position
+@defun command-remapping command &optional position keymaps
 This function returns the remapping for @var{command} (a symbol),
 given the current active keymaps.  If @var{command} is not remapped
 (which is the usual situation), or not a symbol, the function returns
 @code{nil}.  @code{position} can optionally specify a buffer position
 or an event position to determine the keymaps to use, as in
 @code{key-binding}.
+
+If the optional argument @code{keymaps} is non-@code{nil}, it
+specifies a list of keymaps to search in.  This argument is ignored if
+@code{position} is non-@code{nil}.
 @end defun
 
 @node Translation Keymaps
 @section Keymaps for Translating Sequences of Events
+@cindex keymaps for translating events
 
   This section describes keymaps that are used during reading a key
 sequence, to translate certain event sequences into others.
--- a/lispref/lists.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/lists.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -6,7 +6,7 @@
 @setfilename ../info/lists
 @node Lists, Sequences Arrays Vectors, Strings and Characters, Top
 @chapter Lists
-@cindex list
+@cindex lists
 @cindex element (of list)
 
   A @dfn{list} represents a sequence of zero or more elements (which may
@@ -30,7 +30,6 @@
 @node Cons Cells
 @section Lists and Cons Cells
 @cindex lists and cons cells
-@cindex @code{nil} and lists
 
   Lists in Lisp are not a primitive data type; they are built up from
 @dfn{cons cells}.  A cons cell is a data object that represents an
@@ -104,7 +103,6 @@
 @end defun
 
 @defun atom object
-@cindex atoms
 This function returns @code{t} if @var{object} is an atom, @code{nil}
 otherwise.  All objects except cons cells are atoms.  The symbol
 @code{nil} is an atom and is also a list; it is the only Lisp object
@@ -159,7 +157,6 @@
 @end example
 @end defun
 
-@need 2000
 
 @node List Elements
 @section Accessing Elements of Lists
@@ -991,10 +988,9 @@
 @end group
 @end example
 
-@need 4000
   Here is the result in box notation:
 
-@example
+@smallexample
 @group
                    --------------------
                   |                    |
@@ -1004,7 +1000,7 @@
 |       |      |     |       |      |      |       |      |
  --------------       --------------        --------------
 @end group
-@end example
+@end smallexample
 
 @noindent
 The second cons cell, which previously held the element @code{b}, still
@@ -1307,7 +1303,7 @@
 @end defun
 
 @defun delq object list
-@cindex deletion of elements
+@cindex deleting list elements
 This function destructively removes all elements @code{eq} to
 @var{object} from @var{list}.  The letter @samp{q} in @code{delq} says
 that it uses @code{eq} to compare @var{object} against the elements of
@@ -1370,6 +1366,9 @@
 (delq '(4) sample-list)
      @result{} (a c (4))
 @end group
+
+If you want to delete elements that are @code{equal} to a given value,
+use @code{delete} (see below).
 @end example
 
 @defun remq object list
@@ -1392,9 +1391,6 @@
      @result{} (a b c a b c)
 @end group
 @end example
-@noindent
-The function @code{delq} offers a way to perform this operation
-destructively.  See @ref{Sets And Lists}.
 @end defun
 
 @defun memql object list
@@ -1452,8 +1448,8 @@
 elements @code{equal} to @var{object} from @var{sequence}.  For lists,
 @code{delete} is to @code{delq} as @code{member} is to @code{memq}: it
 uses @code{equal} to compare elements with @var{object}, like
-@code{member}; when it finds an element that matches, it removes the
-element just as @code{delq} would.
+@code{member}; when it finds an element that matches, it cuts the
+element out just as @code{delq} would.
 
 If @code{sequence} is a vector or string, @code{delete} returns a copy
 of @code{sequence} with all elements @code{equal} to @code{object}
@@ -1463,8 +1459,22 @@
 
 @example
 @group
-(delete '(2) '((2) (1) (2)))
+(setq l '((2) (1) (2)))
+(delete '(2) l)
      @result{} ((1))
+l
+     @result{} ((2) (1))
+;; @r{If you want to change @code{l} reliably,}
+;; @r{write @code{(setq l (delete elt l))}.}
+@end group
+@group
+(setq l '((2) (1) (2)))
+(delete '(1) l)
+     @result{} ((2) (2))
+l
+     @result{} ((2) (2))
+;; @r{In this case, it makes no difference whether you set @code{l},}
+;; @r{but you should do so for the sake of the other case.}
 @end group
 @group
 (delete '(2) [(2) (1) (2)])
@@ -1474,7 +1484,7 @@
 @end defun
 
 @defun remove object sequence
-This function is the non-destructive counterpart of @code{delete}.  If
+This function is the non-destructive counterpart of @code{delete}.  It
 returns a copy of @code{sequence}, a list, vector, or string, with
 elements @code{equal} to @code{object} removed.  For example:
 
@@ -1513,7 +1523,8 @@
 @end defun
 
   See also the function @code{add-to-list}, in @ref{List Variables},
-for another way to add an element to a list stored in a variable.
+for a way to add an element to a list stored in a variable and used as a
+set.
 
 @node Association Lists
 @section Association Lists
@@ -1589,7 +1600,7 @@
 
 @defun assoc key alist
 This function returns the first association for @var{key} in
-@var{alist}.  It compares @var{key} against the alist elements using
+@var{alist}, comparing @var{key} against the alist elements using
 @code{equal} (@pxref{Equality Predicates}).  It returns @code{nil} if no
 association in @var{alist} has a @sc{car} @code{equal} to @var{key}.
 For example:
--- a/lispref/loading.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/loading.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -64,22 +64,23 @@
 
 To find the file, @code{load} first looks for a file named
 @file{@var{filename}.elc}, that is, for a file whose name is
-@var{filename} with @samp{.elc} appended.  If such a file exists, it is
-loaded.  If there is no file by that name, then @code{load} looks for a
-file named @file{@var{filename}.el}.  If that file exists, it is loaded.
-Finally, if neither of those names is found, @code{load} looks for a
-file named @var{filename} with nothing appended, and loads it if it
-exists.  (The @code{load} function is not clever about looking at
-@var{filename}.  In the perverse case of a file named @file{foo.el.el},
-evaluation of @code{(load "foo.el")} will indeed find it.)
+@var{filename} with the extension @samp{.elc} appended.  If such a
+file exists, it is loaded.  If there is no file by that name, then
+@code{load} looks for a file named @file{@var{filename}.el}.  If that
+file exists, it is loaded.  Finally, if neither of those names is
+found, @code{load} looks for a file named @var{filename} with nothing
+appended, and loads it if it exists.  (The @code{load} function is not
+clever about looking at @var{filename}.  In the perverse case of a
+file named @file{foo.el.el}, evaluation of @code{(load "foo.el")} will
+indeed find it.)
 
-If Auto Compression mode is enabled, as it is by default, then
-if @code{load} can not find a file, it searches for a compressed
-version of the file before trying other file names.  It decompresses
-and loads it if it exists.  It looks for compressed versions by
-appending the suffixes in @code{jka-compr-load-suffixes} to the file
-name.  The value of this variable must be a list of strings. Its
-standard value is @code{(".gz")}.
+If Auto Compression mode is enabled, as it is by default, then if
+@code{load} can not find a file, it searches for a compressed version
+of the file before trying other file names.  It decompresses and loads
+it if it exists.  It looks for compressed versions by appending each
+of the suffixes in @code{jka-compr-load-suffixes} to the file name.
+The value of this variable must be a list of strings. Its standard
+value is @code{(".gz")}.
 
 If the optional argument @var{nosuffix} is non-@code{nil}, then
 @code{load} does not try the suffixes @samp{.elc} and @samp{.el}.  In
@@ -220,6 +221,8 @@
 
 @node Library Search
 @section Library Search
+@cindex library search
+@cindex find library
 
   When Emacs loads a Lisp library, it searches for the library
 in a list of directories specified by the variable @code{load-path}.
@@ -844,7 +847,7 @@
 
 @node Unloading
 @section Unloading
-@cindex unloading
+@cindex unloading packages
 
 @c Emacs 19 feature
   You can discard the functions and variables loaded by a library to
@@ -956,7 +959,7 @@
 
 The key @var{regexp-or-feature} is either a regular expression or a
 symbol, and the value is a list of forms.  The forms are evaluated when
-the key matches the the absolute true name of the file being
+the key matches the absolute true name of the file being
 @code{load}ed or the symbol being @code{provide}d.
 @end defvar
 
--- a/lispref/locals.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/locals.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -9,6 +9,7 @@
 @c The title "Standard Buffer-Local Variables" is too long for
 @c smallbook. --rjc 30mar92
 @cindex buffer-local variables, general-purpose
+@cindex standard buffer-local variables
 
   The table below lists the general-purpose Emacs variables that
 automatically become buffer-local in each buffer.  Most become
@@ -16,9 +17,9 @@
 buffer.  Many Lisp packages define such variables for their internal
 use, but we don't try to list them all here.
 
-Each minor modes defines a buffer-local variable named
-@samp{@var{modename}-mode}.  @xref{Minor Mode Conventions}.  Minor
-mode variables will not be listed here.
+  Every buffer-specific minor mode defines a buffer-local variable
+named @samp{@var{modename}-mode}.  @xref{Minor Mode Conventions}.
+Minor mode variables will not be listed here.
 
 @table @code
 @item auto-fill-function
--- a/lispref/macros.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/macros.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -140,7 +140,6 @@
 
 
 @defun macroexpand-all form &optional environment
-@cindex macro expansion in entire form
 @code{macroexpand-all} expands macros like @code{macroexpand}, but
 will look for and expand all macros in @var{form}, not just at the
 top-level.  If no macros are expanded, the return value is @code{eq}
@@ -239,7 +238,7 @@
 @table @code
 @item (debug @var{edebug-form-spec})
 Specify how to step through macro calls for Edebug.
-@xref{Instrumenting Macro Calls}, for more details.
+@xref{Instrumenting Macro Calls}.
 
 @item (indent @var{indent-spec})
 Specify how to indent calls to this macro.  @xref{Indenting Macros},
@@ -287,7 +286,7 @@
 @end group
 @end example
 
-@findex , @r{(with Backquote)}
+@findex , @r{(with backquote)}
 The special marker @samp{,} inside of the argument to backquote
 indicates a value that isn't constant.  Backquote evaluates the
 argument of @samp{,} and puts the value in the list structure:
@@ -319,7 +318,7 @@
 @end group
 @end example
 
-@findex ,@@ @r{(with Backquote)}
+@findex ,@@ @r{(with backquote)}
 @cindex splicing (with backquote)
   You can also @dfn{splice} an evaluated value into the resulting list,
 using the special marker @samp{,@@}.  The elements of the spliced list
--- a/lispref/maps.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/maps.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -6,6 +6,7 @@
 @setfilename ../info/maps
 @node Standard Keymaps, Standard Hooks, Standard Buffer-Local Variables, Top
 @appendix Standard Keymaps
+@cindex standard keymaps
 
 The following symbols are used as the names for various keymaps.
 Some of these exist when Emacs is first started, others are
@@ -76,7 +77,6 @@
 A sparse keymap used by Emacs Lisp mode.
 
 @item esc-map
-@vindex esc-map
 A full keymap for @kbd{ESC} (or @kbd{Meta}) commands.
 
 @item facemenu-menu
--- a/lispref/markers.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/markers.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -176,7 +176,6 @@
 @end defun
 
 @defun point-max-marker
-@cindex end of buffer marker
 This function returns a new marker that points to the end of the
 accessible portion of the buffer.  This will be the end of the buffer
 unless narrowing is in effect.  @xref{Narrowing}.
@@ -550,7 +549,7 @@
 @end defun
 
 @defopt transient-mark-mode
-@cindex Transient Mark mode
+@c  @cindex Transient Mark mode  Redundant
 This variable if non-@code{nil} enables Transient Mark mode, in which
 every buffer-modifying primitive sets @code{deactivate-mark}.  The
 consequence of this is that commands that modify the buffer normally
@@ -629,7 +628,7 @@
 
 @node The Region
 @section The Region
-@cindex region, the
+@cindex region (between point and mark)
 
   The text between point and the mark is known as @dfn{the region}.
 Various functions operate on text delimited by point and the mark, but
--- a/lispref/minibuf.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/minibuf.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -767,7 +767,7 @@
 strings, this is true if @var{string} appears in the list and
 @var{predicate} is satisfied.
 
-@code{test-completion} uses @code{completion-regexp-list} in the same
+This function uses @code{completion-regexp-list} in the same
 way that @code{try-completion} does.
 
 If @var{predicate} is non-@code{nil} and if @var{collection} contains
@@ -812,6 +812,8 @@
 
 @node Minibuffer Completion
 @subsection Completion and the Minibuffer
+@cindex minibuffer completion
+@cindex reading from minibuffer with completion
 
   This section describes the basic interface for reading from the
 minibuffer with completion.
@@ -1222,6 +1224,8 @@
 
 @node Reading File Names
 @subsection Reading File Names
+@cindex read file names
+@cindex prompt for file name
 
   Here is another high-level completion function, designed for reading a
 file name.  It provides special features including automatic insertion
@@ -1782,6 +1786,7 @@
 
 @node Minibuffer Windows
 @section Minibuffer Windows
+@cindex minibuffer windows
 
   These functions access and select minibuffer windows
 and test whether they are active.
@@ -1872,6 +1877,7 @@
 
 @node Recursive Mini
 @section Recursive Minibuffers
+@cindex recursive minibuffers
 
   These functions and variables deal with recursive minibuffers
 (@pxref{Recursive Editing}):
--- a/lispref/modes.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/modes.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -252,6 +252,8 @@
 
 @node Major Mode Conventions
 @subsection Major Mode Conventions
+@cindex major mode conventions
+@cindex conventions for writing major modes
 
   The code for existing major modes follows various coding conventions,
 including conventions for local keymap and syntax table initialization,
@@ -495,6 +497,7 @@
 
 @node Auto Major Mode
 @subsection How Emacs Chooses a Major Mode
+@cindex major mode, automatic selection
 
   Based on information in the file name or in the file itself, Emacs
 automatically selects a major mode for the new buffer when a file is
@@ -1157,7 +1160,7 @@
 @group
   (setq imenu-case-fold-search t)
   (set-syntax-table lisp-mode-syntax-table)
-  (run-mode-hooks 'lisp-mode-hook))           ; @r{This permits the user to use a}
+  (run-mode-hooks 'lisp-mode-hook))      ; @r{This permits the user to use a}
                                          ;   @r{hook to customize the mode.}
 @end group
 @end smallexample
@@ -1697,7 +1700,6 @@
 the user or by Lisp programs (such as @code{display-time} and major
 modes) via changes to those variables remain effective.
 
-@cindex Shell mode @code{mode-line-format}
   Here is an example of a @code{mode-line-format} that might be
 useful for @code{shell-mode}, since it contains the host name and default
 directory.
@@ -2336,7 +2338,7 @@
 
 @node Font Lock Mode
 @section Font Lock Mode
-@cindex Font Lock Mode
+@cindex Font Lock mode
 
   @dfn{Font Lock mode} is a feature that automatically attaches
 @code{face} properties to certain parts of the buffer based on their
@@ -2855,6 +2857,8 @@
 
 @node Faces for Font Lock
 @subsection Faces for Font Lock
+@cindex faces for font lock
+@cindex font lock faces
 
   You can make Font Lock mode use any face, but several faces are
 defined specifically for Font Lock mode.  Each of these symbols is both
@@ -2927,6 +2931,7 @@
 
 @node Syntactic Font Lock
 @subsection Syntactic Font Lock
+@cindex syntactic font lock
 
 Syntactic fontification uses the syntax table to find comments and
 string constants (@pxref{Syntax Tables}).  It highlights them using
--- a/lispref/nonascii.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/nonascii.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -7,6 +7,7 @@
 @node Non-ASCII Characters, Searching and Matching, Text, Top
 @chapter Non-@acronym{ASCII} Characters
 @cindex multibyte characters
+@cindex characters, multi-byte
 @cindex non-@acronym{ASCII} characters
 
   This chapter covers the special issues relating to non-@acronym{ASCII}
@@ -374,7 +375,7 @@
 @section Characters and Bytes
 @cindex bytes and characters
 
-@cindex introduction sequence
+@cindex introduction sequence (of character)
 @cindex dimension (of character set)
   In multibyte representation, each character occupies one or more
 bytes.  Each character set has an @dfn{introduction sequence}, which is
@@ -407,6 +408,7 @@
 
 @node Splitting Characters
 @section Splitting Characters
+@cindex character as bytes
 
   The functions in this section convert between characters and the byte
 values used to represent them.  For most purposes, there is no need to
@@ -432,6 +434,7 @@
 @end example
 @end defun
 
+@cindex generate characters in charsets
 @defun make-char charset &optional code1 code2
 This function returns the character in character set @var{charset} whose
 position codes are @var{code1} and @var{code2}.  This is roughly the
@@ -655,7 +658,9 @@
 @code{iso-latin-2} and decode the result with the same coding system,
 you'll get Latin-2 characters.
 
-@cindex end of line conversion
+@cindex EOL conversion
+@cindex end-of-line conversion
+@cindex line end conversion
   @dfn{End of line conversion} handles three different conventions used
 on various systems for representing end of line in files.  The Unix
 convention is to use the linefeed character (also called newline).  The
@@ -808,9 +813,6 @@
 Otherwise it signals an error with condition @code{coding-system-error}.
 @end defun
 
-@cindex EOL conversion
-@cindex end-of-line conversion
-@cindex line end conversion
 @defun coding-system-eol-type coding-system
 This function returns the type of end-of-line (a.k.a.@: @dfn{eol})
 conversion used by @var{coding-system}.  If @var{coding-system}
@@ -1103,11 +1105,11 @@
 @var{encoding-system} is the coding system for encoding (in case
 @var{operation} does encoding).
 
-The argument @var{operation} should be a symbol, any one of
-@code{insert-file-contents}, @code{write-region},
+The argument @var{operation} is a symbol, one of @code{write-region},
 @code{start-process}, @code{call-process}, @code{call-process-region},
-or @code{open-network-stream}.  These are the names of the Emacs I/O
-primitives that can do character code and eol conversion.
+@code{insert-file-contents}, or @code{open-network-stream}.  These are
+the names of the Emacs I/O primitives that can do character code and
+eol conversion.
 
 The remaining arguments should be the same arguments that might be given
 to the corresponding I/O primitive.  Depending on the primitive, one
@@ -1163,9 +1165,9 @@
   (insert-file-contents filename))
 @end example
 
-When its value is non-@code{nil}, @code{coding-system-for-read} takes
-precedence over all other methods of specifying a coding system to use for
-input, including @code{file-coding-system-alist},
+When its value is non-@code{nil}, this variable takes precedence over
+all other methods of specifying a coding system to use for input,
+including @code{file-coding-system-alist},
 @code{process-coding-system-alist} and
 @code{network-coding-system-alist}.
 @end defvar
@@ -1190,8 +1192,8 @@
 
 @node Explicit Encoding
 @subsection Explicit Encoding and Decoding
-@cindex encoding text
-@cindex decoding text
+@cindex encoding in coding systems
+@cindex decoding in coding systems
 
   All the operations that transfer text in and out of Emacs have the
 ability to use a coding system to encode or decode the text.
--- a/lispref/numbers.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/numbers.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -222,6 +222,7 @@
 
 @node Predicates on Numbers
 @section Type Predicates for Numbers
+@cindex predicates for numbers
 
   The functions in this section test for numbers, or for a specific
 type of number.  The functions @code{integerp} and @code{floatp} can
@@ -267,7 +268,8 @@
 
 @node Comparison of Numbers
 @section Comparison of Numbers
-@cindex number equality
+@cindex number comparison
+@cindex comparing numbers
 
   To test numbers for numerical equality, you should normally use
 @code{=}, not @code{eq}.  There can be many distinct floating point
@@ -388,6 +390,8 @@
 @node Numeric Conversions
 @section Numeric Conversions
 @cindex rounding in conversions
+@cindex number conversions
+@cindex converting numbers
 
 To convert an integer to floating point, use the function @code{float}.
 
@@ -480,6 +484,7 @@
 
 @node Arithmetic Operations
 @section Arithmetic Operations
+@cindex arithmetic operations
 
   Emacs Lisp provides the traditional four arithmetic operations:
 addition, subtraction, multiplication, and division.  Remainder and modulus
@@ -732,6 +737,8 @@
 
 @node Bitwise Operations
 @section Bitwise Operations on Integers
+@cindex bitwise arithmetic
+@cindex logical arithmetic
 
   In a computer, an integer is represented as a binary number, a
 sequence of @dfn{bits} (digits which are either zero or one).  A bitwise
@@ -913,8 +920,6 @@
 @end defun
 
 @defun logand &rest ints-or-markers
-@cindex logical and
-@cindex bitwise and
 This function returns the ``logical and'' of the arguments: the
 @var{n}th bit is set in the result if, and only if, the @var{n}th bit is
 set in all the arguments.  (``Set'' means that the value of the bit is 1
@@ -966,8 +971,6 @@
 @end defun
 
 @defun logior &rest ints-or-markers
-@cindex logical inclusive or
-@cindex bitwise or
 This function returns the ``inclusive or'' of its arguments: the @var{n}th bit
 is set in the result if, and only if, the @var{n}th bit is set in at least
 one of the arguments.  If there are no arguments, the result is zero,
@@ -993,8 +996,6 @@
 @end defun
 
 @defun logxor &rest ints-or-markers
-@cindex bitwise exclusive or
-@cindex logical exclusive or
 This function returns the ``exclusive or'' of its arguments: the
 @var{n}th bit is set in the result if, and only if, the @var{n}th bit is
 set in an odd number of the arguments.  If there are no arguments, the
@@ -1020,8 +1021,6 @@
 @end defun
 
 @defun lognot integer
-@cindex logical not
-@cindex bitwise not
 This function returns the logical complement of its argument: the @var{n}th
 bit is one in the result if, and only if, the @var{n}th bit is zero in
 @var{integer}, and vice-versa.
@@ -1039,6 +1038,7 @@
 @section Standard Mathematical Functions
 @cindex transcendental functions
 @cindex mathematical functions
+@cindex floating-point functions
 
   These mathematical functions allow integers as well as floating point
 numbers as arguments.
@@ -1066,7 +1066,7 @@
 @math{\pi/2}
 @end tex
 (inclusive) whose sine is @var{arg}; if, however, @var{arg} is out of
-range (outside [-1, 1]), it signals a @code{domain-error} error.
+range (outside [@minus{}1, 1]), it signals a @code{domain-error} error.
 @end defun
 
 @defun acos arg
@@ -1078,7 +1078,7 @@
 @math{\pi}
 @end tex
 (inclusive) whose cosine is @var{arg}; if, however, @var{arg} is out
-of range (outside [-1, 1]), it signals a @code{domain-error} error.
+of range (outside [@minus{}1, 1]), it signals a @code{domain-error} error.
 @end defun
 
 @defun atan y &optional x
@@ -1183,7 +1183,7 @@
 same seed value, so the sequence of values of @code{random} is actually
 the same in each Emacs run!  For example, in one operating system, the
 first call to @code{(random)} after you start Emacs always returns
--1457731, and the second one always returns -7692030.  This
+@minus{}1457731, and the second one always returns @minus{}7692030.  This
 repeatability is helpful for debugging.
 
 If you want random numbers that don't always come out the same, execute
--- a/lispref/objects.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/objects.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -288,7 +288,7 @@
 @cindex @samp{\a}
 @cindex backspace
 @cindex @samp{\b}
-@cindex tab
+@cindex tab (ASCII character)
 @cindex @samp{\t}
 @cindex vertical tab
 @cindex @samp{\v}
@@ -296,11 +296,11 @@
 @cindex @samp{\f}
 @cindex newline
 @cindex @samp{\n}
-@cindex return
+@cindex return (ASCII character)
 @cindex @samp{\r}
-@cindex escape
+@cindex escape (ASCII character)
 @cindex @samp{\e}
-@cindex space
+@cindex space (ASCII character)
 @cindex @samp{\s}
   You can express the characters control-g, backspace, tab, newline,
 vertical tab, formfeed, space, return, del, and escape as @samp{?\a},
@@ -661,7 +661,7 @@
 cells are used as part of lists, the phrase @dfn{list structure} has
 come to refer to any structure made out of cons cells.
 
-@cindex atom
+@cindex atoms
   Because cons cells are so central to Lisp, we also have a word for
 ``an object which is not a cons cell.''  These objects are called
 @dfn{atoms}.
@@ -753,7 +753,7 @@
 @end group
 @end smallexample
 
-@cindex @code{nil} in lists
+@cindex @code{nil} as a list
 @cindex empty list
   A list with no elements in it is the @dfn{empty list}; it is identical
 to the symbol @code{nil}.  In other words, @code{nil} is both a symbol
@@ -1493,7 +1493,7 @@
 
 @node Window Configuration Type
 @subsection Window Configuration Type
-@cindex screen layout
+@cindex window layout in a frame
 
   A @dfn{window configuration} stores information about the positions,
 sizes, and contents of the windows in a frame, so you can recreate the
@@ -1507,6 +1507,7 @@
 @node Frame Configuration Type
 @subsection Frame Configuration Type
 @cindex screen layout
+@cindex window layout, all frames
 
   A @dfn{frame configuration} stores information about the positions,
 sizes, and contents of the windows in all frames.  It is actually
@@ -1998,7 +1999,6 @@
 @end group
 @end example
 
-@cindex equality of strings
 Comparison of strings is case-sensitive, but does not take account of
 text properties---it compares only the characters in the strings.  For
 technical reasons, a unibyte string and a multibyte string are
--- a/lispref/os.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/os.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -54,7 +54,7 @@
 
 @node Startup Summary
 @subsection Summary: Sequence of Actions at Startup
-@cindex initialization
+@cindex initialization of Emacs
 @cindex startup of Emacs
 @cindex @file{startup.el}
 
@@ -622,6 +622,7 @@
 @code{string-match}.
 @end defvar
 
+@cindex system type and name
 @defvar system-type
 The value of this variable is a symbol indicating the type of operating
 system Emacs is operating on.  Here is a table of the possible values:
@@ -885,6 +886,7 @@
 
 @node User Identification
 @section User Identification
+@cindex user identification
 
 @defvar init-file-user
 This variable says which user's init files should be used by
@@ -1308,6 +1310,7 @@
 
 @node Processor Run Time
 @section Processor Run time
+@cindex processor run time
 
 @defun get-internal-run-time
 This function returns the processor run time used by Emacs as a list
@@ -1418,20 +1421,15 @@
 
 @var{time} may specify an absolute or a relative time.
 
-Absolute times may be specified in a wide variety of formats; this
-function tries to accept all the commonly used date formats.  The most
-convenient formats are strings.  Valid such formats include these two,
-
-@example
-@var{year}-@var{month}-@var{day} @var{hour}:@var{min}:@var{sec} @var{timezone}
-
-@var{hour}:@var{min}:@var{sec} @var{timezone} @var{month}/@var{day}/@var{year}
-@end example
-
-@noindent
-where in both examples all fields are numbers; the format that
-@code{current-time-string} returns is also allowed, and many others
-as well.
+Absolute times may be specified using a string with a limited variety
+of formats, and are taken to be times @emph{today}, even if already in
+the past.  The recognized forms are @samp{@var{xxxx}},
+@samp{@var{x}:@var{xx}}, or @samp{@var{xx}:@var{xx}} (military time),
+and @samp{@var{xx}am}, @samp{@var{xx}AM}, @samp{@var{xx}pm},
+@samp{@var{xx}PM}, @samp{@var{xx}:@var{xx}am},
+@samp{@var{xx}:@var{xx}AM}, @samp{@var{xx}:@var{xx}pm}, or
+@samp{@var{xx}:@var{xx}PM}.  A period can be used instead of a colon
+to separate the hour and minute parts.
 
 To specify a relative time as a string, use numbers followed by units.
 For example:
@@ -1449,8 +1447,9 @@
 days, and a year to be exactly 365.25 days.
 
 Not all convenient formats are strings.  If @var{time} is a number
-(integer or floating point), that specifies a relative time measured
-in seconds.
+(integer or floating point), that specifies a relative time measured in
+seconds.  The result of @code{encode-time} can also be used to specify
+an absolute value for @var{time}.
 
 In most cases, @var{repeat} has no effect on when @emph{first} call
 takes place---@var{time} alone specifies that.  There is one exception:
@@ -1695,6 +1694,7 @@
 
 @node Recording Input
 @subsection Recording Input
+@cindex recording input
 
 @defun recent-keys
 This function returns a vector containing the last 300 input events from
@@ -1868,6 +1868,7 @@
 
 @node X11 Keysyms
 @section Operating on X11 Keysyms
+@cindex X11 keysyms
 
 To define system-specific X11 keysyms, set the variable
 @code{system-key-alist}.
@@ -1921,7 +1922,6 @@
 @node Batch Mode
 @section Batch Mode
 @cindex batch mode
-@cindex noninteractive use
 
   The command-line option @samp{-batch} causes Emacs to run
 noninteractively.  In this mode, Emacs does not read commands from the
--- a/lispref/positions.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/positions.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -123,6 +123,7 @@
 
 @node Motion
 @section Motion
+@cindex motion by chars, words, lines, lists
 
   Motion functions change the value of point, either relative to the
 current value of point, relative to the beginning or end of the buffer,
@@ -235,6 +236,7 @@
 
 @node Buffer End Motion
 @subsection Motion to an End of the Buffer
+@cindex move to beginning or end of buffer
 
   To move point to the beginning of the buffer, write:
 
@@ -642,6 +644,7 @@
 @cindex sexp motion
 @cindex Lisp expression motion
 @cindex list motion
+@cindex balanced parenthesis motion
 
   Here are several functions concerned with balanced-parenthesis
 expressions (also called @dfn{sexps} in connection with moving across
@@ -827,7 +830,6 @@
 @defspec save-excursion body@dots{}
 @cindex mark excursion
 @cindex point excursion
-@cindex current buffer excursion
 The @code{save-excursion} special form saves the identity of the current
 buffer and the values of point and the mark in it, evaluates
 @var{body}, and finally restores the buffer and its saved values of
--- a/lispref/processes.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/processes.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -146,6 +146,8 @@
 
 @node Shell Arguments
 @section Shell Arguments
+@cindex arguments for shell commands
+@cindex shell command arguments
 
   Lisp programs sometimes need to run a shell and give it a command
 that contains file names that were specified by the user.  These
@@ -347,7 +349,7 @@
 @var{infile} is on another remote host.  Or @code{default-directory}
 could be non-special, whereas @var{infile} is on a remote host.)
 
-If @var{buffer} has the form @code{(@var{real-destination}
+If @var{buffer} is a list of the form @code{(@var{real-destination}
 @var{error-destination})}, and @var{error-destination} names a file,
 then the same remarks as for @var{infile} apply.
 
@@ -1236,6 +1238,7 @@
 
 @node Decoding Output
 @subsection Decoding Process Output
+@cindex decode process output
 
   When Emacs writes process output directly into a multibyte buffer,
 it decodes the output according to the process output coding system.
@@ -1285,6 +1288,7 @@
 
 @node Accepting Output
 @subsection Accepting Output from Processes
+@cindex accept input from processes
 
   Output from asynchronous subprocesses normally arrives only while
 Emacs is waiting for some sort of external event, such as elapsed time
@@ -1328,7 +1332,7 @@
 @node Sentinels
 @section Sentinels: Detecting Process Status Changes
 @cindex process sentinel
-@cindex sentinel
+@cindex sentinel (of process)
 
   A @dfn{process sentinel} is a function that is called whenever the
 associated process changes status for any reason, including signals
@@ -1624,7 +1628,7 @@
 @item :sentinel
 The associated value is the process sentinel function.
 @item :remote
-In a connection, this is the address in internal format of the remote peer.
+In a connection, the address in internal format of the remote peer.
 @item :local
 The local address, in internal format.
 @item :service
@@ -1643,6 +1647,7 @@
 
 @node Network Servers
 @section Network Servers
+@cindex network servers
 
   You create a server by calling @code{make-network-process} with
 @code{:server t}.  The server will listen for connection requests from
@@ -1722,7 +1727,7 @@
 @section Low-Level Network Access
 
   You can also create network connections by operating at a lower
-level that that of @code{open-network-stream}, using
+level than that of @code{open-network-stream}, using
 @code{make-network-process}.
 
 @menu
@@ -2061,8 +2066,9 @@
 string @code{"@var{a}.@var{b}.@var{c}.@var{d}:@var{p}"}.
 
 A nine-element vector @code{[@var{a} @var{b} @var{c} @var{d} @var{e}
-@var{f} @var{g} @var{h} @var{p}]} represents an IPv6 address and port
-number.  @code{format-network-address} converts that to the string
+@var{f} @var{g} @var{h} @var{p}]} represents an IPv6 address along
+with a port number.  @code{format-network-address} converts that to
+the string
 @code{"[@var{a}:@var{b}:@var{c}:@var{d}:@var{e}:@var{f}:@var{g}:@var{h}]:@var{p}"}.
 
 If the vector does not include the port number, @var{p}, or if
@@ -2072,6 +2078,7 @@
 
 @node Byte Packing
 @section Packing and Unpacking Byte Arrays
+@cindex byte packing and unpacking
 
   This section describes how to pack and unpack arrays of bytes,
 usually for binary network protocols.  These functions convert byte arrays
--- a/lispref/searching.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/searching.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -106,7 +106,7 @@
 @end deffn
 
 @deffn Command word-search-forward string &optional limit noerror repeat
-@cindex word search
+@c  @cindex word search   Redundant
 This function searches forward from point for a ``word'' match for
 @var{string}.  If it finds a match, it sets point to the end of the
 match found, and returns the new value of point.
@@ -220,7 +220,7 @@
 regexps; the following section says how to search for them.
 
 @findex re-builder
-@cindex authoring regular expressions
+@cindex regular expressions, developing
   For convenient interactive development of regular expressions, you
 can use the @kbd{M-x re-builder} command.  It provides a convenient
 interface for creating regular expressions, by giving immediate visual
@@ -309,17 +309,16 @@
 The next alternative is for @samp{a*} to match only two @samp{a}s.  With
 this choice, the rest of the regexp matches successfully.
 
-@strong{Warning:} Nested repetition operators take a long time,
-or even forever, if they
-lead to ambiguous matching.  For example, trying to match the regular
-expression @samp{\(x+y*\)*a} against the string
-@samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz} could take hours before it
-ultimately fails.  Emacs must try each way of grouping the 35
-@samp{x}s before concluding that none of them can work.  Even worse,
-@samp{\(x*\)*} can match the null string in infinitely many ways, so
-it causes an infinite loop.  To avoid these problems, check nested
-repetitions carefully, to make sure that they do not cause combinatorial
-explosions in backtracking.
+@strong{Warning:} Nested repetition operators can run for an
+indefinitely long time, if they lead to ambiguous matching.  For
+example, trying to match the regular expression @samp{\(x+y*\)*a}
+against the string @samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz} could
+take hours before it ultimately fails.  Emacs must try each way of
+grouping the @samp{x}s before concluding that none of them can work.
+Even worse, @samp{\(x*\)*} can match the null string in infinitely
+many ways, so it causes an infinite loop.  To avoid these problems,
+check nested repetitions carefully, to make sure that they do not
+cause combinatorial explosions in backtracking.
 
 @item @samp{+}
 @cindex @samp{+} in regexp
@@ -1186,6 +1185,7 @@
 
 @node Replacing Match
 @subsection Replacing the Text that Matched
+@cindex replace matched text
 
   This function replaces all or part of the text matched by the last
 search.  It works by means of the match data.
@@ -1543,7 +1543,8 @@
 
 @node Search and Replace
 @section Search and Replace
-@cindex replacement
+@cindex replacement after search
+@cindex searching and replacing
 
   If you want to find all matches for a regexp in part of the buffer,
 and replace them, the best way is to write an explicit loop using
--- a/lispref/sequences.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/sequences.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -388,7 +388,7 @@
 
 @node Vectors
 @section Vectors
-@cindex vector
+@cindex vector (type)
 
   Arrays in Lisp, like arrays in most languages, are blocks of memory
 whose elements can be accessed in constant time.  A @dfn{vector} is a
--- a/lispref/streams.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/streams.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -681,6 +681,7 @@
 
 @node Output Variables
 @section Variables Affecting Output
+@cindex output-controlling variables
 
 @defvar standard-output
 The value of this variable is the default output stream---the stream
--- a/lispref/strings.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/strings.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -586,6 +586,7 @@
 @example
 (string-to-char "ABC")
      @result{} 65
+
 (string-to-char "xyz")
      @result{} 120
 (string-to-char "")
@@ -1107,6 +1108,30 @@
 This sets the current buffer's case table to @var{table}.
 @end defun
 
+@defmac with-case-table table body@dots{}
+The @code{with-case-table} macro saves the current case table, makes
+@var{table} the current case table, evaluates the @var{body} forms,
+and finally restores the case table.  The return value is the value of
+the last form in @var{body}.  The case table is restored even in case
+of an abnormal exit via @code{throw} or error (@pxref{Nonlocal
+Exits}).
+@end defmac
+
+  Some language environments may modify the case conversions of
+@acronym{ASCII} characters; for example, in the Turkish language
+environment, the @acronym{ASCII} character @samp{I} is downcased into
+a Turkish ``dotless i''.  This can interfere with code that requires
+ordinary ASCII case conversion, such as implementations of
+@acronym{ASCII}-based network protocols.  In that case, use the
+@code{with-case-table} macro with the variable @var{ascii-case-table},
+which stores the unmodified case table for the @acronym{ASCII}
+character set.
+
+@defvar ascii-case-table
+The case table for the @acronym{ASCII} character set.  This should not be
+modified by any language environment settings.
+@end defvar
+
   The following three functions are convenient subroutines for packages
 that define non-@acronym{ASCII} character sets.  They modify the specified
 case table @var{case-table}; they also modify the standard syntax table.
--- a/lispref/symbols.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/symbols.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -139,7 +139,7 @@
 
 @node Definitions, Creating Symbols, Symbol Components, Symbols
 @section Defining Symbols
-@cindex definition of a symbol
+@cindex definitions of symbols
 
   A @dfn{definition} in Lisp is a special form that announces your
 intention to use a certain symbol in a particular way.  In Emacs Lisp,
@@ -436,6 +436,8 @@
 
 @node Plists and Alists
 @subsection Property Lists and Association Lists
+@cindex plist vs. alist
+@cindex alist vs. plist
 
 @cindex property lists vs association lists
   Association lists (@pxref{Association Lists}) are very similar to
--- a/lispref/syntax.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/syntax.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -6,7 +6,7 @@
 @setfilename ../info/syntax
 @node Syntax Tables, Abbrevs, Searching and Matching, Top
 @chapter Syntax Tables
-@cindex parsing
+@cindex parsing buffer text
 @cindex syntax table
 @cindex text parsing
 
@@ -80,7 +80,7 @@
 
 @node Syntax Descriptors
 @section Syntax Descriptors
-@cindex syntax classes
+@cindex syntax class
 
   This section describes the syntax classes and flags that denote the
 syntax of a character, and how they are represented as a @dfn{syntax
@@ -203,7 +203,7 @@
 other characters in the quotation.
 @end deffn
 
-@deffn {Syntax class} @w{escape}
+@deffn {Syntax class} @w{escape-syntax character}
 An @dfn{escape character} (designated by @samp{\}) starts an escape
 sequence such as is used in C string and character constants.  The
 character @samp{\} belongs to this class in both C and Lisp.  (In C, it
@@ -253,7 +253,7 @@
 (@samp{;}) starts a comment and a newline or formfeed ends one.
 @end deffn
 
-@deffn {Syntax class} @w{inherit}
+@deffn {Syntax class} @w{inherit standard syntax}
 This syntax class does not specify a particular syntax.  It says to look
 in the standard syntax table to find the syntax of this character.  The
 designator for this syntax class is @samp{@@}.
@@ -1011,8 +1011,9 @@
 @end multitable
 
 @defun string-to-syntax @var{desc}
-This function returns the internal form @code{(@var{syntax-code} .
-@var{matching-char})} corresponding to the syntax descriptor @var{desc}.
+This function returns the internal form corresponding to the syntax
+descriptor @var{desc}, a cons cell @code{(@var{syntax-code}
+. @var{matching-char})}.
 @end defun
 
 @defun syntax-after pos
--- a/lispref/text.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/text.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -64,6 +64,7 @@
 
 @node Near Point
 @section Examining Text Near Point
+@cindex text near point
 
   Many functions are provided to look at the characters around point.
 Several simple functions are described here.  See also @code{looking-at}
@@ -537,8 +538,9 @@
 
 @node Deletion
 @section Deleting Text
-
-@cindex deletion vs killing
+@cindex text deletion
+
+@cindex deleting text vs killing
   Deletion means removing part of the text in a buffer, without saving
 it in the kill ring (@pxref{The Kill Ring}).  Deleted text can't be
 yanked, but can be reinserted using the undo mechanism (@pxref{Undo}).
@@ -594,7 +596,7 @@
 @end deffn
 
 @deffn Command delete-backward-char count &optional killp
-@cindex delete previous char
+@cindex deleting previous char
 This command deletes @var{count} characters directly before point, or
 after point if @var{count} is negative.  If @var{killp} is
 non-@code{nil}, then it saves the deleted characters in the kill ring.
@@ -1348,7 +1350,7 @@
 @end deffn
 
 @deffn Command buffer-disable-undo &optional buffer-or-name
-@cindex disable undo
+@cindex disabling undo
 This function discards the undo list of @var{buffer-or-name}, and disables
 further recording of undo information.  As a result, it is no longer
 possible to undo either previous changes or any subsequent changes.  If
@@ -1400,7 +1402,7 @@
 @node Filling
 @comment  node-name,  next,  previous,  up
 @section Filling
-@cindex filling, explicit
+@cindex filling text
 
   @dfn{Filling} means adjusting the lengths of lines (by moving the line
 breaks) so that they are nearly (but no greater than) a specified
@@ -1431,7 +1433,6 @@
 argument implies the value @code{full} for @var{justify}.
 
 @deffn Command fill-paragraph justify
-@cindex filling a paragraph
 This command fills the paragraph at or after point.  If
 @var{justify} is non-@code{nil}, each line is justified as well.
 It uses the ordinary paragraph motion commands to find paragraph
@@ -1678,7 +1679,7 @@
 
 @node Adaptive Fill
 @section Adaptive Fill Mode
-@cindex Adaptive Fill mode
+@c @cindex Adaptive Fill mode  "adaptive-fill-mode" is adjacent.
 
   When @dfn{Adaptive Fill Mode} is enabled, Emacs determines the fill
 prefix automatically from the text in each paragraph being filled
@@ -1740,11 +1741,8 @@
 starting after the left margin whitespace (if any) on a line; the
 characters it matches are that line's candidate for the fill prefix.
 
-@w{@code{"[ \t]*\\([-!|#%;>*·•‣âƒâ—¦]+[ \t]*\\|(?[0-9]+[.)][ \t]*\\)*"}} is the
-default value.  This matches a number enclosed in parentheses or
-followed by a period, or certain punctuation characters, or any
-sequence of these intermingled with whitespace.  In particular, it
-matches a sequence of whitespace, possibly empty.
+The default value matches whitespace with certain punctuation
+characters intermingled.
 @end defopt
 
 @defopt adaptive-fill-first-line-regexp
@@ -2563,8 +2561,9 @@
 list is to specify a name and ask what value corresponds to it.
 
   If a character has a @code{category} property, we call it the
-@dfn{category} of the character.  It should be a symbol.  The properties
-of the symbol serve as defaults for the properties of the character.
+@dfn{property category} of the character.  It should be a symbol.  The
+properties of the symbol serve as defaults for the properties of the
+character.
 
   Copying text between strings and buffers preserves the properties
 along with the characters; this includes such diverse functions as
@@ -2611,7 +2610,7 @@
 current buffer.
 
 If there is no @var{prop} property strictly speaking, but the character
-has a category that is a symbol, then @code{get-text-property} returns
+has a property category that is a symbol, then @code{get-text-property} returns
 the @var{prop} property of that symbol.
 @end defun
 
@@ -2958,12 +2957,13 @@
 have no standard meaning, and you can use them as you like.
 
 @table @code
-@cindex category of text character
+@cindex property category of text character
 @kindex category @r{(text property)}
 @item category
 If a character has a @code{category} property, we call it the
-@dfn{category} of the character.  It should be a symbol.  The properties
-of the symbol serve as defaults for the properties of the character.
+@dfn{property category} of the character.  It should be a symbol.  The
+properties of this symbol serve as defaults for the properties of the
+character.
 
 @item face
 @cindex face codes of text
@@ -2987,13 +2987,13 @@
 @xref{Face Attributes}.
 
 @item
-A cons cell of the form @code{(foreground-color . @var{color-name})} or
+A cons cell with the form @code{(foreground-color . @var{color-name})} or
 @code{(background-color . @var{color-name})}.  These elements specify
 just the foreground color or just the background color.  @xref{Color
 Names}, for the supported forms of @var{color-name}.
 
-@code{(foreground-color . @var{color-name})} is equivalent to
-specifying @code{(:foreground @var{color-name})}, and likewise for the
+A cons cell of @code{(foreground-color . @var{color-name})} is equivalent to
+specifying @code{(:foreground @var{color-name})}; likewise for the
 background.
 @end itemize
 
@@ -3044,7 +3044,6 @@
 @end table
 
 @item display
-@kindex display @r{(text property)}
 This property activates various features that change the
 way text is displayed.  For example, it can make text appear taller
 or shorter, higher or lower, wider or narrow, or replaced with an image.
@@ -3471,7 +3470,7 @@
 @code{buffer-access-fontified-property}.
 
 @defvar buffer-access-fontified-property
-If this value's variable is non-@code{nil}, it is a symbol which is used
+If this variable's value is non-@code{nil}, it is a symbol which is used
 as a text property name.  A non-@code{nil} value for that text property
 means, ``the other text properties for this character have already been
 computed.''
--- a/lispref/tips.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/tips.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -6,7 +6,7 @@
 @setfilename ../info/tips
 @node Tips, GNU Emacs Internals, GPL, Top
 @appendix Tips and Conventions
-@cindex tips
+@cindex tips for writing Lisp
 @cindex standards of coding style
 @cindex coding standards
 
@@ -148,7 +148,7 @@
 follow the naming conventions for hooks.  @xref{Hooks}.
 
 @item
-@cindex unloading packages
+@cindex unloading packages, preparing for
 If loading the file adds functions to hooks, define a function
 @code{@var{feature}-unload-hook}, where @var{feature} is the name of
 the feature the package provides, and make it undo any such changes.
@@ -295,6 +295,7 @@
 
 @node Key Binding Conventions
 @section Key Binding Conventions
+@cindex key binding, conventions for
 
 @itemize @bullet
 @item
@@ -374,6 +375,7 @@
 
 @node Programming Tips
 @section Emacs Programming Tips
+@cindex programming conventions
 
   Following these conventions will make your program fit better
 into Emacs when it runs.
@@ -559,6 +561,7 @@
 
 @node Warning Tips
 @section Tips for Avoiding Compiler Warnings
+@cindex byte compiler warnings, how to avoid
 
 @itemize @bullet
 @item
@@ -599,6 +602,7 @@
 
 @node Documentation Tips
 @section Tips for Documentation Strings
+@cindex documentation strings, conventions and tips
 
 @findex checkdoc-minor-mode
   Here are some tips and conventions for the writing of documentation
@@ -863,6 +867,7 @@
 
 @node Comment Tips
 @section Tips on Writing Comments
+@cindex comments, Lisp convention for
 
   We recommend these conventions for where to put comments and how to
 indent them:
--- a/lispref/variables.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/variables.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -100,10 +100,12 @@
 
 @node Constant Variables
 @section Variables that Never Change
-@vindex nil
-@vindex t
 @kindex setting-constant
 @cindex keyword symbol
+@cindex variable with constant value
+@cindex constant variables
+@cindex symbol that evaluates to itself
+@cindex symbol with constant value
 
   In Emacs Lisp, certain symbols normally evaluate to themselves.  These
 include @code{nil} and @code{t}, as well as any symbol whose name starts
@@ -1079,7 +1081,7 @@
 
 @node Buffer-Local Variables
 @section Buffer-Local Variables
-@cindex variables, buffer-local
+@cindex variable, buffer-local
 @cindex buffer-local variables
 
   Global and local variable bindings are found in most programming
@@ -1520,6 +1522,7 @@
 
 @node Frame-Local Variables
 @section Frame-Local Variables
+@cindex frame-local variables
 
   Just as variables can have buffer-local bindings, they can also have
 frame-local bindings.  These bindings belong to one frame, and are in
@@ -1719,7 +1722,7 @@
 the value @var{val}, based on the above criteria.
 @end defun
 
-@cindex risky local variable
+@c @cindex risky local variable   Duplicates risky-local-variable
   Some variables are considered @dfn{risky}.  A variable whose name
 ends in any of @samp{-command}, @samp{-frame-alist}, @samp{-function},
 @samp{-functions}, @samp{-hook}, @samp{-hooks}, @samp{-form},
@@ -1778,6 +1781,7 @@
 
 @node Variable Aliases
 @section Variable Aliases
+@cindex variable aliases
 
   It is sometimes useful to make two variables synonyms, so that both
 variables always have the same value, and changing either one also
--- a/lispref/windows.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/lispref/windows.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -430,7 +430,7 @@
 
 @node Selecting Windows
 @section Selecting Windows
-@cindex selecting windows
+@cindex selecting a window
 
   When a window is selected, the buffer in the window becomes the current
 buffer, and the cursor will appear in it.
@@ -572,7 +572,7 @@
 the order is left to right, or top to bottom.
 
 @defun next-window &optional window minibuf all-frames
-@cindex minibuffer window
+@cindex minibuffer window, and @code{next-window}
 This function returns the window following @var{window} in the cyclic
 ordering of windows.  This is the window that @kbd{C-x o} would select
 if typed when @var{window} is selected.  If @var{window} is the only
@@ -1195,6 +1195,7 @@
 @noindent
 @xref{Positions}, for more details on buffer positions.
 
+@cindex cursor
   As far as the user is concerned, point is where the cursor is, and
 when the user switches to another buffer, the cursor jumps to the
 position of point in that buffer.
@@ -1223,6 +1224,7 @@
 
 @node Window Start
 @section The Window Start Position
+@cindex window start position
 
   Each window contains a marker used to keep track of a buffer position
 that specifies where in the buffer display should start.  This position
@@ -1621,7 +1623,7 @@
 
 @node Vertical Scrolling
 @section Vertical Fractional Scrolling
-@cindex Vertical Fractional Scrolling
+@cindex vertical fractional scrolling
 
   @dfn{Vertical fractional scrolling} means shifting the image in the
 window up or down by a specified multiple or fraction of a line.
@@ -1985,6 +1987,7 @@
 @node Resizing Windows
 @section Changing the Size of a Window
 @cindex window resizing
+@cindex resize window
 @cindex changing window size
 @cindex window size, changing
 
@@ -2355,6 +2358,7 @@
 
 @node Window Hooks
 @section Hooks for Window Scrolling and Changes
+@cindex hooks for window operations
 
 This section describes how a Lisp program can take action whenever a
 window displays a different part of its buffer or a different buffer.
--- a/mac/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/mac/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,7 @@
+2007-04-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* make-package (compver): Don't hardcode processor type.
+
 2007-03-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
 	* makefile.MPW (dired.c.x, editfns.c.x, fileio.c.x, lread.c.x)
--- a/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings	Sun Apr 22 12:12:29 2007 +0000
+++ b/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings	Sun Apr 22 12:42:47 2007 +0000
@@ -1,5 +1,5 @@
 /* Localized versions of Info.plist keys */
 
 CFBundleName = "Emacs";
-CFBundleShortVersionString = "22.0.96";
-CFBundleGetInfoString = "22.0.96, Copyright (C) 2007 Free Software Foundation, Inc.";
+CFBundleShortVersionString = "22.0.98";
+CFBundleGetInfoString = "22.0.98, Copyright (C) 2007 Free Software Foundation, Inc.";
--- a/mac/make-package	Sun Apr 22 12:12:29 2007 +0000
+++ b/mac/make-package	Sun Apr 22 12:42:47 2007 +0000
@@ -325,7 +325,7 @@
   fi
 fi
 
-compver=powerpc-apple-darwin`uname -r`
+compver=`uname -p`-apple-darwin`uname -r`
  
 if test "$self_contained" = "yes"; then
     # Move shared files down to Resources directory
--- a/mac/src/Emacs.r	Sun Apr 22 12:12:29 2007 +0000
+++ b/mac/src/Emacs.r	Sun Apr 22 12:42:47 2007 +0000
@@ -221,10 +221,10 @@
 	0x22,		/* Major revision in BCD */
 	0x0,		/* Minor revision in BCD */
 	alpha,	/* development, alpha, beta, or final (release) */
-	96,		/* Non-final release # */
+	98,		/* Non-final release # */
 	0,		/* Region code */
-	"22.0.96",	/* Short version number */
-	"22.0.96, Copyright \0xa9 2007 "
+	"22.0.98",	/* Short version number */
+	"22.0.98, Copyright \0xa9 2007 "
 	"Free Software Foundation, Inc." /* Long version number */
 };
 
--- a/man/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,186 @@
+2007-04-15  Jay Belanger  <belanger@truman.edu>
+
+	* calc.texi (Title page): Remove the date.
+	(Basic Arithmetic): Emphasize that / binds less strongly than *.
+	(The Standard Calc Interface): Change trail title.
+	(Floats): Mention that when non-decimal floats are entered, only
+	approximations are stored.
+	(Copying): Move to the appendices.
+	(GNU Free Documentation License): Add as an appendix.
+
+2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* ada-mode.texi, autotype.texi, cc-mode.texi, cl.texi:
+	* dired-x.texi, ebrowse.texi, ediff.texi:
+	* emacs-mime.texi, erc.texi, eshell.texi:
+	* eudc.texi, flymake.texi, forms.texi, gnus.texi:
+	* idlwave.texi, message.texi, newsticker.texi, org.texi:
+	* pcl-cvs.texi, pgg.texi, rcirc.texi, reftex.texi, sc.texi:
+	* ses.texi, sieve.texi, smtpmail.texi, speedbar.texi:
+	* tramp.texi, url.texi, vip.texi, viper.texi, widget.texi:
+	* woman.texi: Include GFDL.
+
+	* doclicense.texi: Remove node heading, so that it can be included by
+	other files.
+
+	* emacs.texi: Insert node heading for GFDL.
+
+	* dired-x.texi: Relicence under GFDL.  Remove date from title page.
+	
+	* calc.texi (Algebraic Tutorial): Emphasize that / binds less strongly
+	than *.
+
+2007-04-14  Carsten Dominik  <dominik@science.uva.nl>
+
+	* org.texi (Formula syntax for Calc): Emphasize the operator precedence
+	in Calc.
+
+2007-04-14  Eli Zaretskii  <eliz@gnu.org>
+
+	* cmdargs.texi (Colors): Qualify "color of window" index entry by
+	"command line".
+
+	* display.texi (Faces): Refer to "Creating Frames" for face
+	and other frame customizations in .emacs.
+
+	* frames.texi (Creating Frames): Mention that face customizations can
+	be put in .emacs.  Add index entries.
+
+2007-04-12  Richard Stallman  <rms@gnu.org>
+
+	* glossary.texi (Glossary): Explain `iff'.
+
+2007-04-11  Karl Berry  <karl@gnu.org>
+
+	* gnu.texi (Top),
+	* macos.texi (Mac Font Specs),
+	* anti.texi (Antinews),
+	* xresources.texi (Resources),
+	* misc.texi (Emulation),
+	* calendar.texi (Daylight Saving),
+	* dired.texi (Dired and Find),
+	* rmail.texi (Remote Mailboxes),
+	* sending.texi (Mail Headers),
+	* programs.texi (Which Function),
+	* files.texi (Recover),
+	* buffers.texi (Uniquify),
+	* frames.texi (Wheeled Mice),
+	* killing.texi (Rectangles): Wording to improve breaks in
+	8.5x11 format.
+	* mule.texi (Language Environments): \hbadness=10000 since there's
+	no way to reword.
+	* emacs.texi (smallbook): new @set to more easily switch between
+	smallbook and 8.5x11.
+
+2007-04-11  Richard Stallman  <rms@gnu.org>
+
+	* files.texi (File Conveniences): Add xref to Tumme.
+	Delete text about Thumbnail mode.
+
+2007-04-09  Romain Francoise  <romain@orebokech.com>
+
+	* faq.texi (New in Emacs 22): Mention improvements to the Windows and
+	Mac OS ports.  Make it clear that mouse-1 complements and doesn't
+	replace mouse-2.
+
+2007-04-09  Alan Mackenzie  <acm@muc.de>
+
+	* cmdargs.texi (Initial Options): Call "inhibit-splash-screen" by its
+	new name.  Insert concept index entries.
+
+2007-04-08  Richard Stallman  <rms@gnu.org>
+
+	* url.texi: Fix some indexing.
+	(Disk Caching): Drop discussion of old/other Emacs versions.
+
+2007-04-08  Chong Yidong  <cyd@stupidchicken.com>
+
+	* display.texi (Standard Faces): Document prefix arg for
+	list-faces-display.
+
+	* rmail.texi (Rmail Scrolling): Document rmail-end-of-message.
+
+	* woman.texi (Word at point, Interface Options): woman-topic-at-point
+	renamed to woman-use-topic-at-point.  Document new behavior.
+
+2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
+
+	* url.texi (Disk Caching): Say Emacs 21 "and later".
+
+	* cc-mode.texi (Font Locking Preliminaries): Link to Emacs manual node
+	on Font locking which now mentions JIT lock.
+
+	* killing.texi (Deletion): Rewrite description of M-\ prefix argument.
+
+	* files.texi (Misc File Ops): Rewrite description of
+	insert-file-literally.
+
+2007-04-01  Michael Olson  <mwolson@gnu.org>
+
+	* erc.texi: Update for the ERC 5.2 release.
+
+2007-03-31  David Kastrup  <dak@gnu.org>
+
+	* woman.texi (Topic, Interface Options): Explain changes semantics of
+	woman-manpath in order to consider MANPATH_MAP entries.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+	* misc.texi (Printing): Postscript -> PostScript.
+
+	* emacs-mime.texi (Non-MIME): Postscript -> PostScript.
+
+	* ack.texi (Acknowledgments): Postscript -> PostScript.
+
+	* custom.texi (Init File, Init Non-ASCII): Fix last change.
+
+	* emacs.texi (Top): Fix the menu due to the change in custom.texi
+	below.
+
+2007-03-30  Chong Yidong  <cyd@stupidchicken.com>
+
+	* custom.texi (Non-ASCII Rebinding): Node deleted.  Material moved to
+	Init Non-ASCII.
+	(Init Rebinding, Init Syntax): Link to Init Non-ASCII instead.
+	(Init Non-ASCII): New node.
+
+2007-03-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* macos.texi (Mac Font Specs): Mention AppleAntiAliasingThreshold.
+
+2007-03-26  Richard Stallman  <rms@gnu.org>
+
+	* pgg.texi (Caching passphrase): Clean up previous change.
+
+2007-03-25  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* gnus.texi (Setting Process Marks): Fix typo.
+
+2007-03-25  Romain Francoise  <romain@orebokech.com>
+
+	* faq.texi (New in Emacs 22): Reorganize using an itemized list for
+	readability, and include various fixes by Daniel Brockman, Nick Roberts
+	and Dieter Wilhelm.
+
+2007-03-24  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* gnus.texi (Splitting Mail): Reword "splitting"-as-adj to be -as-noun.
+
+	* gnus.texi (Mail Source Specifiers): Fix typo.
+
+2007-03-22  Ralf Angeli  <angeli@caeruleus.net>
+
+	* reftex.texi (Imprint): Update maintainer information.
+
+2007-03-15  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* message.texi (Message Buffers): Update documentation for
+	message-generate-new-buffers.
+
+2007-03-15  Daiki Ueno  <ueno@unixuser.org>
+
+	* pgg.texi (Caching passphrase): Describe pgg-passphrase-coding-system.
+
 2007-03-21  Glenn Morris  <rgm@gnu.org>
 
 	* eshell.texi (Known problems): Emacs 22 comes with eshell 2.4.2.
--- a/man/ack.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/ack.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1310,7 +1310,7 @@
 
 @item
 Jim Thompson wrote @file{ps-print.el}, which converts
-Emacs text to Postscript.
+Emacs text to PostScript.
 
 @item
 Tom Tromey and Chris Lindblad wrote @file{tcl.el}, a major mode for
--- a/man/ada-mode.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/ada-mode.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -64,6 +64,7 @@
 * Automatic Casing::            Adjusting the case of words automatically
 * Statement Templates::         Inserting code templates
 * Comment Handling::            Reformatting comments easily
+* GNU Free Documentation License:: The license for this documentation.
 * Index::
 @end menu
 
@@ -1373,7 +1374,7 @@
 type (@code{ada-type}).
 @end table
 
-@node Comment Handling, Index, Statement Templates, Top
+@node Comment Handling, GNU Free Documentation License, Statement Templates, Top
 @chapter Comment Handling
 
 By default, comment lines get indented like Ada code. There are a few
@@ -1392,7 +1393,11 @@
 autofill the current comment.
 @end table
 
-@node Index,  , Comment Handling, Top
+@node GNU Free Documentation License, Index, Comment Handling, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index,  , GNU Free Documentation License, Top
 @unnumbered Index
 
 @printindex fn
--- a/man/anti.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/anti.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -53,9 +53,9 @@
 been removed.
 
 @item
-The command line options @samp{--color}, @samp{--fullwidth},
-@samp{--fullheight}, @samp{--fullscreen}, @samp{--no-blinking-cursor},
-@samp{--no-desktop}, and @samp{-Q} have also been removed.
+These command line options have also been removed: @samp{--color},
+@samp{--fullwidth}, @samp{--fullheight}, @samp{--fullscreen},
+@samp{--no-blinking-cursor}, @samp{--no-desktop}, and @samp{-Q}.
 
 @item
 The @samp{--geometry} option applies only to the initial frame, and
--- a/man/autotype.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/autotype.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -101,6 +101,7 @@
 * Tempo::                  Flexible template insertion.
 * Hippie Expand::          Expansion of text trying various methods.
 
+* GNU Free Documentation License:: The license for this documentation.
 * Concept Index::
 * Command Index::
 * Variable Index::
@@ -650,6 +651,9 @@
 @code{dabbrev-expand}, the standard binding of @kbd{M-/}, providing one
 of the expansion possibilities.
 
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
 
 @node Concept Index
 @unnumbered Concept Index
--- a/man/buffers.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/buffers.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -573,14 +573,14 @@
 buffer name.  To select one, customize the variable
 @code{uniquify-buffer-name-style} (@pxref{Easy Customization}).
 
-  For instance, the @code{forward} naming method puts part of the
-directory name at the beginning of the buffer name; using this method,
-buffers visiting @file{/u/rms/tmp/Makefile} and
+  To begin with, the @code{forward} naming method includes part of the
+file's directory name at the beginning of the buffer name; using this
+method, buffers visiting the files @file{/u/rms/tmp/Makefile} and
 @file{/usr/projects/zaphod/Makefile} would be named
 @samp{tmp/Makefile} and @samp{zaphod/Makefile}, respectively (instead
 of @samp{Makefile} and @samp{Makefile<2>}).
 
-  By contrast, the @code{post-forward} naming method would call the
+  In contrast, the @code{post-forward} naming method would call the
 buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}, and the
 @code{reverse} naming method would call them @samp{Makefile\tmp} and
 @samp{Makefile\zaphod}.  The nontrivial difference between
--- a/man/calc.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/calc.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -92,7 +92,8 @@
 any later version published by the Free Software Foundation; with the
 Invariant Sections being just ``GNU GENERAL PUBLIC LICENSE'', with the
 Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover
-Texts as in (a) below.
+Texts as in (a) below.  A copy of the license is included in the section
+entitled ``GNU Free Documentation License.''
 
 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
 this GNU Manual, like GNU software.  Copies published by the Free
@@ -111,8 +112,6 @@
 @sp 4
 @center GNU Emacs Calc Version 2.1
 @c [volume]
-@sp 1
-@center March 2005
 @sp 5
 @center Dave Gillespie
 @center daveg@@synaptics.com
@@ -126,7 +125,7 @@
 
 @c [begin]
 @ifinfo
-@node Top, , (dir), (dir)
+@node Top, Getting Started, (dir), (dir)
 @chapter The GNU Emacs Calculator
 
 @noindent
@@ -145,8 +144,6 @@
 
 @end ifinfo
 @menu
-* Copying::               How you can copy and share Calc.
-
 * Getting Started::       General description and overview.
 * Interactive Tutorial::
 * Tutorial::              A step-by-step introduction for beginners.
@@ -167,7 +164,9 @@
 * Embedded Mode::         Working with formulas embedded in a file.
 * Programming::           Calc as a programmable calculator.
 
-* Customizing Calc:: Customizing Calc.
+* Copying::               How you can copy and share Calc.
+* GNU Free Documentation License:: The license for this documentation.
+* Customizing Calc::      Customizing Calc.
 * Reporting Bugs::        How to report bugs and make suggestions.
 
 * Summary::               Summary of Calc commands and functions.
@@ -180,400 +179,7 @@
 * Lisp Function Index::   Internal Lisp math functions.
 @end menu
 
-@node Copying, Getting Started, Top, Top
-@unnumbered GNU GENERAL PUBLIC LICENSE
-@center Version 2, June 1991
-
-@c This file is intended to be included in another file.
-
-@display
-Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-@end display
-
-@unnumberedsec Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software---to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-@iftex
-@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end iftex
-@ifinfo
-@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end ifinfo
-
-@enumerate 0
-@item
-This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The ``Program'', below,
-refers to any such program or work, and a ``work based on the Program''
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term ``modification''.)  Each licensee is addressed as ``you''.
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-@item
-You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-@item
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-@enumerate a
-@item
-You must cause the modified files to carry prominent notices
-stating that you changed the files and the date of any change.
-
-@item
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-@item
-If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License.  (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-@end enumerate
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-@item
-You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-@enumerate a
-@item
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-@item
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-@item
-Accompany it with the information you received as to the offer
-to distribute corresponding source code.  (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-@end enumerate
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-@item
-You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-@item
-You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-@item
-Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-@item
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-@item
-If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-@item
-The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-@item
-If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-@iftex
-@heading NO WARRANTY
-@end iftex
-@ifinfo
-@center NO WARRANTY
-@end ifinfo
-
-@item
-BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-@item
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-@end enumerate
-
-@iftex
-@heading END OF TERMS AND CONDITIONS
-@end iftex
-@ifinfo
-@center END OF TERMS AND CONDITIONS
-@end ifinfo
-
-@page
-@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the ``copyright'' line and a pointer to where the full notice is found.
-
-@smallexample
-@var{one line to give the program's name and a brief idea of what it does.}
-Copyright (C) @var{yyyy}  @var{name of author}
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-@end smallexample
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-@smallexample
-Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author}
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-This is free software, and you are welcome to redistribute it
-under certain conditions; type `show c' for details.
-@end smallexample
-
-The hypothetical commands @samp{show w} and @samp{show c} should show
-the appropriate parts of the General Public License.  Of course, the
-commands you use may be called something other than @samp{show w} and
-@samp{show c}; they could even be mouse-clicks or menu items---whatever
-suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the program, if
-necessary.  Here is a sample; alter the names:
-
-@example
-Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-`Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-@var{signature of Ty Coon}, 1 April 1989
-Ty Coon, President of Vice
-@end example
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
-
-@node Getting Started, Tutorial, Copying, Top
+@node Getting Started, Interactive Tutorial, Top, Top
 @chapter Getting Started
 @noindent
 This chapter provides a general overview of Calc, the GNU Emacs
@@ -1019,7 +625,7 @@
 
 ...
 --**-Emacs: myfile             (Fundamental)----All----------------------
---- Emacs Calculator Mode ---                   |Emacs Calc Mode v2.1 ...
+--- Emacs Calculator Mode ---                   |Emacs Calculator Trail
 2:  17.3                                        |    17.3
 1:  -5                                          |    3
     .                                           |    2
@@ -1348,7 +954,7 @@
 @c [fix-ref Embedded Mode]
 @xref{Embedded Mode}, for full details.
 
-@node Other C-x * Commands, , Embedded Mode Overview, Using Calc
+@node Other C-x * Commands,  , Embedded Mode Overview, Using Calc
 @subsection Other @kbd{C-x *} Commands
 
 @noindent
@@ -1514,7 +1120,7 @@
 its initial state:  Empty stack, and initial mode settings.
 @end table
 
-@node History and Acknowledgements, , Using Calc, Getting Started
+@node History and Acknowledgements,  , Using Calc, Getting Started
 @section History and Acknowledgements
 
 @noindent
@@ -1617,7 +1223,7 @@
 
 @ifinfo
 @c This node is accessed by the `C-x * t' command.
-@node Interactive Tutorial, , , Top
+@node Interactive Tutorial, Tutorial, Getting Started, Top
 @chapter Tutorial
 
 @noindent
@@ -1647,7 +1253,7 @@
 @end menu
 @end ifinfo
 
-@node Tutorial, Introduction, Getting Started, Top
+@node Tutorial, Introduction, Interactive Tutorial, Top
 @chapter Tutorial
 
 @noindent
@@ -2128,6 +1734,10 @@
 non-RPN calculators work.  In Algebraic mode, you enter formulas
 in traditional @expr{2+3} notation.
 
+@strong{Warning:} Note that @samp{/} has lower precedence than
+@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.  See
+below for details.
+
 You don't really need any special ``mode'' to enter algebraic formulas.
 You can enter a formula at any time by pressing the apostrophe (@kbd{'})
 key.  Answer the prompt with the desired formula, then press @key{RET}.
@@ -2553,7 +2163,7 @@
 of values you can put on the stack.  The @kbd{`} key also works
 during entry of a number or algebraic formula.
 
-@node Modes Tutorial, , Undo Tutorial, Basic Tutorial
+@node Modes Tutorial,  , Undo Tutorial, Basic Tutorial
 @subsection Mode-Setting Commands
 
 @noindent
@@ -3891,7 +3501,7 @@
 @noindent
 @xref{Matrix Answer 3, 3}. (@bullet{})
 
-@node List Tutorial, , Matrix Tutorial, Vector/Matrix Tutorial
+@node List Tutorial,  , Matrix Tutorial, Vector/Matrix Tutorial
 @subsection Vectors as Lists
 
 @noindent
@@ -5641,7 +5251,7 @@
 @c hard exercise: simplify (2^(n r) - 2^(r*(n - 1))) / (2^r - 1) 2^(n - 1)
 @c                to 2^((n-1)*(r-1)).
 
-@node Rewrites Tutorial, , Basic Algebra Tutorial, Algebra Tutorial
+@node Rewrites Tutorial,  , Basic Algebra Tutorial, Algebra Tutorial
 @subsection Rewrite Rules
 
 @noindent
@@ -6757,7 +6367,7 @@
 @c Volume II of this manual, the @dfn{Calc Reference}, tells the whole story.
 
 @page
-@node Answers to Exercises, , Programming Tutorial, Tutorial
+@node Answers to Exercises,  , Programming Tutorial, Tutorial
 @section Answers to Exercises
 
 @noindent
@@ -9945,7 +9555,7 @@
 definition as it reads it in.  For this reason, @code{C-x * m} is often
 the easiest way to create recursive programs in Calc.
 
-@node Programming Answer 12, , Programming Answer 11, Answers to Exercises
+@node Programming Answer 12,  , Programming Answer 11, Answers to Exercises
 @subsection Programming Tutorial Exercise 12
 
 @noindent
@@ -10738,7 +10348,7 @@
 There is only one trail buffer, @samp{*Calc Trail*}, used by all
 Calculator buffers.
 
-@node Troubleshooting Commands, , Multiple Calculators, Introduction
+@node Troubleshooting Commands,  , Multiple Calculators, Introduction
 @section Troubleshooting Commands
 
 @noindent
@@ -10829,7 +10439,7 @@
 The @kbd{C-x * 0} (with the zero key) command also resets caches along
 with all other aspects of the Calculator's state.
 
-@node Debugging Calc, , Caches, Troubleshooting Commands
+@node Debugging Calc,  , Caches, Troubleshooting Commands
 @subsection Debugging Calc
 
 @noindent
@@ -11022,16 +10632,19 @@
 way.
 
 While floats are always @emph{stored} in decimal, they can be entered
-and displayed in any radix just like integers and fractions.  The
-notation @samp{@var{radix}#@var{ddd}.@var{ddd}} is a floating-point
-number whose digits are in the specified radix.  Note that the @samp{.}
-is more aptly referred to as a ``radix point'' than as a decimal
-point in this case.  The number @samp{8#123.4567} is defined as
-@samp{8#1234567 * 8^-4}.  If the radix is 14 or less, you can use
-@samp{e} notation to write a non-decimal number in scientific notation.
-The exponent is written in decimal, and is considered to be a power
-of the radix: @samp{8#1234567e-4}.  If the radix is 15 or above, the
-letter @samp{e} is a digit, so scientific notation must be written
+and displayed in any radix just like integers and fractions.  Since a
+float that is entered in a radix other that 10 will be converted to
+decimal, the number that Calc stores may not be exactly the number that
+was entered, it will be the closest decimal approximation given the
+current precison.  The notation @samp{@var{radix}#@var{ddd}.@var{ddd}}
+is a floating-point number whose digits are in the specified radix.
+Note that the @samp{.}  is more aptly referred to as a ``radix point''
+than as a decimal point in this case.  The number @samp{8#123.4567} is
+defined as @samp{8#1234567 * 8^-4}.  If the radix is 14 or less, you can
+use @samp{e} notation to write a non-decimal number in scientific
+notation.  The exponent is written in decimal, and is considered to be a
+power of the radix: @samp{8#1234567e-4}.  If the radix is 15 or above,
+the letter @samp{e} is a digit, so scientific notation must be written
 out, e.g., @samp{16#123.4567*16^2}.  The first two exercises of the
 Modes Tutorial explore some of the properties of non-decimal floats.
 
@@ -11906,7 +11519,7 @@
 
 @xref{Store and Recall}, for a discussion of commands dealing with variables.
 
-@node Formulas, , Variables, Data Types
+@node Formulas,  , Variables, Data Types
 @section Formulas
 
 @noindent
@@ -12352,7 +11965,7 @@
 The @kbd{t .} (@code{calc-full-trail-vectors}) command is described
 elsewhere; @pxref{Vector and Matrix Formats}.
 
-@node Keep Arguments, , Trail Commands, Stack and Trail
+@node Keep Arguments,  , Trail Commands, Stack and Trail
 @section Keep Arguments
 
 @noindent
@@ -12854,7 +12467,7 @@
 automatic recomputation is off, use @w{@kbd{C-x * u}}.
 @xref{Embedded Mode}.
 
-@node Working Message, , Automatic Recomputation, Calculation Modes
+@node Working Message,  , Automatic Recomputation, Calculation Modes
 @subsection Working Messages
 
 @noindent
@@ -13235,7 +12848,7 @@
 or @kbd{s D} to check to make sure you don't still have an old
 declaration for the variable that will conflict with its new meaning.
 
-@node Functions for Declarations, , Kinds of Declarations, Declarations
+@node Functions for Declarations,  , Kinds of Declarations, Declarations
 @subsection Functions for Declarations
 
 @noindent
@@ -13935,7 +13548,7 @@
 If you always enter a four-digit year, and use a name instead
 of a number for the month, there is no danger of ambiguity.
 
-@node Standard Date Formats, , Free-Form Dates, Date Formats
+@node Standard Date Formats,  , Free-Form Dates, Date Formats
 @subsubsection Standard Date Formats
 
 @noindent
@@ -14070,7 +13683,7 @@
 case, the display is formatted as specified, and then uniformly
 shifted over four spaces to fit the line numbers.
 
-@node Labels, , Justification, Display Modes
+@node Labels,  , Justification, Display Modes
 @subsection Labels
 
 @noindent
@@ -15361,7 +14974,7 @@
 returns 1.  The only formula for which @code{cascent} will return zero
 is @samp{cvspace(0)} or equivalents.
 
-@node User-Defined Compositions, , Information about Compositions, Compositions
+@node User-Defined Compositions,  , Information about Compositions, Compositions
 @subsubsection User-Defined Compositions
 
 @noindent
@@ -15492,7 +15105,7 @@
 You can save your display formats permanently using the @kbd{Z P}
 command (@pxref{Creating User Keys}).
 
-@node Syntax Tables, , Compositions, Language Modes
+@node Syntax Tables,  , Compositions, Language Modes
 @subsection Syntax Tables
 
 @noindent
@@ -15825,7 +15438,7 @@
 backtracking.  A fully backtracking parser would go on to make sure
 the rest of the pattern matched before finalizing the choice.
 
-@node Conditional Syntax Rules, , Advanced Syntax Patterns, Syntax Tables
+@node Conditional Syntax Rules,  , Advanced Syntax Patterns, Syntax Tables
 @subsubsection Conditional Syntax Rules
 
 @noindent
@@ -16001,7 +15614,7 @@
 do a full emulation with the help of the @kbd{Z [} and @kbd{Z ]}
 programming commands.  @xref{Conditionals in Macros}.)
 
-@node Calc Mode Line, , Modes Variable, Mode Settings
+@node Calc Mode Line,  , Modes Variable, Mode Settings
 @section The Calc Mode Line
 
 @noindent
@@ -16362,20 +15975,24 @@
 @mindex @null
 @end ignore
 @tindex /
-The @kbd{/} (@code{calc-divide}) command divides two numbers.  When
-dividing a scalar @expr{B} by a square matrix @expr{A}, the computation
-performed is @expr{B} times the inverse of @expr{A}.  This also occurs
-if @expr{B} is itself a vector or matrix, in which case the effect is
-to solve the set of linear equations represented by @expr{B}.  If @expr{B}
-is a matrix with the same number of rows as @expr{A}, or a plain vector
-(which is interpreted here as a column vector), then the equation
-@expr{A X = B} is solved for the vector or matrix @expr{X}.  Otherwise,
-if @expr{B} is a non-square matrix with the same number of @emph{columns}
-as @expr{A}, the equation @expr{X A = B} is solved.  If you wish a vector
-@expr{B} to be interpreted as a row vector to be solved as @expr{X A = B},
-make it into a one-row matrix with @kbd{C-u 1 v p} first.  To force a
-left-handed solution with a square matrix @expr{B}, transpose @expr{A} and
-@expr{B} before dividing, then transpose the result.
+The @kbd{/} (@code{calc-divide}) command divides two numbers.  Note that
+when using algebraic entry, @samp{/} has lower precedence than @samp{*}, 
+so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.
+
+When dividing a scalar @expr{B} by a square matrix @expr{A}, the
+computation performed is @expr{B} times the inverse of @expr{A}.  This
+also occurs if @expr{B} is itself a vector or matrix, in which case the
+effect is to solve the set of linear equations represented by @expr{B}.
+If @expr{B} is a matrix with the same number of rows as @expr{A}, or a
+plain vector (which is interpreted here as a column vector), then the
+equation @expr{A X = B} is solved for the vector or matrix @expr{X}.
+Otherwise, if @expr{B} is a non-square matrix with the same number of
+@emph{columns} as @expr{A}, the equation @expr{X A = B} is solved.  If
+you wish a vector @expr{B} to be interpreted as a row vector to be
+solved as @expr{X A = B}, make it into a one-row matrix with @kbd{C-u 1
+v p} first.  To force a left-handed solution with a square matrix
+@expr{B}, transpose @expr{A} and @expr{B} before dividing, then
+transpose the result.
 
 HMS forms can be divided by real numbers or by other HMS forms.  Error
 forms can be divided in any combination of ways.  Modulo forms where both
@@ -17359,7 +16976,7 @@
 holiday, as defined in @code{Holidays}, or 0 if the date is a
 business day.
 
-@node Time Zones, , Business Days, Date Arithmetic
+@node Time Zones,  , Business Days, Date Arithmetic
 @subsection Time Zones
 
 @noindent
@@ -18006,7 +17623,7 @@
 the total depreciation in any method is (by definition) the
 difference between the cost and the salvage value.
 
-@node Definitions of Financial Functions, , Depreciation Functions, Financial Functions
+@node Definitions of Financial Functions,  , Depreciation Functions, Financial Functions
 @subsection Definitions
 
 @noindent
@@ -18161,7 +17778,7 @@
 function returns the amount the book value decreased in the specified
 period.
 
-@node Binary Functions, , Financial Functions, Arithmetic
+@node Binary Functions,  , Financial Functions, Arithmetic
 @section Binary Number Functions
 
 @noindent
@@ -19092,7 +18709,7 @@
 * Random Number Generator::     (Complete description of Calc's algorithm)
 @end menu
 
-@node Random Number Generator, , Random Numbers, Random Numbers
+@node Random Number Generator,  , Random Numbers, Random Numbers
 @subsection Random Number Generator
 
 Calc's random number generator uses several methods to ensure that
@@ -19408,7 +19025,7 @@
 duplicate factors (i.e., can be divided by the same prime more than once),
 the result is zero.
 
-@node Probability Distribution Functions, , Combinatorial Functions, Scientific Functions
+@node Probability Distribution Functions,  , Combinatorial Functions, Scientific Functions
 @section Probability Distribution Functions
 
 @noindent
@@ -20858,7 +20475,7 @@
 in this section.  For example, @samp{vflat(1, [2, [3, 4]], 5)}
 returns @samp{[1, 2, 3, 4, 5]}.
 
-@node Paired-Sample Statistics, , Single-Variable Statistics, Statistical Operations
+@node Paired-Sample Statistics,  , Single-Variable Statistics, Statistical Operations
 @subsection Paired-Sample Statistics
 
 @noindent
@@ -21350,7 +20967,7 @@
 stopping when the result is correct within the specified tolerance, or
 when 20 steps have been taken, whichever is sooner.
 
-@node Generalized Products, , Nesting and Fixed Points, Reducing and Mapping
+@node Generalized Products,  , Nesting and Fixed Points, Reducing and Mapping
 @subsection Generalized Products
 
 @kindex V O
@@ -21385,7 +21002,7 @@
 first (multiplicative) operator is taken from the top of the stack
 and the second (additive) operator is taken from second-to-top.
 
-@node Vector and Matrix Formats, , Reducing and Mapping, Matrix Functions
+@node Vector and Matrix Formats,  , Reducing and Mapping, Matrix Functions
 @section Vector and Matrix Display Formats
 
 @noindent
@@ -22006,7 +21623,7 @@
 @end group
 @end smallexample
 
-@node Rearranging with Selections, , Operating on Selections, Selecting Subformulas
+@node Rearranging with Selections,  , Operating on Selections, Selecting Subformulas
 @subsection Rearranging Formulas using Selections
 
 @noindent
@@ -23104,7 +22721,7 @@
 The @kbd{a M /} command can be used to divide a factor out of
 both sides of an inequality.
 
-@node Simplification of Units, , Unsafe Simplifications, Simplifying Formulas
+@node Simplification of Units,  , Unsafe Simplifications, Simplifying Formulas
 @subsection Simplification of Units
 
 @noindent
@@ -23738,7 +23355,7 @@
 by Calc's symbolic integrator, for example), but @kbd{a I} will fail
 because the integrand goes to infinity at one of the endpoints.
 
-@node Taylor Series, , Numerical Integration, Calculus
+@node Taylor Series,  , Numerical Integration, Calculus
 @subsection Taylor Series
 
 @noindent
@@ -23984,7 +23601,7 @@
 equations is the @kbd{a F} command, which does least-squares fitting
 to satisfy the equations.  @xref{Curve Fitting}.
 
-@node Decomposing Polynomials, , Solving Systems of Equations, Solving Equations
+@node Decomposing Polynomials,  , Solving Systems of Equations, Solving Equations
 @subsection Decomposing Polynomials
 
 @noindent
@@ -24295,7 +23912,7 @@
 over the complex numbers; if it is real or an interval it will
 be minimized over the reals.
 
-@node Numerical Systems of Equations, , Minimization, Numerical Solutions
+@node Numerical Systems of Equations,  , Minimization, Numerical Solutions
 @subsection Systems of Equations
 
 @noindent
@@ -25343,7 +24960,7 @@
 The @code{efit} (corresponding to @kbd{H a F}) and @code{xfit}
 (for @kbd{I a F}) functions are completely analogous.
 
-@node Interpolation, ,  Curve Fitting Details, Curve Fitting
+@node Interpolation,  , Curve Fitting Details, Curve Fitting
 @subsection Polynomial Interpolation
 
 @kindex a p
@@ -25940,7 +25557,7 @@
 it returns 0 when @code{dnonzero} would return 0 or leave itself
 in symbolic form.)
 
-@node Rewrite Rules, , Logical Operations, Algebra
+@node Rewrite Rules,  , Logical Operations, Algebra
 @section Rewrite Rules
 
 @noindent
@@ -27607,7 +27224,7 @@
 existence and forget about it, all your future rewrite commands will
 be needlessly slow.
 
-@node Examples of Rewrite Rules, , Debugging Rewrites, Rewrite Rules
+@node Examples of Rewrite Rules,  , Debugging Rewrites, Rewrite Rules
 @subsection Examples of Rewrite Rules
 
 @noindent
@@ -28029,7 +27646,7 @@
 
 @c Describe angular units, luminosity vs. steradians problem.
 
-@node User-Defined Units, , Predefined Units, Units
+@node User-Defined Units,  , Predefined Units, Units
 @section User-Defined Units
 
 @noindent
@@ -28573,7 +28190,7 @@
 produce @samp{f(2 pi)}, whereas @kbd{s l} would give @samp{f(6.28)}
 since the evaluation step will also evaluate @code{pi}.
 
-@node Evaluates-To Operator, , Let Command, Store and Recall
+@node Evaluates-To Operator,  , Let Command, Store and Recall
 @section The Evaluates-To Operator
 
 @noindent
@@ -29206,7 +28823,7 @@
 still be assigned automatically, but you could store another vector in
 @code{PointStyles} to define them, too.
 
-@node Devices, , Graphics Options, Graphics
+@node Devices,  , Graphics Options, Graphics
 @section Graphical Devices
 
 @noindent
@@ -29637,7 +29254,7 @@
 it can be typed anywhere, not just in Calc.  This provides an easy
 way to guarantee that Calc knows which editing buffer you want to use!
 
-@node X Cut and Paste, , Yanking Into Buffers, Kill and Yank
+@node X Cut and Paste,  , Yanking Into Buffers, Kill and Yank
 @section X Cut and Paste
 
 @noindent
@@ -30007,7 +29624,7 @@
 @kbd{"x"} key pushes the variable names @expr{y}, @expr{z}, and
 @expr{t}, respectively.
 
-@node Keypad Modes Menu, , Keypad Vectors Menu, Keypad Mode
+@node Keypad Modes Menu,  , Keypad Vectors Menu, Keypad Mode
 @section Modes Menu
 
 @smallexample
@@ -30799,7 +30416,7 @@
 When Embedded mode is not enabled, mode-recording modes except
 for @code{Save} have no effect.
 
-@node Customizing Embedded Mode, , Mode Settings in Embedded Mode, Embedded Mode
+@node Customizing Embedded Mode,  , Mode Settings in Embedded Mode, Embedded Mode
 @section Customizing Embedded Mode
 
 @noindent
@@ -30953,7 +30570,7 @@
 major modes.  If you change this, it is a good idea still to end with a
 newline so that mode annotations will appear on lines by themselves.
 
-@node Programming, Customizing Calc, Embedded Mode, Top
+@node Programming, Copying, Embedded Mode, Top
 @chapter Programming
 
 @noindent
@@ -31406,7 +31023,7 @@
 other settings such as the language mode and the various display modes,
 are @emph{not} affected by @kbd{Z `} and @kbd{Z '}.
 
-@node Queries in Macros, , Local Values in Macros, Keyboard Macros
+@node Queries in Macros,  , Local Values in Macros, Keyboard Macros
 @subsection Queries in Keyboard Macros
 
 @c @noindent
@@ -31591,7 +31208,7 @@
 in symbolic form without ever activating the @code{deriv} function.  Press
 @kbd{m D} to turn the default simplifications back on afterwards.
 
-@node Lisp Definitions, , Algebraic Definitions, Programming
+@node Lisp Definitions,  , Algebraic Definitions, Programming
 @section Programming with Lisp
 
 @noindent
@@ -32296,7 +31913,7 @@
 a division by 512 in disguise; @code{idivmod} allows us to do the
 same thing with a single division by 512.
 
-@node Sine Example, , Bit Counting Example, Example Definitions
+@node Sine Example,  , Bit Counting Example, Example Definitions
 @subsubsection The Sine Function
 
 @noindent
@@ -32776,7 +32393,7 @@
 ``F'' and ``C'', so that the character winds up before the cursor
 instead of after it.
 
-@node Internals, , Calling Calc from Your Programs, Lisp Definitions
+@node Internals,  , Calling Calc from Your Programs, Lisp Definitions
 @subsection Calculator Internals
 
 @noindent
@@ -34668,7 +34285,7 @@
 @comment @noindent
 @comment (This section is currently unfinished.)
 
-@node Hooks, , Formatting Lisp Functions, Internals
+@node Hooks,  , Formatting Lisp Functions, Internals
 @subsubsection Hooks
 
 @noindent
@@ -34832,7 +34449,404 @@
 list and also call @code{make-local-variable} itself.
 @end defvar
 
-@node Customizing Calc, Reporting Bugs, Programming, Top
+@node Copying, GNU Free Documentation License, Programming, Top
+@appendix GNU GENERAL PUBLIC LICENSE
+@center Version 2, June 1991
+
+@c This file is intended to be included in another file.
+
+@display
+Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@unnumberedsec Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software---to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+@iftex
+@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end iftex
+@ifinfo
+@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end ifinfo
+
+@enumerate 0
+@item
+This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The ``Program'', below,
+refers to any such program or work, and a ``work based on the Program''
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term ``modification''.)  Each licensee is addressed as ``you''.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+@item
+You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+@item
+You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+@enumerate a
+@item
+You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+
+@item
+You must cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.
+
+@item
+If the modified program normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License.  (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)
+@end enumerate
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+@item
+You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+@enumerate a
+@item
+Accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections
+1 and 2 above on a medium customarily used for software interchange; or,
+
+@item
+Accompany it with a written offer, valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+@item
+Accompany it with the information you received as to the offer
+to distribute corresponding source code.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)
+@end enumerate
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+@item
+You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+@item
+You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+@item
+Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+@item
+If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+@item
+If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+@item
+The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and ``any
+later version'', you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+@item
+If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+@iftex
+@heading NO WARRANTY
+@end iftex
+@ifinfo
+@center NO WARRANTY
+@end ifinfo
+
+@item
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+@item
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+@end enumerate
+
+@iftex
+@heading END OF TERMS AND CONDITIONS
+@end iftex
+@ifinfo
+@center END OF TERMS AND CONDITIONS
+@end ifinfo
+
+@page
+@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the ``copyright'' line and a pointer to where the full notice is found.
+
+@smallexample
+@var{one line to give the program's name and a brief idea of what it does.}
+Copyright (C) @var{yyyy}  @var{name of author}
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+@smallexample
+Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author}
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
+@end smallexample
+
+The hypothetical commands @samp{show w} and @samp{show c} should show
+the appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than @samp{show w} and
+@samp{show c}; they could even be mouse-clicks or menu items---whatever
+suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the program, if
+necessary.  Here is a sample; alter the names:
+
+@example
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+`Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+@var{signature of Ty Coon}, 1 April 1989
+Ty Coon, President of Vice
+@end example
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+
+@node GNU Free Documentation License, Customizing Calc, Copying, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Customizing Calc, Reporting Bugs, GNU Free Documentation License, Top
 @appendix Customizing Calc
 
 The usual prefix for Calc is the key sequence @kbd{C-x *}.  If you wish
@@ -36457,7 +36471,7 @@
 
 @printindex vr
 
-@node Lisp Function Index, , Variable Index, Top
+@node Lisp Function Index,  , Variable Index, Top
 @unnumbered Index of Lisp Math Functions
 
 The following functions are meant to be used with @code{defmath}, not
--- a/man/calendar.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/calendar.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1614,11 +1614,12 @@
 
 @c @vindex calendar-daylight-savings-starts-time  too long!
 @vindex calendar-daylight-savings-ends-time
-  The two variables @code{calendar-daylight-savings-starts-time} and
-@code{calendar-daylight-savings-ends-time} specify the number of minutes
-after midnight local time when the transition to and from daylight
-saving time should occur.  For Cambridge, Massachusetts both variables'
-values are 120.
+  Finally, the two variables
+@code{calendar-daylight-savings-starts-time} and
+@code{calendar-daylight-savings-ends-time} specify the number of
+minutes after midnight local time when the transition to and from
+daylight saving time should occur.  For Cambridge, Massachusetts both
+variables' values are 120.
 
 @node Time Intervals
 @section Summing Time Intervals
--- a/man/cc-mode.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/cc-mode.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -255,6 +255,7 @@
 * FAQ::                         
 * Updating CC Mode::            
 * Mailing Lists and Bug Reports::  
+* GNU Free Documentation License::
 * Command and Function Index::  
 * Variable Index::              
 * Concept and Key Index::       
@@ -1880,11 +1881,7 @@
 support mode like Lazy Lock or Just-in-time Lock mode that only
 fontifies the parts that are actually shown.  Fontifying the whole
 buffer at once can easily get bothersomely slow even on contemporary
-hardware.
-@c ACM, 2005/8/28:  There should be a page in the (X)Emacs manual
-@c describing these support modes.  There wasn't in the
-@c fourteenth edition of the Emacs manual (released with Emacs 21.3).
-@c There might be one in the Emacs CVS for 22.1.
+hardware. @xref{Font Lock,,,@emacsman{}, @emacsmantitle{}}.
 @end enumerate
 
 @cindex user defined types
@@ -6896,7 +6893,7 @@
 
 
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node    Mailing Lists and Bug Reports, Command and Function Index, Updating CC Mode, Top
+@node    Mailing Lists and Bug Reports, GNU Free Documentation License, Updating CC Mode, Top
 @comment node-name, next, previous, up
 @appendix Mailing Lists and Submitting Bug Reports
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6938,9 +6935,15 @@
 @code{comp.lang.idl}, and @code{comp.lang.awk}.
 @c There is no newsgroup for Pike.  :-(
 
+
+@node GNU Free Documentation License, Command and Function Index, Mailing Lists and Bug Reports, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
 @c Removed the tentative node "Mode Initialization" from here, 2005/8/27.
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node    Command and Function Index, Variable Index, Mailing Lists and Bug Reports, Top
+@node    Command and Function Index, Variable Index, GNU Free Documentation License, Top
 @comment node-name, next, previous, up
 @unnumbered Command and Function Index
 @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
--- a/man/cl.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/cl.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -78,6 +78,7 @@
 * Old CL Compatibility::        All known differences with old cl.el
 * Porting Common Lisp::         Hints for porting Common Lisp code
 
+* GNU Free Documentation License:: The license for this documentation.
 * Function Index::
 * Variable Index::
 @end menu
@@ -5141,7 +5142,7 @@
 @code{floor}, @code{ceiling}, etc.; @code{cl-compat} cannot use
 these names because they conflict with Emacs built-ins.
 
-@node Porting Common Lisp, Function Index, Old CL Compatibility, Top
+@node Porting Common Lisp, GNU Free Documentation License, Old CL Compatibility, Top
 @appendix Porting Common Lisp
 
 @noindent
@@ -5353,7 +5354,11 @@
 recursion.
 @end itemize
 
-@node Function Index, Variable Index, Porting Common Lisp, Top
+@node GNU Free Documentation License, Function Index, Porting Common Lisp, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Function Index, Variable Index, GNU Free Documentation License, Top
 @unnumbered Function Index
 
 @printindex fn
--- a/man/cmdargs.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/cmdargs.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -279,9 +279,14 @@
 
 @item --no-splash
 @opindex --no-splash
-@vindex inhibit-startup-message
-Do not display a splash screen on startup; this is equivalent to
-setting the variable @code{inhibit-startup-message} to non-@code{nil}.
+@vindex inhibit-splash-screen
+@cindex splash screen
+@cindex startup message
+Do not display a splash screen on startup.  You can also achieve this
+effect by setting the variable @code{inhibit-splash-screen} to
+non-@code{nil} in you personal init file (but @emph{not} in
+@file{site-start.el}).  (This variable was called
+@code{inhibit-startup-message} in previous Emacs versions.)
 
 @item --no-desktop
 @opindex --no-desktop
@@ -887,7 +892,7 @@
 
 @node Colors
 @appendixsec Window Color Options
-@cindex color of window
+@cindex color of window, from command line
 @cindex text colors, from command line
 
 @findex list-colors-display
--- a/man/custom.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/custom.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1276,7 +1276,6 @@
 * Init Rebinding::      Rebinding keys with your init file, @file{.emacs}.
 * Function Keys::       Rebinding terminal function keys.
 * Named ASCII Chars::   Distinguishing @key{TAB} from @kbd{C-i}, and so on.
-* Non-ASCII Rebinding:: Rebinding non-@acronym{ASCII} characters such as Latin-1.
 * Mouse Buttons::       Rebinding mouse buttons in Emacs.
 * Disabling::           Disabling a command means confirmation is required
                           before it can be executed.  This is done to protect
@@ -1676,7 +1675,7 @@
 that delimit the vector.
 
   Language and coding systems can cause problems with key bindings
-for non-@acronym{ASCII} characters.  @xref{Non-ASCII Rebinding}.
+for non-@acronym{ASCII} characters.  @xref{Init Non-ASCII}.
 
 @node Function Keys
 @subsection Rebinding Function Keys
@@ -1817,36 +1816,6 @@
 between @key{TAB} and @kbd{C-i} (and likewise for other such pairs),
 because the terminal sends the same character in both cases.
 
-@node Non-ASCII Rebinding
-@subsection Non-@acronym{ASCII} Characters on the Keyboard
-@cindex rebinding non-@acronym{ASCII} keys
-@cindex non-@acronym{ASCII} keys, binding
-
-  If your keyboard has keys that send non-@acronym{ASCII}
-characters, such as accented letters, rebinding these keys
-must be done by using a vector like this@footnote{You must
-avoid the string syntax for binding
-non-@acronym{ASCII} characters, since they will be
-interpreted as meta keys.  @xref{Strings of Events,,,elisp,
-The Emacs Lisp Reference Manual}.}:
-
-@example
-(global-set-key [?@var{char}] 'some-function)
-@end example
-
-@noindent
-Type @kbd{C-q} followed by the key you want to bind, to insert @var{char}.
-
-  Since this puts a non-@acronym{ASCII} character in the @file{.emacs},
-you should specify a coding system for that file that supports the
-character in question.  @xref{Init Non-ASCII}.
-
-  @strong{Warning:} if you change the keyboard encoding, or change
-between multibyte and unibyte mode, or anything that would alter which
-code @kbd{C-q} would insert for that character, you'll need to edit
-the Lisp expression accordingly, to use the character code generated
-by @kbd{C-q} in the new mode.
-
 @node Mouse Buttons
 @subsection Rebinding Mouse Buttons
 @cindex mouse button events
@@ -2126,6 +2095,7 @@
 * Init Examples::       How to do some things with an init file.
 * Terminal Init::       Each terminal type can have an init file.
 * Find Init::	        How Emacs finds the init file.
+* Init Non-ASCII::      Using non-@acronym{ASCII} characters in an init file.
 @end menu
 
 @node Init Syntax
@@ -2176,17 +2146,8 @@
 a Meta character, as in @samp{\M-a} for @kbd{Meta-A} or @samp{\M-\C-a} for
 @kbd{Control-Meta-A}.@refill
 
-@cindex international characters in @file{.emacs}
-@cindex non-@acronym{ASCII} characters in @file{.emacs}
-@anchor{Init Non-ASCII}If you want to include non-@acronym{ASCII}
-characters in strings in your init
-file, you should consider putting a @w{@samp{-*-coding:
-@var{coding-system}-*-}} tag on the first line which states the coding
-system used to save your @file{.emacs}, as explained in @ref{Recognize
-Coding}.  This is because the defaults for decoding non-@acronym{ASCII} text might
-not yet be set up by the time Emacs reads those parts of your init file
-which use such strings, possibly leading Emacs to decode those strings
-incorrectly.
+@xref{Init Non-ASCII}, for information about including
+non-@acronym{ASCII} in your init file.
 
 @item Characters:
 Lisp character constant syntax consists of a @samp{?} followed by
@@ -2195,7 +2156,7 @@
 strings and characters are not interchangeable in Lisp; some contexts
 require one and some contexts require the other.
 
-@xref{Non-ASCII Rebinding}, for information about binding commands to
+@xref{Init Non-ASCII}, for information about binding commands to
 keys which send non-@acronym{ASCII} characters.
 
 @item True:
@@ -2504,6 +2465,48 @@
 name in the system's data base of users.
 @c  LocalWords:  backtab
 
+@node Init Non-ASCII
+@subsection Non-@acronym{ASCII} Characters in Init Files
+@cindex international characters in @file{.emacs}
+@cindex non-@acronym{ASCII} characters in @file{.emacs}
+@cindex non-@acronym{ASCII} keys, binding
+@cindex rebinding non-@acronym{ASCII} keys
+
+  Language and coding systems may cause problems if your init file
+contains non-@acronym{ASCII} characters, such as accented letters, in
+strings or key bindings.
+
+  If you want to use non-@acronym{ASCII} characters in your init file,
+you should put a @w{@samp{-*-coding: @var{coding-system}-*-}} tag on
+the first line of the init file, and specify a coding system that
+supports the character(s) in question.  @xref{Recognize Coding}.  This
+is because the defaults for decoding non-@acronym{ASCII} text might
+not yet be set up by the time Emacs reads those parts of your init
+file which use such strings, possibly leading Emacs to decode those
+strings incorrectly.  You should then avoid adding Emacs Lisp code
+that modifies the coding system in other ways, such as calls to
+@code{set-language-environment}.
+
+  To bind non-@acronym{ASCII} keys, you must use a vector (@pxref{Init
+Rebinding}).  The string syntax cannot be used, since the
+non-@acronym{ASCII} characters will be interpreted as meta keys.  For
+instance:
+
+@example
+(global-set-key [?@var{char}] 'some-function)
+@end example
+
+@noindent
+Type @kbd{C-q}, followed by the key you want to bind, to insert @var{char}.
+
+  @strong{Warning:} if you change the keyboard encoding, or change
+between multibyte and unibyte mode, or anything that would alter which
+code @kbd{C-q} would insert for that character, this keybinding may
+stop working.  It is therefore advisable to use one and only one
+coding system, for your init file as well as the files you edit.  For
+example, don't mix the @samp{latin-1} and @samp{latin-9} coding
+systems.
+
 @ignore
    arch-tag: c68abddb-4410-4fb5-925f-63394e971d93
 @end ignore
--- a/man/dired-x.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/dired-x.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -25,38 +25,27 @@
 @comment %**end of header (This is for running Texinfo on a region.)
 
 @copying
-This documents the ``extra'' features for Dired Mode for GNU Emacs found in
-the file @file{dired-x.el}.
-
-Copyright @copyright{} 1993, 1994, 2001, 2002, 2003, 2004,
+Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004,
 2005, 2006, 2007  Free Software Foundation, Inc.
 
 @quotation
-Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of
-a permission notice identical to this one.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and
+``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
 
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for
-modified versions, except that this permission notice may be stated
-in a translation approved by the Free Software Foundation.
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software.  Copies published by the Free
+Software Foundation raise funds for GNU development.''
 
-The file used to create this is called @file{dired-x.texi}, but the
-original work that was altered to make that file was called
-@file{dired.texi} written by Sebastian Kremer.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
 @end quotation
 @end copying
 
@@ -80,9 +69,6 @@
 @sp 1
 @center @titlefont{Directory Editor}
 @sp 4
-@center Manual Revision: 2.53
-@center 2001/02/25 14:05:46
-@sp 5
 @center Lawrence R@. Dodd
 @c @center @t{dodd@@roebling.poly.edu}
 @sp 5
@@ -138,6 +124,7 @@
 * Miscellaneous Commands::
 * Bugs::
 
+* GNU Free Documentation License::
 * Concept Index::
 * Command Index::
 * Key Index::
@@ -1228,7 +1215,7 @@
 info.
 @end table
 
-@node Bugs, Concept Index, Miscellaneous Commands, Top
+@node Bugs, GNU Free Documentation License, Miscellaneous Commands, Top
 @comment  node-name,  next,  previous,  up
 @chapter Bugs
 @cindex Bugs
@@ -1252,7 +1239,11 @@
 Lawrence R. Dodd
 @c <dodd@@roebling.poly.edu>
 
-@node     Concept Index, Command Index, Bugs, Top
+@node GNU Free Documentation License, Concept Index, Bugs, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node     Concept Index, Command Index, GNU Free Documentation License, Top
 @comment  node-name,  next,  previous,  up
 @unnumbered Concept Index
 @printindex cp
--- a/man/dired.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/dired.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1132,9 +1132,9 @@
 @findex locate-with-filter
 @cindex file database (locate)
 @vindex locate-command
-  @kbd{M-x locate} provides a similar interface to the @code{locate}
-program.  @kbd{M-x locate-with-filter} is similar, but keeps only files
-whose names match a given regular expression.
+  The command @kbd{M-x locate} provides a similar interface to the
+@code{locate} program.  @kbd{M-x locate-with-filter} is similar, but
+keeps only files whose names match a given regular expression.
 
   These buffers don't work entirely like ordinary Dired buffers: file
 operations work, but do not always automatically update the buffer.
--- a/man/display.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/display.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -333,6 +333,11 @@
 background colors for the current frame only; see @ref{Frame
 Parameters}.)
 
+  If you want to alter the appearance of all Emacs frames, you need to
+customize the frame parameters in the variable
+@code{default-frame-alist}; see @ref{Creating Frames,
+default-frame-alist}.
+
   Emacs can correctly display variable-width fonts, but Emacs commands
 that calculate width and indentation do not know how to calculate
 variable widths.  This can sometimes lead to incorrect results when
@@ -349,7 +354,9 @@
   To see what faces are currently defined, and what they look like,
 type @kbd{M-x list-faces-display}.  It's possible for a given face to
 look different in different frames; this command shows the appearance
-in the frame in which you type it.
+in the frame in which you type it.  With a prefix argument, this
+prompts for a regular expression, and displays only faces with names
+matching that regular expression.
 
   Here are the standard faces for specifying text appearance.  You can
 apply them to specific text when you want the effects they produce.
--- a/man/doclicense.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/doclicense.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1,6 +1,4 @@
 @c -*-texinfo-*-
-@node GNU Free Documentation License, Emacs Invocation, Copying, Top
-@appendix GNU Free Documentation License
 @center Version 1.2, November 2002
 
 @display
--- a/man/ebrowse.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/ebrowse.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -42,8 +42,6 @@
 @title Ebrowse User's Manual
 @sp 4
 @subtitle Ebrowse/Emacs
-@sp 1
-@subtitle May 2000
 @sp 5
 @author Gerd Moellmann
 @page
@@ -65,6 +63,7 @@
 * Tree Buffers::		Traversing class hierarchies
 * Member Buffers::		Looking at member information
 * Tags-like Functions::		Finding members from source files
+* GNU Free Documentation License:: The license for this documentation.
 * Concept Index::		An entry for each concept defined
 @end menu
 
@@ -1240,7 +1239,7 @@
 @comment ***		    TAGS LIKE FUNCTIONS
 @comment **************************************************************
 
-@node Tags-like Functions, Concept Index, Member Buffers, Top
+@node Tags-like Functions, GNU Free Documentation License, Member Buffers, Top
 @comment  node-name,       next,       previous,      up
 @chapter Tags-like Functions
 
@@ -1438,7 +1437,7 @@
 
 
 
-@node Member Buffer Display,  , Symbol Completion, Tags-like Functions
+@node Member Buffer Display, , Symbol Completion, Tags-like Functions
 @section Quick Member Display
 @cindex member buffer, for member at point
 
@@ -1446,7 +1445,12 @@
 in on with the command @kbd{C-c C-m m}.
 
 
-@node Concept Index, , Tags-like Functions, Top
+@node GNU Free Documentation License, Concept Index, Tags-like Functions, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Concept Index, , GNU Free Documentation License, Top
 @unnumbered Concept Index
 @printindex cp
 
--- a/man/ediff.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/ediff.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -56,9 +56,9 @@
 @titlepage
 @title Ediff User's Manual
 @sp 4
-@subtitle Ediff version 2.76.1
+@subtitle Ediff version 2.81.1
 @sp 1
-@subtitle January 2002
+@subtitle April 2007
 @sp 5
 @author Michael Kifer
 @page
@@ -80,6 +80,7 @@
 * Remote and Compressed Files::  You may want to know about this.
 * Customization::               How to make Ediff work the way YOU want.
 * Credits::                     Thanks to those who helped.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::
 @end menu
 
@@ -2411,7 +2412,7 @@
 the control buffer is in its own frame.
 @end table
 
-@node Credits, Index, Customization, Top
+@node Credits, GNU Free Documentation License, Customization, Top
 @chapter Credits
 
 Ediff was written by Michael Kifer <kifer@@cs.stonybrook.edu>.  It was inspired
@@ -2527,7 +2528,12 @@
 Eli Zaretskii (eliz@@is.elta.co.il)
 @end example
 
-@node Index, , Credits, Top
+@node GNU Free Documentation License, Index, Credits, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Index, , GNU Free Documentation License, Top
 @unnumbered Index
 @printindex cp
 
--- a/man/emacs-mime.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/emacs-mime.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -75,6 +75,7 @@
 * Interface Functions::   An abstraction over the basic functions.
 * Basic Functions::       Utility and basic parsing functions.
 * Standards::             A summary of RFCs and working documents used.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::                 Function and variable index.
 @end menu
 
@@ -125,7 +126,7 @@
 @table @code
 @item postscript
 @findex postscript
-Postscript file.
+PostScript file.
 
 @item uu
 @findex uu
@@ -1805,6 +1806,9 @@
 
 @end table
 
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
 
 @node Index
 @chapter Index
--- a/man/emacs.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/emacs.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -5,7 +5,7 @@
 
 @c The edition number appears in several places in this file
 @set EDITION   Sixteenth
-@set EMACSVER  22.0.96
+@set EMACSVER  22.0.98
 
 @copying
 This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},
@@ -39,15 +39,20 @@
 @c in general, keep the following line commented out, unless doing a
 @c copy of this manual that will be published.  the manual should go
 @c onto the distribution in the full, 8.5 x 11" size.
+@set smallbook
 
+@ifset smallbook
 @smallbook
+@end ifset
 
 @c per rms and peterb, use 10pt fonts for the main text, mostly to
 @c save on paper cost.  Also do not declare @setchapternewpage odd.
 @c Do this inside @tex for now, so current makeinfo does not complain.
 @tex
+@ifset smallbook
 @fonttextsize 10
-\global\hbadness=6000 % don't worry about not-too-underfull boxes
+@end ifset
+\global\hbadness=6666 % don't worry about not-too-underfull boxes
 @end tex
 
 @defcodeindex op
@@ -908,7 +913,6 @@
 * Init Rebinding::      Rebinding keys with your init file, @file{.emacs}.
 * Function Keys::       Rebinding terminal function keys.
 * Named ASCII Chars::   Distinguishing @key{TAB} from @kbd{C-i}, and so on.
-* Non-ASCII Rebinding:: Rebinding non-@acronym{ASCII} characters such as Latin-1.
 * Mouse Buttons::       Rebinding mouse buttons in Emacs.
 * Disabling::           Disabling a command means confirmation is required
                           before it can be executed.  This is done to protect
@@ -920,6 +924,7 @@
 * Init Examples::       How to do some things with an init file.
 * Terminal Init::       Each terminal type can have an init file.
 * Find Init::	        How Emacs finds the init file.
+* Init Non-ASCII::      Using non-@acronym{ASCII} characters in an init file.
 
 Dealing with Emacs Trouble
 
@@ -1683,7 +1688,10 @@
 library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.
 
+@node GNU Free Documentation License, Emacs Invocation, Copying, Top
+@appendix GNU Free Documentation License
 @include doclicense.texi
+
 @include cmdargs.texi
 @include xresources.texi
 
--- a/man/erc.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/erc.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -12,7 +12,7 @@
 @syncodeindex fn cp
 
 @copying
-This manual is for ERC version 5.2 stable pre-release.
+This manual is for ERC version 5.2.
 
 Copyright @copyright{} 2005, 2006, 2007 Free Software Foundation, Inc.
 
@@ -20,7 +20,17 @@
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.2 or
 any later version published by the Free Software Foundation; with no
-Invariant Sections, Front-Cover texts, or Back-Cover Texts.
+Invariant Sections, Front-Cover texts, or Back-Cover Texts.  A copy of
+the license is included in the section entitled ``GNU Free
+Documentation License'' in the Emacs manual.
+
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
+All Emacs Lisp code contained in this document may be used, distributed,
+and modified without restriction.
 @end quotation
 @end copying
 
@@ -58,6 +68,7 @@
 * Advanced Usage::              Cool ways of using ERC.
 * Getting Help and Reporting Bugs::  
 * History::                     The history of ERC.
+* GNU Free Documentation License:: The license for this documentation.
 * Concept Index::               Search for terms.
 
 @detailmenu
@@ -68,12 +79,16 @@
 * Releases::                    Released versions of ERC.
 * Development::                 Latest unreleased development changes.
 
+Getting Started
+
+* Sample Session::              Example of connecting to the #emacs channel
+* Special Features::            Differences from standalone IRC clients
+
 Advanced Usage
 
 * Connecting::                  Ways of connecting to an IRC server.
+* Sample Configuration::        An example configuration file.
 * Options::                     Options that are available for ERC.
-* Tips and Tricks::             Ways of enhancing your ERC experience.
-* Sample Configuration::        An example configuration file.
 
 @end detailmenu
 @end menu
@@ -111,8 +126,17 @@
 * Development::                 Latest unreleased development changes.
 @end menu
 
-These sections may be skipped if you are using the version of ERC that
-comes with Emacs.
+Note that some ERC files are not included with Emacs due to copyright or
+dependency issues.  If desired, they may be found at the following
+locations, or from your local GNU mirror.
+
+@itemize @bullet
+@item @uref{http://ftp.gnu.org/gnu/erc/erc-5.2-extras.tar.gz}
+@item @uref{http://ftp.gnu.org/gnu/erc/erc-5.2-extras.zip}
+@end itemize
+
+The rest of this chapter may be skipped if you are using the version of
+ERC that comes with Emacs.
 
 @node Releases, Development, Obtaining ERC, Obtaining ERC
 @comment  node-name,  next,  previous,  up
@@ -131,7 +155,7 @@
 
 @cindex releases, from source
 Alternatively, you can download the latest release from
-@uref{http://ftp.gnu.org/gnu/erc}.
+@uref{http://ftp.gnu.org/gnu/erc}, or your local GNU mirror.
 
 @node Development,  , Releases, Obtaining ERC
 @comment  node-name,  next,  previous,  up
@@ -188,9 +212,9 @@
 
 @end enumerate
 
-If you are new to Arch and want to learn more about developing with it,
-you might find this tutorial helpful:
-@uref{http://www.mwolson.org/projects/ArchTutorial.html}.
+If you are new to Arch and want to learn more about developing ERC with
+it, visit @uref{http://emacswiki.org/cgi-bin/wiki/ErcDevelopment} for
+full instructions.
 
 @subheading Development snapshots
 
@@ -261,8 +285,6 @@
 @chapter Getting Started
 @cindex settings
 
-@c PRE5_2: Mention .ercrc.el
-
 To use ERC, add the directory containing its files to your
 @code{load-path} variable, in your @file{.emacs} file.  Then, load ERC
 itself.  An example follows.
@@ -274,20 +296,151 @@
 Once ERC is loaded, the command @kbd{M-x erc} will start ERC and
 prompt for the server to connect to.
 
+If you want to place ERC settings in their own file, you can place them
+in @file{~/.emacs.d/.ercrc.el}, creating it if necessary.
+
+If you would rather use the Customize interface to change how ERC works,
+do @kbd{M-x customize-group RET erc RET}.  In particular, ERC comes with
+lots of modules that may be enabled or disabled; to select which ones
+you want, do @kbd{M-x customize-variable RET erc-modules RET}.
+
+@menu
+* Sample Session::              Example of connecting to the #emacs channel
+* Special Features::            Differences from standalone IRC clients
+@end menu
+
+@node Sample Session, Special Features, Getting Started, Getting Started
+@comment  node-name,  next,  previous,  up
+@section Sample Session
+
+This is an example ERC session which shows how to connect to the #emacs
+channel on Freenode.  Another IRC channel on Freenode that may be of
+interest is #erc, which is a channel where ERC users and developers hang
+out.
+
+@itemize @bullet
+
+@item Connect to Freenode
+
+Run @kbd{M-x erc}.  Use ``irc.freenode.net'' as the IRC server, ``6667''
+as the port, and choose a nickname.
+
+@item Get used to the interface
+
+Switch to the ``irc.freenode.net:6667'' buffer, if you're not already
+there.  You will see first some messages about checking for ident, and
+then a bunch of other messages that describe the current IRC server.
+
+@item Join the #emacs channel
+
+In that buffer, type ``/join SPC #emacs'' and hit @kbd{RET}.  Depending
+on how you've set up ERC, either a new buffer for ``#emacs'' will be
+displayed, or a new buffer called ``#emacs'' will be created in the
+background.  If the latter, switch to the ``#emacs'' buffer.  You will
+see the channel topic and a list of the people who are currently on the
+channel.
+
+@item Register your nickname with Freenode
+
+If you would like to be able to talk with people privately on the
+Freenode network, you will have to ``register'' your nickname.  To do
+so, switch to the ``irc.freenode.net:6667'' buffer and type ``/msg
+NickServ register <password>'', replacing ``<password>'' with your
+desired password.  It should tell you that the operation was successful.
+
+@item Talk to people in the channel
+
+If you switch back to the ``#emacs'' buffer, you can type a message, and
+everyone on the channel will see it.
+
+@item Open a query buffer to talk to someone
+
+If you want to talk with someone in private (this should usually not be
+done for technical help, only for personal questions), type ``/query
+<nick>'', replacing ``<nick>'' with the nickname of the person you would
+like to talk to.  Depending on how ERC is set up, you will either see a
+new buffer with the name of the person, or such a buffer will be created
+in the background and you will have to switch to it.  Begin typing
+messages, and you will be able to have a conversation.
+
+Note that if the other person is not registered, you will not be able to
+talk with them.
+
+@end itemize
+
+@node Special Features, , Sample Session, Getting Started
+@comment  node-name,  next,  previous,  up
+@section Special Features
+
+ERC has some features that distinguish it from some IRC clients.
+
+@itemize @bullet
+
+@item multiple channels and multiple servers
+
+Every channel is put in a separate buffer.  Several IRC servers may be
+connected to at the same time.
+
+@cindex query buffers
+@item private message separation
+
+Private conversations are treated as channels, and are put into separate
+buffers in Emacs.  We call these ``query buffers''.
+
+@item highlighting
+
+Some occurences of words can be highlighted, which makes it easier to
+track different kinds of conversations.
+
+@item notification
+
+ERC can notify you that certain users are online.
+
+@item channel tracking
+
+Channels can be hidden and conversation continue in the background.  You
+are notified when something is said in such a channel that is not
+currently visible.  This makes it easy to get Real Work done while still
+maintaining an IRC presence.
+
+@item nick completion
+
+ERC can complete words upon hitting @kbd{TAB}, which eases the writing
+of nicknames in messages.
+
+@cindex history ring
+@item history
+
+Past actions are kept in history rings for future use.  To navigate a
+history ring, hit @kbd{M-p} to go backwards and @kbd{M-n} to go
+forwards.
+
+@item multiple languages
+
+Different channels and servers may have different language encodings.
+
+In addition, it is possible to translate the messages that ERC uses into
+multiple languages.  Please contact the developers of ERC at
+@email{erc-discuss@@gnu.org} if you are interested in helping with the
+translation effort.
+
+@item user scripting
+
+Users can load scripts (e.g. auto greeting scripts) when ERC starts up.
+
+It is also possible to make custom IRC commands, if you know a little
+Emacs Lisp.  Just make an Emacs Lisp function and call it
+@code{erc-cmd-NEWCOMMAND}, where @code{NEWCOMMAND} is the name of the
+new command in capital letters.
+
+@item auto reconnect
+
 If the connection goes away at some point, ERC will try to reconnect
 automatically.  If it fails to reconnect, and you want to try to
 manually reestablish the connection at some later point, switch to an
-ERC buffer and run the /RECONNECT command.
+ERC  buffer and run the @code{/RECONNECT} command.
 
-@c PRE5_2: Sample session, including:
-@c - connect to Freenode
-@c - /join #emacs
-@c - see messages flying past, point out topic lines, messages, channel
-@c   members
-@c - identifying your nick with NickServ (most IRC servers have this)
-@c - talking to the channel
-@c - open a /query buffer to talk to someone (must identify first in
-@c   FreeNode)
+@end itemize
 
 
 @node Keystroke Summary, Modules, Getting Started, Top
@@ -439,6 +592,10 @@
 @item match
 Highlight pals, fools, and other keywords
 
+@cindex modules, menu
+@item menu
+Display a menu in ERC buffers
+
 @cindex modules, netsplit
 @item netsplit
 Detect netsplits
@@ -505,7 +662,7 @@
 
 @end table
 
-@c PRE5_2: Document every option of every module in its own subnode
+@c PRE5_3: Document every option of every module in its own subnode
 
 
 @node Advanced Usage, Getting Help and Reporting Bugs, Modules, Top
@@ -515,12 +672,11 @@
 
 @menu
 * Connecting::                  Ways of connecting to an IRC server.
+* Sample Configuration::        An example configuration file.
 * Options::                     Options that are available for ERC.
-* Tips and Tricks::             Ways of enhancing your ERC experience.
-* Sample Configuration::        An example configuration file.
 @end menu
 
-@node Connecting, Options, Advanced Usage, Advanced Usage
+@node Connecting, Sample Configuration, Advanced Usage, Advanced Usage
 @comment  node-name,  next,  previous,  up
 @section Connecting to an IRC Server
 @cindex connecting
@@ -654,33 +810,97 @@
 This can be either a string or a function to call.
 @end defopt
 
-@node Options, Tips and Tricks, Connecting, Advanced Usage
+@node Sample Configuration, Options, Connecting, Advanced Usage
+@comment  node-name,  next,  previous,  up
+@section Sample Configuration
+@cindex configuration, sample
+
+Here is an example of configuration settings for ERC.  This can go into
+your Emacs configuration file.  Everything after the @code{(require
+'erc)} command can optionally go into @file{~/.emacs.d/.ercrc.el}.
+
+@lisp
+;;; Sample ERC configuration
+
+;; Add the ERC directory to load path -- you don't need this if you are
+;; using the version of ERC that comes with Emacs
+(add-to-list 'load-path "~/elisp/erc")
+
+;; Load ERC
+(require 'erc)
+
+;; Load authentication info from an external source.  Put sensitive
+;; passwords and the like in here.
+(load "~/.emacs.d/.erc-auth")
+
+;; This is an example of how to make a new command.  Type "/uptime" to
+;; use it.
+(defun erc-cmd-UPTIME (&rest ignore)
+  "Display the uptime of the system, as well as some load-related
+stuff, to the current ERC buffer."
+  (let ((uname-output
+         (replace-regexp-in-string
+          ", load average: " "] @{Load average@} ["
+          ;; Collapse spaces, remove
+          (replace-regexp-in-string
+           " +" " "
+           ;; Remove beginning and trailing whitespace
+           (replace-regexp-in-string
+            "^ +\\|[ \n]+$" ""
+            (shell-command-to-string "uptime"))))))
+    (erc-send-message
+     (concat "@{Uptime@} [" uname-output "]"))))
+
+;; This causes ERC to connect to the Freenode network upon hitting
+;; C-c e f.  Replace MYNICK with your IRC nick.
+(global-set-key "\C-cef" (lambda () (interactive)
+                           (erc :server "irc.freenode.net" :port "6667"
+                                :nick "MYNICK")))
+
+;; This causes ERC to connect to the IRC server on your own machine (if
+;; you have one) upon hitting C-c e b.  Replace MYNICK with your IRC
+;; nick.  Often, people like to run bitlbee (http://bitlbee.org/) as an
+;; AIM/Jabber/MSN to IRC gateway, so that they can use ERC to chat with
+;; people on those networks.
+(global-set-key "\C-ceb" (lambda () (interactive)
+                           (erc :server "localhost" :port "6667"
+                                :nick "MYNICK")))
+
+;; Make C-c RET (or C-c C-RET) send messages instead of RET. This has
+;; been commented out to avoid confusing new users.
+;; (define-key erc-mode-map (kbd "RET") nil)
+;; (define-key erc-mode-map (kbd "C-c RET") 'erc-send-current-line)
+;; (define-key erc-mode-map (kbd "C-c C-RET") 'erc-send-current-line)
+
+;;; Options
+
+;; Join the #emacs and #erc channels whenever connecting to Freenode.
+(setq erc-autojoin-channels-alist '(("freenode.net" "#emacs" "#erc")))
+
+;; Interpret mIRC-style color commands in IRC chats
+(setq erc-interpret-mirc-color t)
+
+;; The following are commented out by default, but users of other
+;; non-Emacs IRC clients might find them useful.
+;; Kill buffers for channels after /part
+;; (setq erc-kill-buffer-on-part t)
+;; Kill buffers for private queries after quitting the server
+;; (setq erc-kill-queries-on-quit t)
+;; Kill buffers for server messages after quitting the server
+;; (setq erc-kill-server-buffer-on-quit t)
+@end lisp
+
+@node Options, , Sample Configuration, Advanced Usage
 @comment  node-name,  next,  previous,  up
 @section Options
 @cindex options
 
-@c PRE5_2: (Node) Document every ERC option (module options go in
+@c PRE5_3: (Node) Document every ERC option (module options go in
 @c previous chapter)
 
-This section has not yet been written.
-
-@node Tips and Tricks, Sample Configuration, Options, Advanced Usage
-@comment  node-name,  next,  previous,  up
-@section Tips and Tricks
-@cindex tips and tricks
-
-@c PRE5_2: (Node) Tips and tricks
-
-This section has not yet been written.
-
-@node Sample Configuration, , Tips and Tricks, Advanced Usage
-@comment  node-name,  next,  previous,  up
-@section Sample Configuration
-@cindex configuration, sample
-
-@c PRE5_2: (Node) Sample configs
-
-This section has not yet been written.
+This section has not yet been written.  For now, the easiest way to
+check out the available option for ERC is to do
+@kbd{M-x customize-group erc RET}.
 
 
 @node Getting Help and Reporting Bugs, History, Advanced Usage, Top
@@ -727,7 +947,7 @@
 @end itemize
 
 
-@node History, Concept Index, Getting Help and Reporting Bugs, Top
+@node History, GNU Free Documentation License, Getting Help and Reporting Bugs, Top
 @comment  node-name,  next,  previous,  up
 @chapter History
 @cindex history, of ERC
@@ -789,7 +1009,11 @@
 
 @end itemize
 
-@node Concept Index,  , History, Top
+@node GNU Free Documentation License, Concept Index, History, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Concept Index,  , GNU Free Documentation License, Top
 @comment  node-name,  next,  previous,  up
 @unnumbered Index
 
--- a/man/eshell.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/eshell.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -89,6 +89,7 @@
 * Extension modules::
 * Extras and Goodies::
 * Bugs and ideas::              Known problems, and future ideas.
+* GNU Free Documentation License:: The license for this documentation.
 * Concept Index::
 * Function and Variable Index::
 * Key Index::
@@ -922,6 +923,10 @@
 
 @end table
 
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
 @node Concept Index
 @unnumbered Concept Index
 
--- a/man/eudc.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/eudc.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -70,6 +70,7 @@
 * Installation::                How to install EUDC
 * Usage::                       The various usage possibilities explained
 * Credits::                     Who's done what
+* GNU Free Documentation License:: The license for this documentation.
 * Command and Function Index::
 * Variables Index::
 @end menu
@@ -949,7 +950,7 @@
 
 
 
-@node Credits, Command and Function Index, Usage, Top
+@node Credits, GNU Free Documentation License, Usage, Top
 @comment  node-name,  next,  previous,  up
 @chapter Credits
 
@@ -959,7 +960,11 @@
 Thanks to Soren Dayton for his suggestions, his enthusiasm and his help
 in testing and proofreading the code and docs of @file{ph.el}.
 
-@node Command and Function Index, Variables Index, Credits, Top
+@node GNU Free Documentation License, Command and Function Index, Credits, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Command and Function Index, Variables Index, GNU Free Documentation License, Top
 @comment  node-name,  next,  previous,  up
 @unnumbered Command and Function Index
 
--- a/man/faq.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/faq.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1145,67 +1145,97 @@
 @cindex Differences between Emacs 21 and Emacs 22
 @cindex Emacs 22, new features in
 @cindex Recently introduced features
-
 @cindex Default features
-Font Lock mode, auto-compression mode, and file name shadow mode are
-enabled by default.  On graphics displays it is possible to follow links
-with @kbd{mouse-1}.  The modeline of the selected window is now
-highlighted.  Window fringes are customizable.  The minibuffer prompt is
-displayed in a distinct face.
-
-Emacs now reads abbrev definitions automatically at startup.  The
-maximum size of buffers has been doubled and is 256M on 32-bit machines.
-Grep mode is separate from Compilation mode and has many new specific
-options and commands.
-
+
+@itemize
+@cindex GTK+ Toolkit
+@cindex Drag-and-drop
+@item
+Emacs can be built with GTK+ widgets, and supports drag-and-drop
+operation on X.
+
+@cindex Supported systems
+@item
+Emacs 22 features support for GNU/Linux systems on S390 and x86-64
+machines, as well as support for the Mac OS X and Cygwin operating
+systems.
+
+@item
+The native MS-Windows, Mac OS 9 and Mac OS X builds include full support
+for images, toolbar, and tooltips.
+
+@item
+Font Lock mode, Auto Compression mode, and File Name Shadow Mode are
+enabled by default.
+
+@item
+The maximum size of buffers has been doubled and is 256M on 32-bit
+machines.
+
+@item
+Links can be followed with @kbd{mouse-1}, in addition to @kbd{mouse-2}.
+
+@cindex Mouse wheel
+@item
+Mouse wheel support is enabled by default.
+
+@item
+Window fringes are customizable.
+
+@item
+The mode line of the selected window is now highlighted.
+
+@item
+The minibuffer prompt is displayed in a distinct face.
+
+@item
+Abbrev definitions are read automatically at startup.
+
+@item
+Grep mode is separate from Compilation mode and has many new options and
+commands specific to grep.
+
+@item
 The original Emacs macro system has been replaced by the new Kmacro
 package, which provides many new commands and features and a simple
-interface that uses the function keys F3 and F4.  Macros are stored
-in a macro ring, and can be debugged and edited interactively.
-
-The GUD (Grand Unified Debugger) package can now be used with a full
-graphical user interface to the debugger which provides many features
-found in traditional development environments, making it easy to
-manipulate breakpoints, add watch points, display the call stack, etc.
-Breakpoints are displayed in the source buffer.
-
-@cindex GTK+ Toolkit
-@cindex Drag-and-drop
-@cindex Mouse wheel
-Emacs can be built with GTK+ widgets, and supports drag-and-drop
-operation on X.  Mouse wheel support is enabled by default.
-
+interface that uses the function keys F3 and F4.  Macros are stored in a
+macro ring, and can be debugged and edited interactively.
+
+@item
+The Grand Unified Debugger (GUD) can be used with a full graphical user
+interface to GDB; this provides many features found in traditional
+development environments, making it easy to manipulate breakpoints, add
+watch points, display the call stack, etc.  Breakpoints are visually
+indicated in the source buffer.
+
+@item
 @cindex New modes
-Many new modes and packages have been included in Emacs, such as MH-E,
-Calc, Tramp and URL, as well as IDO, CUA, rcirc, ERC, conf-mode,
-python-mode, table, tumme, SES, ruler, Flymake, Org, PGG, wdired,
-t-mouse, longlines, dns-mode, savehist, Password, Printing, Reveal, etc.
-Gnus has been updated to version 5.11.
+Many new modes and packages have been included in Emacs, such as Calc,
+TRAMP, URL, IDO, CUA, ERC, rcirc, Table, Tumme, SES, Ruler, Org, PGG,
+Flymake, Password, Printing, Reveal, wdired, t-mouse, longlines,
+savehist, Conf mode, Python mode, DNS mode, etc.
 
 @cindex Multilingual Environment
+@item
 Leim is now part of Emacs.  Unicode support has been much improved, and
 the following input methods have been added: belarusian, bulgarian-bds,
 bulgarian-phonetic, chinese-sisheng, croatian, dutch, georgian,
 latin-alt-postfix, latin-postfix, latin-prefix, latvian-keyboard,
 lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345,
-russian-computer, sgml, slovenian, tamil-inscript ucs,
+russian-computer, sgml, slovenian, tamil-inscript, ucs,
 ukrainian-computer, vietnamese-telex, and welsh.
 
-The following language environment have also been added: Belarusian,
+The following language environments have also been added: Belarusian,
 Bulgarian, Chinese-EUC-TW, Croatian, French, Georgian, Italian, Latin-6,
-Latin-7, Latvian, Lithuanian, Malayalam, Russian, Russian, Slovenian,
-Swedish, Tajik, Tamil, UTF-8, Ukrainian, Ukrainian, Welsh, and
-Windows-1255.
-
-@cindex Supported systems
-Emacs 22 features support for GNU/Linux systems on S390 and x86-64
-machines, as well as support for the Mac OS X and Cygwin operating
-systems.
+Latin-7, Latvian, Lithuanian, Malayalam, Russian, Slovenian, Swedish,
+Tajik, Tamil, UTF-8, Ukrainian, Welsh, and Windows-1255.
 
 @cindex Documentation
 @cindex Emacs Lisp Manual
+@item
 In addition, Emacs 22 now includes the Emacs Lisp Reference Manual
 (@pxref{Emacs Lisp documentation}) and the Emacs Lisp Intro.
+@end itemize
 
 Many other changes have been made in Emacs 22, use @kbd{C-h n} to get a
 full list.
--- a/man/files.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/files.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1153,13 +1153,14 @@
 this---saving them---updates the files themselves.
 
 @vindex auto-save-list-file-prefix
-  Emacs records interrupted sessions for later recovery in files named
+  Emacs records information about interrupted sessions for later
+recovery in files named
 @file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}.  All
-of this name except @file{@var{pid}-@var{hostname}} comes from the
-value of @code{auto-save-list-file-prefix}.  You can record sessions
-in a different place by customizing that variable.  If you set
-@code{auto-save-list-file-prefix} to @code{nil} in your @file{.emacs}
-file, sessions are not recorded for recovery.
+of this name except the @file{@var{pid}-@var{hostname}} part comes
+from the value of @code{auto-save-list-file-prefix}.  You can record
+sessions in a different place by customizing that variable.  If you
+set @code{auto-save-list-file-prefix} to @code{nil} in your
+@file{.emacs} file, sessions are not recorded for recovery.
 
 @node File Aliases
 @section File Name Aliases
@@ -2434,11 +2435,11 @@
 leaving point unchanged before the contents and the mark after them.
 
 @findex insert-file-literally
-  @kbd{M-x insert-file-literally} is like @kbd{C-x i}, except it
-inserts the specified file with no conversion of the contents: no
-format conversion (@pxref{Formatted Text}), no character code
-conversion (@pxref{Coding Systems}), and no automatic uncompression
-(@pxref{Compressed Files}).
+  @kbd{M-x insert-file-literally} is like @kbd{M-x insert-file},
+except the file is inserted ``literally'': it is treated as a sequence
+of @acronym{ASCII} characters with no special encoding or conversion,
+similar to the @kbd{M-x find-file-literally} command
+(@pxref{Visiting}).
 
 @findex write-region
   @kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it
@@ -2815,13 +2816,8 @@
 
 @findex thumbs-mode
 @findex mode, thumbs
-  Thumbs mode is a major mode for viewing directories containing many
-image files.  To use it, type @kbd{M-x thumbs} and specify the
-directory to view.  The images in that directory will be displayed in
-a @samp{Thumbs} buffer as @dfn{thumbnails}; type @kbd{RET} on a
-thumbnail to view the full-size image.  Thumbs mode requires the
-@file{convert} program, which is part of the ImageMagick software
-package.
+  See also the Tumme package (@pxref{Thumbnails}) for viewing images
+as thumbnails.
 
 @node Filesets
 @section Filesets
--- a/man/flymake.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/flymake.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -44,6 +44,7 @@
 @author Pavel Kobiakov(@email{pk_at_work@@yahoo.com})
 @page
 @vskip 0pt plus 1filll
+@insertcopying
 @end titlepage
 
 @contents
@@ -59,6 +60,7 @@
 * Using Flymake::
 * Configuring Flymake::
 * Flymake Implementation::
+* GNU Free Documentation License::
 * Index::
 @end menu
 
@@ -744,6 +746,10 @@
 It just kills all the active syntax check processes before calling
 @code{compile}.
 
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
 @node Index
 @unnumbered Index
 
--- a/man/forms.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/forms.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -53,9 +53,9 @@
 @sp 4
 @center Forms-Mode version 2
 @sp 1
-@center for GNU Emacs 20.1
+@center for GNU Emacs 22.1
 @sp 1
-@center June 1997
+@center April 2007
 @sp 5
 @center Johan Vromans
 @center @i{jvromans@@squirrel.nl}
@@ -91,6 +91,7 @@
 * Miscellaneous::               Forms mode messages and other remarks.
 * Error Messages::              List of error messages forms mode can produce.
 * Long Example::                A more complex control file example.
+* GNU Free Documentation License:: The license for this documentation.
 * Credits::                     Thanks everyone.
 * Index::                       Index to this manual.
 @end menu
@@ -968,6 +969,10 @@
 None of this would have been possible without GNU Emacs of the Free
 Software Foundation.  Thanks, Richard!
 
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
 @node Index
 @unnumbered Index
 @printindex cp
--- a/man/frames.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/frames.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -515,6 +515,8 @@
 
 @cindex default-frame-alist
 @cindex initial-frame-alist
+@cindex face customization, in @file{~/.emacs}
+@cindex color customization, in @file{~/.emacs}
   You can control the appearance of new frames you create by setting the
 frame parameters in @code{default-frame-alist}.  You can use the
 variable @code{initial-frame-alist} to specify parameters that affect
@@ -538,6 +540,11 @@
 (add-to-list 'default-frame-alist '(foreground-color . "blue"))
 @end example
 
+@noindent
+By putting such customizations in your @file{~/.emacs} init file, you
+can control the appearance of all the frames Emacs creates, including
+the initial one.
+
 @node Frame Commands
 @section Frame Commands
 
@@ -874,7 +881,7 @@
 @vindex mouse-wheel-follow-mouse
 @vindex mouse-wheel-scroll-amount
 @vindex mouse-wheel-progressive-speed
-  The variables @code{mouse-wheel-follow-mouse} and
+  The two variables @code{mouse-wheel-follow-mouse} and
 @code{mouse-wheel-scroll-amount} determine where and by how much
 buffers are scrolled.  The variable
 @code{mouse-wheel-progressive-speed} determines whether the scroll
--- a/man/glossary.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/glossary.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -601,6 +601,10 @@
 @kbd{Hyper-} (usually written @kbd{H-} for short).  @xref{User Input,
 Hyper}.
 
+@item Iff
+``Iff'' means ``if and only if.''  This terminology comes from
+mathematics.
+
 @item Inbox
 An inbox is a file in which mail is delivered by the operating system.
 Rmail transfers mail from inboxes to Rmail files (q.v.@:) in which the
--- a/man/gnu.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/gnu.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -41,10 +41,9 @@
 that different wording could help avoid.  Footnotes added in 1993 help
 clarify these points.
 
-For up-to-date information about the available GNU software, please
-see @uref{http://www.gnu.org}.  For software tasks to work on, see
-@uref{http://savannah.gnu.org/projects/tasklist}.  For other ways to
-contribute, see @uref{http://www.gnu.org/help}.
+For up-to-date information about available GNU software, please see
+our web site, @uref{http://www.gnu.org}.  For software tasks and other
+ways to contribute, see @uref{http://www.gnu.org/help}.
 @end quotation
 
 @unnumberedsec What's GNU?  Gnu's Not Unix!
@@ -503,10 +502,11 @@
 employ programmers.
 
 People with new ideas could distribute programs as
-freeware@footnote{Subsequently we have learned to distinguish between
-"free software" and "freeware".  The term "freeware" means software
-you are free to redistribute, but usually you are not free to study
-and change the source code, so most of it is not free software.  See
+freeware@footnote{Subsequently we have discovered the need to
+distinguish between ``free software'' and ``freeware''.  The term
+``freeware'' means software you are free to redistribute, but usually
+you are not free to study and change the source code, so most of it is
+not free software.  See
 @uref{http://www.gnu.org/philosophy/words-to-avoid.html} for more
 explanation.}, asking for donations from satisfied users, or selling
 hand-holding services.  I have met people who are already working this
--- a/man/gnus.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/gnus.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -402,6 +402,7 @@
 * Various::                  General purpose settings.
 * The End::                  Farewell and goodbye.
 * Appendices::               Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::                    Variable, function and concept index.
 * Key Index::                Key Index.
 
@@ -6174,7 +6175,7 @@
 used for marking articles in such a way that other commands will
 process these articles.  For instance, if you process mark four
 articles and then use the @kbd{*} command, Gnus will enter these four
-commands into the cache.  For more information,
+articles into the cache.  For more information,
 @pxref{Process/Prefix}.
 
 @table @kbd
@@ -13489,7 +13490,7 @@
 
 @vindex nnmail-mail-splitting-charset
 @vindex nnmail-mail-splitting-decodes
-By default the splitting codes @acronym{MIME} decodes headers so you
+By default, splitting @acronym{MIME}-decodes headers so you
 can match on non-@acronym{ASCII} strings.  The
 @code{nnmail-mail-splitting-charset} variable specifies the default
 charset for decoding.  The behavior can be turned off completely by
@@ -13607,7 +13608,8 @@
 rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP
 @end example
 
-Alter this script to fit find the @samp{movemail} you want to use.
+Alter this script to fit the @samp{movemail} and temporary
+file you want to use.
 
 
 @item directory
@@ -29027,6 +29029,10 @@
 @page
 @include gnus-faq.texi
 
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
+
 @node Index
 @chapter Index
 @printindex cp
--- a/man/idlwave.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/idlwave.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -106,6 +106,7 @@
 * Configuration Examples::      The user is king
 * Windows and MacOS::           What still works, and how
 * Troubleshooting::             When good computers turn bad
+* GNU Free Documentation License:: The license for this documentation.
 * Index::                       Fast access
 
 @detailmenu
@@ -4096,7 +4097,7 @@
 @html
 <A NAME="TROUBLE"></A>
 @end html
-@node Troubleshooting, Index, Windows and MacOS, Top
+@node Troubleshooting, GNU Free Documentation License, Windows and MacOS, Top
 @appendix Troubleshooting
 @cindex Troubleshooting
 
@@ -4302,7 +4303,11 @@
 
 @end enumerate
 
-@node Index,  , Troubleshooting, Top
+@node GNU Free Documentation License, Index, Troubleshooting, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index,  , GNU Free Documentation License, Top
 @unnumbered Index
 @printindex cp
 
--- a/man/killing.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/killing.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -148,8 +148,8 @@
   The other delete commands are those which delete only whitespace
 characters: spaces, tabs and newlines.  @kbd{M-\}
 (@code{delete-horizontal-space}) deletes all the spaces and tab
-characters before and after point.  (With a prefix argument, it
-deletes them before point, but not after.)  @kbd{M-@key{SPC}}
+characters before and after point.  With a prefix argument, this only
+deletes spaces and tab characters before point.  @kbd{M-@key{SPC}}
 (@code{just-one-space}) does likewise but leaves a single space after
 point, regardless of the number of spaces that existed previously
 (even if there were none before).  With a numeric argument @var{n}, it
@@ -551,13 +551,13 @@
 (@code{open-rectangle}).  This pushes the previous contents of the
 region-rectangle rightward.
 @item C-x r c
-Clear the region-rectangle by replacing its contents with spaces
+Clear the region-rectangle by replacing all of its contents with spaces
 (@code{clear-rectangle}).
 @item M-x delete-whitespace-rectangle
 Delete whitespace in each of the lines on the specified rectangle,
 starting from the left edge column of the rectangle.
 @item C-x r t @var{string} @key{RET}
-Replace rectangle contents with @var{string} on each line.
+Replace rectangle contents with @var{string} on each line
 (@code{string-rectangle}).
 @item M-x string-insert-rectangle @key{RET} @var{string} @key{RET}
 Insert @var{string} on each line of the rectangle.
--- a/man/macos.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/macos.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -319,8 +319,9 @@
 -apple-monaco-medium-r-normal--12-*-*-*-*-*-iso10646-1
 @end example
 
-Note that it must be specified in a format containing 14 @samp{-}s
-(e.g., not by @samp{-apple-monaco-medium-r-normal--12-*-iso10646-1}),
+Note that these names must be specified using a format containing all
+14 @samp{-}s (not by
+@samp{-apple-monaco-medium-r-normal--12-*-iso10646-1}, for instance),
 because every @acronym{ATSUI}-compatible font is a scalable one.
 
   QuickDraw Text fonts have maker name @code{apple} and various charset
@@ -340,7 +341,7 @@
 
   Native Apple Traditional Chinese, Simplified Chinese, Japanese,
 Korean, Central European, Cyrillic, Symbol, and Dingbats fonts have
-charsets @samp{big5-0}, @samp{gb2312.1980-0},
+the charsets @samp{big5-0}, @samp{gb2312.1980-0},
 @samp{jisx0208.1983-sjis} and @samp{jisx0201.1976-0},
 @samp{ksc5601.1989-0}, @samp{mac-centraleurroman},
 @samp{mac-cyrillic}, @samp{mac-symbol}, and @samp{mac-dingbats},
@@ -381,6 +382,17 @@
 (QuickDraw).  Both @acronym{ATSUI} and QuickDraw Text drawings are
 affected by the value of this variable.
 
+  Appearance of text in small sizes will also be affected by the ``Turn
+off text smoothing for font sizes @var{n} and smaller'' setting in the
+General pane (Mac OS X 10.1 or 10.2) or in the Appearance pane (10.3 or
+later) of the System Preferences.  This threshold can alternatively be
+set just for Emacs (i.e., not as the system-wide setting) using the
+@command{defaults} command:
+
+@example
+defaults write org.gnu.Emacs AppleAntiAliasingThreshold @var{n}
+@end example
+
 
 @node Mac Functions
 @section Mac-Specific Lisp Functions
--- a/man/message.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/message.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -63,6 +63,7 @@
 * Variables::         Customizing the message buffers.
 * Compatibility::     Making Message backwards compatible.
 * Appendices::        More technical things.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::             Variable, function and concept index.
 * Key Index::         List of Message mode keys.
 @end menu
@@ -2157,10 +2158,36 @@
 @table @code
 @item message-generate-new-buffers
 @vindex message-generate-new-buffers
-If non-@code{nil}, generate new buffers.  The default is @code{t}.  If
-this is a function, call that function with three parameters: The type,
-the to address and the group name.  (Any of these may be @code{nil}.)
-The function should return the new buffer name.
+Controls whether to create a new message buffer to compose a message.
+Valid values include:
+
+@table @code
+@item nil
+Generate the buffer name in the Message way (e.g., *mail*, *news*, *mail
+to whom*, *news on group*, etc.) and continue editing in the existing
+buffer of that name.  If there is no such buffer, it will be newly
+created.
+
+@item unique
+@item t
+Create the new buffer with the name generated in the Message way.  This
+is the default.
+
+@item unsent
+Similar to @code{unique} but the buffer name begins with "*unsent ".
+
+@item standard
+Similar to @code{nil} but the buffer name is simpler like *mail
+message*.
+@end table
+@table @var
+@item function
+If this is a function, call that function with three parameters: The
+type, the To address and the group name (any of these may be
+@code{nil}).  The function should return the new buffer name.
+@end table
+
+The default value is @code{unique}.
 
 @item message-max-buffers
 @vindex message-max-buffers
@@ -2312,6 +2339,9 @@
 @end table
 
 
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
 
 @node Index
 @chapter Index
--- a/man/misc.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/misc.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1448,7 +1448,7 @@
 @findex lpr-buffer
 @findex lpr-region
 @vindex lpr-switches
-  The hardcopy commands (aside from the Postscript commands) pass extra
+  The hardcopy commands (aside from the PostScript commands) pass extra
 switches to the @code{lpr} program based on the value of the variable
 @code{lpr-switches}.  Its value should be a list of strings, each string
 an option starting with @samp{-}.  For example, to specify a line width
@@ -2177,8 +2177,9 @@
 @item EDT (DEC VMS editor)
 @findex edt-emulation-on
 @findex edt-emulation-off
-Turn on EDT emulation with @kbd{M-x edt-emulation-on}.  @kbd{M-x
-edt-emulation-off} restores normal Emacs command bindings.
+Turn on EDT emulation with the command @kbd{M-x edt-emulation-on},
+while @kbd{M-x edt-emulation-off} restores normal Emacs command
+bindings.
 
 Most of the EDT emulation commands are keypad keys, and most standard
 Emacs key bindings are still available.  The EDT emulation rebindings
--- a/man/mule.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/mule.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -261,6 +261,9 @@
 characters and files encoded in UTF-8), Ukrainian, Vietnamese, Welsh,
 and Windows-1255 (for a setup which prefers Cyrillic characters and
 files encoded in Windows-1255).
+@tex
+\hbadness=10000\par  % just avoid underfull hbox warning
+@end tex
 @end quotation
 
 @cindex fonts for various scripts
--- a/man/newsticker.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/newsticker.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -48,6 +48,7 @@
 @author @uref{http://de.geocities.com/ulf_jasper}
 @page
 @vskip 0pt plus 1filll
+@insertcopying
 @end titlepage
 
 @contents
@@ -64,6 +65,7 @@
 * Usage::           Basic newsticker instructions.
 * Configuration::   Customizable newsticker settings.
 * Remarks::         Remarks about newsticker.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::           Variable, function, and concept index.
 @end menu
 
@@ -270,7 +272,9 @@
 
 Byte-compiling newsticker.el is recommended.
 
-
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
 
 @node Index
 @unnumbered Index
--- a/man/org.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/org.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -89,6 +89,7 @@
 * Miscellaneous::               All the rest which did not fit elsewhere
 * Extensions and Hacking::      It is possible to write add-on code
 * History and Acknowledgments::  How Org-mode came into being 
+* GNU Free Documentation License:: The license for this documentation.
 * Index::                       The fast road to specific information
 * Key Index::                   Key bindings and where they are described
 
@@ -1478,9 +1479,9 @@
 @cindex syntax, of formulas
 
 A formula can be any algebraic expression understood by the Emacs
-@file{Calc} package.  Note that @file{calc} has the slightly
+@file{Calc} package.  @b{Note that @file{calc} has the
 non-standard convention that @samp{/} has lower precedence than
-@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.  Before
+@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
 evaluation by @code{calc-eval} (@pxref{Calling Calc from
 Your Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU
 Emacs Calc Manual}),
@@ -6416,7 +6417,7 @@
 @end lisp
 
 
-@node History and Acknowledgments, Index, Extensions and Hacking, Top
+@node History and Acknowledgments, GNU Free Documentation License, Extensions and Hacking, Top
 @appendix History and Acknowledgments
 @cindex acknowledgments
 @cindex history
@@ -6567,8 +6568,12 @@
 and contributed various ideas and code snippets.
 @end itemize
 
-
-@node Index, Key Index, History and Acknowledgments, Top
+@node GNU Free Documentation License, Index, History and Acknowledgments, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Index, Key Index, GNU Free Documentation License, Top
 @unnumbered Index
 
 @printindex cp
--- a/man/pcl-cvs.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/pcl-cvs.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -91,6 +91,7 @@
 * Customization::               How you can tailor PCL-CVS to suit your needs.
 * Bugs::                        Bugs (known and unknown).
 
+* GNU Free Documentation License:: The license for this documentation.
 * Function and Variable Index::  List of functions and variables.
 * Concept Index::               List of concepts.
 * Key Index::                   List of keystrokes.
@@ -1363,7 +1364,7 @@
 @end table
 
 
-@node   Bugs, Function and Variable Index, Customization, Top
+@node   Bugs, GNU Free Documentation License, Customization, Top
 @chapter Bugs (known and unknown)
 @cindex Reporting bugs and ideas
 @cindex Bugs, how to report them
@@ -1403,7 +1404,13 @@
 buffer), and the versions of Emacs, PCL-CVS and CVS you are using.
 @end table
 
-@node Function and Variable Index, Concept Index, Bugs, Top
+@node GNU Free Documentation License, Function and Variable Index, Bugs, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+
+@node Function and Variable Index, Concept Index, GNU Free Documentation License, Top
 @unnumbered Function and Variable Index
 
 This is an index of all the functions and variables documented in this
--- a/man/pgg.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/pgg.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -52,6 +52,7 @@
 * How to use::                  Getting started quickly.
 * Architecture::                
 * Parsing OpenPGP packets::     
+* GNU Free Documentation License:: The license for this documentation.
 * Function Index::              
 * Variable Index::              
 @end menu
@@ -296,6 +297,14 @@
 Elapsed time for expiration in seconds.
 @end defvar
 
+If your passphrase contains non-ASCII characters, you might need to
+specify the coding system to be used to encode your passphrases, since
+GnuPG treats them as a byte sequence, not as a character sequence.
+
+@defvar pgg-passphrase-coding-system
+Coding system used to encode passphrase.
+@end defvar
+
 @node Default user identity
 @section Default user identity
 
@@ -466,12 +475,16 @@
 If non-@code{nil}, don't check the checksum of the packets.
 @end defvar
 
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
 @node Function Index
-@chapter Function Index
+@unnumbered Function Index
 @printindex fn
 
 @node Variable Index
-@chapter Variable Index
+@unnumbered Variable Index
 @printindex vr
 
 @summarycontents
--- a/man/programs.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/programs.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -338,13 +338,13 @@
 
 @findex which-function-mode
 @vindex which-func-modes
-  To enable (or disable) Which Function mode, use the command @kbd{M-x
-which-function-mode}.  This command is global; it applies to all
-buffers, both existing ones and those yet to be created.  However, it
-takes effect only in certain major modes, those listed in the value of
-@code{which-func-modes}.  If the value is @code{t}, then Which Function
-mode applies to all major modes that know how to support it---in other
-words, all the major modes that support Imenu.
+  To either enable or disable Which Function mode, use the command
+@kbd{M-x which-function-mode}.  This command is global; it applies to
+all buffers, both existing ones and those yet to be created.  However,
+it takes effect only in certain major modes, those listed in the value
+of @code{which-func-modes}.  If the value is @code{t}, then Which
+Function mode applies to all major modes that know how to support
+it---in other words, all the major modes that support Imenu.
 
 @node Program Indent
 @section Indentation for Programs
--- a/man/rcirc.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/rcirc.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -55,6 +55,7 @@
 * Basics::
 * Reference::
 * Hacking and Tweaking::
+* GNU Free Documentation License::
 * Key Index::
 * Variable Index::
 * Index::
@@ -589,7 +590,7 @@
             (rcirc-track-minor-mode 1)))
 @end example
 
-@node Hacking and Tweaking, Key Index, Reference, Top
+@node Hacking and Tweaking, GNU Free Documentation License, Reference, Top
 @chapter Hacking and Tweaking
 @cindex hacking and tweaking
 
@@ -743,7 +744,12 @@
                       channels))))
 @end smallexample
 
-@node Key Index, Variable Index, Hacking and Tweaking, Top
+@node GNU Free Documentation License, Key Index, Hacking and Tweaking, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Key Index, Variable Index, GNU Free Documentation License, Top
 @unnumbered Key Index
 @printindex ky
 
--- a/man/reftex.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/reftex.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -10,12 +10,14 @@
 @set VERSION 4.31
 @set EDITION 4.31
 @set DATE February 2006
-@set AUCTEXSITE @uref{http://www.nongnu.org/auctex/,AUCTeX distribution site}
-@set MAINTAINERSITE @uref{http://www.astro.uva.nl/~dominik/Tools/,maintainers webpage}
-@set MAINTAINER Carsten Dominik
-@set MAINTAINEREMAIL @email{dominik@@science.uva.nl}
-@set MAINTAINERCONTACT @uref{mailto:dominik@@science.uva.nl,contact the maintainer}
-@set XEMACSFTP @uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,XEmacs ftp site}.
+@set AUCTEXSITE @uref{http://www.gnu.org/software/auctex/,AUCTeX distribution site}
+@set MAINTAINERSITE @uref{http://www.gnu.org/software/auctex/reftex.html,Ref@TeX{} web page}
+@set MAINTAINERCONTACT @uref{mailto:auctex-devel@@gnu.org,contact the maintainers}
+@set MAINTAINER the AUC@TeX{} project
+@set SUPPORTADDRESS AUC@TeX{} user mailing list (@email{auctex@@gnu.org})
+@set DEVELADDRESS AUC@TeX{} developer mailing list (@email{auctex-devel@@gnu.org})
+@set BUGADDRESS AUC@TeX{} bug mailing list (@email{bug-auctex@@gnu.org})
+@set XEMACSFTP @uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,XEmacs ftp site}
 @c %**end of header
 
 @copying
@@ -114,6 +116,7 @@
 * Options::                          How to extend and configure RefTeX.
 * Keymaps and Hooks::                For customization.
 * Changes::                          A List of recent changes to RefTeX.
+* GNU Free Documentation License::   The license for this documentation.
 
 The Index
 
@@ -3491,25 +3494,23 @@
 @cindex @code{http}, @b{Ref@TeX{}} home page
 @cindex @code{ftp}, @b{Ref@TeX{}} site
 
-@b{Ref@TeX{}} was written by @i{Carsten Dominik}
+Ref@TeX{} was written by @i{Carsten Dominik}
 @email{dominik@@science.uva.nl}, with contributions by @i{Stephen
-Eglen}.  @b{Ref@TeX{}} is currently maintained by 
-
-@noindent
-Carsten Dominik <dominik@@science.uva.nl>
-
-If you have questions about @b{Ref@TeX{}}, there are several Usenet
-groups which have competent readers: @code{comp.emacs},
-@code{gnu.emacs.help}, @code{comp.emacs.xemacs}, @code{comp.text.tex},
-@code{de.comp.text.tex}.  You can also write directly to the
-maintainer.
-
-If you find a bug in @b{Ref@TeX{}} or its documentation, or if you want
-to contribute code or ideas, please @value{MAINTAINERCONTACT}.  Remember
-to provide all necessary information such as version numbers of Emacs
-and @b{Ref@TeX{}}, and the relevant part of your configuration in
-@file{.emacs}.  When reporting a bug which throws an exception, please
-include a backtrace if you know how to produce one.
+Eglen}.  Ref@TeX{} is currently maintained by @value{MAINTAINER}, see
+the @value{MAINTAINERSITE} for detailed information.
+
+If you have questions about Ref@TeX{}, you can send email to the
+@value{SUPPORTADDRESS}.  If you want to contribute code or ideas, write
+to the @value{DEVELADDRESS}.  And in the rare case of finding a bug,
+please use @kbd{M-x reftex-report-bug @key{RET}} which will prepare a
+bug report with useful information about your setup.  Remember to add
+essential information like a recipe for reproducing the bug, what you
+expected to happen, and what actually happened.  Send the bug report to
+the @value{BUGADDRESS}.
+
+There are also several Usenet groups which have competent readers who
+might be able to help: @code{comp.emacs}, @code{gnu.emacs.help},
+@code{comp.emacs.xemacs}, and @code{comp.text.tex}.
 
 @b{Ref@TeX{}} is bundled and pre-installed with Emacs since version 20.2.
 It was also bundled and pre-installed with XEmacs 19.16--20.x.  XEmacs
@@ -5149,7 +5150,7 @@
 are many more hooks which are described in the relevant sections about
 options for a specific part of @b{Ref@TeX{}}.
 
-@node Changes, , Keymaps and Hooks, Top
+@node Changes, GNU Free Documentation License, Keymaps and Hooks, Top
 @chapter Changes
 @cindex Changes
 
@@ -5880,11 +5881,11 @@
 released on 7 Jan 1997.
 @end itemize
 
-
-
-
-
-@node Index,  , , Top
+@node GNU Free Documentation License, Index, Changes, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index, , GNU Free Documentation License, Top
 @unnumbered Index
 @printindex cp
 
--- a/man/rmail.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/rmail.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -107,6 +107,8 @@
 Scroll backward (@code{scroll-down}).
 @item .
 Scroll to start of message (@code{rmail-beginning-of-message}).
+@item /
+Scroll to end of message (@code{rmail-end-of-message}).
 @end table
 
 @kindex SPC @r{(Rmail)}
@@ -116,11 +118,15 @@
 @kbd{C-v} (@code{scroll-up}) and @kbd{M-v} (@code{scroll-down})
 
 @kindex . @r{(Rmail)}
+@kindex / @r{(Rmail)}
 @findex rmail-beginning-of-message
+@findex rmail-end-of-message
   The command @kbd{.} (@code{rmail-beginning-of-message}) scrolls back to the
 beginning of the selected message.  This is not quite the same as @kbd{M-<}:
 for one thing, it does not set the mark; for another, it resets the buffer
-boundaries to the current message if you have changed them.
+boundaries to the current message if you have changed them.  Similarly,
+the command @kbd{/} (@code{rmail-end-of-message}) scrolls forward to the end
+of the selected message.
 
 @node Rmail Motion
 @section Moving Among Messages
@@ -1376,9 +1382,10 @@
 Otherwise, Rmail assumes no password is required.
 @end enumerate
 
-  For compatibility with previous versions, @code{rmail-pop-password}
-and @code{rmail-pop-password-required} may be used instead of
-@code{rmail-remote-password} and @code{rmail-remote-password-required}.
+  For compatibility with previous versions, the variables
+@code{rmail-pop-password} and @code{rmail-pop-password-required} may
+be used instead of @code{rmail-remote-password} and
+@code{rmail-remote-password-required}.
 
 @vindex rmail-movemail-flags
   If you need to pass additional command-line flags to @code{movemail},
--- a/man/sc.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/sc.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -1,5 +1,5 @@
 \input texinfo  @comment -*-texinfo-*-
-@comment 3.47
+@comment 3.48
 @comment %**start of header (This is for running Texinfo on a region.)
 @setfilename ../info/sc
 @settitle Supercite Version 3.1 User's Manual
@@ -52,8 +52,8 @@
 @sp 2
 @center @titlefont{Supercite Version 3.1}
 @sp 4
-@center Manual Revision: 3.47
-@center August 1993
+@center Manual Revision: 3.48
+@center April 2007
 @sp 5
 @center Barry A@. Warsaw
 @center @t{bwarsaw@@cen.com}
@@ -86,6 +86,7 @@
 * Thanks and History::
 * The Supercite Mailing List::
 
+* GNU Free Documentation License::
 * Concept Index::
 * Command Index::
 * Key Index::
@@ -2444,7 +2445,7 @@
 
 All who have helped and contributed have been greatly appreciated.
 
-@node  The Supercite Mailing List, Concept Index, Thanks and History, Top
+@node  The Supercite Mailing List, GNU Free Documentation License, Thanks and History, Top
 @comment  node-name,  next,  previous,  up
 @cindex supercite mailing list address
 @cindex mailing list address
@@ -2481,7 +2482,11 @@
 supercite-help@@python.org
 @end example
 
-@node  Concept Index, Command Index, The Supercite Mailing List, Top
+@node GNU Free Documentation License, Concept Index, The Supercite Mailing List, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node  Concept Index, Command Index, GNU Free Documentation License, Top
 @comment  node-name,  next,  previous,  up
 @unnumbered Concept Index
 @printindex cp
--- a/man/sending.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/sending.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -240,11 +240,11 @@
 @item nil
 Use just the email address, as in @samp{king@@grassland.com}.
 @item parens
-Use both email address and full name, as in @samp{king@@grassland.com (Elvis
-Parsley)}.
+Use both email address and full name, as in:@*
+@samp{king@@grassland.com (Elvis Parsley)}.
 @item angles
-Use both email address and full name, as in @samp{Elvis Parsley
-<king@@grassland.com>}.
+Use both email address and full name, as in:@*
+@samp{Elvis Parsley <king@@grassland.com>}.
 @item system-default
 Allow the system to insert the @samp{From} field.
 @end table
--- a/man/ses.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/ses.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -77,6 +77,7 @@
 * For Gurus::                   Want to know @emph{even more}?
 * Index::                       Concept, Function and Variable Index
 * Acknowledgements::            Acknowledgements
+* GNU Free Documentation License:: The license for this documentation.
 @end menu
 
 @c ===================================================================
@@ -929,7 +930,7 @@
 
 @c ===================================================================
 
-@node Acknowledgements, , Index, Top
+@node Acknowledgements, GNU Free Documentation License, Index, Top
 @chapter Acknowledgements
 
 Coding by:
@@ -970,6 +971,10 @@
 
 @c ===================================================================
 
+@node GNU Free Documentation License, , Acknowledgements, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
 @bye
 
 @ignore
--- a/man/sieve.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/sieve.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -73,6 +73,7 @@
 * Examples ::             A few Sieve code snippets.
 * Manage Sieve API ::     Interfacing to the Manage Sieve Protocol API.
 * Standards::             A summary of RFCs and working documents used.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::                 Function and variable index.
 @end menu
 
@@ -349,9 +350,12 @@
 
 @end table
 
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
 
 @node Index
-@chapter Index
+@unnumbered Index
 @printindex cp
 
 @summarycontents
--- a/man/smtpmail.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/smtpmail.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -55,6 +55,7 @@
 * Queued delivery::	Sending mail without an internet connection.
 * Server workarounds::	Mail servers with special requirements.
 * Debugging::		Tracking down problems.
+* GNU Free Documentation License:: The license for this documentation.
 
 Indices
 
@@ -403,6 +404,10 @@
 
 @end table
 
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
+
 @node Index
 @chapter Index
 
--- a/man/speedbar.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/speedbar.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -82,6 +82,7 @@
 * Minor Modes::      Additional minor modes such as Info and RMAIL.
 * Customizing::      Changing speedbar behavior.
 * Extending::        Extend speedbar for your own project.
+* GNU Free Documentation License:: The license for this documentation.
 * Index::
 @end menu
 
@@ -885,7 +886,7 @@
 state data.
 @end table
 
-@node Extending, Index, Customizing, Top
+@node Extending, GNU Free Documentation License, Customizing, Top
 @comment  node-name,  next,  previous,  up
 @chapter Extending
 @cindex extending
@@ -1241,7 +1242,12 @@
 
 @end defun
 
-@node Index, , Extending, Top
+@node GNU Free Documentation License, Index, Extending, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Index, , GNU Free Documentation License, Top
 @comment  node-name,  next,  previous,  up
 @unnumbered Concept Index
 @printindex cp
--- a/man/texinfo.tex	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/texinfo.tex	Sun Apr 22 12:42:47 2007 +0000
@@ -3,11 +3,11 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2006-11-08.17}
+\def\texinfoversion{2007-04-08.09}
 %
 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-%   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-%   2007  Free Software Foundation, Inc.
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007 Free Software Foundation, Inc.
 %
 % This texinfo.tex file is free software; you can redistribute it and/or
 % modify it under the terms of the GNU General Public License as
@@ -67,7 +67,7 @@
 \everyjob{\message{[Texinfo version \texinfoversion]}%
   \catcode`+=\active \catcode`\_=\active}
 
-\message{Basics,}
+
 \chardef\other=12
 
 % We never want plain's \outer definition of \+ in Texinfo.
@@ -1225,8 +1225,9 @@
 
 % To handle parens, we must adopt a different approach, since parens are
 % not active characters.  hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens.  I've
-% tinkered with it a little for texinfo, but it's definitely from there.
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo.  It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
 % 
 % #1 is the tokens to replace.
 % #2 is the replacement.
@@ -1262,7 +1263,8 @@
 
 \ifpdf
   \input pdfcolor
-  \pdfcatalog{/PageMode /UseOutlines}%
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
   % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
   \def\dopdfimage#1#2#3{%
     \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
@@ -1279,20 +1281,15 @@
               \openin 1 #1.pdf \ifeof 1
                 \errhelp = \nopdfimagehelp
                 \errmessage{Could not find image file #1 for pdf}%
-              \else
-                \gdef\pdfimgext{pdf}%
+              \else \gdef\pdfimgext{pdf}%
               \fi
-            \else
-              \gdef\pdfimgext{JPG}%
+            \else \gdef\pdfimgext{JPG}%
             \fi
-          \else
-            \gdef\pdfimgext{jpeg}%
+          \else \gdef\pdfimgext{jpeg}%
           \fi
-        \else
-          \gdef\pdfimgext{jpg}%
+        \else \gdef\pdfimgext{jpg}%
         \fi
-      \else
-        \gdef\pdfimgext{png}%
+      \else \gdef\pdfimgext{png}%
       \fi
       \closein 1
     \endgroup
@@ -1314,21 +1311,25 @@
     \ifnum\pdftexversion < 14 \else
       \pdfrefximage \pdflastximage
     \fi}
+  %
   \def\pdfmkdest#1{{%
     % We have to set dummies so commands such as @code, and characters
     % such as \, aren't expanded when present in a section title.
-    \atdummies
+    \indexnofonts
+    \turnoffactive
     \activebackslashdouble
+    \makevalueexpandable
     \def\pdfdestname{#1}%
     \backslashparens\pdfdestname
-    \pdfdest name{\pdfdestname} xyz%
-  }}%
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
   %
   % used to mark target names; must be expandable.
-  \def\pdfmkpgn#1{#1}%
+  \def\pdfmkpgn#1{#1}
   %
   \let\linkcolor = \Blue  % was Cyan, but that seems light?
   \def\endlink{\Black\pdfendlink}
+  %
   % Adding outlines to PDF; macros for calculating structure of outlines
   % come from Petr Olsak
   \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
@@ -1583,7 +1584,7 @@
 % Definitions for a main text size of 11pt.  This is the default in
 % Texinfo.
 % 
-\def\definetextfontsizexi{
+\def\definetextfontsizexi{%
 % Text fonts (11.2pt, magstep1).
 \def\textnominalsize{11pt}
 \edef\mainmagstep{\magstephalf}
@@ -3746,11 +3747,7 @@
     %
     \edef\writeto{\csname#1indfile\endcsname}%
     %
-    \ifvmode
-      \dosubindsanitize
-    \else
-      \dosubindwrite
-    \fi
+    \safewhatsit\dosubindwrite
   }%
   \fi
 }
@@ -3787,13 +3784,13 @@
   \temp
 }
 
-% Take care of unwanted page breaks:
+% Take care of unwanted page breaks/skips around a whatsit:
 %
 % If a skip is the last thing on the list now, preserve it
 % by backing up by \lastskip, doing the \write, then inserting
 % the skip again.  Otherwise, the whatsit generated by the
-% \write will make \lastskip zero.  The result is that sequences
-% like this:
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
 % @end defun
 % @tindex whatever
 % @defun ...
@@ -3817,13 +3814,19 @@
 %
 \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
 %
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
 % ..., ready, GO:
 %
-\def\dosubindsanitize{%
+\def\safewhatsit#1{%
+\ifhmode
+  #1%
+\else
   % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
-  \skip0 = \lastskip
+  \whatsitskip = \lastskip
   \edef\lastskipmacro{\the\lastskip}%
-  \count255 = \lastpenalty
+  \whatsitpenalty = \lastpenalty
   %
   % If \lastskip is nonzero, that means the last item was a
   % skip.  And since a skip is discardable, that means this
@@ -3832,10 +3835,10 @@
   % breakpoint, therefore no \nobreak needed.
   \ifx\lastskipmacro\zeroskipmacro
   \else
-    \vskip-\skip0
+    \vskip-\whatsitskip
   \fi
   %
-  \dosubindwrite
+  #1%
   %
   \ifx\lastskipmacro\zeroskipmacro
     % If \lastskip was zero, perhaps the last item was a penalty, and
@@ -3849,13 +3852,14 @@
     %   Description.
     % would allow a break between the index-whatever whatsit
     % and the "Description." paragraph.
-    \ifnum\count255>9999 \penalty\count255 \fi
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
   \else
     % On the other hand, if we had a nonzero \lastskip,
     % this make-up glue would be preceded by a non-discardable item
     % (the whatsit from the \write), so we must insert a \nobreak.
-    \nobreak\vskip\skip0
+    \nobreak\vskip\whatsitskip
   \fi
+\fi
 }
 
 % The index entry written in the file actually looks like
@@ -3898,6 +3902,7 @@
   %
   \smallfonts \rm
   \tolerance = 9500
+  \plainfrenchspacing
   \everypar = {}% don't want the \kern\-parindent from indentation suppression.
   %
   % See if the index file exists and is nonempty.
@@ -4167,6 +4172,34 @@
 %
 % All done with double columns.
 \def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
   \output = {%
     % Split the last of the double-column material.  Leave it on the
     % current page, no automatic page break.
@@ -5283,12 +5316,18 @@
 \let\SETdispenvsize\relax
 \def\setnormaldispenv{%
   \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
     \smallexamplefonts \rm
   \fi
 }
 \def\setsmalldispenv{%
   \ifx\SETdispenvsize\nosmallword
   \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
     \smallexamplefonts \rm
   \fi
 }
@@ -5589,27 +5628,35 @@
   \endgroup
 }
 
+
 \message{defuns,}
 % @defun etc.
 
 \newskip\defbodyindent \defbodyindent=.4in
 \newskip\defargsindent \defargsindent=50pt
 \newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
 
 % Start the processing of @deffn:
 \def\startdefun{%
   \ifnum\lastpenalty<10000
     \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
   \else
     % If there are two @def commands in a row, we'll have a \nobreak,
     % which is there to keep the function description together with its
     % header.  But if there's nothing but headers, we need to allow a
     % break somewhere.  Check specifically for penalty 10002, inserted
-    % by \defargscommonending, instead of 10000, since the sectioning
+    % by \printdefunline, instead of 10000, since the sectioning
     % commands also insert a nobreak penalty, and we don't want to allow
     % a break between a section heading and a defun.
-    % 
-    \ifnum\lastpenalty=10002 \penalty2000 \fi
+    %
+    % As a minor refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
     %
     % Similarly, after a section heading, do not allow a break.
     % But do insert the glue.
@@ -5627,7 +5674,7 @@
   %
   % As above, allow line break if we have multiple x headers in a row.
   % It's not a great place, though.
-  \ifnum\lastpenalty=10002 \penalty3000 \fi
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
   %
   % And now, it's time to reuse the body of the original defun:
   \expandafter\gobbledefun#1%
@@ -5645,7 +5692,7 @@
     \advance\rightskip by 0pt plus 1fil
     \endgraf
     \nobreak\vskip -\parskip
-    \penalty 10002  % signal to \startdefun and \dodefunx
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
     % Some of the @defun-type tags do not enable magic parentheses,
     % rendering the following check redundant.  But we don't optimize.
     \checkparencounts
@@ -6245,7 +6292,6 @@
 \message{cross references,}
 
 \newwrite\auxfile
-
 \newif\ifhavexrefs    % True if xref values are known.
 \newif\ifwarnedxrefs  % True if we warned once that they aren't known.
 
@@ -6312,7 +6358,7 @@
       \toks0 = \expandafter{\thissection}%
       \immediate \writexrdef{title}{\the\toks0 }%
       \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \writexrdef{pg}{\folio}% will be written later, during \shipout
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
     }%
   \fi
 }
@@ -6358,7 +6404,8 @@
   \ifpdf
     \leavevmode
     \getfilename{#4}%
-    {\turnoffactive
+    {\indexnofonts
+     \turnoffactive
      % See comments at \activebackslashdouble.
      {\activebackslashdouble \xdef\pdfxrefdest{#1}%
       \backslashparens\pdfxrefdest}%
@@ -6505,10 +6552,18 @@
 % collisions).  But if this is a float type, we have more work to do.
 %
 \def\xrdef#1#2{%
-  \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
   %
   % Was that xref control sequence that we just defined for a float?
-  \expandafter\iffloat\csname XR#1\endcsname
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
     % it was a float, and we have the (safe) float type in \iffloattype.
     \expandafter\let\expandafter\floatlist
       \csname floatlist\iffloattype\endcsname
@@ -6523,7 +6578,8 @@
     %
     % Remember this xref in the control sequence \floatlistFLOATTYPE,
     % for later use in \listoffloats.
-    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
   \fi
 }
 
@@ -6627,6 +6683,7 @@
   \input\jobname.#1
 \endgroup}
 
+
 \message{insertions,}
 % including footnotes.
 
@@ -7101,8 +7158,8 @@
   \writeentry
 }}
 
+
 \message{localization,}
-% and i18n.
 
 % @documentlanguage is usually given very early, just after
 % @setfilename.  If done too late, it may not override everything
@@ -7126,14 +7183,809 @@
 is empty.  Maybe you need to install it?  In the current directory
 should work if nowhere else does.}
 
-
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
-
-
-% Page size parameters.
-%
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1
+      \advance\count255 by 1
+   \repeat
+}
+
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone 
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else 
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+% 
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{~} 
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}} 
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}} 
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}} 
+  \gdef^^a9{\copyright} 
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}} 
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-} 
+  \gdef^^ae{\registeredsymbol} 
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A} 
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{~}
+  \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
+  \gdef^^b2{\missingcharmsg{OGONEK}}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U} 
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'\i}
+  \gdef^^ee{\^\i}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+% 
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+% 
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
+
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
 \newdimen\defaultparindent \defaultparindent = 15pt
 
 \chapheadingskip = 15pt plus 4pt minus 2pt
--- a/man/tramp.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/tramp.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -159,6 +159,8 @@
 * Files directories and localnames::  How file names, directories and localnames are mangled and managed.
 * Issues::                      Debatable Issues and What Was Decided.
 
+* GNU Free Documentation License:: The license for this documentation.
+
 @detailmenu
  --- The Detailed Node Listing ---
 @c
@@ -2406,6 +2408,10 @@
 @end ifset
 @end itemize
 
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
 @node Concept Index
 @comment node-name,    next,  previous,      up
 @unnumbered Concept Index
--- a/man/url.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/url.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -74,6 +74,7 @@
 * General Facilities::          URLs can be cached, accessed via a gateway
                                 and tracked in a history list.
 * Customization::               Variables you can alter.
+* GNU Free Documentation License:: The license for this documentation.
 * Function Index::
 * Variable Index::
 * Concept Index::
@@ -413,7 +414,7 @@
 @cindex FTP
 @cindex File Transfer Protocol
 @cindex compressed files
-@findex dired
+@cindex dired
 
 @example
 ftp://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file}
@@ -757,9 +758,8 @@
 
 @defun url-cache-create-filename-using-md5 url
 Creates a cache file name from @var{url} using MD5 hashing.
-@findex md5
-This is creates entries with very few cache collisions and is fast if
-you have the @code{md5} function as a primitive (Emacs 21 and XEmacs).
+This is creates entries with very few cache collisions and is fast.
+@cindex MD5
 @smallexample
 (url-cache-create-filename-using-md5 "http://www.example.com/foo/bar")
   @result{} "/home/fx/.url/cache/fx/http/com/example/www/b8a35774ad20db71c7c3409a5410e74f"
@@ -1055,9 +1055,9 @@
 @node History
 @section History
 
+@findex url-do-setup
 The library can maintain a global history list tracking URLs accessed.
 URL completion can be done from it.  The history mechanism is set up
-@findex url-do-setup
 automatically via @code{url-do-setup} when it is configured to be on.
 Note that the size of the history list is currently not limited.
 
@@ -1177,6 +1177,10 @@
 @end table
 @end defopt
 
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
 @node Function Index
 @unnumbered Command and Function Index
 @printindex fn
--- a/man/vip.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/vip.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -73,6 +73,8 @@
 * Vi Commands::		Details of Vi commands.
 * Ex Commands::		Details of Ex commands.
 * Customization::	How to customize VIP.
+* GNU Free Documentation License:: The license for this documentation.
+
 @end menu
 @iftex
 @unnumbered Introduction
@@ -1935,6 +1937,11 @@
 (define-key vip-command-mode-map "X" 'vip-delete-backward-char)
 @end example
 
+@node GNU Free Documentation License,,, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
 @unnumbered Key Index
 
 @printindex ky
--- a/man/viper.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/viper.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -42,7 +42,7 @@
 @titlepage
 @title Viper Is a Package for Emacs Rebels
 @subtitle a Vi emulator for Emacs
-@subtitle January 2002, Viper Version 3.11.2
+@subtitle April 2007, Viper Version 3.13.1
 
 @author Michael Kifer (Viper)
 @author Aamod Sane (VIP 4.4)
@@ -114,6 +114,8 @@
 * Concept Index::               Vi, Ex and Emacs concepts
 
 * Acknowledgments::
+* GNU Free Documentation License:: The license for this documentation.
+
 @end menu
 @iftex
 @unnumbered Introduction
@@ -4534,6 +4536,9 @@
 zapman@@cc.gatech.edu (Jason Zapman II),
 @end example
 
+@node GNU Free Documentation License,,, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
 
 @node Key Index,Function Index,,Top
 @comment  node-name,  next,  previous,  up
--- a/man/widget.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/widget.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -57,6 +57,7 @@
 * Widget Minor Mode::
 * Utilities::
 * Widget Wishlist::
+* GNU Free Documentation License::
 * Index::
 @end menu
 
@@ -1774,7 +1775,7 @@
 This is only meaningful for radio buttons or checkboxes in a list.
 @end defun
 
-@node  Widget Wishlist,  Index, Utilities, Top
+@node  Widget Wishlist, GNU Free Documentation License, Utilities, Top
 @comment  node-name,  next,  previous,  up
 @section Wishlist
 @cindex todo
@@ -1833,7 +1834,11 @@
 Add a @code{mailto} widget.
 @end itemize
 
-@node Index, , Widget Wishlist, Top
+@node GNU Free Documentation License, Index, Widget Wishlist, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index, , GNU Free Documentation License, Top
 @comment  node-name,  next,  previous,  up
 @unnumbered Index
 
--- a/man/woman.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/woman.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -99,6 +99,7 @@
 * Technical::           Technical Details
 * Bugs::                Reporting Bugs
 * Acknowledgements::    Acknowledgements
+* GNU Free Documentation License:: The license for this documentation.
 * Command Index::       Command Index
 * Variable Index::      Variable Index
 * Keystroke Index::     Keystroke Index
@@ -386,9 +387,9 @@
 UNIX, then WoMan parses that.  Otherwise, if WoMan can find a
 configuration file named (by default) @file{man.conf} (or something very
 similar), which seems to be the standard mechanism under GNU/Linux, then
-it parses that.  To be precise, ``something very similar'' means having
-two name components separated by a dot and respectively containing
-@samp{man} and beginning with @samp{conf}, e.g.@: @file{manual.configuration}.
+it parses that.  To be precise, ``something very similar'' means
+starting with @samp{man} and ending with @samp{.conf} and possibly more
+lowercase letters, e.g.@: @file{manual.configuration}.
 The search path and/or precise full path name for this file are set by
 the value of the customizable user option @code{woman-man.conf-path}.
 If all else fails, WoMan uses a plausible default man search path.
@@ -407,7 +408,10 @@
 @emph{directly}.  Secondly, the last directory component of each element
 of @code{woman-path} is treated as a regular (Emacs) match expression
 rather than a fixed name, which allows collections of related
-directories to be specified succinctly.
+directories to be specified succinctly.  Also, elements of
+@code{woman-manpath} can be conses, indicating a mapping from
+@samp{PATH} environment variable components to man directory
+hierarchies.
 
 For topic completion to work, WoMan must build a list of all the manual
 files that it can access, which can be very slow, especially if a
@@ -477,24 +481,22 @@
 @cindex point, word at
 
 By default, the @code{woman} command uses the word nearest to point in
-the current buffer as a suggestion for the topic to look up.  The topic
-must be confirmed or edited in the minibuffer.  This suggestion can be
-turned off, or @code{woman} can use the suggested topic without
-confirmation if possible, which is controlled by customizing the user
-option @code{woman-topic-at-point} to @code{nil} or @code{t}
-respectively.  (Its default value is neither @code{nil} nor @code{t},
-meaning ask for confirmation.)
+the current buffer as a suggestion for the topic to look up, if it
+exists as a valid topic.  The topic can be confirmed or edited in the
+minibuffer.
 
-The variable @code{woman-topic-at-point} can also be rebound locally
-(using @code{let}), which may be useful to provide special private key
-bindings, e.g.@: this key binding for @kbd{C-c w} runs WoMan on the topic
-at point without seeking confirmation:
+You can also bind the variable @code{woman-use-topic-at-point} locally
+to a non-@code{nil} value (using @code{let}), in which case
+@code{woman} will can use the suggested topic without confirmation if
+possible.  This may be useful to provide special private key bindings,
+e.g.@: this key binding for @kbd{C-c w} runs WoMan on the topic at
+point without seeking confirmation:
 
 @lisp
 (global-set-key "\C-cw"
                 (lambda ()
                   (interactive)
-                  (let ((woman-topic-at-point t))
+                  (let ((woman-use-topic-at-point t))
                     (woman))))
 @end lisp
 
@@ -943,7 +945,9 @@
 manual files.  Each element should be the name of a directory that
 contains subdirectories of the form @file{man?}, or more precisely
 subdirectories selected by the value of @code{woman-manpath-man-regexp}.
-Non-directory and unreadable files are ignored.
+Non-directory and unreadable files are ignored.  This can also contain
+conses, with the car indicating a @code{PATH} variable component mapped
+to the directory tree given in the cdr.
 
 @cindex @code{MANPATH}, environment variable
 If not set then the environment variable @code{MANPATH} is used.  If no
@@ -1086,24 +1090,18 @@
 A string representing the title to use if WoMan adds a Contents menu to
 the menubar.  Default is @code{"CONTENTS"}.
 
-@item woman-topic-at-point
-A symbol, which may be either @code{t}, @code{nil} or @code{confirm},
-that controls the use by @code{woman} of the ``word at point'' as a
-topic suggestion.  If it is non-@code{nil} then the @code{woman} command uses
-the word at point as an initial topic suggestion when it reads a topic
-from the minibuffer; if it is @code{t} then @code{woman} uses the word
-at point @emph{without interactive confirmation} if it exists as a
-topic.  The value @code{confirm} means suggest a topic and ask for
-confirmation.  The default value is that of
-@code{woman-topic-at-point-default}.
+@item woman-use-topic-at-point
+A boolean value that defaults to @code{nil}.  If non-@code{nil} then
+the @code{woman} command uses the word at point as the topic,
+@emph{without interactive confirmation}, if it exists as a topic.
 
-@item woman-topic-at-point-default
-A symbol, which may be either @code{t}, @code{nil} or @code{confirm},
-representing the default value for @code{woman-topic-at-point}.  The
-default value is @code{confirm}.  [The variable
-@code{woman-topic-at-point} may be @code{let}-bound when @code{woman} is
-loaded, in which case its global value does not get defined.  The
-function @code{woman-file-name} sets it to this value if it is unbound.]
+@item woman-use-topic-at-point-default
+A boolean value representing the default value for
+@code{woman-use-topic-at-point}.  The default value is @code{nil}.
+[The variable @code{woman-use-topic-at-point} may be @code{let}-bound
+when @code{woman} is loaded, in which case its global value does not
+get defined.  The function @code{woman-file-name} sets it to this
+value if it is unbound.]
 
 @item woman-uncompressed-file-regexp
 A regular match expression used to select man source files (ignoring any
@@ -1337,7 +1335,7 @@
 
 @c ===================================================================
 
-@node Acknowledgements, Command Index, Bugs, Top
+@node Acknowledgements, GNU Free Documentation License, Bugs, Top
 @comment  node-name,  next,  previous,  up
 @chapter Acknowledgements
 @cindex acknowledgements
@@ -1393,7 +1391,12 @@
 @comment END OF MANUAL TEXT
 @page
 
-@node Command Index, Variable Index, Acknowledgements, Top
+
+@node GNU Free Documentation License, Command Index, Acknowledgements, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Command Index, Variable Index, GNU Free Documentation License, Top
 @comment  node-name,           next,      previous,  up
 @unnumbered Command Index
 
--- a/man/xresources.texi	Sun Apr 22 12:12:29 2007 +0000
+++ b/man/xresources.texi	Sun Apr 22 12:42:47 2007 +0000
@@ -58,14 +58,15 @@
 (optionally even for all programs).
 
 @cindex Registry (MS-Windows)
-  MS-Windows systems don't support @file{~/.Xdefaults} files, but
-Emacs compiled for Windows looks for X resources in the Windows
-Registry, under the key @samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs}
-and then under the key @samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}.
-The menu and scroll bars are native widgets on MS-Windows, so they are
-only customizable via the system-wide settings in the Display Control
-Panel.  You can also set resources using the @samp{-xrm} command line
-option (see below.)
+  MS-Windows systems do not support @file{~/.Xdefaults} files, so
+instead Emacs compiled for Windows looks for X resources in the
+Windows Registry, first under the key
+@samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs} and then under the key
+@samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}.  The menu and scroll
+bars are native widgets on MS-Windows, so they are only customizable
+via the system-wide settings in the Display Control Panel.  You can
+also set resources using the @samp{-xrm} command line option (see
+below.)
 
 @iftex
   Applications such as Emacs look for resources with specific names
--- a/nt/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/nt/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,7 @@
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+	* INSTALL: Mention the VCVARS32.BAT batch file for VS.NET users.
+
 2007-03-09  Richard Stallman  <rms@gnu.org>
 
 	* INSTALL: Say explicitly this is not for Cygwin.
--- a/nt/INSTALL	Sun Apr 22 12:12:29 2007 +0000
+++ b/nt/INSTALL	Sun Apr 22 12:42:47 2007 +0000
@@ -123,7 +123,10 @@
   The rest of this file assumes you have a working development
   environment.  If you just installed  such an environment, try
   building a trivial C "Hello world" program, and see if it works.  If
-  it doesn't work, resolve that problem first!
+  it doesn't work, resolve that problem first!  If you use Microsoft
+  Visual Studio .NET 2003, don't forget to run the VCVARS32.BAT batch
+  file from the `Bin' subdirectory of the directory where you have
+  installed VS.NET.
 
   If you use the MinGW port of GCC and GNU Make to build Emacs, there
   are some compatibility issues wrt Make and the shell that is run by
--- a/nt/emacs.rc	Sun Apr 22 12:12:29 2007 +0000
+++ b/nt/emacs.rc	Sun Apr 22 12:42:47 2007 +0000
@@ -6,8 +6,8 @@
 #endif
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 22,0,96,0
- PRODUCTVERSION 22,0,96,0
+ FILEVERSION 22,0,98,0
+ PRODUCTVERSION 22,0,98,0
  FILEFLAGSMASK 0x3FL
 #ifdef EMACSDEBUG
  FILEFLAGS 0x1L
@@ -24,12 +24,12 @@
 	BEGIN
 	    VALUE "CompanyName", "Free Software Foundation\0"
 	    VALUE "FileDescription", "GNU Emacs for Windows NT/95/98/2000/ME/XP\0"
-	    VALUE "FileVersion", "22, 0, 96, 0\0"
+	    VALUE "FileVersion", "22, 0, 98, 0\0"
 	    VALUE "InternalName", "Emacs\0"
 	    VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007\0"
 	    VALUE "OriginalFilename", "emacs.exe"
 	    VALUE "ProductName", "Emacs: The extensible self-documenting text editor\0"
-	    VALUE "ProductVersion", "22, 0, 96, 0\0"
+	    VALUE "ProductVersion", "22, 0, 98, 0\0"
 	    VALUE "OLESelfRegister", "\0"
 	 END
      END
--- a/src/ChangeLog	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/ChangeLog	Sun Apr 22 12:42:47 2007 +0000
@@ -1,3 +1,208 @@
+2007-04-16  Chong Yidong  <cyd@stupidchicken.com>
+
+	* dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Set
+	garbaged flag in presence of window margins.
+	(showing_window_margins_p): New function.
+
+	* xdisp.c (cursor_row_p): Only end row on newline if it's a
+	display string.  Suggested by Lennart Borgman.
+
+2007-04-16  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* alloc.c (mem_insert): Set min_heap_address and max_heap_address
+	if they are not yet initialized.
+
+2007-04-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* xdisp.c (redisplay_window): When deciding whether or not to
+	recenter, don't use the reset values of BEG_UNCHANGED and
+	END_UNCHANGED.
+
+2007-04-13  Kim F. Storm  <storm@cua.dk>
+
+	* buffer.c (Fkill_buffer): gcpro BUF during kill_buffer_processes
+	and check that buffer is still alive upon return.
+
+2007-04-13  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* macterm.c [!TARGET_API_MAC_CARBON]: Include Displays.h.
+	(mac_screen_config_changed): New variable.
+	(mac_handle_dm_notification, init_dm_notification_handler)
+	(mac_get_screen_info): New functions.
+	[MAC_OS8] (main): Call init_dm_notification_handler.
+	(mac_initialize) [MAC_OSX]: Likewise.
+	(XTread_socket): Call mac_get_screen_info if screen config changed.
+	(mac_initialized): Make static.
+	(mac_initialize_display_info): Remove function.
+	(mac_term_init): Call mac_get_screen_info.  Add partial contents of
+	mac_initialize_display_info.
+
+2007-04-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* mac.c (xrm_get_preference_database, Fmac_get_preference)
+	[TARGET_API_MAC_CARBON]: Use CFPreferencesAppSynchronize.
+
+	* macterm.c [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event):
+	Use GetGlobalMouse instead of GetMouse and LocalToGlobal.
+	(mac_initialize_display_info) [MAC_OSX]: Use CGRectZero.
+	(mac_initialize_display_info) [!MAC_OSX]: dpyinfo->height and
+	dpyinfo->width are those of whole screen.
+
+2007-04-10  Chong Yidong  <cyd@stupidchicken.com>
+
+	* xdisp.c (note_mode_line_or_margin_highlight): Don't decrement
+	glyph pointer before start of glyph row.
+
+2007-04-09  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* s/darwin.h (__restrict, struct kboard): Remove outdated workarounds.
+	(C_SWITCH_SYSTEM): Remove `-I../mac/src'.
+
+2007-04-09  Martin Rudalics  <rudalics@gmx.at>
+
+	* indent.c (Fmove_to_column): Set next_boundary with correct start pt.
+
+2007-04-08  Richard Stallman  <rms@gnu.org>
+
+	* xdisp.c (syms_of_xdisp) <message-log-max>: Default 100.
+
+2007-04-07  Chong Yidong  <cyd@stupidchicken.com>
+
+	* editfns.c (Ftranspose_regions): Validate interval before setting
+	text properties.
+
+2007-04-03  Eli Zaretskii  <eliz@gnu.org>
+
+	* emacs.c (main): Fix instructions for building Emacs for profiling.
+
+2007-04-03  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* gtkutil.c (xg_update_menubar): Call g_list_next after moving
+	menu bar item.
+
+2007-04-02  Juanma Barranquero  <lekktu@gmail.com>
+
+	* print.c (Fprin1_to_string): Use macro SPECPDL_INDEX.
+
+2007-04-01  Chong Yidong  <cyd@stupidchicken.com>
+
+	* keymap.c (Fcommand_remapping): New optional argument.
+	(where_is_internal): Use new keymaps argument.
+	(Fkey_binding): Caller changed.
+
+	* keyboard.c (command_loop_1): Caller changed.
+
+2007-03-31  Eli Zaretskii  <eliz@gnu.org>
+
+	* window.c (Fget_lru_window): Doc fix.
+
+2007-03-30  Chong Yidong  <cyd@stupidchicken.com>
+
+	* undo.c (Fprimitive_undo): Give clearer error message when trying
+	to change text properties outside accessible part of buffer.
+
+2007-03-29  Kim F. Storm  <storm@cua.dk>
+
+	* process.c (wait_reading_process_output) [HAVE_PTYS]:
+	When EIO happens, clear channel from descriptor masks before raising
+	SIGCHLD signal to avoid busy loop between read and sigchld_handler.
+	(sigchld_handler): Remove sleep (2007-03-11 & 2007-03-26 changes).
+
+2007-03-29  Juanma Barranquero  <lekktu@gmail.com>
+
+	* buffer.c (Fset_buffer_major_mode): Check that BUFFER is valid.
+
+	* process.c (Fformat_network_address): Return nil when the
+	argument vector contains invalid values.
+
+2007-03-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* gmalloc.c [HAVE_GTK_AND_PTHREAD]: Define USE_PTHREAD.
+	[USE_PTHREAD]: Include pthread.h.
+	(malloc_init_once_control, _malloc_mutex) [USE_PTHREAD]: New variables.
+	(malloc_initialize_1): New function created from __malloc_initialize.
+	(__malloc_initialize): Use it.
+	(LOCK, UNLOCK): New macros to make malloc etc. thread safe.
+	(_malloc_internal, _free_internal, _realloc_internal): Use them.
+
+	* lread.c (readchar): Extend BLOCK_INPUT block to ferror/clearerr.
+
+2007-03-27  Juanma Barranquero  <lekktu@gmail.com>
+
+	* process.c (Fformat_network_address): Make args array big enough
+	to format IPv6 addresses.
+
+2007-03-27  Glenn Morris  <rgm@gnu.org>
+
+	* m/hp800.h: Restore HP-UX support (removed 2007-01-29).
+
+2007-03-26  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* macfns.c (Fx_display_mm_height, Fx_display_mm_width): Scale whole
+	screen size in pixels by millimeters per pixel of main display.
+
+	* macselect.c (get_scrap_target_type_list, x_own_selection):
+	Move assignments outside predicate macros.
+	(Vselection_converter_alist): Doc fix.
+
+	* macterm.c (create_text_encoding_info_alist): Move assignments
+	outside predicate macros.
+	(mac_initialize_display_info) [MAC_OSX]: dpyinfo->height and
+	dpyinfo->width are those of whole screen.
+
+2007-03-26  Sam Steingold  <sds@gnu.org>
+
+	* process.c (sigchld_handler): Delay by 1ms instead of 1s to
+	alleviate sluggishness (the original problem is still fixed).
+
+2007-03-25  Kim F. Storm  <storm@cua.dk>
+
+	* intervals.c (merge_properties): Use explicit loop instead of
+	Fplist_member to avoid QUIT.  Don't use Fcdr.
+	(intervals_equal): Likewise.  Rewrite loop to perform length check
+	on the fly rather than calling Flength.  Don't use Fcar.
+
+2007-03-24  Eli Zaretskii  <eliz@gnu.org>
+
+	* editfns.c (Fgoto_char): Doc fix.
+
+	* indent.c (Findent_to): Doc fix.
+
+2007-03-24  Chong Yidong  <cyd@stupidchicken.com>
+
+	* editfns.c (Ftranspose_regions): Use set_text_properties_1
+	instead of Fset_text_properties to avoid GC.  Signal after change.
+
+2007-03-24  Eli Zaretskii  <eliz@gnu.org>
+
+	* xfns.c (Fx_show_tip): Doc fix.
+
+	* macfns.c (Fx_show_tip): Doc fix.
+
+	* w32fns.c (Fx_show_tip): Doc fix.
+
+2007-03-23  Kim F. Storm  <storm@cua.dk>
+
+	* intervals.c (merge_properties, intervals_equal):
+	Use Fplist_member instead of Fmemq to find properties.
+
+2007-03-23  Glenn Morris  <rgm@gnu.org>
+
+	* unexhp9k800.c: Restore file with clarified legal status.
+	* m/sr2k.h: Restore since dependency unexhp9k800.c is restored.
+
+2007-03-22  Chong Yidong  <cyd@stupidchicken.com>
+
+	* widget.c (EmacsFrameSetCharSize): Catch X errors.
+
+2007-03-22  Kenichi Handa  <handa@m17n.org>
+
+	* fileio.c (Fcopy_file): Call barf_or_query_if_file_exists with
+	non-encoded file name.
+	(Frename_file): Likewise.
+	(Fadd_name_to_file): Likewise.
+	(Fmake_symbolic_link): Likewise.
+
 2007-03-20  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
 	* Makefile.in (alloca.o, gtkutil.o): Depend on systime.h.
@@ -25,9 +230,9 @@
 	* print.c: Include blockinput.h.
 	(Fredirect_debugging_output): Add BLOCK_INPUT around fclose.
 
-	* process.c (Fmake_network_process) [HAVE_GETADDRINFO]: Clear
-	immediate_quit before calling freeaddrinfo.  Add BLOCK_INPUT
-	around freeaddrinfo.
+	* process.c (Fmake_network_process) [HAVE_GETADDRINFO]:
+	Clear immediate_quit before calling freeaddrinfo.
+	Add BLOCK_INPUT around freeaddrinfo.
 
 	* term.c: Include blockinput.h.
 	(write_glyphs, insert_glyphs): Add BLOCK_INPUT around fwrite.
@@ -51,8 +256,8 @@
 	(x_activate_menubar, mac_menu_show): Set it during menu tracking.
 	(popup_activated): New function.
 
-	* xdisp.c (redisplay_internal, note_mouse_highlight): Check
-	popup_activated for MAC_OS.
+	* xdisp.c (redisplay_internal, note_mouse_highlight):
+	Check popup_activated for MAC_OS.
 
 2007-03-17  Juanma Barranquero  <lekktu@gmail.com>
 
@@ -491,9 +696,9 @@
 
 2007-01-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
-	* macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
-	pass keyboard modifiers to mac_store_drag_event, but put them as
-	kEventParamKeyModifiers Apple event parameter.
+	* macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag):
+	Don't pass keyboard modifiers to mac_store_drag_event, but put
+	them as kEventParamKeyModifiers Apple event parameter.
 
 2007-01-21  Chong Yidong  <cyd@stupidchicken.com>
 
@@ -577,8 +782,8 @@
 	(mac_dialog) [TARGET_API_MAC_CARBON]: Remove function.
 	(mac_dialog_show) [TARGET_API_MAC_CARBON]: Use create_and_show_dialog.
 
-	* macterm.c (x_free_frame_resources) [USE_CG_DRAWING]: Call
-	mac_prepare_for_quickdraw.
+	* macterm.c (x_free_frame_resources) [USE_CG_DRAWING]:
+	Call mac_prepare_for_quickdraw.
 	(quit_char, make_ctrl_char) [TARGET_API_MAC_CARBON]: Move externs
 	outside #ifdef MAC_OSX.
 	(mac_quit_char_key_p) [TARGET_API_MAC_CARBON]: Move function
@@ -2230,8 +2435,8 @@
 
 2006-08-28  Kenichi Handa  <handa@m17n.org>
 
-	* coding.c (Fdetect_coding_region, Fdetect_coding_string): Fix
-	docstring about ISO-2022 control characters.
+	* coding.c (Fdetect_coding_region, Fdetect_coding_string):
+	Fix docstring about ISO-2022 control characters.
 
 2006-08-28  Kim F. Storm  <storm@cua.dk>
 
@@ -2454,7 +2659,7 @@
 2006-08-09  Kenichi Handa  <handa@m17n.org>
 
 	* coding.c (syms_of_coding): Improve the docstring
-	file-coding-system-alist.
+	of file-coding-system-alist.
 
 2006-08-07  Andreas Schwab  <schwab@suse.de>
 
@@ -3402,8 +3607,8 @@
 	* macterm.c (font_panel_shown_p) [USE_MAC_FONT_PANEL]: New variable.
 	(mac_font_panel_visible_p, mac_show_hide_font_panel)
 	[USE_MAC_FONT_PANEL]: New functions.
-	[USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): Return
-	immediately if font panel is not visible.
+	[USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection):
+	Return immediately if font panel is not visible.
 
 	* macterm.h (mac_font_panel_visible_p, mac_show_hide_font_panel):
 	Add externs.
@@ -3422,8 +3627,8 @@
 
 2006-05-29  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
-	* sound.c (alsa_open, alsa_configure, alsa_write): Move
-	assignment to err out of if-statement.
+	* sound.c (alsa_open, alsa_configure, alsa_write):
+	Move assignment to err out of if-statement.
 
 	* gtkutil.c (menu_nav_ended): New function.
 	(create_menus): Connect menu_nav_ended to "selection-done" to fix
@@ -3838,8 +4043,8 @@
 	(Qpanel_closed, Qselection) [USE_MAC_FONT_PANEL]: Likewise.
 	(syms_of_macterm): Intern and staticpro them.
 	(init_font_name_table) [USE_ATSUI]: Add data to Vmac_atsu_font_table.
-	[TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): New
-	function.
+	[TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event):
+	New function.
 	[USE_CARBON_EVENTS] (mac_handle_command_event): Use it.
 	[MAC_OSX] (mac_store_services_event): Likewise.
 	[USE_CARBON_EVENTS] (mac_handle_window_event) [MAC_OSX]: Handle
@@ -3891,8 +4096,8 @@
 	[TARGET_API_MAC_CARBON] (create_apple_event): New function.
 	[TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): Use it.
 	Use xrealloc instead of repeated xmalloc/xfree.
-	[TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref): New
-	function.
+	[TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref):
+	New function.
 
 	* macmenu.c (restore_menu_items, cleanup_popup_menu): Return a value.
 
@@ -5752,8 +5957,8 @@
 	objects until we are done with the parsing.
 	(parse_single_submenu, digest_single_submenu): New functions.
 	(single_submenu): Function deleted, replaced by those two.
-	(install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't
-	create or dispose of EventHandlerUPP.  Install hander to all submenus.
+	(install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't create
+	or dispose of EventHandlerUPP.  Install hander to all submenus.
 	(mac_menu_show) [!HAVE_MULTILINGUAL_MENU]: Use ENCODE_MENU_STRING
 	instead of ENCODE_SYSTEM.
 	(free_frame_menubar, fill_submenu, fill_menu): Don't use NULL for
--- a/src/ChangeLog.5	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/ChangeLog.5	Sun Apr 22 12:42:47 2007 +0000
@@ -1789,7 +1789,7 @@
 
 	* textprop.c (Fnext_property_change): Fix previous change.
 
-1995-03-23  Kevin Rodgers  <kevinr@ihs.com>
+1995-03-23  Kevin Rodgers  <kevinr@ihs.com> (tiny change)
 
 	* print.c (temp_output_buffer_setup): (Re)set the default
 	directory of the temp buffer to that of the current buffer.
--- a/src/alloc.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/alloc.c	Sun Apr 22 12:42:47 2007 +0000
@@ -3618,9 +3618,9 @@
 {
   struct mem_node *c, *parent, *x;
 
-  if (start < min_heap_address)
+  if (min_heap_address == NULL || start < min_heap_address)
     min_heap_address = start;
-  if (end > max_heap_address)
+  if (max_heap_address == NULL || end > max_heap_address)
     max_heap_address = end;
 
   /* See where in the tree a node for START belongs.  In this
--- a/src/buffer.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/buffer.c	Sun Apr 22 12:42:47 2007 +0000
@@ -1471,7 +1471,16 @@
   unlock_buffer (b);
 #endif /* CLASH_DETECTION */
 
+  GCPRO1 (buf);
   kill_buffer_processes (buf);
+  UNGCPRO;
+
+  /* Killing buffer processes may run sentinels which may
+     have called kill-buffer.  */
+
+  if (NILP (b->name))
+    return Qnil;
+
   clear_charpos_cache (b);
 
   tem = Vinhibit_quit;
@@ -1644,6 +1653,8 @@
   int count;
   Lisp_Object function;
 
+  CHECK_BUFFER (buffer);
+
   if (STRINGP (XBUFFER (buffer)->name)
       && strcmp (SDATA (XBUFFER (buffer)->name), "*scratch*") == 0)
     function = find_symbol_value (intern ("initial-major-mode"));
--- a/src/dispnew.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/dispnew.c	Sun Apr 22 12:42:47 2007 +0000
@@ -120,6 +120,7 @@
 
 static struct glyph_matrix *save_current_matrix P_ ((struct frame *));
 static void restore_current_matrix P_ ((struct frame *, struct glyph_matrix *));
+static int showing_window_margins_p P_ ((struct window *));
 static void fake_current_matrices P_ ((Lisp_Object));
 static void redraw_overlapping_rows P_ ((struct window *, int));
 static void redraw_overlapped_rows P_ ((struct window *, int));
@@ -2153,6 +2154,33 @@
   f->glyphs_initialized_p = 1;
 }
 
+/* Return 1 if any window in the tree has nonzero window margins.  See
+   the hack at the end of adjust_frame_glyphs_for_frame_redisplay.  */
+static int
+showing_window_margins_p (w)
+     struct window *w;
+{
+  while (w)
+    {
+      if (!NILP (w->hchild))
+	{
+	  if (showing_window_margins_p (XWINDOW (w->hchild)))
+	    return 1;
+	}
+      else if (!NILP (w->vchild))
+	{
+	  if (showing_window_margins_p (XWINDOW (w->vchild)))
+	    return 1;
+	}
+      else if (!NILP (w->left_margin_cols)
+	       || !NILP (w->right_margin_cols))
+	return 1;
+ 
+      w = NILP (w->next) ? 0 : XWINDOW (w->next);
+    }
+  return 0;
+}
+
 
 /* In the window tree with root W, build current matrices of leaf
    windows from the frame's current matrix.  */
@@ -2340,7 +2368,12 @@
       if (display_completed
 	  && !FRAME_GARBAGED_P (f)
 	  && matrix_dim.width == f->current_matrix->matrix_w
-	  && matrix_dim.height == f->current_matrix->matrix_h)
+	  && matrix_dim.height == f->current_matrix->matrix_h
+	  /* For some reason, the frame glyph matrix gets corrupted if
+	     any of the windows contain margins.  I haven't been able
+	     to hunt down the reason, but for the moment this prevents
+	     the problem from manifesting. -- cyd  */
+	  && !showing_window_margins_p (XWINDOW (FRAME_ROOT_WINDOW (f))))
 	{
 	  struct glyph_matrix *copy = save_current_matrix (f);
 	  adjust_glyph_matrix (NULL, f->desired_matrix, 0, 0, matrix_dim);
--- a/src/editfns.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/editfns.c	Sun Apr 22 12:42:47 2007 +0000
@@ -274,7 +274,9 @@
 
 DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ",
        doc: /* Set point to POSITION, a number or marker.
-Beginning of buffer is position (point-min), end is (point-max).  */)
+Beginning of buffer is position (point-min), end is (point-max).
+
+The return value is POSITION.  */)
      (position)
      register Lisp_Object position;
 {
@@ -4117,7 +4119,10 @@
   int gap, len1, len_mid, len2;
   unsigned char *start1_addr, *start2_addr, *temp;
 
-  INTERVAL cur_intv, tmp_interval1, tmp_interval_mid, tmp_interval2;
+  INTERVAL cur_intv, tmp_interval1, tmp_interval_mid, tmp_interval2, tmp_interval3;
+  Lisp_Object buf;
+
+  XSETBUFFER (buf, current_buffer);
   cur_intv = BUF_INTERVALS (current_buffer);
 
   validate_region (&startr1, &endr1);
@@ -4224,8 +4229,11 @@
 
       tmp_interval1 = copy_intervals (cur_intv, start1, len1);
       tmp_interval2 = copy_intervals (cur_intv, start2, len2);
-      Fset_text_properties (make_number (start1), make_number (end2),
-			    Qnil, Qnil);
+      /* Don't use Fset_text_properties: that can cause GC, which can
+	 clobber objects stored in the tmp_intervals.  */
+      tmp_interval3 = validate_interval_range (buf, &startr1, &endr2, 0);
+      if (!NULL_INTERVAL_P (tmp_interval3))
+	set_text_properties_1 (startr1, endr2, Qnil, buf, tmp_interval3);
 
       /* First region smaller than second.  */
       if (len1_byte < len2_byte)
@@ -4281,10 +4289,14 @@
           record_change (start2, len2);
           tmp_interval1 = copy_intervals (cur_intv, start1, len1);
           tmp_interval2 = copy_intervals (cur_intv, start2, len2);
-          Fset_text_properties (make_number (start1), make_number (end1),
-				Qnil, Qnil);
-          Fset_text_properties (make_number (start2), make_number (end2),
-				Qnil, Qnil);
+
+	  tmp_interval3 = validate_interval_range (buf, &startr1, &endr1, 0);
+	  if (!NULL_INTERVAL_P (tmp_interval3))
+	    set_text_properties_1 (startr1, endr1, Qnil, buf, tmp_interval3);
+
+	  tmp_interval3 = validate_interval_range (buf, &startr2, &endr2, 0);
+	  if (!NULL_INTERVAL_P (tmp_interval3))
+	    set_text_properties_1 (startr2, endr2, Qnil, buf, tmp_interval3);
 
 	  SAFE_ALLOCA (temp, unsigned char *, len1_byte);
 	  start1_addr = BYTE_POS_ADDR (start1_byte);
@@ -4310,8 +4322,10 @@
           tmp_interval1 = copy_intervals (cur_intv, start1, len1);
           tmp_interval_mid = copy_intervals (cur_intv, end1, len_mid);
           tmp_interval2 = copy_intervals (cur_intv, start2, len2);
-          Fset_text_properties (make_number (start1), make_number (end2),
-				Qnil, Qnil);
+
+	  tmp_interval3 = validate_interval_range (buf, &startr1, &endr2, 0);
+	  if (!NULL_INTERVAL_P (tmp_interval3))
+	    set_text_properties_1 (startr1, endr2, Qnil, buf, tmp_interval3);
 
 	  /* holds region 2 */
 	  SAFE_ALLOCA (temp, unsigned char *, len2_byte);
@@ -4341,8 +4355,10 @@
           tmp_interval1 = copy_intervals (cur_intv, start1, len1);
           tmp_interval_mid = copy_intervals (cur_intv, end1, len_mid);
           tmp_interval2 = copy_intervals (cur_intv, start2, len2);
-          Fset_text_properties (make_number (start1), make_number (end2),
-				Qnil, Qnil);
+
+	  tmp_interval3 = validate_interval_range (buf, &startr1, &endr2, 0);
+	  if (!NULL_INTERVAL_P (tmp_interval3))
+	    set_text_properties_1 (startr1, endr2, Qnil, buf, tmp_interval3);
 
 	  /* holds region 1 */
 	  SAFE_ALLOCA (temp, unsigned char *, len1_byte);
@@ -4377,6 +4393,8 @@
       fix_start_end_in_overlays (start1, end2);
     }
 
+  signal_after_change (XINT (start1), XINT (end2 - start1),
+		       XINT (end2 - start1));
   return Qnil;
 }
 
--- a/src/emacs.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/emacs.c	Sun Apr 22 12:42:47 2007 +0000
@@ -1723,8 +1723,9 @@
   /* Set up for profiling.  This is known to work on FreeBSD,
      GNU/Linux and MinGW.  It might work on some other systems too.
      Give it a try and tell us if it works on your system.  To compile
-     for profiling use something like:
-       `make CFLAGS="-pg -g -O -DPROFILING=1'.  */
+     for profiling, add -pg to the switches your platform uses in
+     CFLAGS and LDFLAGS.  For example:
+       `make CFLAGS="-pg -g -O -DPROFILING=1" LDFLAGS="-pg -g"'.  */
 #if defined (__FreeBSD__) || defined (GNU_LINUX) || defined(__MINGW32__)
 #ifdef PROFILING
   if (initialized)
--- a/src/fileio.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/fileio.c	Sun Apr 22 12:42:47 2007 +0000
@@ -2473,7 +2473,7 @@
 
   if (NILP (ok_if_already_exists)
       || INTEGERP (ok_if_already_exists))
-    barf_or_query_if_file_exists (encoded_newname, "copy to it",
+    barf_or_query_if_file_exists (newname, "copy to it",
 				  INTEGERP (ok_if_already_exists), &out_st, 0);
   else if (stat (SDATA (encoded_newname), &out_st) < 0)
     out_st.st_mode = 0;
@@ -2782,7 +2782,7 @@
 #endif
   if (NILP (ok_if_already_exists)
       || INTEGERP (ok_if_already_exists))
-    barf_or_query_if_file_exists (encoded_newname, "rename to it",
+    barf_or_query_if_file_exists (newname, "rename to it",
 				  INTEGERP (ok_if_already_exists), 0, 0);
 #ifndef BSD4_1
   if (0 > rename (SDATA (encoded_file), SDATA (encoded_newname)))
@@ -2859,7 +2859,7 @@
 
   if (NILP (ok_if_already_exists)
       || INTEGERP (ok_if_already_exists))
-    barf_or_query_if_file_exists (encoded_newname, "make it a new name",
+    barf_or_query_if_file_exists (newname, "make it a new name",
 				  INTEGERP (ok_if_already_exists), 0, 0);
 
   unlink (SDATA (newname));
@@ -2920,7 +2920,7 @@
 
   if (NILP (ok_if_already_exists)
       || INTEGERP (ok_if_already_exists))
-    barf_or_query_if_file_exists (encoded_linkname, "make it a link",
+    barf_or_query_if_file_exists (linkname, "make it a link",
 				  INTEGERP (ok_if_already_exists), 0, 0);
   if (0 > symlink (SDATA (encoded_filename),
 		   SDATA (encoded_linkname)))
--- a/src/gmalloc.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/gmalloc.c	Sun Apr 22 12:42:47 2007 +0000
@@ -1,6 +1,9 @@
 /* This file is no longer automatically generated from libc.  */
 
 #define _MALLOC_INTERNAL
+#ifdef HAVE_GTK_AND_PTHREAD
+#define USE_PTHREAD
+#endif
 
 /* The malloc headers and source files from the C library follow here.  */
 
@@ -73,6 +76,10 @@
 #include <unistd.h>
 #endif
 
+#ifdef USE_PTHREAD
+#include <pthread.h>
+#endif
+
 #endif	/* _MALLOC_INTERNAL.  */
 
 
@@ -229,6 +236,15 @@
 extern __ptr_t _realloc_internal PP ((__ptr_t __ptr, __malloc_size_t __size));
 extern void _free_internal PP ((__ptr_t __ptr));
 
+#ifdef USE_PTHREAD
+extern pthread_mutex_t _malloc_mutex;
+#define LOCK()     pthread_mutex_lock (&_malloc_mutex)
+#define UNLOCK()   pthread_mutex_unlock (&_malloc_mutex)
+#else
+#define LOCK()
+#define UNLOCK()
+#endif
+
 #endif /* _MALLOC_INTERNAL.  */
 
 /* Given an address in the middle of a malloc'd object,
@@ -536,13 +552,14 @@
     _heapinfo[block + blocks].busy.info.size = -blocks;
 }
 
-/* Set everything up and remember that we have.  */
-int
-__malloc_initialize ()
+#ifdef USE_PTHREAD
+static pthread_once_t malloc_init_once_control = PTHREAD_ONCE_INIT;
+pthread_mutex_t _malloc_mutex;
+#endif
+
+static void
+malloc_initialize_1 ()
 {
-  if (__malloc_initialized)
-    return 0;
-
 #ifdef GC_MCHECK
   mcheck (NULL);
 #endif
@@ -550,10 +567,21 @@
   if (__malloc_initialize_hook)
     (*__malloc_initialize_hook) ();
 
+#ifdef USE_PTHREAD
+  {
+    pthread_mutexattr_t attr;
+
+    pthread_mutexattr_init (&attr);
+    pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
+    pthread_mutex_init (&_malloc_mutex, &attr);
+    pthread_mutexattr_destroy (&attr);
+  }
+#endif
+
   heapsize = HEAP / BLOCKSIZE;
   _heapinfo = (malloc_info *) align (heapsize * sizeof (malloc_info));
   if (_heapinfo == NULL)
-    return 0;
+    return;
   memset (_heapinfo, 0, heapsize * sizeof (malloc_info));
   _heapinfo[0].free.size = 0;
   _heapinfo[0].free.next = _heapinfo[0].free.prev = 0;
@@ -565,7 +593,23 @@
 
   __malloc_initialized = 1;
   PROTECT_MALLOC_STATE (1);
-  return 1;
+  return;
+}
+
+/* Set everything up and remember that we have.  */
+int
+__malloc_initialize ()
+{
+#ifdef USE_PTHREAD
+  pthread_once (&malloc_init_once_control, malloc_initialize_1);
+#else
+  if (__malloc_initialized)
+    return 0;
+
+  malloc_initialize_1 ();
+#endif
+
+  return __malloc_initialized;
 }
 
 static int morecore_recursing;
@@ -708,6 +752,7 @@
     return NULL;
 #endif
 
+  LOCK ();
   PROTECT_MALLOC_STATE (0);
 
   if (size < sizeof (struct list))
@@ -765,7 +810,7 @@
 	  if (result == NULL)
 	    {
 	      PROTECT_MALLOC_STATE (1);
-	      return NULL;
+	      goto out;
 	    }
 
 	  /* Link all fragments but the first into the free list.  */
@@ -831,7 +876,7 @@
 		}
 	      result = morecore (wantblocks * BLOCKSIZE);
 	      if (result == NULL)
-		return NULL;
+		goto out;
 	      block = BLOCK (result);
 	      /* Put the new block at the end of the free list.  */
 	      _heapinfo[block].free.size = wantblocks;
@@ -886,6 +931,8 @@
     }
 
   PROTECT_MALLOC_STATE (1);
+ out:
+  UNLOCK ();
   return result;
 }
 
@@ -996,6 +1043,7 @@
   if (ptr == NULL)
     return;
 
+  LOCK ();
   PROTECT_MALLOC_STATE (0);
 
   for (l = _aligned_blocks; l != NULL; l = l->next)
@@ -1221,6 +1269,7 @@
     }
 
   PROTECT_MALLOC_STATE (1);
+  UNLOCK ();
 }
 
 /* Return memory to the heap.  */
@@ -1384,6 +1433,7 @@
 
   block = BLOCK (ptr);
 
+  LOCK ();
   PROTECT_MALLOC_STATE (0);
 
   type = _heapinfo[block].busy.type;
@@ -1398,7 +1448,7 @@
 	    {
 	      memcpy (result, ptr, size);
 	      _free_internal (ptr);
-	      return result;
+	      goto out;
 	    }
 	}
 
@@ -1451,7 +1501,7 @@
 		  (void) _malloc_internal (blocks * BLOCKSIZE);
 		  _free_internal (previous);
 		}
-	      return NULL;
+	      goto out;
 	    }
 	  if (ptr != result)
 	    memmove (result, ptr, blocks * BLOCKSIZE);
@@ -1471,7 +1521,7 @@
 	     and copy the lesser of the new size and the old. */
 	  result = _malloc_internal (size);
 	  if (result == NULL)
-	    return NULL;
+	    goto out;
 	  memcpy (result, ptr, min (size, (__malloc_size_t) 1 << type));
 	  _free_internal (ptr);
 	}
@@ -1479,6 +1529,8 @@
     }
 
   PROTECT_MALLOC_STATE (1);
+ out:
+  UNLOCK ();
   return result;
 }
 
--- a/src/gtkutil.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/gtkutil.c	Sun Apr 22 12:42:47 2007 +0000
@@ -2506,6 +2506,7 @@
           g_list_free (*list);
           *list = iter = gtk_container_get_children (GTK_CONTAINER (menubar));
           while (nr-- > 0) iter = g_list_next (iter);
+          if (iter) iter = g_list_next (iter);
           val = val->next;
           ++pos;
       }
--- a/src/indent.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/indent.c	Sun Apr 22 12:42:47 2007 +0000
@@ -737,7 +737,9 @@
 DEFUN ("indent-to", Findent_to, Sindent_to, 1, 2, "NIndent to column: ",
        doc: /* Indent from point with tabs and spaces until COLUMN is reached.
 Optional second argument MINIMUM says always do at least MINIMUM spaces
-even if that goes past COLUMN; by default, MINIMUM is zero.  */)
+even if that goes past COLUMN; by default, MINIMUM is zero.
+
+The return value is COLUMN.  */)
      (column, minimum)
      Lisp_Object column, minimum;
 {
@@ -951,7 +953,6 @@
   pos = PT;
   pos_byte = PT_BYTE;
   end = ZV;
-  next_boundary = pos;
 
   /* If we're starting past the desired column,
      back up to beginning of line and scan from there.  */
@@ -963,6 +964,8 @@
       col = 0;
     }
 
+  next_boundary = pos;
+
   while (pos < end)
     {
       while (pos == next_boundary)
--- a/src/intervals.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/intervals.c	Sun Apr 22 12:42:47 2007 +0000
@@ -125,18 +125,24 @@
   while (CONSP (o))
     {
       sym = XCAR (o);
-      val = Fmemq (sym, target->plist);
+      o = XCDR (o);
+      CHECK_CONS (o);
+
+      val = target->plist;
+      while (CONSP (val) && !EQ (XCAR (val), sym))
+	{
+	  val = XCDR (val);
+	  if (!CONSP (val))
+	    break;
+	  val = XCDR (val);
+	}
 
       if (NILP (val))
 	{
-	  o = XCDR (o);
-	  CHECK_CONS (o);
 	  val = XCAR (o);
 	  target->plist = Fcons (sym, Fcons (val, target->plist));
-	  o = XCDR (o);
 	}
-      else
-	o = Fcdr (XCDR (o));
+      o = XCDR (o);
     }
 }
 
@@ -147,8 +153,8 @@
 intervals_equal (i0, i1)
      INTERVAL i0, i1;
 {
-  register Lisp_Object i0_cdr, i0_sym, i1_val;
-  register int i1_len;
+  register Lisp_Object i0_cdr, i0_sym;
+  register Lisp_Object i1_cdr, i1_val;
 
   if (DEFAULT_INTERVAL_P (i0) && DEFAULT_INTERVAL_P (i1))
     return 1;
@@ -156,39 +162,43 @@
   if (DEFAULT_INTERVAL_P (i0) || DEFAULT_INTERVAL_P (i1))
     return 0;
 
-  i1_len = XFASTINT (Flength (i1->plist));
-  if (i1_len & 0x1)		/* Paranoia -- plists are always even */
-    abort ();
-  i1_len /= 2;
   i0_cdr = i0->plist;
-  while (CONSP (i0_cdr))
+  i1_cdr = i1->plist;
+  while (CONSP (i0_cdr) && CONSP (i1_cdr))
     {
-      /* Lengths of the two plists were unequal.  */
-      if (i1_len == 0)
-	return 0;
-
       i0_sym = XCAR (i0_cdr);
-      i1_val = Fmemq (i0_sym, i1->plist);
+      i0_cdr = XCDR (i0_cdr);
+      if (!CONSP (i0_cdr))
+	return 0;		/* abort (); */
+      i1_val = i1->plist;
+      while (CONSP (i1_val) && !EQ (XCAR (i1_val), i0_sym))
+	{
+	  i1_val = XCDR (i1_val);
+	  if (!CONSP (i1_val))
+	    return 0;		/* abort (); */
+	  i1_val = XCDR (i1_val);
+	}
 
       /* i0 has something i1 doesn't.  */
       if (EQ (i1_val, Qnil))
 	return 0;
 
       /* i0 and i1 both have sym, but it has different values in each.  */
-      i0_cdr = XCDR (i0_cdr);
-      CHECK_CONS (i0_cdr);
-      if (!EQ (Fcar (Fcdr (i1_val)), XCAR (i0_cdr)))
+      if (!CONSP (i1_val)
+	  || (i1_val = XCDR (i1_val), !CONSP (i1_val))
+	  || !EQ (XCAR (i1_val), XCAR (i0_cdr)))
 	return 0;
 
       i0_cdr = XCDR (i0_cdr);
-      i1_len--;
+
+      i1_cdr = XCDR (i1_cdr);
+      if (!CONSP (i1_cdr))
+	return 0;		/* abort (); */
+      i1_cdr = XCDR (i1_cdr);
     }
 
-  /* Lengths of the two plists were unequal.  */
-  if (i1_len > 0)
-    return 0;
-
-  return 1;
+  /* Lengths of the two plists were equal.  */
+  return (NILP (i0_cdr) && NILP (i1_cdr));
 }
 
 
@@ -2538,7 +2548,7 @@
 	  temp = CHAR_TO_BYTE (left_end);
 
 	  /* If LEFT_END_BYTE is in the middle of a character,
-	     adjust it and LEFT_END to a char boundary.  */ 
+	     adjust it and LEFT_END to a char boundary.  */
 	  if (left_end_byte > temp)
 	    {
 	      left_end_byte = temp;
@@ -2570,7 +2580,7 @@
 	  right_start = BYTE_TO_CHAR (right_start_byte);
 
 	  /* If RIGHT_START_BYTE is in the middle of a character,
-	     adjust it and RIGHT_START to a char boundary.  */ 
+	     adjust it and RIGHT_START to a char boundary.  */
 	  temp = CHAR_TO_BYTE (right_start);
 
 	  if (right_start_byte < temp)
--- a/src/keyboard.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/keyboard.c	Sun Apr 22 12:42:47 2007 +0000
@@ -1764,7 +1764,7 @@
       if (SYMBOLP (cmd))
 	{
 	  Lisp_Object cmd1;
-	  if (cmd1 = Fcommand_remapping (cmd, Qnil), !NILP (cmd1))
+	  if (cmd1 = Fcommand_remapping (cmd, Qnil, Qnil), !NILP (cmd1))
 	    cmd = cmd1;
 	}
 
@@ -9008,9 +9008,9 @@
      of the place where a mouse click occurred.  */
   volatile int localized_local_map = 0;
 
-  /* The index in defs[] of the first keymap that has a binding for
+  /* The index in submaps[] of the first keymap that has a binding for
      this key sequence.  In other words, the lowest i such that
-     defs[i] is non-nil.  */
+     submaps[i] is non-nil.  */
   volatile int first_binding;
   /* Index of the first key that has no binding.
      It is useless to try fkey.start larger than that.  */
--- a/src/keymap.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/keymap.c	Sun Apr 22 12:42:47 2007 +0000
@@ -1217,23 +1217,42 @@
 
 /* This function may GC (it calls Fkey_binding).  */
 
-DEFUN ("command-remapping", Fcommand_remapping, Scommand_remapping, 1, 2, 0,
-       doc: /* Return the remapping for command COMMAND in current keymaps.
+DEFUN ("command-remapping", Fcommand_remapping, Scommand_remapping, 1, 3, 0,
+       doc: /* Return the remapping for command COMMAND.
 Returns nil if COMMAND is not remapped (or not a symbol).
 
 If the optional argument POSITION is non-nil, it specifies a mouse
 position as returned by `event-start' and `event-end', and the
 remapping occurs in the keymaps associated with it.  It can also be a
 number or marker, in which case the keymap properties at the specified
-buffer position instead of point are used. */)
-     (command, position)
-     Lisp_Object command, position;
+buffer position instead of point are used.  The KEYMAPS argument is
+ignored if POSITION is non-nil.
+
+If the optional argument KEYMAPS is non-nil, it should be a list of
+keymaps to search for command remapping.  Otherwise, search for the
+remapping in all currently active keymaps.  */)
+     (command, position, keymaps)
+     Lisp_Object command, position, keymaps;
 {
   if (!SYMBOLP (command))
     return Qnil;
 
   ASET (command_remapping_vector, 1, command);
-  return Fkey_binding (command_remapping_vector, Qnil, Qt, position);
+
+  if (NILP (keymaps))
+    return Fkey_binding (command_remapping_vector, Qnil, Qt, position);
+  else
+    {
+      Lisp_Object maps, binding;
+
+      for (maps = keymaps; !NILP (maps); maps = Fcdr (maps))
+	{
+	  binding = Flookup_key (Fcar (maps), command_remapping_vector, Qnil);
+	  if (!NILP (binding) && !INTEGERP (binding))
+	    return binding;
+	}
+      return Qnil;
+    }
 }
 
 /* Value is number if KEY is too long; nil if valid but has no definition. */
@@ -1394,8 +1413,10 @@
 static Lisp_Object *cmm_modes = NULL, *cmm_maps = NULL;
 static int cmm_size = 0;
 
-/* Store a pointer to an array of the keymaps of the currently active
-   minor modes in *buf, and return the number of maps it contains.
+/* Store a pointer to an array of the currently active minor modes in
+   *modeptr, a pointer to an array of the keymaps of the currently
+   active minor modes in *mapptr, and return the number of maps
+   *mapptr contains.
 
    This function always returns a pointer to the same buffer, and may
    free or reallocate it, so if you want to keep it for a long time or
@@ -1761,7 +1782,7 @@
   if (NILP (no_remap) && SYMBOLP (value))
     {
       Lisp_Object value1;
-      if (value1 = Fcommand_remapping (value, position), !NILP (value1))
+      if (value1 = Fcommand_remapping (value, position, Qnil), !NILP (value1))
 	value = value1;
     }
 
@@ -2570,15 +2591,6 @@
   /* 1 means ignore all menu bindings entirely.  */
   int nomenus = !NILP (firstonly) && !EQ (firstonly, Qnon_ascii);
 
-  /* If this command is remapped, then it has no key bindings
-     of its own.  */
-  if (NILP (no_remap) && SYMBOLP (definition))
-    {
-      Lisp_Object tem;
-      if (tem = Fcommand_remapping (definition, Qnil), !NILP (tem))
-	return Qnil;
-    }
-
   found = keymaps;
   while (CONSP (found))
     {
@@ -2592,6 +2604,13 @@
   found = Qnil;
   sequences = Qnil;
 
+  /* If this command is remapped, then it has no key bindings
+     of its own.  */
+  if (NILP (no_remap)
+      && SYMBOLP (definition)
+      && !NILP (Fcommand_remapping (definition, Qnil, keymaps)))
+    RETURN_UNGCPRO (Qnil);
+
   for (; !NILP (maps); maps = Fcdr (maps))
     {
       /* Key sequence to reach map, and the map that it reaches */
--- a/src/keymap.h	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/keymap.h	Sun Apr 22 12:42:47 2007 +0000
@@ -29,7 +29,7 @@
 EXFUN (Fkeymap_prompt, 1);
 EXFUN (Fdefine_key, 3);
 EXFUN (Flookup_key, 3);
-EXFUN (Fcommand_remapping, 2);
+EXFUN (Fcommand_remapping, 3);
 EXFUN (Fkey_binding, 4);
 EXFUN (Fkey_description, 2);
 EXFUN (Fsingle_key_description, 2);
--- a/src/lread.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/lread.c	Sun Apr 22 12:42:47 2007 +0000
@@ -329,18 +329,18 @@
     {
       BLOCK_INPUT;
       c = getc (instream);
-      UNBLOCK_INPUT;
 #ifdef EINTR
       /* Interrupted reads have been observed while reading over the network */
       while (c == EOF && ferror (instream) && errno == EINTR)
 	{
+	  UNBLOCK_INPUT;
 	  QUIT;
-	  clearerr (instream);
 	  BLOCK_INPUT;
+	  clearerr (instream);
 	  c = getc (instream);
-	  UNBLOCK_INPUT;
 	}
 #endif
+      UNBLOCK_INPUT;
       return c;
     }
 
--- a/src/m/hp800.h	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/m/hp800.h	Sun Apr 22 12:42:47 2007 +0000
@@ -69,10 +69,9 @@
 #define XSET(var, type, ptr) \
    ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS))
 
-/* Definitions for GNU/Linux.  (HP/UX is unsupported because of the
-   removal of unexhp9k800.c due to lack of legal papers.)  */
+/* Common definitions for HPUX and GNU/Linux.  */
 
-#ifdef GNU_LINUX
+#if defined (__hpux) || defined (GNU_LINUX)
 /* Now define a symbol for the cpu type, if your compiler
    does not define it automatically:
    Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -94,6 +93,12 @@
 
 #define NO_REMAP
 
+#endif /* __hpux or GNU_LINUX */
+
+/* Stuff for just GNU/Linux.  */
+
+#ifdef GNU_LINUX
+
 /* Data type of load average, as read out of kmem.  */
 
 #define LOAD_AVE_TYPE long
@@ -104,6 +109,72 @@
 
 #endif /* GNU_LINUX */
 
+/* Stuff for just HPUX.  */
+
+#ifdef __hpux
+
+/* Define VIRT_ADDR_VARIES if the virtual addresses of
+   pure and impure space as loaded can vary, and even their
+   relative order cannot be relied on.
+
+   Otherwise Emacs assumes that text space precedes data space,
+   numerically.  */
+
+#define VIRT_ADDR_VARIES
+
+/* the data segment on this machine always starts at address 0x40000000. */
+
+#define DATA_SEG_BITS 0x40000000
+
+#define DATA_START    0x40000000
+#define TEXT_START    0x00000000
+
+/* This machine requires completely different unexec code
+   which lives in a separate file.  Specify the file name.  */
+
+#define UNEXEC unexhp9k800.o
+
+#define LIBS_MACHINE
+#define LIBS_DEBUG
+
+/* Include the file bsdtty.h, since this machine has job control.  */
+#define NEED_BSDTTY
+
+/* Data type of load average, as read out of kmem.  */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0  */
+
+#define LOAD_AVE_CVT(x) ((int) (x * 100.0))
+
+/* The symbol in the kernel where the load average is found
+   is named _avenrun.  At this time there are two major flavors
+   of hp-ux (there is the s800 and s300 (s200) flavors).  The
+   differences are thusly moved to the corresponding machine description file.
+*/
+
+/* no underscore please */
+#define LDAV_SYMBOL "avenrun"
+
+#if 0   /* Supposedly no longer true.  */
+/* In hpux, for unknown reasons, S_IFLNK is defined even though
+   symbolic links do not exist.
+   Make sure our conditionals based on S_IFLNK are not confused.
+
+   Here we assume that stat.h is included before config.h
+   so that we can override it here.  */
+
+#undef S_IFLNK
+#endif
+
+/* On USG systems these have different names. */
+
+#define index strchr
+#define rindex strrchr
+
+#endif /* __hpux */
+
 /* Systems with GCC don't need to lose. */
 #ifdef __NetBSD__
 # ifdef __GNUC__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/m/sr2k.h	Sun Apr 22 12:42:47 2007 +0000
@@ -0,0 +1,160 @@
+/* machine description file for Hitachi SR2001/SR2201 machines.
+   Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005,
+                 2006, 2007  Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
+
+
+/* The following line tells the configuration script what sort of
+   operating system this machine is likely to run.
+   USUAL-OPSYS="hpux"  */
+
+/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
+   is the most significant byte.  */
+
+#define WORDS_BIG_ENDIAN
+
+/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
+ * group of arguments and treat it as an array of the arguments.  */
+
+#define NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts.  */
+
+#undef WORD_MACHINE
+
+/* Now define a symbol for the cpu type, if your compiler
+   does not define it automatically:
+   Ones defined so far include vax, m68000, ns16000, pyramid,
+   orion, tahoe, APOLLO and many others */
+#ifndef hp9000s800
+#	define hp9000s800
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines.  */
+
+#define NO_UNION_TYPE
+
+/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
+   the bit field into an int.  In other words, if bit fields
+   are always unsigned.
+
+   If you use NO_UNION_TYPE, this flag does not matter.  */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* The standard definitions of these macros would work ok,
+   but these are faster because the constants are short. */
+
+
+#define XUINT(a) (((unsigned)(a) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS)
+
+#define XSET(var, type, ptr) \
+   ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS))
+
+/* #ifdef __hpux */
+/* Now define a symbol for the cpu type, if your compiler
+   does not define it automatically:
+   Ones defined so far include vax, m68000, ns16000, pyramid,
+   orion, tahoe, APOLLO and many others */
+
+#ifndef hp9000s800
+#     define hp9000s800
+#endif
+
+
+/* Data type of load average, as read out of kmem.  */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0  */
+
+#define LOAD_AVE_CVT(x) ((int) (x * 100.0))
+
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+   Then the function dump-emacs will not be defined
+   and temacs will do (load "loadup") automatically unless told otherwise.  */
+
+#undef CANNOT_DUMP
+
+/* Define VIRT_ADDR_VARIES if the virtual addresses of
+   pure and impure space as loaded can vary, and even their
+   relative order cannot be relied on.
+
+   Otherwise Emacs assumes that text space precedes data space,
+   numerically.  */
+
+#define VIRT_ADDR_VARIES
+
+/* the data segment on this machine always starts at address 0x40000000. */
+
+#define DATA_SEG_BITS 0x40000000
+
+#define DATA_START    0x40000000
+#define TEXT_START    0x00000000
+
+/* Define NO_REMAP if memory segmentation makes it not work well
+   to change the boundary between the text section and data section
+   when Emacs is dumped.  If you define this, the preloaded Lisp
+   code will not be sharable; but that's better than failing completely.  */
+
+#define NO_REMAP
+
+/* This machine requires completely different unexec code
+   which lives in a separate file.  Specify the file name.  */
+
+#define UNEXEC unexhp9k800.o
+
+#define LIBS_MACHINE
+#define LIBS_DEBUG
+
+/* Include the file bsdtty.h, since this machine has job control.  */
+/* #define NEED_BSDTTY */
+
+/* The symbol in the kernel where the load average is found
+   is named _avenrun.  At this time there are two major flavors
+   of hp-ux (there is the s800 and s300 (s200) flavors).  The
+   differences are thusly moved to the corresponding machine description file.
+*/
+
+/* no underscore please */
+#define LDAV_SYMBOL "avenrun"
+
+#if 0   /* Supposedly no longer true.  */
+/* In hpux, for unknown reasons, S_IFLNK is defined even though
+   symbolic links do not exist.
+   Make sure our conditionals based on S_IFLNK are not confused.
+
+   Here we assume that stat.h is included before config.h
+   so that we can override it here.  */
+
+#undef S_IFLNK
+#endif
+
+/* On USG systems these have different names. */
+
+#define index strchr
+#define rindex strrchr
+
+/* #endif */
+
+/* arch-tag: 4ced5b51-ffe6-4be1-9954-eb40657023a5
+   (do not change this comment) */
--- a/src/mac.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/mac.c	Sun Apr 22 12:42:47 2007 +0000
@@ -1835,6 +1835,8 @@
       if (app_id == NULL)
 	goto out;
     }
+  if (!CFPreferencesAppSynchronize (app_id))
+    goto out;
 
   key_set = CFSetCreateMutable (NULL, 0, &kCFCopyStringSetCallBacks);
   if (key_set == NULL)
@@ -4650,6 +4652,9 @@
       if (app_id == NULL)
 	goto out;
     }
+  if (!CFPreferencesAppSynchronize (app_id))
+    goto out;
+
   key_str = cfstring_create_with_string (XCAR (key));
   if (key_str == NULL)
     goto out;
--- a/src/macfns.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/macfns.c	Sun Apr 22 12:42:47 2007 +0000
@@ -3105,8 +3105,8 @@
      Lisp_Object display;
 {
   struct mac_display_info *dpyinfo = check_x_display_info (display);
-
-  /* Only of the main display.  */
+  float mm_per_pixel;
+
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
 #if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
   if (CGDisplayScreenSize != NULL)
@@ -3116,9 +3116,8 @@
 
       BLOCK_INPUT;
       size = CGDisplayScreenSize (kCGDirectMainDisplay);
+      mm_per_pixel = size.height / CGDisplayPixelsHigh (kCGDirectMainDisplay);
       UNBLOCK_INPUT;
-
-      return make_number ((int) (size.height + .5f));
     }
 #if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
   else
@@ -3127,9 +3126,11 @@
 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
     {
       /* This is an approximation.  */
-      return make_number ((int) (dpyinfo->height * 25.4 / dpyinfo->resy));
+      mm_per_pixel = 25.4f / dpyinfo->resy;
     }
 #endif
+
+  return make_number ((int) (dpyinfo->height * mm_per_pixel + 0.5f));
 }
 
 DEFUN ("x-display-mm-width", Fx_display_mm_width, Sx_display_mm_width, 0, 1, 0,
@@ -3141,8 +3142,8 @@
      Lisp_Object display;
 {
   struct mac_display_info *dpyinfo = check_x_display_info (display);
-
-  /* Only of the main display.  */
+  float mm_per_pixel;
+
 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
 #if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
   if (CGDisplayScreenSize != NULL)
@@ -3152,9 +3153,8 @@
 
       BLOCK_INPUT;
       size = CGDisplayScreenSize (kCGDirectMainDisplay);
+      mm_per_pixel = size.width / CGDisplayPixelsWide (kCGDirectMainDisplay);
       UNBLOCK_INPUT;
-
-      return make_number ((int) (size.width + .5f));
     }
 #if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
   else
@@ -3163,9 +3163,11 @@
 #if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
     {
       /* This is an approximation.  */
-      return make_number ((int) (dpyinfo->width * 25.4 / dpyinfo->resx));
+      mm_per_pixel = 25.4f / dpyinfo->resx;
     }
 #endif
+
+  return make_number ((int) (dpyinfo->width * mm_per_pixel + 0.5f));
 }
 
 DEFUN ("x-display-backing-store", Fx_display_backing_store,
@@ -4115,6 +4117,8 @@
        doc: /* Show STRING in a "tooltip" window on frame FRAME.
 A tooltip window is a small window displaying a string.
 
+This is an internal function; Lisp code should call `tooltip-show'.
+
 FRAME nil or omitted means use the selected frame.
 
 PARMS is an optional list of frame parameters which can be used to
--- a/src/macselect.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/macselect.c	Sun Apr 22 12:42:47 2007 +0000
@@ -386,7 +386,9 @@
     {
       ScrapFlavorType flavor_type = 0;
 
-      if (CONSP (XCAR (rest)) && SYMBOLP (target_type = XCAR (XCAR (rest)))
+      if (CONSP (XCAR (rest))
+	  && (target_type = XCAR (XCAR (rest)),
+	      SYMBOLP (target_type))
 	  && (flavor_type = scrap_has_target_type (scrap, target_type)))
 	{
 	  result = Fcons (target_type, result);
@@ -449,9 +451,11 @@
       for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest))
 	{
 	  if (!(CONSP (XCAR (rest))
-		&& SYMBOLP (type = XCAR (XCAR (rest)))
+		&& (type = XCAR (XCAR (rest)),
+		    SYMBOLP (type))
 		&& valid_scrap_target_type_p (type)
-		&& SYMBOLP (handler_fn = XCDR (XCAR (rest)))))
+		&& (handler_fn = XCDR (XCAR (rest)),
+		    SYMBOLP (handler_fn))))
 	    continue;
 
 	  if (!NILP (handler_fn))
@@ -1852,10 +1856,7 @@
 
 The function should return the value to send to the Scrap Manager
 \(must be a string).  A return value of nil
-means that the conversion could not be done.
-A return value which is the symbol `NULL'
-means that a side-effect was executed,
-and there is no meaningful selection value.  */);
+means that the conversion could not be done.  */);
   Vselection_converter_alist = Qnil;
 
   DEFVAR_LISP ("x-lost-selection-functions", &Vx_lost_selection_functions,
--- a/src/macterm.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/macterm.c	Sun Apr 22 12:42:47 2007 +0000
@@ -52,6 +52,7 @@
 #include <LowMem.h>
 #include <Controls.h>
 #include <Windows.h>
+#include <Displays.h>
 #if defined (__MRC__) || (__MSL__ >= 0x6000)
 #include <ControlDefinitions.h>
 #endif
@@ -7172,11 +7173,14 @@
       Lisp_Object existing_info;
 
       if (!(CONSP (charset_info)
-	    && STRINGP (charset = XCAR (charset_info))
+	    && (charset = XCAR (charset_info),
+		STRINGP (charset))
 	    && CONSP (XCDR (charset_info))
-	    && INTEGERP (text_encoding = XCAR (XCDR (charset_info)))
+	    && (text_encoding = XCAR (XCDR (charset_info)),
+		INTEGERP (text_encoding))
 	    && CONSP (XCDR (XCDR (charset_info)))
-	    && SYMBOLP (coding_system = XCAR (XCDR (XCDR (charset_info))))))
+	    && (coding_system = XCAR (XCDR (XCDR (charset_info))),
+		SYMBOLP (coding_system))))
 	continue;
 
       existing_info = assq_no_quit (text_encoding, result);
@@ -8866,6 +8870,9 @@
    Carbon/Apple event handlers.  */
 static struct input_event *read_socket_inev = NULL;
 
+/* Whether or not the screen configuration has changed.  */
+static int mac_screen_config_changed = 0;
+
 Point saved_menu_event_location;
 
 /* Apple Events */
@@ -10396,6 +10403,87 @@
 }
 
 
+static pascal void
+mac_handle_dm_notification (event)
+     AppleEvent *event;
+{
+  mac_screen_config_changed = 1;
+}
+
+static OSErr
+init_dm_notification_handler ()
+{
+  OSErr err;
+  static DMNotificationUPP handle_dm_notificationUPP = NULL;
+  ProcessSerialNumber psn;
+
+  if (handle_dm_notificationUPP == NULL)
+    handle_dm_notificationUPP =
+      NewDMNotificationUPP (mac_handle_dm_notification);
+
+  err = GetCurrentProcess (&psn);
+  if (err == noErr)
+    err = DMRegisterNotifyProc (handle_dm_notificationUPP, &psn);
+
+  return err;
+}
+
+static void
+mac_get_screen_info (dpyinfo)
+     struct mac_display_info *dpyinfo;
+{
+#ifdef MAC_OSX
+  /* HasDepth returns true if it is possible to have a 32 bit display,
+     but this may not be what is actually used.  Mac OSX can do better.  */
+  dpyinfo->color_p = CGDisplaySamplesPerPixel (kCGDirectMainDisplay) > 1;
+  dpyinfo->n_planes = CGDisplayBitsPerPixel (kCGDirectMainDisplay);
+  {
+    CGDisplayErr err;
+    CGDisplayCount ndisps;
+    CGDirectDisplayID *displays;
+
+    err = CGGetActiveDisplayList (0, NULL, &ndisps);
+    if (err == noErr)
+      {
+	displays = alloca (sizeof (CGDirectDisplayID) * ndisps);
+	err = CGGetActiveDisplayList (ndisps, displays, &ndisps);
+      }
+    if (err == noErr)
+      {
+	CGRect bounds = CGRectZero;
+
+	while (ndisps-- > 0)
+	  bounds = CGRectUnion (bounds, CGDisplayBounds (displays[ndisps]));
+	dpyinfo->height = CGRectGetHeight (bounds);
+	dpyinfo->width = CGRectGetWidth (bounds);
+      }
+    else
+      {
+	dpyinfo->height = CGDisplayPixelsHigh (kCGDirectMainDisplay);
+	dpyinfo->width = CGDisplayPixelsWide (kCGDirectMainDisplay);
+      }
+  }
+#else  /* !MAC_OSX */
+  {
+    GDHandle gdh = GetMainDevice ();
+    Rect rect = (**gdh).gdRect;
+
+    dpyinfo->color_p = TestDeviceAttribute (gdh, gdDevType);
+    for (dpyinfo->n_planes = 32; dpyinfo->n_planes > 0; dpyinfo->n_planes >>= 1)
+      if (HasDepth (gdh, dpyinfo->n_planes, gdDevType, dpyinfo->color_p))
+	break;
+
+    for (gdh = DMGetFirstScreenDevice (dmOnlyActiveDisplays); gdh;
+	 gdh = DMGetNextScreenDevice (gdh, dmOnlyActiveDisplays))
+      UnionRect (&rect, &(**gdh).gdRect, &rect);
+
+    dpyinfo->height = rect.bottom - rect.top;
+    dpyinfo->width = rect.right - rect.left;
+  }
+#endif  /* !MAC_OSX */
+}
+
+
 #if __profile__
 void
 profiler_exit_proc ()
@@ -10453,6 +10541,8 @@
 
   init_apple_event_handler ();
 
+  init_dm_notification_handler ();
+
   {
     char **argv;
     int argc = 0;
@@ -10530,8 +10620,7 @@
     {
       Point mouse_pos;
 
-      GetMouse (&mouse_pos);
-      LocalToGlobal (&mouse_pos);
+      GetGlobalMouse (&mouse_pos);
       err = SetEventParameter (event, kEventParamMouseLocation, typeQDPoint,
 			       sizeof (Point), &mouse_pos);
     }
@@ -11375,6 +11464,12 @@
       pending_autoraise_frame = 0;
     }
 
+  if (mac_screen_config_changed)
+    {
+      mac_get_screen_info (dpyinfo);
+      mac_screen_config_changed = 0;
+    }
+
 #if !USE_CARBON_EVENTS
   /* Check which frames are still visible.  We do this here because
      there doesn't seem to be any direct notification from the Window
@@ -11509,62 +11604,7 @@
 			    Initialization
  ***********************************************************************/
 
-int mac_initialized = 0;
-
-void
-mac_initialize_display_info ()
-{
-  struct mac_display_info *dpyinfo = &one_mac_display_info;
-
-  bzero (dpyinfo, sizeof (*dpyinfo));
-
-#ifdef MAC_OSX
-  dpyinfo->mac_id_name
-    = (char *) xmalloc (SCHARS (Vinvocation_name)
-			+ SCHARS (Vsystem_name)
-			+ 2);
-  sprintf (dpyinfo->mac_id_name, "%s@%s",
-	   SDATA (Vinvocation_name), SDATA (Vsystem_name));
-#else
-  dpyinfo->mac_id_name = (char *) xmalloc (strlen ("Mac Display") + 1);
-  strcpy (dpyinfo->mac_id_name, "Mac Display");
-#endif
-
-  dpyinfo->reference_count = 0;
-  dpyinfo->resx = 72.0;
-  dpyinfo->resy = 72.0;
-#ifdef MAC_OSX
-  /* HasDepth returns true if it is possible to have a 32 bit display,
-     but this may not be what is actually used.  Mac OSX can do better.  */
-  dpyinfo->color_p = CGDisplaySamplesPerPixel (kCGDirectMainDisplay) > 1;
-  dpyinfo->n_planes = CGDisplayBitsPerPixel (kCGDirectMainDisplay);
-  dpyinfo->height = CGDisplayPixelsHigh (kCGDirectMainDisplay);
-  dpyinfo->width = CGDisplayPixelsWide (kCGDirectMainDisplay);
-#else
-  {
-    GDHandle main_device_handle = LMGetMainDevice();
-
-    dpyinfo->color_p = TestDeviceAttribute (main_device_handle, gdDevType);
-    for (dpyinfo->n_planes = 32; dpyinfo->n_planes > 0; dpyinfo->n_planes >>= 1)
-      if (HasDepth (main_device_handle, dpyinfo->n_planes,
-		    gdDevType, dpyinfo->color_p))
-	break;
-    dpyinfo->height = (**main_device_handle).gdRect.bottom;
-    dpyinfo->width = (**main_device_handle).gdRect.right;
-  }
-#endif
-  dpyinfo->grabbed = 0;
-  dpyinfo->root_window = NULL;
-  dpyinfo->image_cache = make_image_cache ();
-
-  dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
-  dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
-  dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID;
-  dpyinfo->mouse_face_window = Qnil;
-  dpyinfo->mouse_face_overlay = Qnil;
-  dpyinfo->mouse_face_hidden = 0;
-}
-
+static int mac_initialized = 0;
 
 static XrmDatabase
 mac_make_rdb (xrm_option)
@@ -11598,9 +11638,37 @@
   if (x_display_list)
     error ("Sorry, this version can only handle one display");
 
-  mac_initialize_display_info ();
-
   dpyinfo = &one_mac_display_info;
+  bzero (dpyinfo, sizeof (*dpyinfo));
+
+#ifdef MAC_OSX
+  dpyinfo->mac_id_name
+    = (char *) xmalloc (SCHARS (Vinvocation_name)
+			+ SCHARS (Vsystem_name)
+			+ 2);
+  sprintf (dpyinfo->mac_id_name, "%s@%s",
+	   SDATA (Vinvocation_name), SDATA (Vsystem_name));
+#else
+  dpyinfo->mac_id_name = (char *) xmalloc (strlen ("Mac Display") + 1);
+  strcpy (dpyinfo->mac_id_name, "Mac Display");
+#endif
+
+  dpyinfo->reference_count = 0;
+  dpyinfo->resx = 72.0;
+  dpyinfo->resy = 72.0;
+
+  mac_get_screen_info (dpyinfo);
+
+  dpyinfo->grabbed = 0;
+  dpyinfo->root_window = NULL;
+  dpyinfo->image_cache = make_image_cache ();
+
+  dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
+  dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
+  dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID;
+  dpyinfo->mouse_face_window = Qnil;
+  dpyinfo->mouse_face_overlay = Qnil;
+  dpyinfo->mouse_face_hidden = 0;
 
   dpyinfo->xrdb = mac_make_rdb (xrm_option);
 
@@ -11618,6 +11686,7 @@
 
   return dpyinfo;
 }
+
 /* Get rid of display DPYINFO, assuming all frames are already gone.  */
 
 void
@@ -11838,6 +11907,8 @@
 
   init_apple_event_handler ();
 
+  init_dm_notification_handler ();
+
   if (!inhibit_window_system)
     {
       static const ProcessSerialNumber psn = {0, kCurrentProcess};
--- a/src/print.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/print.c	Sun Apr 22 12:42:47 2007 +0000
@@ -796,7 +796,7 @@
   Lisp_Object printcharfun;
   /* struct gcpro gcpro1, gcpro2; */
   Lisp_Object save_deactivate_mark;
-  int count = specpdl_ptr - specpdl;
+  int count = SPECPDL_INDEX ();
   struct buffer *previous;
 
   specbind (Qinhibit_modification_hooks, Qt);
--- a/src/process.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/process.c	Sun Apr 22 12:42:47 2007 +0000
@@ -1268,7 +1268,7 @@
   if (VECTORP (address))  /* AF_INET or AF_INET6 */
     {
       register struct Lisp_Vector *p = XVECTOR (address);
-      Lisp_Object args[6];
+      Lisp_Object args[10];
       int nargs, i;
 
       if (p->size == 4 || (p->size == 5 && !NILP (omit_port)))
@@ -1295,7 +1295,20 @@
 	return Qnil;
 
       for (i = 0; i < nargs; i++)
-	args[i+1] = p->contents[i];
+	{
+	  EMACS_INT element = XINT (p->contents[i]);
+
+	  if (element < 0 || element > 65535)
+	    return Qnil;
+
+	  if (nargs <= 5         /* IPv4 */
+	      && i < 4           /* host, not port */
+	      && element > 255)
+	    return Qnil;
+
+	  args[i+1] = p->contents[i];
+	}
+
       return Fformat (nargs+1, args);
     }
 
@@ -1305,7 +1318,6 @@
       args[0] = build_string ("<Family %d>");
       args[1] = Fcar (address);
       return Fformat (2, args);
-
     }
 
   return Qnil;
@@ -1411,7 +1423,6 @@
       if (CONSP (p->status))
 	symbol = XCAR (p->status);
 
-
       if (EQ (symbol, Qsignal))
 	{
 	  Lisp_Object tem;
@@ -4811,8 +4822,8 @@
 		 subprocess termination and SIGCHLD.  */
 	      else if (nread == 0 && !NETCONN_P (proc))
 		;
-#endif				/* O_NDELAY */
-#endif				/* O_NONBLOCK */
+#endif /* O_NDELAY */
+#endif /* O_NONBLOCK */
 #ifdef HAVE_PTYS
 	      /* On some OSs with ptys, when the process on one end of
 		 a pty exits, the other end gets an error reading with
@@ -4823,11 +4834,17 @@
 		 get a SIGCHLD).
 
 		 However, it has been known to happen that the SIGCHLD
-		 got lost.  So raise the signl again just in case.
+		 got lost.  So raise the signal again just in case.
 		 It can't hurt.  */
 	      else if (nread == -1 && errno == EIO)
-		kill (getpid (), SIGCHLD);
-#endif				/* HAVE_PTYS */
+		{
+		  /* Clear the descriptor now, so we only raise the signal once.  */
+		  FD_CLR (channel, &input_wait_mask);
+		  FD_CLR (channel, &non_keyboard_wait_mask);
+
+		  kill (getpid (), SIGCHLD);
+		}
+#endif /* HAVE_PTYS */
 	      /* If we can detect process termination, don't consider the process
 		 gone just because its pipe is closed.  */
 #ifdef SIGCHLD
@@ -6506,17 +6523,12 @@
 #define WUNTRACED 0
 #endif /* no WUNTRACED */
       /* Keep trying to get a status until we get a definitive result.  */
-      while (1)
-	{
+      do
+        {
 	  errno = 0;
 	  pid = wait3 (&w, WNOHANG | WUNTRACED, 0);
-	  if (! (pid < 0 && errno == EINTR))
-	    break;
-	  /* Avoid a busyloop: wait3 is a system call, so we do not want
-	     to prevent the kernel from actually sending SIGCHLD to emacs
-	     by asking for it all the time.  */
-	  sleep (1);
 	}
+      while (pid < 0 && errno == EINTR);
 
       if (pid <= 0)
 	{
--- a/src/s/darwin.h	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/s/darwin.h	Sun Apr 22 12:42:47 2007 +0000
@@ -121,7 +121,7 @@
  * default for process-connection-type dependent on the kernel
  * version.
  */
-#define MIN_PTY_KERNEL_VERSION '7' 
+#define MIN_PTY_KERNEL_VERSION '7'
 
 /*
  *	Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
@@ -216,9 +216,6 @@
    also the name of a Mach system call.  */
 #define init_process emacs_init_process
 
-/* Fix compilation problem for regex.c.  */
-#define __restrict
-
 /* Used in dispnew.c.  Copied from freebsd.h. */
 #define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
 
@@ -262,9 +259,8 @@
 
 /* Definitions for how to compile & link.  */
 
-/* Indicate that we are compiling for Mac OS X and where to find Mac
-   specific headers.  */
-#define C_SWITCH_SYSTEM -fpascal-strings -DMAC_OSX -I../mac/src
+/* Indicate that we are compiling for Mac OS X.  */
+#define C_SWITCH_SYSTEM -fpascal-strings -DMAC_OSX
 
 /* Link in the Carbon lib. */
 #ifdef HAVE_CARBON
@@ -317,13 +313,6 @@
 #define NO_MATHERR
 
 
-/* This prevents a compilation error in xfaces.c: struct kboard * is
-   used in a function protocol the first time this type appears in the
-   file, since MULTI_KBOARD is undefined for the Mac OS X build.  */
-#ifndef NOT_C_CODE
-struct kboard;
-#endif
-
 /* The following solves the problem that Emacs hangs when evaluating
    (make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile
    does not exist.  */
--- a/src/undo.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/undo.c	Sun Apr 22 12:42:47 2007 +0000
@@ -548,6 +548,8 @@
 		  beg = Fcar (cdr);
 		  end = Fcdr (cdr);
 
+		  if (XINT (beg) < BEGV || XINT (end) > ZV)
+		    error ("Changes to be undone are outside visible portion of buffer");
 		  Fput_text_property (beg, end, prop, val, Qnil);
 		}
 	      else if (INTEGERP (car) && INTEGERP (cdr))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/unexhp9k800.c	Sun Apr 22 12:42:47 2007 +0000
@@ -0,0 +1,334 @@
+/* Unexec for HP 9000 Series 800 machines.
+
+  This file is in the public domain.
+
+  Author: John V. Morris
+
+  This file was written by John V. Morris at Hewlett Packard.
+  Both the author and Hewlett Packard Co. have disclaimed the
+  copyright on this file, and it is therefore in the public domain.
+  (Search for "hp9k800" in copyright.list.)
+*/
+
+/*
+   Bob Desinger <hpsemc!bd@hplabs.hp.com>
+
+   Note that the GNU project considers support for HP operation a
+   peripheral activity which should not be allowed to divert effort
+   from development of the GNU system.  Changes in this code will be
+   installed when users send them in, but aside from that we don't
+   plan to think about it, or about whether other Emacs maintenance
+   might break it.
+
+
+  Unexec creates a copy of the old a.out file, and replaces the old data
+  area with the current data area.  When the new file is executed, the
+  process will see the same data structures and data values that the
+  original process had when unexec was called.
+
+  Unlike other versions of unexec, this one copies symbol table and
+  debug information to the new a.out file.  Thus, the new a.out file
+  may be debugged with symbolic debuggers.
+
+  If you fix any bugs in this, I'd like to incorporate your fixes.
+  Send them to uunet!hpda!hpsemc!jmorris or jmorris%hpsemc@hplabs.HP.COM.
+
+  CAVEATS:
+  This routine saves the current value of all static and external
+  variables.  This means that any data structure that needs to be
+  initialized must be explicitly reset.  Variables will not have their
+  expected default values.
+
+  Unfortunately, the HP-UX signal handler has internal initialization
+  flags which are not explicitly reset.  Thus, for signals to work in
+  conjunction with this routine, the following code must executed when
+  the new process starts up.
+
+  void _sigreturn ();
+  ...
+  sigsetreturn (_sigreturn);
+*/
+
+#ifdef emacs
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include <a.out.h>
+
+#ifdef HPUX_USE_SHLIBS
+#include <dl.h>
+#endif
+
+/* brk value to restore, stored as a global.
+   This is really used only if we used shared libraries.  */
+static long brk_on_dump = 0;
+
+/* Called from main, if we use shared libraries.  */
+int
+run_time_remap (ignored)
+     char *ignored;
+{
+  brk ((char *) brk_on_dump);
+}
+
+#undef roundup
+#define roundup(x,n) (((x) + ((n) - 1)) & ~((n) - 1))  /* n is power of 2 */
+#define min(x,y)  (((x) < (y)) ? (x) : (y))
+
+
+/* Create a new a.out file, same as old but with current data space */
+
+unexec (new_name, old_name, new_end_of_text, dummy1, dummy2)
+     char new_name[];		/* name of the new a.out file to be created */
+     char old_name[];		/* name of the old a.out file */
+     char *new_end_of_text;	/* ptr to new edata/etext; NOT USED YET */
+     int dummy1, dummy2;	/* not used by emacs */
+{
+  int old, new;
+  int old_size, new_size;
+  struct header hdr;
+  struct som_exec_auxhdr auxhdr;
+  long i;
+
+  /* For the greatest flexibility, should create a temporary file in
+     the same directory as the new file.  When everything is complete,
+     rename the temp file to the new name.
+     This way, a program could update its own a.out file even while
+     it is still executing.  If problems occur, everything is still
+     intact.  NOT implemented.  */
+
+  /* Open the input and output a.out files */
+  old = open (old_name, O_RDONLY);
+  if (old < 0)
+    { perror (old_name); exit (1); }
+  new = open (new_name, O_CREAT|O_RDWR|O_TRUNC, 0777);
+  if (new < 0)
+    { perror (new_name); exit (1); }
+
+  /* Read the old headers */
+  read_header (old, &hdr, &auxhdr);
+
+  brk_on_dump = (long) sbrk (0);
+
+  /* Decide how large the new and old data areas are */
+  old_size = auxhdr.exec_dsize;
+  /* I suspect these two statements are separate
+     to avoid a compiler bug in hpux version 8.  */
+  i = (long) sbrk (0);
+  new_size = i - auxhdr.exec_dmem;
+
+  /* Copy the old file to the new, up to the data space */
+  lseek (old, 0, 0);
+  copy_file (old, new, auxhdr.exec_dfile);
+
+  /* Skip the old data segment and write a new one */
+  lseek (old, old_size, 1);
+  save_data_space (new, &hdr, &auxhdr, new_size);
+
+  /* Copy the rest of the file */
+  copy_rest (old, new);
+
+  /* Update file pointers since we probably changed size of data area */
+  update_file_ptrs (new, &hdr, &auxhdr, auxhdr.exec_dfile, new_size-old_size);
+
+  /* Save the modified header */
+  write_header (new, &hdr, &auxhdr);
+
+  /* Close the binary file */
+  close (old);
+  close (new);
+  return 0;
+}
+
+/* Save current data space in the file, update header.  */
+
+save_data_space (file, hdr, auxhdr, size)
+     int file;
+     struct header *hdr;
+     struct som_exec_auxhdr *auxhdr;
+     int size;
+{
+  /* Write the entire data space out to the file */
+  if (write (file, auxhdr->exec_dmem, size) != size)
+    { perror ("Can't save new data space"); exit (1); }
+
+  /* Update the header to reflect the new data size */
+  auxhdr->exec_dsize = size;
+  auxhdr->exec_bsize = 0;
+}
+
+/* Update the values of file pointers when something is inserted.  */
+
+update_file_ptrs (file, hdr, auxhdr, location, offset)
+     int file;
+     struct header *hdr;
+     struct som_exec_auxhdr *auxhdr;
+     unsigned int location;
+     int offset;
+{
+  struct subspace_dictionary_record subspace;
+  int i;
+
+  /* Increase the overall size of the module */
+  hdr->som_length += offset;
+
+  /* Update the various file pointers in the header */
+#define update(ptr) if (ptr > location) ptr = ptr + offset
+  update (hdr->aux_header_location);
+  update (hdr->space_strings_location);
+  update (hdr->init_array_location);
+  update (hdr->compiler_location);
+  update (hdr->symbol_location);
+  update (hdr->fixup_request_location);
+  update (hdr->symbol_strings_location);
+  update (hdr->unloadable_sp_location);
+  update (auxhdr->exec_tfile);
+  update (auxhdr->exec_dfile);
+
+  /* Do for each subspace dictionary entry */
+  lseek (file, hdr->subspace_location, 0);
+  for (i = 0; i < hdr->subspace_total; i++)
+    {
+      if (read (file, &subspace, sizeof (subspace)) != sizeof (subspace))
+	{ perror ("Can't read subspace record"); exit (1); }
+
+      /* If subspace has a file location, update it */
+      if (subspace.initialization_length > 0
+	  && subspace.file_loc_init_value > location)
+	{
+	  subspace.file_loc_init_value += offset;
+	  lseek (file, -sizeof (subspace), 1);
+	  if (write (file, &subspace, sizeof (subspace)) != sizeof (subspace))
+	    { perror ("Can't update subspace record"); exit (1); }
+	}
+    }
+
+  /* Do for each initialization pointer record */
+  /* (I don't think it applies to executable files, only relocatables) */
+#undef update
+}
+
+/* Read in the header records from an a.out file.  */
+
+read_header (file, hdr, auxhdr)
+     int file;
+     struct header *hdr;
+     struct som_exec_auxhdr *auxhdr;
+{
+
+  /* Read the header in */
+  lseek (file, 0, 0);
+  if (read (file, hdr, sizeof (*hdr)) != sizeof (*hdr))
+    { perror ("Couldn't read header from a.out file"); exit (1); }
+
+  if (hdr->a_magic != EXEC_MAGIC && hdr->a_magic != SHARE_MAGIC
+      &&  hdr->a_magic != DEMAND_MAGIC)
+    {
+      fprintf (stderr, "a.out file doesn't have legal magic number\n");
+      exit (1);
+    }
+
+  lseek (file, hdr->aux_header_location, 0);
+  if (read (file, auxhdr, sizeof (*auxhdr)) != sizeof (*auxhdr))
+    {
+      perror ("Couldn't read auxiliary header from a.out file");
+      exit (1);
+    }
+}
+
+/* Write out the header records into an a.out file.  */
+
+write_header (file, hdr, auxhdr)
+     int file;
+     struct header *hdr;
+     struct som_exec_auxhdr *auxhdr;
+{
+  /* Update the checksum */
+  hdr->checksum = calculate_checksum (hdr);
+
+  /* Write the header back into the a.out file */
+  lseek (file, 0, 0);
+  if (write (file, hdr, sizeof (*hdr)) != sizeof (*hdr))
+    { perror ("Couldn't write header to a.out file"); exit (1); }
+  lseek (file, hdr->aux_header_location, 0);
+  if (write (file, auxhdr, sizeof (*auxhdr)) != sizeof (*auxhdr))
+    { perror ("Couldn't write auxiliary header to a.out file"); exit (1); }
+}
+
+/* Calculate the checksum of a SOM header record. */
+
+calculate_checksum (hdr)
+     struct header *hdr;
+{
+  int checksum, i, *ptr;
+
+  checksum = 0;  ptr = (int *) hdr;
+
+  for (i = 0; i < sizeof (*hdr) / sizeof (int) - 1; i++)
+    checksum ^= ptr[i];
+
+  return (checksum);
+}
+
+/* Copy size bytes from the old file to the new one.  */
+
+copy_file (old, new, size)
+     int new, old;
+     int size;
+{
+  int len;
+  int buffer[8192];  /* word aligned will be faster */
+
+  for (; size > 0; size -= len)
+    {
+      len = min (size, sizeof (buffer));
+      if (read (old, buffer, len) != len)
+	{ perror ("Read failure on a.out file"); exit (1); }
+      if (write (new, buffer, len) != len)
+	{ perror ("Write failure in a.out file"); exit (1); }
+    }
+}
+
+/* Copy the rest of the file, up to EOF.  */
+
+copy_rest (old, new)
+     int new, old;
+{
+  int buffer[4096];
+  int len;
+
+  /* Copy bytes until end of file or error */
+  while ((len = read (old, buffer, sizeof (buffer))) > 0)
+    if (write (new, buffer, len) != len) break;
+
+  if (len != 0)
+    { perror ("Unable to copy the rest of the file"); exit (1); }
+}
+
+#ifdef	DEBUG
+display_header (hdr, auxhdr)
+     struct header *hdr;
+     struct som_exec_auxhdr *auxhdr;
+{
+  /* Display the header information (debug) */
+  printf ("\n\nFILE HEADER\n");
+  printf ("magic number %d \n", hdr->a_magic);
+  printf ("text loc %.8x   size %d \n", auxhdr->exec_tmem, auxhdr->exec_tsize);
+  printf ("data loc %.8x   size %d \n", auxhdr->exec_dmem, auxhdr->exec_dsize);
+  printf ("entry     %x \n",   auxhdr->exec_entry);
+  printf ("Bss  segment size %u\n", auxhdr->exec_bsize);
+  printf ("\n");
+  printf ("data file loc %d    size %d\n",
+	  auxhdr->exec_dfile, auxhdr->exec_dsize);
+  printf ("som_length %d\n", hdr->som_length);
+  printf ("unloadable sploc %d    size %d\n",
+	  hdr->unloadable_sp_location, hdr->unloadable_sp_size);
+}
+#endif /* DEBUG */
+
+/* arch-tag: d55a09ac-9427-4ec4-8496-cb9d7710774f
+   (do not change this comment) */
--- a/src/w32fns.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/w32fns.c	Sun Apr 22 12:42:47 2007 +0000
@@ -7498,6 +7498,8 @@
        doc: /* Show STRING in a \"tooltip\" window on frame FRAME.
 A tooltip window is a small window displaying a string.
 
+This is an internal function; Lisp code should call `tooltip-show'.
+
 FRAME nil or omitted means use the selected frame.
 
 PARMS is an optional list of frame parameters which can be
--- a/src/widget.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/widget.c	Sun Apr 22 12:42:47 2007 +0000
@@ -953,9 +953,11 @@
 	 Xt when the default font is changed.  Tell Xt not to wait,
 	 depending on the value of the frame parameter
 	 `wait-for-wm'.  */
+      x_catch_errors (FRAME_X_DISPLAY (f));
       XtVaSetValues (f->output_data.x->widget,
 		     XtNwaitForWm, (XtArgVal) f->output_data.x->wait_for_wm,
 		     NULL);
+      x_uncatch_errors ();
 
       /* Workaround: When a SIGIO or SIGALRM occurs while Xt is
 	 waiting for a ConfigureNotify event (see above), this leads
@@ -972,6 +974,7 @@
 	 as is because I think it can't do any harm.  */
       /* In April 2002, simon.marshall@misys.com reports the problem
 	 seems not to occur any longer.  */
+      x_catch_errors (FRAME_X_DISPLAY (f));
       XtVaSetValues (f->output_data.x->widget,
       		     XtNheight, (XtArgVal) (outer_widget_height + hdelta),
 		     XtNwidth, (XtArgVal) (outer_widget_width + wdelta),
@@ -984,6 +987,8 @@
                      XtNheight, (XtArgVal) pixel_height,
       		     XtNwidth, (XtArgVal) pixel_width,
 		     NULL);
+      x_uncatch_errors ();
+
 #ifdef SIGIO
       sigunblock (sigmask (SIGIO));
 #endif
--- a/src/window.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/window.c	Sun Apr 22 12:42:47 2007 +0000
@@ -2316,6 +2316,8 @@
 
 DEFUN ("get-lru-window", Fget_lru_window, Sget_lru_window, 0, 2, 0,
        doc: /* Return the window least recently selected or used for display.
+\(LRU means Least Recently Used.)
+
 Return a full-width window if possible.
 A minibuffer window is never a candidate.
 A dedicated window is never a candidate, unless DEDICATED is non-nil,
--- a/src/xdisp.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/xdisp.c	Sun Apr 22 12:42:47 2007 +0000
@@ -12786,6 +12786,8 @@
   int rc;
   int centering_position = -1;
   int last_line_misfit = 0;
+  int save_beg_unchanged = BEG_UNCHANGED;
+  int save_end_unchanged = END_UNCHANGED;
 
   SET_TEXT_POS (lpoint, PT, PT_BYTE);
   opoint = lpoint;
@@ -13154,11 +13156,20 @@
 	  && NILP (do_mouse_tracking)
 	  && CHARPOS (startp) > BEGV)
 	{
-	  /* Make sure beg_unchanged and end_unchanged are up to date.
-	     Do it only if buffer has really changed.  This may or may
-	     not have been done by try_window_id (see which) already. */
+#if 0
+	  /* The following code tried to make BEG_UNCHANGED and
+	     END_UNCHANGED up to date (similar to try_window_id).
+	     Is it important to do so?
+
+	     The trouble is that it's a little too strict when it
+	     comes to overlays: modify_overlay can call
+	     BUF_COMPUTE_UNCHANGED, which alters BUF_BEG_UNCHANGED and
+	     BUF_END_UNCHANGED directly without moving the gap.
+
+	     This can result in spurious recentering when overlays are
+	     altered in the buffer.  So unless it's proven necessary,
+	     let's leave this commented out for now. -- cyd.  */
 	  if (MODIFF > SAVE_MODIFF
-	      /* This seems to happen sometimes after saving a buffer.  */
 	      || BEG_UNCHANGED + END_UNCHANGED > Z_BYTE)
 	    {
 	      if (GPT - BEG < BEG_UNCHANGED)
@@ -13166,9 +13177,10 @@
 	      if (Z - GPT < END_UNCHANGED)
 		END_UNCHANGED = Z - GPT;
 	    }
-
-	  if (CHARPOS (startp) > BEG + BEG_UNCHANGED
-	      && CHARPOS (startp) <= Z - END_UNCHANGED)
+#endif
+
+	  if (CHARPOS (startp) > BEG + save_beg_unchanged
+	      && CHARPOS (startp) <= Z - save_end_unchanged)
 	    {
 	      /* There doesn't seems to be a simple way to find a new
 		 window start that is near the old window start, so
@@ -15865,13 +15877,37 @@
 
   if (PT == MATRIX_ROW_END_CHARPOS (row))
     {
-      /* If the row ends with a newline from a string, we don't want
-	 the cursor there, but we still want it at the start of the
-	 string if the string starts in this row.
-	 If the row is continued it doesn't end in a newline.  */
+      /* Suppose the row ends on a string.
+	 Unless the row is continued, that means it ends on a newline
+	 in the string.  If it's anything other than a display string
+	 (e.g. a before-string from an overlay), we don't want the
+	 cursor there.  (This heuristic seems to give the optimal
+	 behavior for the various types of multi-line strings.)  */
       if (CHARPOS (row->end.string_pos) >= 0)
-	cursor_row_p = (row->continued_p
-			|| PT >= MATRIX_ROW_START_CHARPOS (row));
+	{
+	  if (row->continued_p)
+	    cursor_row_p = 1;
+	  else
+	    {
+	      /* Check for `display' property.  */
+	      struct glyph *beg = row->glyphs[TEXT_AREA];
+	      struct glyph *end = beg + row->used[TEXT_AREA] - 1;
+	      struct glyph *glyph;
+
+	      cursor_row_p = 0;
+	      for (glyph = end; glyph >= beg; --glyph)
+		if (STRINGP (glyph->object))
+		  {
+		    Lisp_Object prop
+		      = Fget_char_property (make_number (PT),
+					    Qdisplay, Qnil);
+		    cursor_row_p =
+		      (!NILP (prop)
+		       && display_prop_string_p (prop, glyph->object));
+		    break;
+		  }
+	    }
+	}
       else if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row))
 	{
 	  /* If the row ends in middle of a real character,
@@ -22451,7 +22487,7 @@
 
   Lisp_Object mouse_face;
   int original_x_pixel = x;
-  struct glyph * glyph = NULL;
+  struct glyph * glyph = NULL, * row_start_glyph = NULL;
   struct glyph_row *row;
 
   if (area == ON_MODE_LINE || area == ON_HEADER_LINE)
@@ -22469,7 +22505,7 @@
       /* Find glyph */
       if (row->mode_line_p && row->enabled_p)
 	{
-	  glyph = row->glyphs[TEXT_AREA];
+	  glyph = row_start_glyph = row->glyphs[TEXT_AREA];
 	  end = glyph + row->used[TEXT_AREA];
 
 	  for (x0 = original_x_pixel;
@@ -22593,12 +22629,17 @@
 	     is converted to a flatten by emacs lisp interpreter.
 	     The internal string is an element of the structures.
 	     The displayed string is the flatten string. */
-	  for (tmp_glyph = glyph - 1, gpos = 0;
-	       tmp_glyph->charpos >= XINT (b);
-	       tmp_glyph--, gpos++)
-	    {
-	      if (!EQ (tmp_glyph->object, glyph->object))
-		break;
+	  gpos = 0;
+	  if (glyph > row_start_glyph)
+	    {
+	      tmp_glyph = glyph - 1;
+	      while (tmp_glyph >= row_start_glyph
+		     && tmp_glyph->charpos >= XINT (b)
+		     && EQ (tmp_glyph->object, glyph->object))
+		{
+		  tmp_glyph--;
+		  gpos++;
+		}
 	    }
 
 	  /* Calculate the lenght(glyph sequence length: GSEQ_LENGTH) of
@@ -24081,7 +24122,7 @@
     doc: /* Maximum number of lines to keep in the message log buffer.
 If nil, disable message logging.  If t, log messages but don't truncate
 the buffer when it becomes large.  */);
-  Vmessage_log_max = make_number (50);
+  Vmessage_log_max = make_number (100);
 
   DEFVAR_LISP ("window-size-change-functions", &Vwindow_size_change_functions,
     doc: /* Functions called before redisplay, if window sizes have changed.
--- a/src/xfns.c	Sun Apr 22 12:12:29 2007 +0000
+++ b/src/xfns.c	Sun Apr 22 12:42:47 2007 +0000
@@ -5036,6 +5036,8 @@
        doc: /* Show STRING in a "tooltip" window on frame FRAME.
 A tooltip window is a small X window displaying a string.
 
+This is an internal function; Lisp code should call `tooltip-show'.
+
 FRAME nil or omitted means use the selected frame.
 
 PARMS is an optional list of frame parameters which can be used to