changeset 90116:29e773288013

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-23 Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0 (patch 150-165) - Update from CVS - Merge from gnus--rel--5.10 - Add info/dir to arch branch * miles@gnu.org--gnu-2005/gnus--rel--5.10 (patch 34-37) - Merge from emacs--cvs-trunk--0 - Update from CVS
author Miles Bader <miles@gnu.org>
date Wed, 09 Mar 2005 00:09:34 +0000
parents fb290921b93c (current diff) bbb951948fa8 (diff)
children 1913c17617fc
files ChangeLog admin/FOR-RELEASE configure configure.in etc/ChangeLog etc/NEWS leim/ChangeLog leim/quail/latin-pre.el lib-src/ChangeLog lib-src/make-docfile.c lisp/ChangeLog lisp/align.el lisp/apropos.el lisp/bindings.el lisp/calc/calc-embed.el lisp/custom.el lisp/emacs-lisp/debug.el lisp/emulation/cua-base.el lisp/facemenu.el lisp/faces.el lisp/font-lock.el lisp/frame.el lisp/gnus/ChangeLog lisp/gnus/message.el lisp/gnus/nnimap.el lisp/gnus/nnweb.el lisp/help-mode.el lisp/image-file.el lisp/info.el lisp/international/ccl.el lisp/jit-lock.el lisp/menu-bar.el lisp/novice.el lisp/progmodes/compile.el lisp/progmodes/gdb-ui.el lisp/reveal.el lisp/simple.el lisp/startup.el lisp/textmodes/flyspell.el lisp/textmodes/sgml-mode.el lisp/textmodes/texinfmt.el lispref/ChangeLog lispref/calendar.texi lispref/customize.texi lispref/debugging.texi lispref/display.texi lispref/edebug.texi lispref/elisp.texi lispref/files.texi lispref/frames.texi lispref/hash.texi lispref/internals.texi lispref/keymaps.texi lispref/lists.texi lispref/minibuf.texi lispref/modes.texi lispref/nonascii.texi lispref/objects.texi lispref/os.texi lispref/searching.texi lispref/streams.texi lispref/strings.texi lispref/text.texi lispref/windows.texi mac/ChangeLog mac/INSTALL mac/inc/config.h mac/makefile.MPW man/ChangeLog man/building.texi man/calendar.texi man/cmdargs.texi man/commands.texi man/custom.texi man/display.texi man/eshell.texi man/files.texi man/fixit.texi man/glossary.texi man/gnus.texi man/help.texi man/mh-e.texi man/mini.texi man/misc.texi man/pcl-cvs.texi man/programs.texi man/rmail.texi man/sending.texi man/text.texi man/woman.texi src/ChangeLog src/blockinput.h src/doc.c src/emacs.c src/eval.c src/fileio.c src/fontset.c src/fontset.h src/frame.c src/image.c src/keyboard.c src/lisp.h src/mac.c src/macfns.c src/macgui.h src/macmenu.c src/macterm.c src/macterm.h src/s/vms.h src/s/vms4-4.h src/s/vms5-5.h src/xdisp.c
diffstat 118 files changed, 2411 insertions(+), 1632 deletions(-) [+]
line wrap: on
line diff
--- a/.arch-inventory	Tue Mar 08 08:37:20 2005 +0000
+++ b/.arch-inventory	Wed Mar 09 00:09:34 2005 +0000
@@ -1,9 +1,6 @@
 # Generated files
 precious ^(config\.status|config\.cache)$
 
-# Build-in-place makes these directories, so just ignore them
-precious ^(info)$
-
 # Install-in-place makes these directories, so just ignore them
 backup ^(bin|data|lock|site-lisp)$
 
--- a/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,8 @@
+2005-03-04  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* configure.in: Added --enable-asserts.
+	* configure: Regenerate.
+
 2005-02-09  Kim F. Storm  <storm@cua.dk>
 
 	Change release version from 21.4 to 22.1 throughout.
--- a/admin/FOR-RELEASE	Tue Mar 08 08:37:20 2005 +0000
+++ b/admin/FOR-RELEASE	Wed Mar 09 00:09:34 2005 +0000
@@ -178,14 +178,14 @@
 
 SECTION             READERS
 -----------------------------
-man/abbrevs.texi    Chong Yidong
+man/abbrevs.texi    Chong Yidong    Joakim Verona
 man/anti.texi
 man/basic.texi      "Luc Teirlinck"  Chong Yidong
 man/buffers.texi    "Luc Teirlinck"  Chong Yidong
 man/building.texi   "Ted Zlatanov" <tzz@lifelogs.com>
-man/calendar.texi   joakim@verona.se
+man/calendar.texi   joakim@verona.se  Chong Yidong
 man/cmdargs.texi    Chong Yidong
-man/commands.texi   "Luc Teirlinck"
+man/commands.texi   "Luc Teirlinck"  Chong Yidong
 man/custom.texi     Chong Yidong
 man/dired.texi      Chong Yidong     joakim@verona.se
 man/display.texi    "Luc Teirlinck"  Chong Yidong
@@ -194,7 +194,7 @@
 man/files.texi      "Luc Teirlinck"  Chong Yidong
 man/fixit.texi      "Luc Teirlinck"  Chong Yidong
 man/frames.texi     "Luc Teirlinck"  Chong Yidong
-man/glossary.texi
+man/glossary.texi   Chong Yidong
 man/help.texi       "Luc Teirlinck"  Chong Yidong
 man/indent.texi     "Luc Teirlinck"  Chong Yidong
 man/killing.texi    "Luc Teirlinck"  Chong Yidong
@@ -204,17 +204,17 @@
 man/major.texi      "Luc Teirlinck"  Chong Yidong
 man/mark.texi       "Luc Teirlinck"  Chong Yidong
 man/mini.texi       "Luc Teirlinck"  Chong Yidong
-man/misc.texi
+man/misc.texi       Chong Yidong
 man/msdog.texi      Chong Yidong
 man/mule.texi       "Luc Teirlinck"
 man/m-x.texi        "Luc Teirlinck"  Chong Yidong
 man/picture.texi    Joakim Verona <joakim@verona.se>
 man/programs.texi   "Stephen Eglen"  Chong Yidong
 man/regs.texi       "Luc Teirlinck"   Chong Yidong
-man/rmail.texi
+man/rmail.texi      Chong Yidong
 man/screen.texi     "Luc Teirlinck"  Chong Yidong
 man/search.texi     "Luc Teirlinck"
-man/sending.texi
+man/sending.texi    Chong Yidong
 man/text.texi       "Luc Teirlinck"   Chong Yidong
 man/trouble.texi    Chong Yidong
 man/windows.texi    "Luc Teirlinck"   Chong Yidong
@@ -234,14 +234,14 @@
 lispref/anti.texi
 lispref/backups.texi     "Luc Teirlinck"   Chong Yidong
 lispref/buffers.texi     "Luc Teirlinck"   Chong Yidong
-lispref/calendar.texi    Joakim Verona <joakim@verona.se>
+lispref/calendar.texi    Joakim Verona <joakim@verona.se>  Chong Yidong
 lispref/commands.texi    "Luc Teirlinck"   Chong Yidong
 lispref/compile.texi     "Luc Teirlinck"   Chong Yidong
 lispref/control.texi     "Luc Teirlinck"   Chong Yidong
-lispref/customize.texi
+lispref/customize.texi   Chong Yidong
 lispref/debugging.texi   Joakim Verona <joakim@verona.se>   Lute Kamstra
-lispref/display.texi
-lispref/edebug.texi
+lispref/display.texi     Chong Yidong
+lispref/edebug.texi      Chong Yidong
 lispref/elisp.texi       "Luc Teirlinck"
 lispref/errors.texi      "Luc Teirlinck"
 lispref/eval.texi        "Luc Teirlinck"   Chong Yidong
@@ -251,7 +251,7 @@
 lispref/hash.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/help.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/hooks.texi
-lispref/internals.texi	 "Luc Teirlinck"
+lispref/internals.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/intro.texi	 "Luc Teirlinck"
 lispref/keymaps.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/lists.texi	 "Luc Teirlinck"   Chong Yidong
@@ -262,7 +262,7 @@
 lispref/markers.texi     "Luc Teirlinck"   Chong Yidong
 lispref/minibuf.texi     "Luc Teirlinck"   Chong Yidong
 lispref/modes.texi	 Chong Yidong
-lispref/nonascii.texi    "Luc Teirlinck"
+lispref/nonascii.texi    "Luc Teirlinck"   Chong Yidong
 lispref/numbers.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/objects.texi	 "Luc Teirlinck"   Chong Yidong
 lispref/os.texi		 "Luc Teirlinck"   Chong Yidong
--- a/configure	Tue Mar 08 08:37:20 2005 +0000
+++ b/configure	Wed Mar 09 00:09:34 2005 +0000
@@ -856,6 +856,7 @@
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-carbon-app[=DIR]  [DIR=/Application]
                           specify install directory for Emacs.app on Mac OS X
+  --enable-asserts        compile code with asserts enabled
   --enable-maintainer-mode enable make rules and dependencies not useful
                           (and sometimes confusing) to the casual installer
   --disable-largefile     omit support for large files
@@ -1520,6 +1521,14 @@
    carbon_appdir_x=${enableval}
 fi;
 
+# Check whether --enable-asserts or --disable-asserts was given.
+if test "${enable_asserts+set}" = set; then
+  enableval="$enable_asserts"
+  USE_XASSERTS=$enableval
+else
+  USE_XASSERTS=no
+fi;
+
 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then
   enableval="$enable_maintainer_mode"
@@ -21976,28 +21985,14 @@
 echo "  Does Emacs use X toolkit scroll bars?                   ${USE_TOOLKIT_SCROLL_BARS}"
 echo
 
-if test "$emacs_cv_randomheap" = warn; then
-  { echo "$as_me:$LINENO: WARNING:
-**********************************************************************
-
-Heap start address is randomized and no workaround is known.
-Emacs will probably dump core when temacs is run in the build phase.
-Maybe exec-shield is turned on.  Read about exec-shield in \`etc/PROBLEMS'
-for further information.
-
-**********************************************************************
-" >&5
-echo "$as_me: WARNING:
-**********************************************************************
-
-Heap start address is randomized and no workaround is known.
-Emacs will probably dump core when temacs is run in the build phase.
-Maybe exec-shield is turned on.  Read about exec-shield in \`etc/PROBLEMS'
-for further information.
-
-**********************************************************************
-" >&2;}
-fi
+if test $USE_XASSERTS = yes; then
+   echo "  Compiling with asserts turned on."
+   CFLAGS="$CFLAGS -DXASSERTS=1"
+   CPPFLAGS="$CPPFLAGS -DXASSERTS=1"
+   echo
+fi
+
+
 
 # Remove any trailing slashes in these variables.
 test "${prefix}" != NONE &&
--- a/configure.in	Tue Mar 08 08:37:20 2005 +0000
+++ b/configure.in	Wed Mar 09 00:09:34 2005 +0000
@@ -125,6 +125,11 @@
                           specify install directory for Emacs.app on Mac OS X]],
 [ carbon_appdir_x=${enableval}])
 
+AC_ARG_ENABLE(asserts,
+[  --enable-asserts        compile code with asserts enabled],
+      USE_XASSERTS=$enableval,
+      USE_XASSERTS=no)
+
 AC_ARG_ENABLE(maintainer-mode,
 [  --enable-maintainer-mode enable make rules and dependencies not useful
                           (and sometimes confusing) to the casual installer],
@@ -3096,19 +3101,15 @@
 echo "  Does Emacs use X toolkit scroll bars?                   ${USE_TOOLKIT_SCROLL_BARS}"
 echo
 
-if test "$emacs_cv_randomheap" = warn; then 
-  AC_MSG_WARN([
-**********************************************************************
-
-Heap start address is randomized and no workaround is known.
-Emacs will probably dump core when temacs is run in the build phase.
-Maybe exec-shield is turned on.  Read about exec-shield in `etc/PROBLEMS'
-for further information.
-
-**********************************************************************
-])
+if test $USE_XASSERTS = yes; then
+   echo "  Compiling with asserts turned on."
+   CFLAGS="$CFLAGS -DXASSERTS=1"
+   CPPFLAGS="$CPPFLAGS -DXASSERTS=1"
+   echo
 fi
 
+
+
 # Remove any trailing slashes in these variables.
 [test "${prefix}" != NONE &&
   prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`
--- a/etc/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/etc/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,7 @@
+2005-03-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* NEWS: Mention Carbon build on Mac OS 9.
+	
 2005-03-01  David Kastrup  <dak@gnu.org>
 
 	* DEBUG: Add information about `-fno-crossjumping' for GCC.
--- a/etc/NEWS	Tue Mar 08 08:37:20 2005 +0000
+++ b/etc/NEWS	Wed Mar 09 00:09:34 2005 +0000
@@ -164,6 +164,10 @@
 ---
 ** Support for GNU/Linux systems on X86-64 machines was added.
 
+** 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
+the files mac/README and mac/INSTALL for build instructions.
+
 ---
 ** A French translation of the `Emacs Survival Guide' is available.
 
@@ -174,6 +178,12 @@
 
 * Changes in Emacs 22.1
 
+** C-u M-x goto-line now switches to the most recent previous buffer,
+and goes to the specified line in that buffer.
+
+When goto-line starts to execute, if there's a number in the buffer at
+point then it acts as the default argument for the minibuffer.
+
 ** Emacs now responds to mouse-clicks on the mode-line, header-line and
 display margin, when run in an xterm.
 
@@ -355,6 +365,10 @@
 the menu-bar, the tool-bar, the scroll-bars, tool tips, the blinking
 cursor, and the fancy startup screen.
 
++++
+** New command line option -nbc or --no-blinking-cursor disables
+the blinking cursor on graphical terminals.
+
 ** C-h v and C-h f commands now include a hyperlink to the C source for
 variables and functions defined in C (if the C source is available).
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/info/.arch-inventory	Wed Mar 09 00:09:34 2005 +0000
@@ -0,0 +1,19 @@
+# Only two real source files: "dir", and this file, ".arch-inventory"
+source ^(dir|\.arch-inventory)$
+
+# Everything else is generated at compile time.  Unfortunately, the "backup"
+# category overrides the "source" category, so we have to have horrible
+# regexp that matches everything _except_ "dir"...
+
+# 1 or 2 characters long
+backup ^[-_.a-zA-Z0-9][-_.a-zA-Z0-9]?$
+# 4 or more characters long
+backup ^[-_.a-zA-Z0-9][-_.a-zA-Z0-9][-_.a-zA-Z0-9][-_.a-zA-Z0-9]+$
+# 3 chars long, but 1st char not "d"
+backup ^[-_.abce-zA-Z0-9][-_.a-zA-Z0-9][-_.a-zA-Z0-9]$
+# 3 chars long, but 2nd char not "i"
+backup ^[-_.a-zA-Z0-9][-_.a-hj-zA-Z0-9][-_.a-zA-Z0-9]$
+# 3 chars long, but 3rd char not "r"
+backup ^[-_.a-zA-Z0-9][-_.a-zA-Z0-9][-_.a-qs-zA-Z0-9]$
+
+# arch-tag: 60144ab9-cdc1-45b6-8193-b9683c80ec86
--- a/leim/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/leim/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,8 @@
+2005-03-08  Kenichi Handa  <handa@m17n.org>
+
+	* quail/latin-pre.el ("latin-1-prefix"): Add rule "__"->"_".
+	("latin-9-prefix"): Add rules "__"->"_", "_ "->NBSP.
+
 2004-12-04  Kenichi Handa  <handa@m17n.org>
 
 	* quail/lao.el (lao-key-alist): Declare it by defvar.
--- a/leim/quail/latin-pre.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/leim/quail/latin-pre.el	Wed Mar 09 00:09:34 2005 +0000
@@ -154,6 +154,7 @@
  ("_+" ?±)
  ("_y" ?Â¥)
  ("_:" ?÷)
+ ("__" ?_)
  ("/c" ?¢)
  ("/\\" ?×)
  ("/2" ?½)
@@ -834,6 +835,8 @@
  ("_+" ?±)
  ("_y" ?Â¥)
  ("_:" ?÷)
+ ("_ " ? )
+ ("__" ?_)
  ("/c" ?¢)
  ("/\\" ?×)
  ("/o" ?œ)				; clash with ø, but æ uses /
--- a/lib-src/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/lib-src/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,7 @@
+2005-03-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* make-docfile.c: Undo previous change.
+
 2005-02-04  Andreas Schwab  <schwab@suse.de>
 
 	* movemail.c (fatal): Accept third parameter and pass down to
--- a/lib-src/make-docfile.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/lib-src/make-docfile.c	Wed Mar 09 00:09:34 2005 +0000
@@ -43,11 +43,11 @@
 #undef chdir
 
 #include <stdio.h>
-#include <stdlib.h>
 #ifdef MSDOS
 #include <fcntl.h>
 #endif /* MSDOS */
 #ifdef WINDOWSNT
+#include <stdlib.h>
 #include <fcntl.h>
 #include <direct.h>
 #endif /* WINDOWSNT */
--- a/lisp/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,194 @@
+2005-03-08  Juri Linkov  <juri@jurta.org>
+
+	* textmodes/sgml-mode.el (sgml-tag, html-tag-alist)
+	(html-horizontal-rule, html-line, html-image, html-checkboxes)
+	(html-radio-buttons): Add a space before the trailing `/>' where
+	sgml-xml-mode is non-nil.
+	(sgml-delete-tag): Check if the tag ends with `/>' to not delete
+	the subsequent tag of the empty XML tag.
+	(html-href-anchor): Don't set initial input to "http:".
+	(html-image): Ask for the image URL and set point inside alt="".
+	(html-name-anchor): Duplicate the name in the `id' attribute when
+	sgml-xml-mode is non-nil.
+	(html-paragraph): Remove \n before <p>.
+	(html-checkboxes, html-radio-buttons): Insert `checked="checked"'
+	instead of `checked' when sgml-xml-mode is non-nil.
+
+	* facemenu.el (list-colors-print): Print #RRGGBB in default face.
+	Remove 1 space before #RRGGBB to not truncate it on terminal
+	windows w/o fringes.  Remove 1 space between bg and fg examples
+	to get more space.
+	(list-colors-duplicates): Replace `and' with `if' for `boundp' to
+	avoid byte-compile warnings.
+
+	* image-file.el (image-file-handler): Put `safe-magic' property to
+	`image-file-handler'.
+
+	* info.el (Info-isearch-search): Emulate word search in
+	isearching through multiple Info nodes with Info-search.
+	(Info-isearch-wrap): Allow isearch-word.
+
+2005-03-08  Lute Kamstra  <lute@gnu.org>
+
+	* emacs-lisp/debug.el (debugger-step-through): Make sure that
+	stepping into the debugger's code is not possible.
+	(debugger-jumping-flag): Docstring update.
+
+2005-03-08  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc-embed.el (calc-do-embedded): Reset mode line when
+	embedded mode begins.
+	(calc-embedded-language-alist): New variable.
+	(calc-embedded-find-modes): Use calc-embedded-language-alist to
+	set default language mode.
+
+2005-03-08  Kenichi Handa  <handa@m17n.org>
+
+	* international/ccl.el (define-ccl-program): Fix docstring about
+	extra 256 bytes assured for the output buffer.
+
+	* international/utf-16.el (ccl-encode-mule-utf-16le-with-signature):
+	Fix BUFFER_MAGNIFICATION to 2.
+	(ccl-encode-mule-utf-16be-with-signature): Likewise.
+
+2005-03-07  Karl Chen  <quarl@cs.berkeley.edu>
+
+	* align.el (align-rules-list): Added an alignment rule for CSS
+	declarations (applies to css-mode and html-mode buffers).
+
+2005-03-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacs-lisp/debug.el (debug-on-entry-1): Fix handling of macros.
+
+2005-03-07  Kim F. Storm  <storm@cua.dk>
+
+	* simple.el (move-beginning-of-line): New command.
+
+	* bindings.el (global-map): Bind C-a to move-beginning-of-line.
+
+	* reveal.el (reveal-mode-map): Bind C-a to beginning-of-line.
+
+	* emulation/cua-base.el: Put CUA move property on move-end-of-line
+	and move-beginning-of-line.
+
+	* apropos.el (apropos-print): Omit command from M-x ... RET.
+
+2005-03-07  Nick Roberts  <nickrob@snap.net.nz>
+
+	* progmodes/gdb-ui.el (gdb-var-create-handler): Handle just MI case.
+	(gdb-send, gdb-send-item): Log items sent from gdb-send too.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* bindings.el (esc-map): Bind M-g to goto-line.
+
+	* facemenu.el (global-map): Bind M-o, not M-g.
+
+2005-03-06  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* menu-bar.el (menu-bar-file-menu): Add the same :enable to
+	"Open Directory" as for "Open File".
+
+2005-03-06  Chong Yidong  <cyd@stupidchicken.com>
+
+	* simple.el (activate-mark-hook, deactivate-mark-hook): Add defvars.
+	(push-mark-command): Run activate-mark-hook.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* help-mode.el (help-mode-finish): Don't alter the element
+	in view-return-to-alist if there already is one.
+
+	* jit-lock.el (jit-lock-stealth-fontify): When calling sit-for,
+	make sure the current buffer is the expected one.
+
+	* novice.el (disabled-command-function): Output in *Disabled Command*.
+	Explicitly ignore non-keyboard events, and explicitly handle C-g.
+
+	* textmodes/flyspell.el (flyspell-large-region):
+	Pass args differently for aspell.
+
+	* files.el (mode-require-final-newline): Doc fix.
+
+2005-03-03  Stephan Stahl  <stahl@eos.franken.de> (tiny change)
+
+	* progmodes/which-func.el (which-function):
+	Specify NOERROR when calling imenu--make-index-alist.
+
+2005-03-05  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* simple.el (normal-erase-is-backspace): Define default value.
+
+	* custom.el (custom-theme-set-variables): Remove unused var `immediate'.
+	(custom-reevaluate-setting): Simple function to handle
+	variables that are defined before their default value can really
+	be computed.
+
+	* startup.el (command-line): Use it for temporary-file-directory,
+	small-emporary-file-directory, auto-save-file-name-transforms,
+	blink-cursor-mode, and normal-erase-is-backspace.
+
+	* font-lock.el (font-lock-fontify-keywords-region): Ensure forward
+	progress, even with buggy anchored keywords.
+
+2005-03-05  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* simple.el (goto-line): Remove unbalanced final parenthesis.
+
+2005-03-05  Richard M. Stallman  <rms@gnu.org>
+
+	* simple.el (goto-line): Use a number at point as the default.
+	With C-u as arg, switch buffers.
+
+2005-03-05  Juri Linkov  <juri@jurta.org>
+
+	* frame.el (blink-cursor-mode): Replace `emacs-quick-startup'
+	with `no-blinking-cursor'.
+
+	* startup.el (no-blinking-cursor): New defvar.
+	(command-line): Add `--no-blinking-cursor' to longopts.
+	Set `no-blinking-cursor' to t for command line arguments
+	-Q, -nbc, --no-blinking-cursor.  Replace `emacs-quick-startup'
+	with `no-blinking-cursor' in the condition for calling
+	`blink-cursor-mode'.
+
+2005-03-04  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* menu-bar.el (menu-bar-make-mm-toggle): Doc fix.
+	(menu-bar-options-save): Add blink-cursor-mode.
+	(menu-bar-options-menu): Add blink-cursor-mode.
+
+2005-03-04  Ulf Jasper  <ulf.jasper@web.de>
+
+	* calendar/icalendar.el (icalendar-version): Increase to 0.11.
+	(icalendar-export-file, icalendar-export-region)
+	(icalendar-import-file, icalendar-import-buffer): Add autoload cookies.
+	(icalendar--convert-ical-to-diary): Fix problem with DURATION.
+
+2005-03-04  Lute Kamstra  <lute@gnu.org>
+
+	* emacs-lisp/debug.el (debugger-step-after-exit): Make it a defvar.
+	(debug-function-list): Ditto.
+
+2005-03-04  Robert J. Chassell  <bob@rattlesnake.com>
+
+	* textmodes/texinfmt.el (texinfo-append-refill):
+	Redefine the types of line to which @refill
+	is not appended by replacing a search for `@refill\\|@bye' with
+	`@refill\\|^[ \t]*@'.  The intent is to solve both the `@end
+	itemize@refill' bug and the unfilled long lines bug.
+	(texinfmt-version): Update number and date.
+
+2005-03-04  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* international/code-pages.el (windows-1250, windows-125[2-8])
+	(iso-8859-10, -13, -16, georgian-ps): Add autoload cookies.
+
+2005-03-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* frame.el (blink-cursor-mode): `emacs-quick-startup' may not be
+	bound yet.
+
 2005-03-02  Romain Francoise  <romain@orebokech.com>
 
 	* ibuf-ext.el (ibuffer-filter-disable): Move back to the current
@@ -11,9 +202,21 @@
 	type, use the default.  Rewrite to use `add-text-properties' and
 	plist functions.
 
+2005-03-01  Lute Kamstra  <lute@gnu.org>
+
+	* emacs-lisp/debug.el (inhibit-debug-on-entry): Add docstring.
+	(debugger-jumping-flag): New var.
+	(debug-entry-code): Use it.
+	(debugger-jump): Use debugger-jumping-flag and add
+	debugger-reenable to post-command-hook.
+	(debugger-reenable): Use debugger-jumping-flag and remove itself
+	from post-command-hook.
+	(debug, debug-on-entry, cancel-debug-on-entry): Remove call to
+	debugger-reenable.
+
 2005-03-01  Robert J. Chassell  <bob@rattlesnake.com>
 
-	* textmodes/texinfmt.el: (texinfo-no-refill-regexp): Comment out
+	* textmodes/texinfmt.el (texinfo-no-refill-regexp): Comment out
 	inclusion of "itemize\\|", which may be unnecessary, is certainly
 	inelegant, and stops refilling in itemize lists when formatting
 	Japanese Texinfo files to Info.
@@ -52,8 +255,7 @@
 	(debugger-setup-buffer): Delete one more frame line in case of
 	debug on entry.
 	(debugger-frame-number): Update to use the new text introduced by
-	the 1999-11-03 change.  Skip one more frame in case of debug on
-	entry.
+	the 1999-11-03 change.  Skip one more frame in case of debug on entry.
 
 2005-02-28  Kim F. Storm  <storm@cua.dk>
 
--- a/lisp/align.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/align.el	Wed Mar 09 00:09:34 2005 +0000
@@ -466,13 +466,13 @@
      (repeat   . t)
      (modes    . align-c++-modes)
      (run-if   . ,(function (lambda () current-prefix-arg))))
-;      (valid
-;       . ,(function
-;	  (lambda ()
-;	    (memq (caar (c-guess-basic-syntax))
-;		  '(brace-list-intro
-;		    brace-list-entry
-;		    brace-entry-open))))))
+					;      (valid
+					;       . ,(function
+					;	  (lambda ()
+					;	    (memq (caar (c-guess-basic-syntax))
+					;		  '(brace-list-intro
+					;		    brace-list-entry
+					;		    brace-entry-open))))))
 
     ;; With a prefix argument, comma delimiter will be aligned.  Since
     ;; perl-mode doesn't give us enough syntactic information (and we
@@ -525,11 +525,11 @@
      (regexp   . "\\(\\s-*\\)\\\\$")
      (modes    . align-c++-modes)
      (column   . c-backslash-column))
-;      (valid
-;       . ,(function
-;	  (lambda ()
-;	    (memq (caar (c-guess-basic-syntax))
-;		  '(cpp-macro cpp-macro-cont))))))
+					;      (valid
+					;       . ,(function
+					;	  (lambda ()
+					;	    (memq (caar (c-guess-basic-syntax))
+					;		  '(cpp-macro cpp-macro-cont))))))
 
     (basic-line-continuation
      (regexp   . "\\(\\s-*\\)\\\\$")
@@ -578,7 +578,12 @@
      (justify  . t)
      (run-if   . ,(function
 		   (lambda ()
-		     (eq '- current-prefix-arg))))))
+		     (eq '- current-prefix-arg)))))
+
+    (css-declaration
+     (regexp . "^\\s-*\\w+:\\(\\s-*\\).*;")
+     (group . (1))
+     (modes . '(css-mode html-mode))))
   "*A list describing all of the available alignment rules.
 The format is:
 
--- a/lisp/apropos.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/apropos.el	Wed Mar 09 00:09:34 2005 +0000
@@ -860,13 +860,12 @@
 					      key))
 		       key)
 		     item ", "))
-		 (insert "M-x")
-		 (put-text-property (- (point) 3) (point)
-				    'face apropos-keybinding-face)
-		 (insert " " (symbol-name symbol) " ")
-		 (insert "RET")
-		 (put-text-property (- (point) 3) (point)
-				    'face apropos-keybinding-face)))
+		 (insert "M-x ... RET")
+		 (when apropos-keybinding-face
+		   (put-text-property (- (point) 11) (- (point) 8)
+				      'face apropos-keybinding-face)
+		   (put-text-property (- (point) 3) (point)
+				      'face apropos-keybinding-face))))
 	  (terpri)
 	  (apropos-print-doc 2
 			     (if (commandp symbol)
--- a/lisp/bindings.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/bindings.el	Wed Mar 09 00:09:34 2005 +0000
@@ -694,7 +694,9 @@
 (define-key global-map "\C-n" 'next-line)
 (define-key global-map "\C-p" 'previous-line)
 (define-key ctl-x-map "\C-n" 'set-goal-column)
+(define-key global-map "\C-a" 'move-beginning-of-line)
 (define-key global-map "\C-e" 'move-end-of-line)
+(define-key esc-map "g" 'goto-line)
 
 ;;(defun function-key-error ()
 ;;  (interactive)
--- a/lisp/calc/calc-embed.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/calc/calc-embed.el	Wed Mar 09 00:09:34 2005 +0000
@@ -244,6 +244,13 @@
       (use-local-map calc-mode-map)
       (setq calc-no-refresh-evaltos nil)
       (and chg calc-any-evaltos (calc-wrapper (calc-refresh-evaltos)))
+      (let (str)
+        (save-excursion
+          (calc-select-buffer)
+          (setq str mode-line-buffer-identification))
+        (unless (equal str mode-line-buffer-identification)
+          (setq mode-line-buffer-identification str)
+          (set-buffer-modified-p (buffer-modified-p))))
       (or (eq calc-embedded-quiet t)
 	  (message "Embedded Calc mode enabled; %s to return to normal"
 		   (if calc-embedded-quiet
@@ -670,6 +677,18 @@
     (setq calc-embedded-globals (cons t modes))
     (goto-char save-pt)))
 
+(defvar calc-embedded-language-alist
+  '((latex-mode . latex)
+    (tex-mode   . tex)
+    (plain-tex-mode . tex)
+    (context-mode . tex)
+    (nroff-mode . eqn)
+    (pascal-mode . pascal)
+    (c-mode . c)
+    (c++-mode . c)
+    (fortran-mode . fortran)
+    (f90-mode . fortran)))
+
 (defun calc-embedded-find-modes ()
   (let ((case-fold-search nil)
 	(save-pt (point))
@@ -717,6 +736,11 @@
 	       (setq no-defaults nil)))
       (backward-char 6))
     (goto-char save-pt)
+    (unless (assq 'the-language modes)
+      (let ((lang (assoc major-mode calc-embedded-language-alist)))
+        (if lang
+            (setq modes (cons (cons 'the-language (cdr lang))
+                              modes)))))
     (list modes emodes pmodes)))
 
 ;; The variable calc-embed-vars-used is local to calc-embedded-make-info,
--- a/lisp/calendar/icalendar.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/calendar/icalendar.el	Wed Mar 09 00:09:34 2005 +0000
@@ -90,7 +90,7 @@
 
 ;;; Code:
 
-(defconst icalendar-version 0.10
+(defconst icalendar-version 0.11
   "Version number of icalendar.el.")
 
 ;; ======================================================================
@@ -415,8 +415,10 @@
   "Return ISODURATIONSTRING in format like `decode-time'.
 Converts from ISO-8601 to Emacs representation.  If ISODURATIONSTRING
 specifies UTC time (trailing letter Z) the decoded time is given in
-the local time zone! FIXME: TZID-attributes are ignored....! FIXME:
-multiple comma-separated values should be allowed!"
+the local time zone!
+
+FIXME: TZID-attributes are ignored....!
+FIXME: multiple comma-separated values should be allowed!"
   (if isodurationstring
       (save-match-data
         (string-match
@@ -672,7 +674,7 @@
 ;; Export -- convert emacs-diary to icalendar
 ;; ======================================================================
 
-;; User function
+;;;###autoload
 (defun icalendar-export-file (diary-filename ical-filename)
   "Export diary file to iCalendar format.
 All diary entries in the file DIARY-FILENAME are converted to iCalendar
@@ -686,7 +688,7 @@
 (defalias 'icalendar-convert-diary-to-ical 'icalendar-export-file)
 (make-obsolete 'icalendar-convert-diary-to-ical 'icalendar-export-file)
 
-;; User function
+;;;###autoload
 (defun icalendar-export-region (min max ical-filename)
   "Export region in diary file to iCalendar format.
 All diary entries in the region from MIN to MAX in the current buffer are
@@ -1112,7 +1114,7 @@
 ;; Import -- convert icalendar to emacs-diary
 ;; ======================================================================
 
-;; User function
+;;;###autoload
 (defun icalendar-import-file (ical-filename diary-filename
                                             &optional non-marking)
   "Import a iCalendar file and append to a diary file.
@@ -1129,7 +1131,7 @@
     (set-buffer (find-file ical-filename))
     (icalendar-import-buffer diary-filename t non-marking)))
 
-;; User function
+;;;###autoload
 (defun icalendar-import-buffer (&optional diary-file do-not-ask
                                           non-marking)
   "Extract iCalendar events from current buffer.
@@ -1423,10 +1425,7 @@
              ((not (string= start-d end-d))
               (icalendar--dmsg "non-recurring event")
               (let ((ds (icalendar--datetime-to-diary-date dtstart))
-                    (de (icalendar--datetime-to-diary-date
-                         (icalendar--decode-isodatetime
-                          (icalendar--get-event-property e 'DTEND)
-                          -1))))
+                    (de (icalendar--datetime-to-diary-date dtend)))
                 (setq diary-string
                       (format "%%%%(and (diary-block %s %s))"
                               ds de)))
--- a/lisp/custom.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/custom.el	Wed Mar 09 00:09:34 2005 +0000
@@ -1,6 +1,6 @@
 ;;; custom.el --- tools for declaring and initializing options
 ;;
-;; Copyright (C) 1996, 1997, 1999, 2001, 2002, 2004
+;; Copyright (C) 1996, 1997, 1999, 2001, 2002, 2004, 2005
 ;;  Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
@@ -726,6 +726,15 @@
 COMMENT is a comment string about SYMBOL."
   (apply 'custom-theme-set-variables 'user args))
 
+(defun custom-reevaluate-setting (symbol)
+  "Reset the value of SYMBOL by re-evaluating its saved or default value.
+This is useful for variables that are defined before their default value
+can really be computed.  E.g. dumped variables whose default depends on
+run-time information."
+  (funcall (or (get symbol 'custom-set) 'set-default)
+	   symbol
+	   (eval (car (or (get symbol 'saved-value) (get symbol 'standard-value))))))
+
 (defun custom-theme-set-variables (theme &rest args)
   "Initialize variables for theme THEME according to settings in ARGS.
 Each of the arguments in ARGS should be a list of this form:
@@ -753,44 +762,43 @@
 EXP itself is saved unevaluated as SYMBOL property `saved-value' and
 in SYMBOL's list property `theme-value' \(using `custom-push-theme')."
   (custom-check-theme theme)
-  (let ((immediate (get theme 'theme-immediate)))
-    (setq args
-	  (sort args
-		(lambda (a1 a2)
-		  (let* ((sym1 (car a1))
-			 (sym2 (car a2))
-			 (1-then-2 (memq sym1 (get sym2 'custom-dependencies)))
-			 (2-then-1 (memq sym2 (get sym1 'custom-dependencies))))
-		    (cond ((and 1-then-2 2-then-1)
-			   (error "Circular custom dependency between `%s' and `%s'"
-				  sym1 sym2))
-			  (2-then-1 nil)
-			  ;; Put symbols with :require last.  The macro
-			  ;; define-minor-mode generates a defcustom
-			  ;; with a :require and a :set, where the
-			  ;; setter function calls the mode function.
-			  ;; Putting symbols with :require last ensures
-			  ;; that the mode function will see other
-			  ;; customized values rather than default
-			  ;; values.
-			  (t (nth 3 a2)))))))
-    (while args
-      (let ((entry (car args)))
-	(if (listp entry)
-	    (let* ((symbol (indirect-variable (nth 0 entry)))
-		   (value (nth 1 entry))
-		   (now (nth 2 entry))
-		   (requests (nth 3 entry))
-		   (comment (nth 4 entry))
-                   set)
-	      (when requests
-		(put symbol 'custom-requests requests)
-		(mapc 'require requests))
-	      (setq set (or (get symbol 'custom-set) 'custom-set-default))
-	      (put symbol 'saved-value (list value))
-	      (put symbol 'saved-variable-comment comment)
-              (custom-push-theme 'theme-value symbol theme 'set value)
-	      ;; Allow for errors in the case where the setter has
+  (setq args
+	(sort args
+	      (lambda (a1 a2)
+		(let* ((sym1 (car a1))
+		       (sym2 (car a2))
+		       (1-then-2 (memq sym1 (get sym2 'custom-dependencies)))
+		       (2-then-1 (memq sym2 (get sym1 'custom-dependencies))))
+		  (cond ((and 1-then-2 2-then-1)
+			 (error "Circular custom dependency between `%s' and `%s'"
+				sym1 sym2))
+			(2-then-1 nil)
+			;; Put symbols with :require last.  The macro
+			;; define-minor-mode generates a defcustom
+			;; with a :require and a :set, where the
+			;; setter function calls the mode function.
+			;; Putting symbols with :require last ensures
+			;; that the mode function will see other
+			;; customized values rather than default
+			;; values.
+			(t (nth 3 a2)))))))
+  (while args
+    (let ((entry (car args)))
+      (if (listp entry)
+	  (let* ((symbol (indirect-variable (nth 0 entry)))
+		 (value (nth 1 entry))
+		 (now (nth 2 entry))
+		 (requests (nth 3 entry))
+		 (comment (nth 4 entry))
+		 set)
+	    (when requests
+	      (put symbol 'custom-requests requests)
+	      (mapc 'require requests))
+	    (setq set (or (get symbol 'custom-set) 'custom-set-default))
+	    (put symbol 'saved-value (list value))
+	    (put symbol 'saved-variable-comment comment)
+	    (custom-push-theme 'theme-value symbol theme 'set value)
+	    ;; Allow for errors in the case where the setter has
 	    ;; changed between versions, say, but let the user know.
 	    (condition-case data
 		(cond (now
@@ -802,18 +810,18 @@
 		       (funcall set symbol (eval value))))
 	      (error
 	       (message "Error setting %s: %s" symbol data)))
-	      (setq args (cdr args))
-	      (and (or now (default-boundp symbol))
-		   (put symbol 'variable-comment comment)))
-	  ;; Old format, a plist of SYMBOL VALUE pairs.
-	  (message "Warning: old format `custom-set-variables'")
-	  (ding)
-	  (sit-for 2)
-	  (let ((symbol (indirect-variable (nth 0 args)))
-		(value (nth 1 args)))
-	    (put symbol 'saved-value (list value))
-            (custom-push-theme 'theme-value symbol theme 'set value))
-	  (setq args (cdr (cdr args))))))))
+	    (setq args (cdr args))
+	    (and (or now (default-boundp symbol))
+		 (put symbol 'variable-comment comment)))
+	;; Old format, a plist of SYMBOL VALUE pairs.
+	(message "Warning: old format `custom-set-variables'")
+	(ding)
+	(sit-for 2)
+	(let ((symbol (indirect-variable (nth 0 args)))
+	      (value (nth 1 args)))
+	  (put symbol 'saved-value (list value))
+	  (custom-push-theme 'theme-value symbol theme 'set value))
+	(setq args (cdr (cdr args)))))))
 
 (defun custom-set-default (variable value)
   "Default :set function for a customizable variable.
@@ -1091,5 +1099,5 @@
 
 (provide 'custom)
 
-;;; arch-tag: 041b6116-aabe-4f9a-902d-74092bc3dab2
+;; arch-tag: 041b6116-aabe-4f9a-902d-74092bc3dab2
 ;;; custom.el ends here
--- a/lisp/emacs-lisp/debug.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/emacs-lisp/debug.el	Wed Mar 09 00:09:34 2005 +0000
@@ -51,15 +51,11 @@
   :group 'debugger
   :version "21.1")
 
-(defcustom debug-function-list nil
-  "List of functions currently set for debug on entry."
-  :type '(repeat function)
-  :group 'debugger)
+(defvar debug-function-list nil
+  "List of functions currently set for debug on entry.")
 
-(defcustom debugger-step-after-exit nil
-  "Non-nil means \"single-step\" after the debugger exits."
-  :type 'boolean
-  :group 'debugger)
+(defvar debugger-step-after-exit nil
+  "Non-nil means \"single-step\" after the debugger exits.")
 
 (defvar debugger-value nil
   "This is the value for the debugger to return, when it returns.")
@@ -93,11 +89,20 @@
 (defvar debugger-outer-inhibit-redisplay)
 (defvar debugger-outer-cursor-in-echo-area)
 
-(defvar inhibit-debug-on-entry nil)
+(defvar inhibit-debug-on-entry nil
+  "Non-nil means that debug-on-entry is disabled.")
+
+(defvar debugger-jumping-flag nil
+  "Non-nil means that debug-on-entry is disabled.
+This variable is used by `debugger-jump', `debugger-step-through',
+and `debugger-reenable' to temporarily disable debug-on-entry.")
 
 ;; When you change this, you may also need to change the number of
 ;; frames that the debugger skips.
-(defconst debug-entry-code '(if inhibit-debug-on-entry nil (debug 'debug))
+(defconst debug-entry-code
+  '(if (or inhibit-debug-on-entry debugger-jumping-flag)
+       nil
+     (debug 'debug))
   "Code added to a function to cause it to call the debugger upon entry.")
 
 ;;;###autoload
@@ -197,7 +202,6 @@
 		    ;; Skip the frames for backtrace-debug, byte-code,
 		    ;; and debug-entry-code.
 		    (backtrace-debug 4 t))
-		(debugger-reenable)
 		(message "")
 		(let ((standard-output nil)
 		      (buffer-read-only t))
@@ -381,6 +385,8 @@
 Enter another debugger on next entry to eval, apply or funcall."
   (interactive)
   (setq debugger-step-after-exit t)
+  (setq debugger-jumping-flag t)
+  (add-hook 'post-command-hook 'debugger-reenable)
   (message "Proceeding, will debug on next eval or call.")
   (exit-recursive-edit))
 
@@ -406,25 +412,17 @@
   "Continue to exit from this frame, with all debug-on-entry suspended."
   (interactive)
   (debugger-frame)
-  ;; Turn off all debug-on-entry functions
-  ;; but leave them in the list.
-  (let ((list debug-function-list))
-    (while list
-      (fset (car list)
-	    (debug-on-entry-1 (car list) (symbol-function (car list)) nil))
-      (setq list (cdr list))))
+  (setq debugger-jumping-flag t)
+  (add-hook 'post-command-hook 'debugger-reenable)
   (message "Continuing through this frame")
   (exit-recursive-edit))
 
 (defun debugger-reenable ()
-  "Turn all debug-on-entry functions back on."
-  (let ((list debug-function-list))
-    (while list
-      (or (consp (symbol-function (car list)))
-	  (debug-convert-byte-code (car list)))
-      (fset (car list)
-	    (debug-on-entry-1 (car list) (symbol-function (car list)) t))
-      (setq list (cdr list)))))
+  "Turn all debug-on-entry functions back on.
+This function is put on `post-command-hook' by `debugger-jump' and
+removes itself from that hook."
+  (setq debugger-jumping-flag nil)
+  (remove-hook 'post-command-hook 'debugger-reenable))
 
 (defun debugger-frame-number ()
   "Return number of frames in backtrace before the one point points at."
@@ -634,7 +632,6 @@
 Use \\[cancel-debug-on-entry] to cancel the effect of this command.
 Redefining FUNCTION also cancels it."
   (interactive "aDebug on entry (to function): ")
-  (debugger-reenable)
   ;; Handle a function that has been aliased to some other function.
   (if (and (subrp (symbol-function function))
 	   (eq (cdr (subr-arity (symbol-function function))) 'unevalled))
@@ -665,7 +662,6 @@
 				 (mapcar 'symbol-name debug-function-list)
 				 nil t nil)))
 	   (if name (intern name)))))
-  (debugger-reenable)
   (if (and function (not (string= function "")))
       (progn
 	(let ((f (debug-on-entry-1 function (symbol-function function) nil)))
@@ -700,25 +696,24 @@
 	  (fset function (cons 'lambda (cons (car contents) body)))))))
 
 (defun debug-on-entry-1 (function defn flag)
-  (if (subrp defn)
-      (error "%s is a built-in function" function)
-    (if (eq (car defn) 'macro)
-	(debug-on-entry-1 function (cdr defn) flag)
-      (or (eq (car defn) 'lambda)
-	  (error "%s not user-defined Lisp function" function))
-      (let ((tail (cdr defn)))
-	;; Skip the docstring.
-	(when (and (stringp (cadr tail)) (cddr tail))
-	  (setq tail (cdr tail)))
-	;; Skip the interactive form.
-	(when (eq 'interactive (car-safe (cadr tail)))
-	  (setq tail (cdr tail)))
-	(unless (eq flag (equal (cadr tail) debug-entry-code))
-	  ;; Add/remove debug statement as needed.
-	  (if flag
-	      (setcdr tail (cons debug-entry-code (cdr tail)))
-	    (setcdr tail (cddr tail))))
-	defn))))
+  (let ((tail defn))
+    (if (subrp tail)
+	(error "%s is a built-in function" function)
+      (if (eq (car tail) 'macro) (setq tail (cdr tail)))
+      (if (eq (car tail) 'lambda) (setq tail (cdr tail))
+	(error "%s not user-defined Lisp function" function))
+      ;; Skip the docstring.
+      (when (and (stringp (cadr tail)) (cddr tail))
+	(setq tail (cdr tail)))
+      ;; Skip the interactive form.
+      (when (eq 'interactive (car-safe (cadr tail)))
+	(setq tail (cdr tail)))
+      (unless (eq flag (equal (cadr tail) debug-entry-code))
+	;; Add/remove debug statement as needed.
+	(if flag
+	    (setcdr tail (cons debug-entry-code (cdr tail)))
+	  (setcdr tail (cddr tail))))
+      defn)))
 
 (defun debugger-list-functions ()
   "Display a list of all the functions now set to debug on entry."
--- a/lisp/emulation/cua-base.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/emulation/cua-base.el	Wed Mar 09 00:09:34 2005 +0000
@@ -1284,6 +1284,7 @@
    next-line previous-line
    forward-word backward-word
    end-of-line beginning-of-line
+   move-end-of-line move-beginning-of-line
    end-of-buffer beginning-of-buffer
    scroll-up scroll-down
    forward-sentence backward-sentence
--- a/lisp/facemenu.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/facemenu.el	Wed Mar 09 00:09:34 2005 +0000
@@ -39,8 +39,8 @@
 ;; modifications before inserting or typing anything.
 ;;
 ;; Faces can be selected from the keyboard as well.
-;; The standard keybindings are M-g (or ESC g) + letter:
-;; M-g i = "set italic",  M-g b = "set bold", etc.
+;; The standard keybindings are M-o (or ESC o) + letter:
+;; M-o i = "set italic",  M-o b = "set bold", etc.
 
 ;;; Customization:
 ;; An alternative set of keybindings that may be easier to type can be set up
@@ -91,12 +91,12 @@
   (require 'button))
 
 ;;; Provide some binding for startup:
-;;;###autoload (define-key global-map "\M-g" 'facemenu-keymap)
+;;;###autoload (define-key global-map "\M-o" 'facemenu-keymap)
 ;;;###autoload (autoload 'facemenu-keymap "facemenu" "Keymap for face-changing commands." t 'keymap)
 
 ;; Global bindings:
 (define-key global-map [C-down-mouse-2] 'facemenu-menu)
-(define-key global-map "\M-g" 'facemenu-keymap)
+(define-key global-map "\M-o" 'facemenu-keymap)
 
 (defgroup facemenu nil
   "Create a face menu for interactively adding fonts to text"
@@ -513,17 +513,17 @@
      'face (cons 'background-color (car color)))
     (put-text-property
      (prog1 (point)
-       (insert "  " (if (cdr color)
-			(mapconcat 'identity (cdr color) ", ")
-		      (car color)))
-       (indent-to (max (- (window-width) 8) 44))
-       (insert (apply 'format " #%02x%02x%02x"
-		      (mapcar (lambda (c) (lsh c -8))
-			      (color-values (car color)))))
+       (insert " " (if (cdr color)
+		       (mapconcat 'identity (cdr color) ", ")
+		     (car color))))
+     (point)
+     'face (cons 'foreground-color (car color)))
+    (indent-to (max (- (window-width) 8) 44))
+    (insert (apply 'format "#%02x%02x%02x"
+		   (mapcar (lambda (c) (lsh c -8))
+			   (color-values (car color)))))
 
-       (insert "\n"))
-     (point)
-     'face (cons 'foreground-color (car color))))
+    (insert "\n"))
   (goto-char (point-min)))
 
 (defun list-colors-duplicates (&optional list)
@@ -539,8 +539,8 @@
 	 (l list))
     (while (cdr l)
       (if (and (facemenu-color-equal (car (car l)) (car (car (cdr l))))
-	       (not (and (boundp 'w32-default-color-map)
-			 (not (assoc (car (car l)) w32-default-color-map)))))
+	       (not (if (boundp 'w32-default-color-map)
+			(not (assoc (car (car l)) w32-default-color-map)))))
 	  (progn
 	    (setcdr (car l) (cons (car (car (cdr l))) (cdr (car l))))
 	    (setcdr l (cdr (cdr l))))
--- a/lisp/faces.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/faces.el	Wed Mar 09 00:09:34 2005 +0000
@@ -225,7 +225,8 @@
 
 (defun face-id (face &optional frame)
   "Return the internal ID of face with name FACE.
-If optional argument FRAME is nil or omitted, use the selected frame."
+The optional argument FRAME is ignored, since the internal face ID
+of a face name is the same for all frames."
   (check-face face)
   (get face 'face))
 
--- a/lisp/font-lock.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/font-lock.el	Wed Mar 09 00:09:34 2005 +0000
@@ -1,7 +1,7 @@
 ;;; font-lock.el --- Electric font lock mode
 
 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;;   2000, 2001, 2002, 2003, 2004  Free Software Foundation, Inc.
+;;   2000, 2001, 2002, 2003, 2004 2005  Free Software Foundation, Inc.
 
 ;; Author: jwz, then rms, then sm
 ;; Maintainer: FSF
@@ -1425,7 +1425,10 @@
 	(while highlights
 	  (if (numberp (car (car highlights)))
 	      (font-lock-apply-highlight (car highlights))
-	    (font-lock-fontify-anchored-keywords (car highlights) end))
+	    (let ((pos (point)))
+	      (font-lock-fontify-anchored-keywords (car highlights) end)
+	      ;; Ensure forward progress.
+	      (if (< (point) pos) (goto-char pos))))
 	  (setq highlights (cdr highlights))))
       (setq keywords (cdr keywords)))))
 
--- a/lisp/frame.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/frame.el	Wed Mar 09 00:09:34 2005 +0000
@@ -1270,7 +1270,7 @@
 displays through a window system, because then Emacs does its own
 cursor display.  On a text-only terminal, this is not implemented."
   :init-value (not (or noninteractive
-		       emacs-quick-startup
+		       (if (boundp 'no-blinking-cursor) no-blinking-cursor)
 		       (eq system-type 'ms-dos)
 		       (not (memq window-system '(x w32)))))
   :group 'cursor
--- a/lisp/gnus/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/gnus/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,30 @@
+2005-03-08  Bjorn Solberg <bjorn_ding@hekneby.org>  (tiny change)
+
+	* nnimap.el (nnimap-retrieve-headers-from-server): Sort NOV
+	buffer (since IMAP server might return FETCH response out of
+	order, and the nntp buffer must be sorted).
+
+2005-03-04  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* message.el: Don't autoload former message-utils variables.
+	(message-strip-subject-trailing-was): Changed doc string.
+
+	* nnweb.el: Fixes for `gnus-group-make-web-group'.
+	(nnweb-type-definition): Don't add "hl=en" in `address'.  Added
+	`base'.
+	(nnweb-google-search): Add "hl=en" here.
+	(nnweb-google-parse-1, nnweb-google-create-mapping): Don't
+	hardcode URL.
+
+2005-03-03  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* message.el (message-get-reply-headers, message-followup):
+	Mention related variables `message-use-followup-to' and
+	`message-use-mail-followup-to', in the information buffer.
+
+	* nnweb.el (nnweb-type-definition): Use groups.google.de instead
+	of broken groups(-beta).google.com.
+
 2005-03-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* gnus-sum.el (gnus-summary-exit): Undo last change and fix it in
--- a/lisp/gnus/message.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/gnus/message.el	Wed Mar 09 00:09:34 2005 +0000
@@ -335,11 +335,8 @@
   :link '(custom-manual "(message)Message Headers")
   :type 'regexp)
 
-;; Fixme: Why are all these things autoloaded?
-
 ;;; marking inserted text
 
-;;;###autoload
 (defcustom message-mark-insert-begin
   "--8<---------------cut here---------------start------------->8---\n"
   "How to mark the beginning of some inserted text."
@@ -348,7 +345,6 @@
   :link '(custom-manual "(message)Insertion Variables")
   :group 'message-various)
 
-;;;###autoload
 (defcustom message-mark-insert-end
   "--8<---------------cut here---------------end--------------->8---\n"
   "How to mark the end of some inserted text."
@@ -357,9 +353,7 @@
   :link '(custom-manual "(message)Insertion Variables")
   :group 'message-various)
 
-;;;###autoload
-(defcustom message-archive-header
-  "X-No-Archive: Yes\n"
+(defcustom message-archive-header "X-No-Archive: Yes\n"
   "Header to insert when you don't want your article to be archived.
 Archives \(such as groups.google.com\) respect this header."
   :version "22.1"
@@ -367,7 +361,6 @@
   :link '(custom-manual "(message)Header Commands")
   :group 'message-various)
 
-;;;###autoload
 (defcustom message-archive-note
   "X-No-Archive: Yes - save http://groups.google.com/"
   "Note to insert why you wouldn't want this posting archived.
@@ -385,7 +378,6 @@
   "Old target for cross-posts or follow-ups.")
 (make-variable-buffer-local 'message-cross-post-old-target)
 
-;;;###autoload
 (defcustom message-cross-post-default t
   "When non-nil `message-cross-post-followup-to' will perform a crosspost.
 If nil, `message-cross-post-followup-to' will only do a followup.  Note that
@@ -395,25 +387,19 @@
   :type 'boolean
   :group 'message-various)
 
-;;;###autoload
-(defcustom message-cross-post-note
-  "Crosspost & Followup-To: "
+(defcustom message-cross-post-note "Crosspost & Followup-To: "
   "Note to insert before signature to notify of cross-post and follow-up."
   :version "22.1"
   :type 'string
   :group 'message-various)
 
-;;;###autoload
-(defcustom message-followup-to-note
-  "Followup-To: "
+(defcustom message-followup-to-note "Followup-To: "
   "Note to insert before signature to notify of follow-up only."
   :version "22.1"
   :type 'string
   :group 'message-various)
 
-;;;###autoload
-(defcustom message-cross-post-note-function
-  'message-cross-post-insert-note
+(defcustom message-cross-post-note-function 'message-cross-post-insert-note
   "Function to use to insert note about Crosspost or Followup-To.
 The function will be called with four arguments.  The function should not only
 insert a note, but also ensure old notes are deleted.  See the documentation
@@ -1766,7 +1752,7 @@
 ;;; Start of functions adopted from `message-utils.el'.
 
 (defun message-strip-subject-trailing-was (subject)
-  "Remove trailing \"(Was: <old subject>)\" from SUBJECT lines.
+  "Remove trailing \"(was: <old subject>)\" from SUBJECT lines.
 Leading \"Re: \" is not stripped by this function.  Use the function
 `message-strip-subject-re' for this."
   (let* ((query message-subject-trailing-was-query)
@@ -5675,7 +5661,10 @@
 fragmented and very difficult to follow.
 
 Also, some source/announcement lists are not intended for discussion;
-responses here are directed to other addresses.")))
+responses here are directed to other addresses.
+
+You may customize the variable `message-use-mail-followup-to', if you
+want to get rid of this query permanently.")))
 	(setq recipients (concat ", " mft)))
        (to-address
 	(setq recipients (concat ", " to-address))
@@ -5871,7 +5860,10 @@
 `Followup-To: poster' sends your response via e-mail instead of news.
 
 A typical situation where `Followup-To: poster' is used is when the poster
-does not read the newsgroup, so he wouldn't see any replies sent to it."))
+does not read the newsgroup, so he wouldn't see any replies sent to it.
+
+You may customize the variable `message-use-followup-to', if you
+want to get rid of this query permanently."))
 		  (progn
 		    (setq message-this-is-news nil)
 		    (cons 'To (or mrt reply-to from "")))
@@ -5894,7 +5886,10 @@
 be fragmented and very difficult to follow.
 
 Also, some source/announcement newsgroups are not intended for discussion;
-responses here are directed to other newsgroups."))
+responses here are directed to other newsgroups.
+
+You may customize the variable `message-use-followup-to', if you
+want to get rid of this query permanently."))
 		  (cons 'Newsgroups followup-to)
 		(cons 'Newsgroups newsgroups))))))
 	  (posted-to
--- a/lisp/gnus/nnimap.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/gnus/nnimap.el	Wed Mar 09 00:09:34 2005 +0000
@@ -665,6 +665,8 @@
 			    (if (imap-capability 'IMAP4rev1)
 				(format "BODY.PEEK[HEADER.FIELDS %s])" headers)
 			      (format "RFC822.HEADER.LINES %s)" headers)))))
+      (with-current-buffer nntp-server-buffer
+	(sort-numeric-fields 1 1 (buffer-size)))
       (and (numberp nnmail-large-newsgroup)
 	   (> nnimap-length nnmail-large-newsgroup)
 	   (nnheader-message 6 "nnimap: Retrieving headers...done")))))
--- a/lisp/gnus/nnweb.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/gnus/nnweb.el	Wed Mar 09 00:09:34 2005 +0000
@@ -54,11 +54,12 @@
 (defvar nnweb-type-definition
   '((google
      (article . ignore)
-     (id . "http://groups.google.com/groups?selm=%s&output=gplain")
+     (id . "http://groups.google.de/groups?selm=%s&output=gplain")
      (reference . identity)
      (map . nnweb-google-create-mapping)
      (search . nnweb-google-search)
-     (address . "http://groups.google.com/groups")
+     (address . "http://groups.google.de/groups")
+     (base    . "http://groups.google.de")
      (identifier . nnweb-google-identity))
     (dejanews ;; alias of google
      (article . ignore)
@@ -67,6 +68,7 @@
      (map . nnweb-google-create-mapping)
      (search . nnweb-google-search)
      (address . "http://groups.google.com/groups")
+     (base    . "http://groups.google.com")
      (identifier . nnweb-google-identity))
     (gmane
      (article . nnweb-gmane-wash-article)
@@ -349,7 +351,7 @@
 	    "a href=/groups\\(\\?[^ \">]*selm=\\([^ &\">]+\\)\\)" nil t)
       (setq mid (match-string 2)
 	    url (format
-		 "http://groups.google.com/groups?selm=%s&output=gplain" mid))
+		 (nnweb-definition 'id) mid))
       (narrow-to-region (search-forward ">" nil t)
 			(search-forward "</a>" nil t))
       (mm-url-remove-markup)
@@ -420,7 +422,7 @@
 		    (>= i nnweb-max-hits))
 		(setq more nil)
 	      ;; Yup, there are more articles
-	      (setq more (concat "http://groups.google.com" (match-string 1)))
+	      (setq more (concat (nnweb-definition 'base) (match-string 1)))
 	    (when more
 	      (erase-buffer)
 	      (mm-url-insert more))))
@@ -435,9 +437,9 @@
     "?"
     (mm-url-encode-www-form-urlencoded
      `(("q" . ,search)
-       ("num". "100")
+       ("num" . "100")
        ("hq" . "")
-       ("hl" . "")
+       ("hl" . "en")
        ("lr" . "")
        ("safe" . "off")
        ("sites" . "groups")))))
--- a/lisp/help-mode.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/help-mode.el	Wed Mar 09 00:09:34 2005 +0000
@@ -194,8 +194,12 @@
 ;;;###autoload
 (defun help-mode-finish ()
   (let ((entry (assq (selected-window) view-return-to-alist)))
-	(if entry (setcdr entry (cons (selected-window)
-				      help-return-method))
+	(if entry
+	    ;; When entering Help mode from the Help window,
+	    ;; such as by following a link, preserve the same
+	    ;; meaning for the q command.
+	    ;; (setcdr entry (cons (selected-window) help-return-method))
+	    nil
 	  (setq view-return-to-alist
 		(cons (cons (selected-window) help-return-method)
 		      view-return-to-alist))))
--- a/lisp/image-file.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/image-file.el	Wed Mar 09 00:09:34 2005 +0000
@@ -135,6 +135,7 @@
 	  (setq truncate-lines t))))
     rval))
 
+(put 'image-file-handler 'safe-magic t)
 (defun image-file-handler (operation &rest args)
   "Filename handler for inserting image files.
 OPERATION is the operation to perform, on ARGS.
--- a/lisp/info.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/info.el	Wed Mar 09 00:09:34 2005 +0000
@@ -1646,10 +1646,16 @@
   (Info-search regexp bound noerror count 'backward))
 
 (defun Info-isearch-search ()
-  (if (and Info-isearch-search (not isearch-word))
+  (if Info-isearch-search
       (lambda (string &optional bound noerror count)
 	(condition-case nil
-	    (progn
+	    (if isearch-word
+		(Info-search (concat "\\b" (replace-regexp-in-string
+					    "\\W+" "\\\\W+"
+					    (replace-regexp-in-string
+					     "^\\W+\\|\\W+$" "" string)) "\\b")
+			     bound noerror count
+			     (unless isearch-forward 'backward))
 	      (Info-search (if isearch-regexp string (regexp-quote string))
 			   bound noerror count
 			   (unless isearch-forward 'backward))
@@ -1659,7 +1665,7 @@
       (isearch-search-fun))))
 
 (defun Info-isearch-wrap ()
-  (when (and Info-isearch-search (not isearch-word))
+  (when Info-isearch-search
     (if isearch-forward (Info-top-node) (Info-final-node))
     (goto-char (if isearch-forward (point-min) (point-max)))))
 
--- a/lisp/international/ccl.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/international/ccl.el	Wed Mar 09 00:09:34 2005 +0000
@@ -1305,7 +1305,9 @@
 
 BUFFER_MAGNIFICATION is an integer value specifying the approximate
 output buffer magnification size compared with the bytes of input data
-text.  If the value is zero, the CCL program can't execute `read' and
+text.  It is assured that the actual output buffer has 256 bytes
+more than the size calculated by BUFFER_MAGNIFICATION.
+If the value is zero, the CCL program can't execute `read' and
 `write' commands.
 
 CCL_MAIN_CODE and CCL_EOF_CODE are CCL program codes.  CCL_MAIN_CODE
--- a/lisp/jit-lock.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/jit-lock.el	Wed Mar 09 00:09:34 2005 +0000
@@ -415,6 +415,7 @@
   (unless (or executing-kbd-macro
 	      (window-minibuffer-p (selected-window)))
     (let ((buffers (buffer-list))
+	  (outer-buffer (current-buffer))
 	  minibuffer-auto-raise
 	  message-log-max)
       (with-local-quit
@@ -449,7 +450,10 @@
 		      (point (point-min)))
 		  (while (and (setq start
 				    (jit-lock-stealth-chunk-start point))
-			      (sit-for nice))
+			      ;; In case sit-for runs any timers,
+			      ;; give them the expected current buffer.
+			      (with-current-buffer outer-buffer
+				(sit-for nice)))
 
 		    ;; fontify a block.
 		    (jit-lock-fontify-now start (+ start jit-lock-chunk-size))
@@ -461,7 +465,10 @@
 		    ;; Wait a little if load is too high.
 		    (when (and jit-lock-stealth-load
 			       (> (car (load-average)) jit-lock-stealth-load))
-		      (sit-for (or jit-lock-stealth-time 30)))))))))))))
+		      ;; In case sit-for runs any timers,
+		      ;; give them the expected current buffer.
+		      (with-current-buffer outer-buffer
+			(sit-for (or jit-lock-stealth-time 30))))))))))))))
 
 
 
--- a/lisp/menu-bar.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/menu-bar.el	Wed Mar 09 00:09:34 2005 +0000
@@ -184,6 +184,8 @@
 	      :help "Insert another file into current buffer"))
 (define-key menu-bar-file-menu [dired]
   '(menu-item "Open Directory..." dired
+	      :enable (not (window-minibuffer-p
+			    (frame-selected-window menu-updating-frame)))
 	      :help "Read a directory, operate on its files"))
 (define-key menu-bar-file-menu [open-file]
   '(menu-item "Open File..." find-file-existing
@@ -590,7 +592,7 @@
 (defmacro menu-bar-make-mm-toggle (fname doc help &optional props)
   "Make a menu-item for a global minor mode toggle.
 FNAME is the minor mode's name (variable and function).
-DOC is the text to use the menu entry.
+DOC is the text to use for the menu entry.
 HELP is the text to use for the tooltip.
 PROPS are additional properties."
   `'(menu-item ,doc ,fname
@@ -637,7 +639,8 @@
     ;; These are set with menu-bar-make-mm-toggle, which does not
     ;; put on a customized-value property.
     (dolist (elt '(line-number-mode column-number-mode cua-mode show-paren-mode
-		   transient-mark-mode global-font-lock-mode))
+		   transient-mark-mode global-font-lock-mode
+		   blink-cursor-mode))
       (and (customize-mark-to-save elt)
 	   (setq need-save t)))
     ;; These are set with `customize-set-variable'.
@@ -959,6 +962,14 @@
 			"Enter Lisp debugger when an error is signaled"))
 (define-key menu-bar-options-menu [debugger-separator]
   '("--"))
+
+(define-key menu-bar-options-menu [blink-cursor-mode]
+  (menu-bar-make-mm-toggle blink-cursor-mode
+			   "Blinking Cursor"
+			   "Whether the cursor blinks (Blink Cursor mode)"))
+(define-key menu-bar-options-menu [cursor-separator]
+  '("--"))
+
 (define-key menu-bar-options-menu [toggle-auto-compression]
   '(menu-item "Automatic File De/compression"
 	      auto-compression-mode
--- a/lisp/novice.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/novice.el	Wed Mar 09 00:09:34 2005 +0000
@@ -49,7 +49,7 @@
 (defun disabled-command-function (&rest ignore)
   (let (char)
     (save-window-excursion
-     (with-output-to-temp-buffer "*Help*"
+     (with-output-to-temp-buffer "*Disabled Command*"
        (let ((keys (this-command-keys)))
 	 (if (or (eq (aref keys 0)
 		     (if (stringp keys)
@@ -68,7 +68,7 @@
 	 (princ "It is disabled because new users often find it confusing.\n")
 	 (princ "Here's the first part of its description:\n\n")
 	 ;; Keep only the first paragraph of the documentation.
-	 (with-current-buffer "*Help*"
+	 (with-current-buffer "*Disabled Command*"
 	   (goto-char (point-max))
 	   (let ((start (point)))
 	     (save-excursion
@@ -91,10 +91,15 @@
 	(help-mode)))
      (message "Type y, n, ! or SPC (the space bar): ")
      (let ((cursor-in-echo-area t))
-       (while (not (memq (setq char (downcase (read-char)))
-			 '(?! ?y ?n ?\ )))
+       (while (progn (setq char (read-event))
+		     (or (not (numberp char))
+			 (not (memq (downcase char)
+				    '(?! ?y ?n ?\  ?\C-g)))))
 	 (ding)
 	 (message "Please type y, n, ! or SPC (the space bar): "))))
+    (setq char (downcase char))
+    (if (= char ?\C-g)
+	(setq quit-flag t))
     (if (= char ?!)
 	(setq disabled-command-function nil))
     (if (= char ?y)
--- a/lisp/progmodes/compile.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/progmodes/compile.el	Wed Mar 09 00:09:34 2005 +0000
@@ -514,6 +514,10 @@
       (and (cdr type) (match-end (cdr type)) compilation-info-face)
       compilation-error-face))
 
+;; Internal function for calculating the text properties of a directory
+;; change message.  The directory property is important, because it is
+;; the stack of nested enter-messages.  Relative filenames on the following
+;; lines are relative to the top of the stack.
 (defun compilation-directory-properties (idx leave)
   (if leave (setq leave (match-end leave)))
   ;; find previous stack, and push onto it, or if `leave' pop it
--- a/lisp/progmodes/gdb-ui.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/progmodes/gdb-ui.el	Wed Mar 09 00:09:34 2005 +0000
@@ -341,8 +341,12 @@
 	  (speedbar 1)
 	  (if (equal (nth 2 var) "0")
 	      (gdb-enqueue-input
-	       (list (concat "server interpreter mi \"-var-evaluate-expression "
-			     (nth 1 var) "\"\n")
+	       (list
+		(if (with-current-buffer
+			gud-comint-buffer (eq gud-minor-mode 'gdba))
+		    (concat "server interpreter mi \"-var-evaluate-expression "
+			    (nth 1 var) "\"\n")
+		  (concat "-var-evaluate-expression " (nth 1 var) "\n"))
 		     `(lambda () (gdb-var-evaluate-expression-handler
 				  ,(nth 1 var) nil))))
 	    (setq gdb-var-changed t)))
@@ -368,8 +372,8 @@
 
 (defun gdb-var-list-children (varnum)
   (gdb-enqueue-input
-   (list (concat "server interpreter mi \"-var-list-children "  varnum "\"\n")
-	     `(lambda () (gdb-var-list-children-handler ,varnum)))))
+   (list (concat "server interpreter mi \"-var-list-children " varnum "\"\n")
+	 `(lambda () (gdb-var-list-children-handler ,varnum)))))
 
 (defconst gdb-var-list-children-regexp
   "name=\"\\(.*?\\)\",exp=\"\\(.*?\\)\",numchild=\"\\(.*?\\)\"")
@@ -674,9 +678,12 @@
 (defun gdb-send (proc string)
   "A comint send filter for gdb.
 This filter may simply queue input for a later time."
-  (if gud-running
-      (process-send-string proc (concat string "\n"))
-    (gdb-enqueue-input (concat string "\n"))))
+  (let ((item (concat string "\n")))
+    (if gud-running
+      (progn
+	(if gdb-enable-debug-log (push (cons 'send item) gdb-debug-log))
+	(process-send-string proc item))
+      (gdb-enqueue-input item))))
 
 ;; Note: Stuff enqueued here will be sent to the next prompt, even if it
 ;; is a query, or other non-top-level prompt.
@@ -697,7 +704,7 @@
 
 (defun gdb-send-item (item)
   (setq gdb-flush-pending-output nil)
-  (if gdb-enable-debug-log (push (cons 'send item) gdb-debug-log))
+  (if gdb-enable-debug-log (push (cons 'send-item item) gdb-debug-log))
   (setq gdb-current-item item)
   (with-current-buffer gud-comint-buffer
     (if (eq gud-minor-mode 'gdba)
--- a/lisp/reveal.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/reveal.el	Wed Mar 09 00:09:34 2005 +0000
@@ -161,8 +161,9 @@
 
 (defvar reveal-mode-map
   (let ((map (make-sparse-keymap)))
-    ;; Override the default move-end-of-line which skips valuable
-    ;; invisible text.
+    ;; Override the default move-beginning-of-line and move-end-of-line
+    ;; which skips valuable invisible text.
+    (define-key map [?\C-a] 'beginning-of-line)
     (define-key map [?\C-e] 'end-of-line)
     map))
 
--- a/lisp/simple.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/simple.el	Wed Mar 09 00:09:34 2005 +0000
@@ -733,10 +733,48 @@
 
 ;; Counting lines, one way or another.
 
-(defun goto-line (arg)
-  "Goto line ARG, counting from line 1 at beginning of buffer."
-  (interactive "NGoto line: ")
-  (setq arg (prefix-numeric-value arg))
+(defun goto-line (arg &optional buffer)
+  "Goto line ARG, counting from line 1 at beginning of buffer.
+Normally, move point in the curren buffer.
+With just C-u as argument, move point in the most recently displayed
+other buffer, and switch to it.
+
+If there's a number in the buffer at point, it is the default for ARG."
+  (interactive
+   (if (and current-prefix-arg (not (consp current-prefix-arg)))
+       (list (prefix-numeric-value current-prefix-arg))
+     ;; Look for a default, a number in the buffer at point.
+     (let* ((default
+	      (save-excursion
+		(skip-chars-backward "0-9")
+		(if (looking-at "[0-9]")
+		    (buffer-substring-no-properties
+		     (point)
+		     (progn (skip-chars-forward "0-9")
+			    (point))))))
+	    ;; Decide if we're switching buffers.
+	    (buffer
+	     (if (consp current-prefix-arg)
+		 (other-buffer (current-buffer) t)))
+	    (buffer-prompt
+	     (if buffer
+		 (concat " in " (buffer-name buffer))
+	       "")))
+       ;; Read the argument, offering that number (if any) as default.
+       (list (read-from-minibuffer (format (if default "Goto line%s (%s): "
+					     "Goto line%s: ")
+					   buffer-prompt
+					   default)
+				   nil nil t
+				   'minibuffer-history
+				   default)
+	     buffer))))
+  ;; Switch to the desired buffer, one way or another.
+  (if buffer
+      (let ((window (get-buffer-window buffer)))
+	(if window (select-window window)
+	  (switch-to-buffer-other-window buffer))))
+  ;; Move to the specified line number in that buffer.
   (save-restriction
     (widen)
     (goto-char 1)
@@ -2875,6 +2913,14 @@
 (put 'mark-inactive 'error-conditions '(mark-inactive error))
 (put 'mark-inactive 'error-message "The mark is not active now")
 
+(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")
+
+(defvar deactivate-mark-hook nil
+  "Hook run when the mark becomes inactive.")
+
 (defun mark (&optional force)
   "Return this buffer's mark value as integer; error if mark inactive.
 If optional argument FORCE is non-nil, access the mark value
@@ -2966,6 +3012,7 @@
     (if (or arg (null mark) (/= mark (point)))
 	(push-mark nil nomsg t)
       (setq mark-active t)
+      (run-hooks 'activate-mark-hook)
       (unless nomsg
 	(message "Mark activated")))))
 
@@ -3470,6 +3517,33 @@
 	      (setq arg 1)
 	    (setq done t)))))))
 
+(defun move-beginning-of-line (arg)
+  "Move point to beginning of current display line.
+With argument ARG not nil or 1, move forward ARG - 1 lines first.
+If point reaches the beginning or end of buffer, it stops there.
+To ignore intangibility, bind `inhibit-point-motion-hooks' to t.
+
+This command does not move point across a field boundary unless doing so
+would move beyond there to a different line; if ARG is nil or 1, and
+point starts at a field boundary, point does not move.  To ignore field
+boundaries bind `inhibit-field-text-motion' to t."
+  (interactive "p")
+  (or arg (setq arg 1))
+  (if (/= arg 1)
+      (line-move (1- arg) t))
+  (let (done pos)
+    (while (not done)
+      (beginning-of-line 1)
+      ;; (not bolp) means that it stopped at a field boundary.
+      (if (or (bobp) (not (bolp)))
+	  (setq done t)
+	(sit-for 0)
+	(if (and (consp (setq pos (pos-visible-in-window-p (point) nil t)))
+		 (= (car pos) 0))
+	    (setq done t)
+	  (backward-char 1))))))
+
+
 ;;; Many people have said they rarely use this feature, and often type
 ;;; it by accident.  Maybe it shouldn't even be on a key.
 (put 'set-goal-column 'disabled t)
@@ -4987,7 +5061,17 @@
 
 ;;; Handling of Backspace and Delete keys.
 
-(defcustom normal-erase-is-backspace nil
+(defcustom normal-erase-is-backspace
+  (and (not noninteractive)
+       (or (memq system-type '(ms-dos windows-nt))
+	   (and (memq window-system '(x))
+		(fboundp 'x-backspace-delete-keys-p)
+		(x-backspace-delete-keys-p))
+	   ;; If the terminal Emacs is running on has erase char
+	   ;; set to ^H, use the Backspace key for deleting
+	   ;; backward and, and the Delete key for deleting forward.
+	   (and (null window-system)
+		(eq tty-erase-char ?\^H))))
   "If non-nil, Delete key deletes forward and Backspace key deletes backward.
 
 On window systems, the default value of this option is chosen
--- a/lisp/startup.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/startup.el	Wed Mar 09 00:09:34 2005 +0000
@@ -1,7 +1,7 @@
 ;;; startup.el --- process Emacs shell arguments
 
-;; Copyright (C) 1985, 86, 92, 94, 95, 96, 97, 98, 99, 2000, 01, 02, 2004
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1986, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+;;   2001, 2002, 2004, 2005  Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: internal
@@ -283,6 +283,8 @@
 
 (defvar normal-top-level-add-subdirs-inode-list nil)
 
+(defvar no-blinking-cursor nil)
+
 (defvar pure-space-overflow nil
   "Non-nil if building Emacs overflowed pure space.")
 
@@ -563,22 +565,9 @@
   (setq command-line-default-directory default-directory)
 
   ;; Choose a reasonable location for temporary files.
-  (setq temporary-file-directory
-	(file-name-as-directory
-	 (cond ((memq system-type '(ms-dos windows-nt))
-		(or (getenv "TEMP") (getenv "TMPDIR") (getenv "TMP") "c:/temp"))
-	       ((memq system-type '(vax-vms axp-vms))
-		(or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "SYS$SCRATCH:"))
-	       (t
-		(or (getenv "TMPDIR") (getenv "TMP") (getenv "TEMP") "/tmp")))))
-  (setq small-temporary-file-directory
-	(if (eq system-type 'ms-dos)
-	    (getenv "TMPDIR")))
-  (setq auto-save-file-name-transforms
-	(list (list (car (car auto-save-file-name-transforms))
-		    ;; Don't put "\\2" inside expand-file-name, since
-		    ;; it will be transformed to "/2" on DOS/Windows.
-		    (concat temporary-file-directory "\\2") t)))
+  (custom-reevaluate-setting 'temporary-file-directory)
+  (custom-reevaluate-setting 'small-emporary-file-directory)
+  (custom-reevaluate-setting 'auto-save-file-name-transforms)
 
   ;; See if we should import version-control from the environment variable.
   (let ((vc (getenv "VERSION_CONTROL")))
@@ -667,7 +656,8 @@
     ;; does things.
     (while (and (not done) args)
       (let* ((longopts '(("--no-init-file") ("--no-site-file") ("--user")
-                         ("--debug-init") ("--iconic") ("--icon-type")))
+                         ("--debug-init") ("--iconic") ("--icon-type")
+			 ("--no-blinking-cursor")))
              (argi (pop args))
              (orig-argi argi)
              argval)
@@ -690,6 +680,7 @@
 	 ((equal argi "-Q")
 	  (setq init-file-user nil
 		site-run-file nil
+		no-blinking-cursor t
 		emacs-quick-startup t)
 	  (push '(vertical-scroll-bars . nil) initial-frame-alist))
 	 ((member argi '("-q" "-no-init-file"))
@@ -705,6 +696,8 @@
 	  (push '(visibility . icon) initial-frame-alist))
 	 ((member argi '("-icon-type" "-i" "-itype"))
 	  (push '(icon-type . t) default-frame-alist))
+	 ((member argi '("-nbc" "-no-blinking-cursor"))
+	  (setq no-blinking-cursor t))
 	 ;; Push the popped arg back on the list of arguments.
 	 (t
           (push argi args)
@@ -736,35 +729,14 @@
     (tool-bar-mode 1))
 
   ;; Can't do this init in defcustom because the relevant variables
-  ;; are not set.  If you make any changes to the `or' form below,
-  ;; you should also change the corresponding expression in the
-  ;; defcustom in frame.el, or Custom will be badly confused.
-  (unless (or noninteractive
-	      emacs-quick-startup
-              (eq system-type 'ms-dos)
-              (not (memq window-system '(x w32))))
-    (blink-cursor-mode 1))
-
-  (unless noninteractive
-    ;; DOS/Windows systems have a PC-type keyboard which has both
-    ;; <delete> and <backspace> keys.
-    (when (or (memq system-type '(ms-dos windows-nt))
-	      (and (memq window-system '(x))
-		   (fboundp 'x-backspace-delete-keys-p)
-		   (x-backspace-delete-keys-p))
-	      ;; If the terminal Emacs is running on has erase char
-	      ;; set to ^H, use the Backspace key for deleting
-	      ;; backward and, and the Delete key for deleting forward.
-	      (and (null window-system)
-		   (eq tty-erase-char 8)))
-      (setq-default normal-erase-is-backspace t)
-      (normal-erase-is-backspace-mode 1)))
+  ;; are not set.
+  (custom-reevaluate-setting 'blink-cursor-mode)
+  (custom-reevaluate-setting 'normal-erase-is-backspace)
 
   (unless (or noninteractive
 	      emacs-quick-startup
               (not (display-graphic-p))
               (not (fboundp 'x-show-tip)))
-    (setq-default tooltip-mode t)
     (tooltip-mode 1))
 
   ;; Register default TTY colors for the case the terminal hasn't a
@@ -1748,5 +1720,5 @@
       (setq file (replace-match "/" t t file)))
     file))
 
-;;; arch-tag: 7e294698-244d-4758-984b-4047f887a5db
+;; arch-tag: 7e294698-244d-4758-984b-4047f887a5db
 ;;; startup.el ends here
--- a/lisp/textmodes/flyspell.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/textmodes/flyspell.el	Wed Mar 09 00:09:34 2005 +0000
@@ -1329,7 +1329,7 @@
 		    nil
 		    buffer
 		    nil
-		    "-l"
+		    (if ispell-really-aspell "list" "-l")
 		    (let (args)
 		      ;; Local dictionary becomes the global dictionary in use.
 		      (if ispell-local-dictionary
--- a/lisp/textmodes/sgml-mode.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/textmodes/sgml-mode.el	Wed Mar 09 00:09:34 2005 +0000
@@ -348,7 +348,7 @@
   "*When non-nil, tag insertion functions will be XML-compliant.
 If this variable is customized, the custom value is used always.
 Otherwise, it is set to be buffer-local when the file has
- a DOCTYPE or an XML declaration."
+a DOCTYPE or an XML declaration."
   :type 'boolean
   :version "22.1"
   :group 'sgml)
@@ -627,7 +627,7 @@
       (backward-char)
       '(("") " [ " _ " ]]"))
      ((and (eq v2 t) sgml-xml-mode (member ,str sgml-empty-tags))
-      '(("") -1 "/>"))
+      '(("") -1 " />"))
      ((or (and (eq v2 t) (not sgml-xml-mode)) (string-match "^[/!?]" ,str))
       nil)
      ((symbolp v2)
@@ -816,7 +816,8 @@
 	      (goto-char close)
 	      (kill-sexp 1))
 	  (setq open (point))
-	  (when (sgml-skip-tag-forward 1)
+	  (when (and (sgml-skip-tag-forward 1)
+		     (not (looking-back "/>")))
 	    (kill-sexp -1)))
 	;; Delete any resulting empty line.  If we didn't kill-sexp,
 	;; this *should* do nothing, because we're right after the tag.
@@ -1570,7 +1571,7 @@
       ("dir" ,@list)
       ("font" nil "size" ("-1") ("+1") ("-2") ("+2") ,@1-7)
       ("form" (\n _ \n "<input type=\"submit\" value=\"\""
-	       (if sgml-xml-mode "/>" ">"))
+	       (if sgml-xml-mode " />" ">"))
        ("action" ,@(cdr href)) ("method" ("get") ("post")))
       ("h1" ,@align)
       ("h2" ,@align)
@@ -1889,13 +1890,15 @@
 (define-skeleton html-href-anchor
   "HTML anchor tag with href attribute."
   "URL: "
-  '(setq input "http:")
+  ;; '(setq input "http:")
   "<a href=\"" str "\">" _ "</a>")
 
 (define-skeleton html-name-anchor
   "HTML anchor tag with name attribute."
   "Name: "
-  "<a name=\"" str "\">" _ "</a>")
+  "<a name=\"" str "\""
+  (if sgml-xml-mode (concat " id=\"" str "\""))
+  ">" _ "</a>")
 
 (define-skeleton html-headline-1
   "HTML level 1 headline tags."
@@ -1930,18 +1933,18 @@
 (define-skeleton html-horizontal-rule
   "HTML horizontal rule tag."
   nil
-  (if sgml-xml-mode "<hr/>" "<hr>") \n)
+  (if sgml-xml-mode "<hr />" "<hr>") \n)
 
 (define-skeleton html-image
   "HTML image tag."
-  nil
-  "<img src=\"" _ "\""
-  (if sgml-xml-mode "/>" ">"))
+  "Image URL: "
+  "<img src=\"" str "\" alt=\"" _ "\""
+  (if sgml-xml-mode " />" ">"))
 
 (define-skeleton html-line
   "HTML line break tag."
   nil
-  (if sgml-xml-mode "<br/>" "<br>") \n)
+  (if sgml-xml-mode "<br />" "<br>") \n)
 
 (define-skeleton html-ordered-list
   "HTML ordered list tags."
@@ -1967,7 +1970,7 @@
   "HTML paragraph tag."
   nil
   (if (bolp) nil ?\n)
-  \n "<p>" _ (if sgml-xml-mode "</p>"))
+  "<p>" _ (if sgml-xml-mode "</p>"))
 
 (define-skeleton html-checkboxes
   "Group of connected checkbox inputs."
@@ -1979,12 +1982,13 @@
    "\" name=\"" (or v1 (setq v1 (skeleton-read "Name: ")))
    "\" value=\"" str ?\"
    (when (y-or-n-p "Set \"checked\" attribute? ")
-     (funcall skeleton-transformation " checked"))
-   (if sgml-xml-mode "/>" ">")
+     (funcall skeleton-transformation
+	      (if sgml-xml-mode " checked=\"checked\"" " checked")))
+   (if sgml-xml-mode " />" ">")
    (skeleton-read "Text: " (capitalize str))
    (or v2 (setq v2 (if (y-or-n-p "Newline after text? ")
 		       (funcall skeleton-transformation
-                                (if sgml-xml-mode "<br/>" "<br>"))
+                                (if sgml-xml-mode "<br />" "<br>"))
 		     "")))
    \n))
 
@@ -1998,12 +2002,13 @@
    "\" name=\"" (or (car v2) (setcar v2 (skeleton-read "Name: ")))
    "\" value=\"" str ?\"
    (when (and (not v1) (setq v1 (y-or-n-p "Set \"checked\" attribute? ")))
-     (funcall skeleton-transformation " checked"))
-   (if sgml-xml-mode "/>" ">")
+     (funcall skeleton-transformation
+	      (if sgml-xml-mode " checked=\"checked\"" " checked")))
+   (if sgml-xml-mode " />" ">")
    (skeleton-read "Text: " (capitalize str))
    (or (cdr v2) (setcdr v2 (if (y-or-n-p "Newline after text? ")
 			       (funcall skeleton-transformation
-                                        (if sgml-xml-mode "<br/>" "<br>"))
+                                        (if sgml-xml-mode "<br />" "<br>"))
 			     "")))
    \n))
 
--- a/lisp/textmodes/texinfmt.el	Tue Mar 08 08:37:20 2005 +0000
+++ b/lisp/textmodes/texinfmt.el	Wed Mar 09 00:09:34 2005 +0000
@@ -37,7 +37,7 @@
     (defmacro defcustom (var value doc &rest ignore)
       `(defvar ,var ,value ,doc)))
 
-(defvar texinfmt-version "2.40 of  6 Dec 2002")
+(defvar texinfmt-version "2.41 of  1 Mar 2005")
 
 (defun texinfmt-version (&optional here)
   "Show the version of texinfmt.el in the minibuffer.
@@ -637,7 +637,7 @@
 	    (forward-char 1)
 	    (unless (re-search-backward "@c[ \t\n]\\|@comment[ \t\n]" line-beg t)
 	      (forward-char -1))
-	    (unless (re-search-backward "@refill\\|@bye" line-beg t)
+	    (unless (re-search-backward "@refill\\|^[ \t]*@" line-beg t)
 	      (insert "@refill")))
           (forward-line 1))))))
 
--- a/lispref/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,125 @@
+2005-03-08  Kim F. Storm  <storm@cua.dk>
+
+	* display.texi (Specified Space): Property :width is support on
+	non-graphic terminals, :height is not.
+
+2005-03-07  Richard M. Stallman  <rms@gnu.org>
+
+	* display.texi (Overlay Arrow, Fringe Bitmaps, Customizing Bitmaps):
+	Now subnodes of Fringes.
+	(Overlay Arrow): Document overlay-arrow-variable-list.
+	(Fringe Size/Pos): New node, broken out of Fringes.
+	(Display): Explain clearing vs redisplay better.
+	(Truncation): Clarify use of bitmaps.
+	(The Echo Area): Clarify the uses of the echo area.
+	Add max-mini-window-height.
+	(Progress): Clarify.
+	(Invisible Text): Explain that main loop moves point out.
+	(Selective Display): Say "hidden", not "invisible".
+	(Managing Overlays): Moved up.  Describe relation to Undo here.
+	(Overlay Properties): Clarify intro.
+	(Finding Overlays): Explain return values when nothing found.
+	(Width): truncate-string-to-width has added arg.
+	(Displaying Faces): Clarify and update mode line face handling.
+	(Face Functions): Minor cleanup.
+	(Conditional Display): Merged into Other Display Specs.
+	(Pixel Specification, Other Display Specs): Minor cleanups.
+	(Images, Image Descriptors): Minor cleanups.
+	(GIF Images): Patents have expired.
+	(Showing Images): Explain default text for insert-image.
+	(Manipulating Button Types): Merged into Manipulating Buttons.
+	(Making Buttons): Explain return values.
+	(Button Buffer Commands): Add xref.
+	(Inverse Video): Update mode-line-inverse-video.
+	(Display Table Format): Clarify.
+	(Active Display Table): Give defaults for window-display-table.
+
+	* calendar.texi (Calendar Customizing): calendar-holiday-marker
+	and calendar-today-marker are strings, not chars.
+	(Holiday Customizing): Minor fix.
+
+	* nonascii.texi (Text Representations): Clarify position-bytes.
+	(Character Sets): Add list-charset-chars.
+	(Scanning Charsets): Add charset-after.
+	(Encoding and I/O): Minor fix.
+
+	* internals.texi (Writing Emacs Primitives): Update `or' example.
+	Update limit on # args of subr.
+
+	* edebug.texi (Using Edebug): Arrow is in fringe.
+	(Instrumenting): Arg to eval-defun works without loading edebug.
+	(Edebug Execution Modes): Add xref.
+
+	* customize.texi (Common Keywords): Clarify :require.
+	Mention :version here.
+	(Variable Definitions, Group Definitions): Not here.
+	(Variable Definitions): Clarify symbol arg to :initialize and :set fns.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* windows.texi (Vertical Scrolling): Get rid of "Emacs 21".
+	(Resizing Windows): Likewise.
+
+	* text.texi (Change Hooks): Get rid of "Emacs 21".
+
+	* strings.texi (Formatting Strings): Get rid of "Emacs 21".
+
+	* streams.texi (Output Variables): Get rid of "Emacs 21".
+
+	* searching.texi (Regexp Special, Char Classes): Get rid of "Emacs 21".
+
+	* os.texi (Translating Input): Replace flow-control example
+	with a less obsolete example that uses `keyboard-translate'.
+
+	* objects.texi (Hash Table Type, Circular Objects):
+	Get rid of "Emacs 21".
+
+	* modes.texi (Mode Line Format): Get rid of "Emacs 21".
+	(Mode Line Data, Properties in Mode, Header Lines): Likewise.
+
+	* minibuf.texi (Minibuffer Misc): Get rid of "Emacs 21".
+
+	* lists.texi (List Elements, Building Lists): Get rid of "Emacs 21".
+
+	* keymaps.texi (Menu Separators, Tool Bar): Get rid of "Emacs 21".
+	(Menu Bar): Fix when menu-bar-update-hook is called.
+
+	* hash.texi (Hash Tables): Get rid of "Emacs 21".
+
+	* frames.texi (Text Terminal Colors): Get rid of "Emacs 21",
+	and make it read better.
+
+	* files.texi (Writing to Files): Get rid of "Emacs 21".
+	(Unique File Names): Likewise.
+
+	* elisp.texi: Update Emacs version to 22.
+
+	* display.texi (Forcing Redisplay): Get rid of "Emacs 21".
+	(Overlay Properties, Face Attributes): Likewise.
+	(Managing Overlays): Fix punctuation.
+	(Attribute Functions): Clarify set-face-font; get rid of
+	info about old Emacs versions.
+	(Auto Faces, Font Lookup, Display Property, Images):
+	Get rid of "Emacs 21".
+
+	* calendar.texi (Calendar Customizing): Get rid of "Emacs 21".
+
+2005-03-05  Richard M. Stallman  <rms@gnu.org>
+
+	* debugging.texi (Error Debugging): Remove stack-trace-on-error.
+
+2005-03-04  Lute Kamstra  <lute@gnu.org>
+
+	* debugging.texi (Error Debugging): Document stack-trace-on-error.
+
+2005-03-03  Lute Kamstra  <lute@gnu.org>
+
+	* edebug.texi (Instrumenting Macro Calls): Fix typo.
+
+2005-03-01  Lute Kamstra  <lute@gnu.org>
+
+	* debugging.texi (Debugger Commands): Update `j'.
+
 2005-02-28  Lute Kamstra  <lute@gnu.org>
 
 	* debugging.texi (Debugging): Fix typo.
--- a/lispref/calendar.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/calendar.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -62,12 +62,12 @@
 @vindex calendar-holiday-marker
 @vindex diary-entry-marker
   The variable @code{calendar-holiday-marker} specifies how to mark a
-date as being a holiday.  Its value may be a character to insert next to
-the date, or a face name to use for displaying the date.  Likewise, the
-variable @code{diary-entry-marker} specifies how to mark a date that has
-diary entries.  The calendar creates faces named @code{holiday-face} and
-@code{diary-face} for these purposes; those symbols are the default
-values of these variables.
+date as being a holiday.  Its value may be a single-character string
+to insert next to the date, or a face name to use for displaying the
+date.  Likewise, the variable @code{diary-entry-marker} specifies how
+to mark a date that has diary entries.  The calendar creates faces
+named @code{holiday-face} and @code{diary-face} for these purposes;
+those symbols are the default values of these variables.
 
 @vindex calendar-load-hook
   The variable @code{calendar-load-hook} is a normal hook run when the
@@ -103,11 +103,11 @@
 
 @noindent
 @vindex calendar-today-marker
-The variable @code{calendar-today-marker} specifies how to mark today's
-date.  Its value should be a character to insert next to the date or a
-face name to use for displaying the date.  A face named
-@code{calendar-today-face} is provided for this purpose; that symbol is
-the default for this variable.
+The variable @code{calendar-today-marker} specifies how to mark
+today's date.  Its value should be a single-character string to insert
+next to the date or a face name to use for displaying the date.  A
+face named @code{calendar-today-face} is provided for this purpose;
+that symbol is the default for this variable.
 
 @vindex today-invisible-calendar-hook
 @noindent
@@ -115,8 +115,8 @@
 the current date is @emph{not} visible in the window.
 
 @vindex calendar-move-hook
-  Starting in Emacs 21, each of the calendar cursor motion commands
-runs the hook @code{calendar-move-hook} after it moves the cursor.
+  Each of the calendar cursor motion commands runs the hook
+@code{calendar-move-hook} after it moves the cursor.
 
 @node Holiday Customizing
 @section Customizing the Holidays
@@ -130,7 +130,7 @@
 deleting holidays.  The lists of holidays that Emacs uses are for
 general holidays (@code{general-holidays}), local holidays
 (@code{local-holidays}), Christian holidays (@code{christian-holidays}),
-Hebrew (Jewish) holidays (@code{hebrew-holidays}), Islamic (Moslem)
+Hebrew (Jewish) holidays (@code{hebrew-holidays}), Islamic (Muslim)
 holidays (@code{islamic-holidays}), and other holidays
 (@code{other-holidays}).
 
--- a/lispref/customize.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/customize.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -84,13 +84,17 @@
 not already loaded.
 
 @item :require @var{feature}
-Require feature @var{feature} (a symbol) when installing a value for
-this item (an option or a face) that was saved using the customization
-feature.  This is done by calling @code{require}.
+Execute @code{(require '@var{feature})} when your saved customizations
+set the value of this item.  @var{feature} should be a symbol.
 
 The most common reason to use @code{:require} is when a variable enables
 a feature such as a minor mode, and just setting the variable won't have
 any effect unless the code which implements the mode is loaded.
+
+@item :version @var{version}
+This option specifies that the item was first introduced in Emacs
+version @var{version}, or that its default value was changed in that
+version.  The value @var{version} must be a string.
 @end table
 
 @node Group Definitions
@@ -130,17 +134,9 @@
 Useful widgets are @code{custom-variable} for a variable,
 @code{custom-face} for a face, and @code{custom-group} for a group.
 
-When a new group is introduced into Emacs, use this keyword in
-@code{defgroup}:
-
-@table @code
-@item :version @var{version}
-This option specifies that the group was first introduced in Emacs
-version @var{version}.  The value @var{version} must be a string.
-@end table
-
-Tag the group with a version like this when it is introduced, rather
-than the individual members (@pxref{Variable Definitions}).
+When you introduce a new group into Emacs, use the @code{:version}
+keyword in the @code{defgroup}; then you need not use it for
+the individual members of the group.
 
 In addition to the common keywords (@pxref{Common Keywords}), you can
 also use this keyword in @code{defgroup}:
@@ -223,26 +219,13 @@
 @code{hook}, @code{plist} and @code{alist}.  See the definition of the
 individual types for a description of how to use @code{:options}.
 
-@item :version @var{version}
-This option specifies that the variable was first introduced, or its
-default value was changed, in Emacs version @var{version}.  The value
-@var{version} must be a string.  For example,
-
-@example
-(defcustom foo-max 34
-  "*Maximum number of foo's allowed."
-  :type 'integer
-  :group 'foo
-  :version "20.3")
-@end example
-
 @item :set @var{setfunction}
-Specify @var{setfunction} as the way to change the value of this option.
-The function @var{setfunction} should take two arguments, a symbol and
-the new value, and should do whatever is necessary to update the value
-properly for this option (which may not mean simply setting the option
-as a Lisp variable).  The default for @var{setfunction} is
-@code{set-default}.
+Specify @var{setfunction} as the way to change the value of this
+option.  The function @var{setfunction} should take two arguments, a
+symbol (the option name) and the new value, and should do whatever is
+necessary to update the value properly for this option (which may not
+mean simply setting the option as a Lisp variable).  The default for
+@var{setfunction} is @code{set-default}.
 
 @item :get @var{getfunction}
 Specify @var{getfunction} as the way to extract the value of this
@@ -258,10 +241,10 @@
 that really is stored in a Lisp variable.
 
 @item :initialize @var{function}
-@var{function} should be a function used to initialize the variable when
-the @code{defcustom} is evaluated.  It should take two arguments, the
-symbol and value.  Here are some predefined functions meant for use in
-this way:
+@var{function} should be a function used to initialize the variable
+when the @code{defcustom} is evaluated.  It should take two arguments,
+the option name (a symbol) and the value.  Here are some predefined
+functions meant for use in this way:
 
 @table @code
 @item custom-initialize-set
--- a/lispref/debugging.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/debugging.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -388,11 +388,7 @@
 @item j
 Flag the current frame like @kbd{b}.  Then continue execution like
 @kbd{c}, but temporarily disable break-on-entry for all functions that
-are set up to do so by @code{debug-on-entry}.  The temporarily disabled
-functions are set up to debug on entry again when the debugger is
-entered or when @code{debug-on-entry} is called;
-@code{cancel-debug-on-entry} also re-enables these functions before it
-disables any functions that its argument says it should disable.
+are set up to do so by @code{debug-on-entry}.
 
 @item e
 Read a Lisp expression in the minibuffer, evaluate it, and print the
--- a/lispref/display.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/display.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -19,7 +19,6 @@
 * Progress::            Informing user about progress of a long operation.
 * Invisible Text::      Hiding part of the buffer text.
 * Selective Display::   Hiding part of the buffer text (the old way).
-* Overlay Arrow::       Display of an arrow to indicate position.
 * Temporary Displays::  Displays that go away automatically.
 * Overlays::            Use overlays to highlight parts of the buffer.
 * Width::               How wide a character or string is on the screen.
@@ -27,8 +26,6 @@
 * Faces::               A face defines a graphics style for text characters:
                           font, colors, etc.
 * Fringes::             Controlling window fringes.
-* Fringe Bitmaps::      Displaying bitmaps in the window fringes.
-* Customizing Bitmaps:: Specifying your own bitmaps to use in the fringes.
 * Scroll Bars::         Controlling vertical scroll bars.
 * Pointer Shape::       Controlling the mouse pointer shape.
 * Display Property::    Enabling special display features.
@@ -45,29 +42,30 @@
 @node Refresh Screen
 @section Refreshing the Screen
 
-The function @code{redraw-frame} redisplays the entire contents of a
-given frame (@pxref{Frames}).
+  The function @code{redraw-frame} clears and redisplays the entire
+contents of a given frame (@pxref{Frames}).  This is useful if the
+screen is corrupted.
 
 @c Emacs 19 feature
 @defun redraw-frame frame
 This function clears and redisplays frame @var{frame}.
 @end defun
 
-Even more powerful is @code{redraw-display}:
+  Even more powerful is @code{redraw-display}:
 
 @deffn Command redraw-display
 This function clears and redisplays all visible frames.
 @end deffn
 
-  This function forces certain windows to be redisplayed
-but does not clear them.
-
-@defun force-window-update object
+  This function calls for redisplay of certain windows, the next time
+redisplay is done, but does not clear them first.
+
+@defun force-window-update &optional object
 This function forces redisplay of some or all windows.  If
 @var{object} is a window, it forces redisplay of that window.  If
 @var{object} is a buffer or buffer name, it forces redisplay of all
-windows displaying that buffer.  If @var{object} is @code{nil}, it
-forces redisplay of all windows.
+windows displaying that buffer.  If @var{object} is @code{nil} (or
+omitted), it forces redisplay of all windows.
 @end defun
 
   Processing user input takes absolute priority over redisplay.  If you
@@ -102,8 +100,7 @@
 @defvar redisplay-dont-pause
 If this variable is non-@code{nil}, pending input does not
 prevent or halt redisplay; redisplay occurs, and finishes,
-regardless of whether input is available.  This feature is available
-as of Emacs 21.
+regardless of whether input is available.
 @end defvar
 
   You can request a display update, but only if no input is pending,
@@ -131,8 +128,8 @@
 which is also called @dfn{continuing} the line.  (The display table can
 specify alternative indicators; see @ref{Display Tables}.)
 
-  On a windowed display, the @samp{$} and @samp{\} indicators are
-replaced with graphics bitmaps displayed in the window fringes
+  On a window system display, the @samp{$} and @samp{\} indicators are
+replaced with arrow images displayed in the window fringes
 (@pxref{Fringes}).
 
   Note that continuation is different from filling; continuation happens
@@ -165,9 +162,6 @@
   When horizontal scrolling (@pxref{Horizontal Scrolling}) is in use in
 a window, that forces truncation.
 
-  You can override the glyphs that indicate continuation or truncation
-using the display table; see @ref{Display Tables}.
-
   If your buffer contains @emph{very} long lines, and you use
 continuation to display them, just thinking about them can make Emacs
 redisplay slow.  The column computation and indentation functions also
@@ -190,14 +184,14 @@
 @cindex error display
 @cindex echo area
 
-The @dfn{echo area} is used for displaying messages made with the
-@code{message} primitive, and for echoing keystrokes.  It is not the
-same as the minibuffer, despite the fact that the minibuffer appears
-(when active) in the same place on the screen as the echo area.  The
-@cite{GNU Emacs Manual} specifies the rules for resolving conflicts
-between the echo area and the minibuffer for use of that screen space
-(@pxref{Minibuffer,, The Minibuffer, emacs, The GNU Emacs Manual}).
-Error messages appear in the echo area; see @ref{Errors}.
+The @dfn{echo area} is used for displaying error messages
+(@pxref{Errors}), for messages made with the @code{message} primitive,
+and for echoing keystrokes.  It is not the same as the minibuffer,
+despite the fact that the minibuffer appears (when active) in the same
+place on the screen as the echo area.  The @cite{GNU Emacs Manual}
+specifies the rules for resolving conflicts between the echo area and
+the minibuffer for use of that screen space (@pxref{Minibuffer,, The
+Minibuffer, emacs, The GNU Emacs Manual}).
 
 You can write output in the echo area by using the Lisp printing
 functions with @code{t} as the stream (@pxref{Output Functions}), or as
@@ -244,9 +238,15 @@
 @end example
 
 To automatically display a message in the echo area or in a pop-buffer,
-depending on its size, use @code{display-message-or-buffer}.
+depending on its size, use @code{display-message-or-buffer} (see below).
 @end defun
 
+@defopt max-mini-window-height
+This variable specifies the maximum height for resizing minibuffer
+windows.  If a float, it specifies a fraction of the height of the
+frame.  If an integer, it specifies a number of lines.
+@end defopt
+
 @tindex with-temp-message
 @defmac with-temp-message message &rest body
 This construct displays a message in the echo area temporarily, during
@@ -539,11 +539,11 @@
 @section Reporting Operation Progress
 @cindex progress reporting
 
-When an operation can take a while to finish, you should inform the
+  When an operation can take a while to finish, you should inform the
 user about the progress it makes.  This way the user can estimate
 remaining time and clearly see that Emacs is busy working, not hung.
 
-Functions listed in this section provide simple and efficient way of
+  Functions listed in this section provide simple and efficient way of
 reporting operation progress.  Here is a working example that does
 nothing useful:
 
@@ -558,15 +558,16 @@
 @end example
 
 @defun make-progress-reporter message min-value max-value &optional current-value min-change min-time
-This function creates a progress reporter---the object you will use as
-an argument for all other functions listed here.  The idea is to
-precompute as much data as possible to make progress reporting very
-fast.
-
-The @var{message} will be displayed in the echo area, followed by
-progress percentage.  @var{message} is treated as a simple string.  If
-you need it to depend on a filename, for instance, use @code{format}
-before calling this function.
+This function creates and returns a @dfn{progress reporter}---an
+object you will use as an argument for all other functions listed
+here.  The idea is to precompute as much data as possible to make
+progress reporting very fast.
+
+When this progress reporter is subsequently used, it will display
+@var{message} in the echo area, followed by progress percentage.
+@var{message} is treated as a simple string.  If you need it to depend
+on a filename, for instance, use @code{format} before calling this
+function.
 
 @var{min-value} and @var{max-value} arguments stand for starting and
 final states of your operation.  For instance, if you scan a buffer,
@@ -593,9 +594,10 @@
 
 @defun progress-reporter-update reporter value
 This function does the main work of reporting progress of your
-operation.  It print the message of @var{reporter} followed by
+operation.  It displays the message of @var{reporter}, followed by
 progress percentage determined by @var{value}.  If percentage is zero,
-then it is not printed at all.
+or close enough according to the @var{min-change} and @var{min-time}
+arguments, then it is omitted from the output.
 
 @var{reporter} must be the result of a call to
 @code{make-progress-reporter}.  @var{value} specifies the current
@@ -656,7 +658,9 @@
 You can make characters @dfn{invisible}, so that they do not appear on
 the screen, with the @code{invisible} property.  This can be either a
 text property (@pxref{Text Properties}) or a property of an overlay
-(@pxref{Overlays}).
+(@pxref{Overlays}).  Cursor motion also partly ignores these
+characters; if the command loop finds point within them, it moves
+point to the other side of them.
 
 In the simplest case, any non-@code{nil} @code{invisible} property makes
 a character invisible.  This is the default case---if you don't alter
@@ -785,10 +789,11 @@
   @dfn{Selective display} refers to a pair of related features for
 hiding certain lines on the screen.
 
-  The first variant, explicit selective display, is designed for use in
-a Lisp program: it controls which lines are hidden by altering the text.
-The invisible text feature (@pxref{Invisible Text}) has partially
-replaced this feature.
+  The first variant, explicit selective display, is designed for use
+in a Lisp program: it controls which lines are hidden by altering the
+text.  This kind of hiding in some ways resembles the effect of the
+@code{invisible} property (@pxref{Invisible Text}), but the two
+features are different and do not work the same way.
 
   In the second variant, the choice of lines to hide is made
 automatically based on indentation.  This variant is designed to be a
@@ -796,32 +801,32 @@
 
   The way you control explicit selective display is by replacing a
 newline (control-j) with a carriage return (control-m).  The text that
-was formerly a line following that newline is now invisible.  Strictly
-speaking, it is temporarily no longer a line at all, since only newlines
-can separate lines; it is now part of the previous line.
+was formerly a line following that newline is now hidden.  Strictly
+speaking, it is temporarily no longer a line at all, since only
+newlines can separate lines; it is now part of the previous line.
 
   Selective display does not directly affect editing commands.  For
-example, @kbd{C-f} (@code{forward-char}) moves point unhesitatingly into
-invisible text.  However, the replacement of newline characters with
-carriage return characters affects some editing commands.  For example,
-@code{next-line} skips invisible lines, since it searches only for
-newlines.  Modes that use selective display can also define commands
-that take account of the newlines, or that make parts of the text
-visible or invisible.
+example, @kbd{C-f} (@code{forward-char}) moves point unhesitatingly
+into hidden text.  However, the replacement of newline characters with
+carriage return characters affects some editing commands.  For
+example, @code{next-line} skips hidden lines, since it searches only
+for newlines.  Modes that use selective display can also define
+commands that take account of the newlines, or that control which
+parts of the text are hidden.
 
   When you write a selectively displayed buffer into a file, all the
 control-m's are output as newlines.  This means that when you next read
-in the file, it looks OK, with nothing invisible.  The selective display
+in the file, it looks OK, with nothing hidden.  The selective display
 effect is seen only within Emacs.
 
 @defvar selective-display
 This buffer-local variable enables selective display.  This means that
-lines, or portions of lines, may be made invisible.
+lines, or portions of lines, may be made hidden.
 
 @itemize @bullet
 @item
 If the value of @code{selective-display} is @code{t}, then the character
-control-m marks the start of invisible text; the control-m, and the rest
+control-m marks the start of hidden text; the control-m, and the rest
 of the line following it, are not displayed.  This is explicit selective
 display.
 
@@ -831,12 +836,12 @@
 displayed.
 @end itemize
 
-When some portion of a buffer is invisible, the vertical movement
+When some portion of a buffer is hidden, the vertical movement
 commands operate as if that portion did not exist, allowing a single
-@code{next-line} command to skip any number of invisible lines.
+@code{next-line} command to skip any number of hidden lines.
 However, character movement commands (such as @code{forward-char}) do
-not skip the invisible portion, and it is possible (if tricky) to insert
-or delete text in an invisible portion.
+not skip the hidden portion, and it is possible (if tricky) to insert
+or delete text in an hidden portion.
 
 In the examples below, we show the @emph{display appearance} of the
 buffer @code{foo}, which changes with the value of
@@ -874,7 +879,7 @@
 
 @defvar selective-display-ellipses
 If this buffer-local variable is non-@code{nil}, then Emacs displays
-@samp{@dots{}} at the end of a line that is followed by invisible text.
+@samp{@dots{}} at the end of a line that is followed by hidden text.
 This example is a continuation of the previous one.
 
 @example
@@ -895,42 +900,6 @@
 (@samp{@dots{}}).  @xref{Display Tables}.
 @end defvar
 
-@node Overlay Arrow
-@section The Overlay Arrow
-@cindex overlay arrow
-
-  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
-interface to debuggers, the overlay arrow indicates the line of code
-about to be executed.
-
-@defvar overlay-arrow-string
-This variable holds the string to display to call attention to a
-particular line, or @code{nil} if the arrow feature is not in use.
-On a graphical display the contents of the string are ignored; instead a
-glyph is displayed in the fringe area to the left of the display area.
-@end defvar
-
-@defvar overlay-arrow-position
-This variable holds a marker that indicates where to display the overlay
-arrow.  It should point at the beginning of a line.  On a non-graphical
-display the arrow text
-appears at the beginning of that line, overlaying any text that would
-otherwise appear.  Since the arrow is usually short, and the line
-usually begins with indentation, normally nothing significant is
-overwritten.
-
-The overlay string is displayed only in the buffer that this marker
-points into.  Thus, only one buffer can have an overlay arrow at any
-given time.
-@c !!! overlay-arrow-position: but the overlay string may remain in the display
-@c of some other buffer until an update is required.  This should be fixed
-@c now.  Is it?
-@end defvar
-
-  You can do a similar job by creating an overlay with a
-@code{before-string} property.  @xref{Overlay Properties}.
-
 @node Temporary Displays
 @section Temporary Displays
 
@@ -1093,28 +1062,152 @@
 inside the overlay or outside, and likewise for the end of the overlay.
 
 @menu
+* Managing Overlays::   Creating and moving overlays.
 * Overlay Properties::  How to read and set properties.
 			What properties do to the screen display.
-* Managing Overlays::   Creating and moving overlays.
 * Finding Overlays::    Searching for overlays.
 @end menu
 
+@node Managing Overlays
+@subsection Managing Overlays
+
+  This section describes the functions to create, delete and move
+overlays, and to examine their contents.  Overlay changes are not
+recorded in the buffer's undo list, since the overlays are not
+part of the buffer's contents.
+
+@defun overlayp object
+This function returns @code{t} if @var{object} is an overlay.
+@end defun
+
+@defun make-overlay start end &optional buffer front-advance rear-advance
+This function creates and returns an overlay that belongs to
+@var{buffer} and ranges from @var{start} to @var{end}.  Both @var{start}
+and @var{end} must specify buffer positions; they may be integers or
+markers.  If @var{buffer} is omitted, the overlay is created in the
+current buffer.
+
+The arguments @var{front-advance} and @var{rear-advance} specify the
+insertion type for the start of the overlay and for the end of the
+overlay, respectively.  @xref{Marker Insertion Types}.  If
+@var{front-advance} is non-@code{nil}, text inserted at the beginning
+of the overlay is excluded from the overlay.  If @var{read-advance} is
+non-@code{nil}, text inserted at the beginning of the overlay is
+included in the overlay.
+@end defun
+
+@defun overlay-start overlay
+This function returns the position at which @var{overlay} starts,
+as an integer.
+@end defun
+
+@defun overlay-end overlay
+This function returns the position at which @var{overlay} ends,
+as an integer.
+@end defun
+
+@defun overlay-buffer overlay
+This function returns the buffer that @var{overlay} belongs to.  It
+returns @code{nil} if @var{overlay} has been deleted.
+@end defun
+
+@defun delete-overlay overlay
+This function deletes @var{overlay}.  The overlay continues to exist as
+a Lisp object, and its property list is unchanged, but it ceases to be
+attached to the buffer it belonged to, and ceases to have any effect on
+display.
+
+A deleted overlay is not permanently disconnected.  You can give it a
+position in a buffer again by calling @code{move-overlay}.
+@end defun
+
+@defun move-overlay overlay start end &optional buffer
+This function moves @var{overlay} to @var{buffer}, and places its bounds
+at @var{start} and @var{end}.  Both arguments @var{start} and @var{end}
+must specify buffer positions; they may be integers or markers.
+
+If @var{buffer} is omitted, @var{overlay} stays in the same buffer it
+was already associated with; if @var{overlay} was deleted, it goes into
+the current buffer.
+
+The return value is @var{overlay}.
+
+This is the only valid way to change the endpoints of an overlay.  Do
+not try modifying the markers in the overlay by hand, as that fails to
+update other vital data structures and can cause some overlays to be
+``lost''.
+@end defun
+
+  Here are some examples:
+
+@example
+;; @r{Create an overlay.}
+(setq foo (make-overlay 1 10))
+     @result{} #<overlay from 1 to 10 in display.texi>
+(overlay-start foo)
+     @result{} 1
+(overlay-end foo)
+     @result{} 10
+(overlay-buffer foo)
+     @result{} #<buffer display.texi>
+;; @r{Give it a property we can check later.}
+(overlay-put foo 'happy t)
+     @result{} t
+;; @r{Verify the property is present.}
+(overlay-get foo 'happy)
+     @result{} t
+;; @r{Move the overlay.}
+(move-overlay foo 5 20)
+     @result{} #<overlay from 5 to 20 in display.texi>
+(overlay-start foo)
+     @result{} 5
+(overlay-end foo)
+     @result{} 20
+;; @r{Delete the overlay.}
+(delete-overlay foo)
+     @result{} nil
+;; @r{Verify it is deleted.}
+foo
+     @result{} #<overlay in no buffer>
+;; @r{A deleted overlay has no position.}
+(overlay-start foo)
+     @result{} nil
+(overlay-end foo)
+     @result{} nil
+(overlay-buffer foo)
+     @result{} nil
+;; @r{Undelete the overlay.}
+(move-overlay foo 1 20)
+     @result{} #<overlay from 1 to 20 in display.texi>
+;; @r{Verify the results.}
+(overlay-start foo)
+     @result{} 1
+(overlay-end foo)
+     @result{} 20
+(overlay-buffer foo)
+     @result{} #<buffer display.texi>
+;; @r{Moving and deleting the overlay does not change its properties.}
+(overlay-get foo 'happy)
+     @result{} t
+@end example
+
 @node Overlay Properties
 @subsection Overlay Properties
 
   Overlay properties are like text properties in that the properties that
 alter how a character is displayed can come from either source.  But in
-most respects they are different.  Text properties are considered a part
-of the text; overlays are specifically considered not to be part of the
-text.  Thus, copying text between various buffers and strings preserves
-text properties, but does not try to preserve overlays.  Changing a
-buffer's text properties marks the buffer as modified, while moving an
-overlay or changing its properties does not.  Unlike text property
-changes, overlay changes are not recorded in the buffer's undo list.
-@xref{Text Properties}, for comparison.
-
-  These functions are used for reading and writing the properties of an
-overlay:
+most respects they are different.  @xref{Text Properties}, for comparison.
+
+  Text properties are considered a part of the text; overlays and
+their properties are specifically considered not to be part of the
+text.  Thus, copying text between various buffers and strings
+preserves text properties, but does not try to preserve overlays.
+Changing a buffer's text properties marks the buffer as modified,
+while moving an overlay or changing its properties does not.  Unlike
+text property changes, overlay property changes are not recorded in
+the buffer's undo list.
+
+  These functions read and set the properties of an overlay:
 
 @defun overlay-get overlay prop
 This function returns the value of property @var{prop} recorded in
@@ -1180,12 +1273,12 @@
 A face name (a symbol or string).
 
 @item
-Starting in Emacs 21, a property list of face attributes.  This has the
-form (@var{keyword} @var{value} @dots{}), where each @var{keyword} is a
-face attribute name and @var{value} is a meaningful value for that
-attribute.  With this feature, you do not need to create a face each
-time you want to specify a particular attribute for certain text.
-@xref{Face Attributes}.
+A property list of face attributes.  This has the form (@var{keyword}
+@var{value} @dots{}), where each @var{keyword} is a face attribute
+name and @var{value} is a meaningful value for that attribute.  With
+this feature, you do not need to create a face each time you want to
+specify a particular attribute for certain text.  @xref{Face
+Attributes}.
 
 @item
 A cons cell of the form @code{(foreground-color . @var{color-name})} or
@@ -1302,127 +1395,6 @@
 property) rather than replacing it.
 @end table
 
-@node Managing Overlays
-@subsection Managing Overlays
-
-  This section describes the functions to create, delete and move
-overlays, and to examine their contents.
-
-@defun overlayp object
-This function returns @code{t} if @var{object} is an overlay.
-@end defun
-
-@defun make-overlay start end &optional buffer front-advance rear-advance
-This function creates and returns an overlay that belongs to
-@var{buffer} and ranges from @var{start} to @var{end}.  Both @var{start}
-and @var{end} must specify buffer positions; they may be integers or
-markers.  If @var{buffer} is omitted, the overlay is created in the
-current buffer.
-
-The arguments @var{front-advance} and @var{rear-advance} specify the
-insertion type for the start of the overlay and for the end of the
-overlay, respectively.  @xref{Marker Insertion Types}.  If
-@var{front-advance} is non-@code{nil}, text inserted at the beginning
-of the overlay is excluded from the overlay.  If @var{read-advance} is
-non-@code{nil}, text inserted at the beginning of the overlay is
-included in the overlay.
-@end defun
-
-@defun overlay-start overlay
-This function returns the position at which @var{overlay} starts,
-as an integer.
-@end defun
-
-@defun overlay-end overlay
-This function returns the position at which @var{overlay} ends,
-as an integer.
-@end defun
-
-@defun overlay-buffer overlay
-This function returns the buffer that @var{overlay} belongs to.  It
-returns @code{nil}, if @var{overlay} has been deleted.
-@end defun
-
-@defun delete-overlay overlay
-This function deletes @var{overlay}.  The overlay continues to exist as
-a Lisp object, and its property list is unchanged, but it ceases to be
-attached to the buffer it belonged to, and ceases to have any effect on
-display.
-
-A deleted overlay is not permanently disconnected.  You can give it a
-position in a buffer again by calling @code{move-overlay}.
-@end defun
-
-@defun move-overlay overlay start end &optional buffer
-This function moves @var{overlay} to @var{buffer}, and places its bounds
-at @var{start} and @var{end}.  Both arguments @var{start} and @var{end}
-must specify buffer positions; they may be integers or markers.
-
-If @var{buffer} is omitted, @var{overlay} stays in the same buffer it
-was already associated with; if @var{overlay} was deleted, it goes into
-the current buffer.
-
-The return value is @var{overlay}.
-
-This is the only valid way to change the endpoints of an overlay.  Do
-not try modifying the markers in the overlay by hand, as that fails to
-update other vital data structures and can cause some overlays to be
-``lost''.
-@end defun
-
-  Here are some examples:
-
-@example
-;; @r{Create an overlay.}
-(setq foo (make-overlay 1 10))
-     @result{} #<overlay from 1 to 10 in display.texi>
-(overlay-start foo)
-     @result{} 1
-(overlay-end foo)
-     @result{} 10
-(overlay-buffer foo)
-     @result{} #<buffer display.texi>
-;; @r{Give it a property we can check later.}
-(overlay-put foo 'happy t)
-     @result{} t
-;; @r{Verify the property is present.}
-(overlay-get foo 'happy)
-     @result{} t
-;; @r{Move the overlay.}
-(move-overlay foo 5 20)
-     @result{} #<overlay from 5 to 20 in display.texi>
-(overlay-start foo)
-     @result{} 5
-(overlay-end foo)
-     @result{} 20
-;; @r{Delete the overlay.}
-(delete-overlay foo)
-     @result{} nil
-;; @r{Verify it is deleted.}
-foo
-     @result{} #<overlay in no buffer>
-;; @r{A deleted overlay has no position.}
-(overlay-start foo)
-     @result{} nil
-(overlay-end foo)
-     @result{} nil
-(overlay-buffer foo)
-     @result{} nil
-;; @r{Undelete the overlay.}
-(move-overlay foo 1 20)
-     @result{} #<overlay from 1 to 20 in display.texi>
-;; @r{Verify the results.}
-(overlay-start foo)
-     @result{} 1
-(overlay-end foo)
-     @result{} 20
-(overlay-buffer foo)
-     @result{} #<buffer display.texi>
-;; @r{Moving and deleting the overlay does not change its properties.}
-(overlay-get foo 'happy)
-     @result{} t
-@end example
-
 @node Finding Overlays
 @subsection Searching for Overlays
 
@@ -1458,12 +1430,14 @@
 
 @defun next-overlay-change pos
 This function returns the buffer position of the next beginning or end
-of an overlay, after @var{pos}.
+of an overlay, after @var{pos}.  If there is none, it returns
+@code{(point-max)}.
 @end defun
 
 @defun previous-overlay-change pos
 This function returns the buffer position of the previous beginning or
-end of an overlay, before @var{pos}.
+end of an overlay, before @var{pos}.  If there is none, it returns
+@code{(point-min)}.
 @end defun
 
   Here's an easy way to use @code{next-overlay-change} to search for the
@@ -1497,7 +1471,7 @@
 if it were displayed in the current buffer and the selected window.
 @end defun
 
-@defun truncate-string-to-width string width &optional start-column padding
+@defun truncate-string-to-width string width &optional start-column padding ellipsis
 This function returns the part of @var{string} that fits within
 @var{width} columns, as a new string.
 
@@ -1520,6 +1494,13 @@
 the beginning of the result if one multi-column character in
 @var{string} extends across the column @var{start-column}.
 
+If @var{ellipsis} is non-@code{nil}, it should be a string which will
+replace the end of @var{str} (including any padding) if it extends
+beyond @var{end-column}, unless the display width of @var{str} is
+equal to or less than the display width of @var{ellipsis}.  If
+@var{ellipsis} is non-@code{nil} and not a string, it stands for
+@code{"..."}.
+
 @example
 (truncate-string-to-width "\tab\t" 12 4)
      @result{} "ab"
@@ -1909,11 +1890,11 @@
 given piece of text; when that happens, the attributes of all the faces
 are merged to specify how to display the text.  @xref{Displaying Faces}.
 
-  In Emacs 21, any attribute in a face can have the value
-@code{unspecified}.  This means the face doesn't specify that attribute.
-In face merging, when the first face fails to specify a particular
-attribute, that means the next face gets a chance.  However, the
-@code{default} face must specify all attributes.
+  Any attribute in a face can have the value @code{unspecified}.  This
+means the face doesn't specify that attribute.  In face merging, when
+the first face fails to specify a particular attribute, that means the
+next face gets a chance.  However, the @code{default} face must
+specify all attributes.
 
   Some of these font attributes are meaningful only on certain kinds of
 displays---if your display cannot handle a certain attribute, the
@@ -2043,11 +2024,10 @@
 is used.
 @end table
 
-  The attributes @code{:overline}, @code{:strike-through} and
-@code{:box} are new in Emacs 21.  The attributes @code{:family},
-@code{:height}, @code{:width}, @code{:weight}, @code{:slant} are also
-new; previous versions used the following attributes, now semi-obsolete,
-to specify some of the same information:
+  In older versions of Emacs, before @code{:family}, @code{:height},
+@code{:width}, @code{:weight}, and @code{:slant} existed, these
+attributes were used to specify the type face.  They are now
+semi-obsolete, but they still work:
 
 @table @code
 @item :font
@@ -2060,8 +2040,8 @@
 A non-@code{nil} value specifies an italic font.
 @end table
 
-  For compatibility, you can still set these ``attributes'' in Emacs 21,
-even though they are not real face attributes.  Here is what that does:
+  For compatibility, you can still set these ``attributes'', even
+though they are not real face attributes.  Here is what that does:
 
 @table @code
 @item :font
@@ -2195,31 +2175,22 @@
 @end defun
 
 @defun set-face-font face font &optional frame
-This function sets the font of face @var{face}.
-
-In Emacs 21, this actually sets the attributes @code{:family},
-@code{:width}, @code{:height}, @code{:weight}, and @code{:slant}
-according to the font name @var{font}.
-
-In Emacs 20, this sets the font attribute.  Once you set the font
-explicitly, the bold and italic attributes cease to have any effect,
-because the precise font that you specified is used.
+This function sets the font of face @var{face}.  This actually sets
+the attributes @code{:family}, @code{:width}, @code{:height},
+@code{:weight}, and @code{:slant} according to the font name
+@var{font}.
 @end defun
 
 @defun set-face-bold-p face bold-p &optional frame
 This function specifies whether @var{face} should be bold.  If
 @var{bold-p} is non-@code{nil}, that means yes; @code{nil} means no.
-
-In Emacs 21, this sets the @code{:weight} attribute.
-In Emacs 20, it sets the @code{:bold} attribute.
+This actually sets the @code{:weight} attribute.
 @end defun
 
 @defun set-face-italic-p face italic-p &optional frame
 This function specifies whether @var{face} should be italic.  If
 @var{italic-p} is non-@code{nil}, that means yes; @code{nil} means no.
-
-In Emacs 21, this sets the @code{:slant} attribute.
-In Emacs 20, it sets the @code{:italic} attribute.
+This actually sets the @code{:slant} attribute.
 @end defun
 
 @defun set-face-underline-p face underline-p &optional frame
@@ -2297,8 +2268,10 @@
 default for all text.  (In Emacs 19 and 20, the @code{default}
 face is used only when no other face is specified.)
 
-For a mode line or header line, the face @code{modeline} or
-@code{header-line} is used just before @code{default}.
+@item
+For a mode line or header line, the face @code{mode-line} or
+@code{mode-line-inactive}, or @code{header-line}, is merged in just
+before @code{default}.
 
 @item
 With text properties.  A character can have a @code{face} property; if
@@ -2324,20 +2297,16 @@
 
   If these various sources together specify more than one face for a
 particular character, Emacs merges the attributes of the various faces
-specified.  The attributes of the faces of special glyphs come first;
-then comes the face for region highlighting, if appropriate;
-then come attributes of faces from overlays, followed by those from text
-properties, and last the default face.
+specified.  For each attribute, Emacs tries first the face of any
+special glyph; then the face for region highlighting, if appropriate;
+then the faces specified by overlays, followed by those specified by
+text properties, then the @code{mode-line} or
+@code{mode-line-inactive} or @code{header-line} face (if in a mode
+line or a header line), and last the @code{default} face.
 
   When multiple overlays cover one character, an overlay with higher
 priority overrides those with lower priority.  @xref{Overlays}.
 
-  In Emacs 20, if an attribute such as the font or a color is not
-specified in any of the above ways, the frame's own font or color is
-used.  In newer Emacs versions, this cannot happen, because the
-@code{default} face specifies all attributes---in fact, the frame's own
-font and colors are synonymous with those of the default face.
-
 @node Font Selection
 @subsection Font Selection
 
@@ -2480,7 +2449,7 @@
 @end defun
 
 @defun copy-face old-face new-name &optional frame new-frame
-This function defines the face @var{new-name} as a copy of the existing
+This function defines a face named @var{new-name} as a copy of the existing
 face named @var{old-face}.  It creates the face @var{new-name} if that
 doesn't already exist.
 
@@ -2519,9 +2488,8 @@
 @cindex faces, automatic choice
 
 @cindex Font-Lock mode
-  Starting with Emacs 21, a hook is available for automatically
-assigning faces to text in the buffer.  This hook is used for part of
-the implementation of 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.
 
 @tindex fontification-functions
 @defvar fontification-functions
@@ -2572,8 +2540,6 @@
 many fonts match the pattern.
 @end defun
 
-  These additional functions are available starting in Emacs 21.
-
 @defun x-family-fonts &optional family frame
 @tindex x-family-fonts
 This function returns a list describing the available fonts for family
@@ -2772,15 +2738,25 @@
 
   The @dfn{fringes} of a window are thin vertical strips down the
 sides that are used for displaying bitmaps that indicate truncation,
-continuation, horizontal scrolling, and the overlay arrow.  The
-fringes normally appear between the display margins and the window
-text, but you can put them outside the display margins for a specific
-buffer by setting @code{fringes-outside-margins} buffer-locally to a
-non-@code{nil} value.
+continuation, horizontal scrolling, and the overlay arrow.
+
+@menu
+* Fringe Size/Pos::     Specifying where to put the window fringes.
+* Fringe Bitmaps::      Displaying bitmaps in the window fringes.
+* Customizing Bitmaps:: Specifying your own bitmaps to use in the fringes.
+* Overlay Arrow::       Display of an arrow to indicate position.
+@end menu
+
+@node Fringe Size/Pos
+@subsection Fringe Size and Position
+
+  Here's how to control the position and width of the window fringes.
 
 @defvar fringes-outside-margins
-If the value is non-@code{nil}, the frames appear outside
-the display margins.
+If the value is non-@code{nil}, the frames appear outside the display
+margins.  The fringes normally appear between the display margins and
+the window text.  It works to set @code{fringes-outside-margins}
+buffer-locally.  @xref{Display Margins}.
 @end defvar
 
 @defvar left-fringe-width
@@ -2813,7 +2789,7 @@
 This function returns information about the fringes of a window
 @var{window}.  If @var{window} is omitted or @code{nil}, the selected
 window is used.  The value has the form @code{(@var{left-width}
-@var{right-width} @var{frames-outside-margins})}.
+@var{right-width} @var{outside-margins})}.
 @end defun
 
 @defvar overflow-newline-into-fringe
@@ -2824,7 +2800,7 @@
 @end defvar
 
 @node Fringe Bitmaps
-@section Fringe Bitmaps
+@subsection Fringe Bitmaps
 @cindex fringe bitmaps
 @cindex bitmaps, fringe
 
@@ -2884,7 +2860,7 @@
 @end defun
 
 @node Customizing Bitmaps
-@section Customizing Fringe Bitmaps
+@subsection Customizing Fringe Bitmaps
 
 @defun define-fringe-bitmap bitmap bits &optional height width align
 This function defines the symbol @var{bitmap} as a new fringe bitmap,
@@ -2935,6 +2911,61 @@
 specify only the foreground color.
 @end defun
 
+@node Overlay Arrow
+@subsection The Overlay Arrow
+@cindex overlay arrow
+
+  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
+interface to debuggers, the overlay arrow indicates the line of code
+about to be executed.  This feature has nothing to do with
+@dfn{overlays} (@pxref{Overlays}).
+
+@defvar overlay-arrow-string
+This variable holds the string to display to call attention to a
+particular line, or @code{nil} if the arrow feature is not in use.
+On a graphical display the contents of the string are ignored; instead a
+glyph is displayed in the fringe area to the left of the display area.
+@end defvar
+
+@defvar overlay-arrow-position
+This variable holds a marker that indicates where to display the overlay
+arrow.  It should point at the beginning of a line.  On a non-graphical
+display the arrow text
+appears at the beginning of that line, overlaying any text that would
+otherwise appear.  Since the arrow is usually short, and the line
+usually begins with indentation, normally nothing significant is
+overwritten.
+
+The overlay string is displayed only in the buffer that this marker
+points into.  Thus, only one buffer can have an overlay arrow at any
+given time.
+@c !!! overlay-arrow-position: but the overlay string may remain in the display
+@c of some other buffer until an update is required.  This should be fixed
+@c now.  Is it?
+@end defvar
+
+  You can do a similar job by creating an overlay with a
+@code{before-string} property.  @xref{Overlay Properties}.
+
+  You can define multiple overlay arrows via the variable
+@code{overlay-arrow-variable-list}.
+
+@defvar overlay-arrow-variable-list
+This variable's value is a list of varibles, each of which specifies
+the position of an overlay arrow.  The variable
+@code{overlay-arrow-position} has its normal meaning because it is on
+this list.
+@end defvar
+
+Each variable on this list can have properties
+@code{overlay-arrow-string} and @code{overlay-arrow-bitmap} that
+specify an overlay arrow string (for text-only terminals) or fringe
+bitmap (for graphical terminals) to display at the corresponding
+overlay arrow position.  If either property is not set, the default
+(@code{overlay-arrow-string} or @code{overlay-arrow-fringe-bitmap}) is
+used.
+
 @node Scroll Bars
 @section Scroll Bars
 
@@ -3031,11 +3062,10 @@
 
   The @code{display} text property (or overlay property) is used to
 insert images into text, and also control other aspects of how text
-displays.  These features are available starting in Emacs 21.  The value
-of the @code{display} property should be a display specification, or a
-list or vector containing several display specifications.  The rest of
-this section describes several kinds of display specifications and what
-they mean.
+displays.  The value of the @code{display} property should be a
+display specification, or a list or vector containing several display
+specifications.  The rest of this section describes several kinds of
+display specifications and what they mean.
 
 @menu
 * Specified Space::      Displaying one space with a specified width.
@@ -3044,8 +3074,6 @@
                           up or down on the page; adjusting the width
                           of spaces within text.
 * Display Margins::     Displaying text or images to the side of the main text.
-* Conditional Display::  Making any of the above features conditional
-                          depending on some Lisp expression.
 @end menu
 
 @node Specified Space
@@ -3108,7 +3136,7 @@
 
   Don't use both @code{:height} and @code{:relative-height} together.
 
-  The @code{:height} and @code{:align-to} properties are supported on
+  The @code{:width} and @code{:align-to} properties are supported on
 non-graphic terminals, but the other space properties in this section
 are not.
 
@@ -3171,10 +3199,11 @@
 to the left edge of the text area.  For example, @samp{:align-to 0} in a
 header-line aligns with the first text column in the text area.
 
-  A value of the form @code{(@var{num} . @var{expr})} stands
-multiplying the values of @var{num} and @var{expr}.  For example,
+  A value of the form @code{(@var{num} . @var{expr})} stands for the
+product of the values of @var{num} and @var{expr}.  For example,
 @code{(2 . in)} specifies a width of 2 inches, while @code{(0.5 .
-@var{image})} specifies half the width (or height) of the specified image.
+@var{image})} specifies half the width (or height) of the specified
+image.
 
   The form @code{(+ @var{expr} ...)} adds up the value of the
 expressions.  The form @code{(- @var{expr} ...)} negates or subtracts
@@ -3188,9 +3217,9 @@
 
 @table @code
 @item (image . @var{image-props})
-This is in fact an image descriptor (@pxref{Images}).  When used as a
-display specification, it means to display the image instead of the text
-that has the display specification.
+This display specification is an image descriptor (@pxref{Images}).
+When used as a display specification, it means to display the image
+instead of the text that has the display specification.
 
 @item (slice @var{x} @var{y} @var{width} @var{height})
 This specification together with @code{image} specifies a @dfn{slice}
@@ -3261,6 +3290,17 @@
 faces used for the text.
 @end table
 
+  You can make any display specification conditional.  To do that,
+package it in another list of the form @code{(when @var{condition} .
+@var{spec})}.  Then the specification @var{spec} applies only when
+@var{condition} evaluates to a non-@code{nil} value.  During the
+evaluation, @code{object} is bound to the string or buffer having the
+conditional @code{display} property.  @code{position} and
+@code{buffer-position} are bound to the position within @code{object}
+and the buffer position where the @code{display} property was found,
+respectively.  Both positions can be different when @code{object} is a
+string.
+
 @node Display Margins
 @subsection Displaying in the Margins
 @cindex display margins
@@ -3323,42 +3363,26 @@
 If @var{window} is @code{nil}, the selected window is used.
 @end defun
 
-@node Conditional Display
-@subsection Conditional Display Specifications
-@cindex conditional display specifications
-
-  You can make any display specification conditional.  To do that,
-package it in another list of the form @code{(when @var{condition} .
-@var{spec})}.  Then the specification @var{spec} applies only when
-@var{condition} evaluates to a non-@code{nil} value.  During the
-evaluation, @code{object} is bound to the string or buffer having the
-conditional @code{display} property.  @code{position} and
-@code{buffer-position} are bound to the position within @code{object}
-and the buffer position where the @code{display} property was found,
-respectively.  Both positions can be different when @code{object} is a
-string.
-
 @node Images
 @section Images
 @cindex images in buffers
 
   To display an image in an Emacs buffer, you must first create an image
 descriptor, then use it as a display specifier in the @code{display}
-property of text that is displayed (@pxref{Display Property}).  Like the
-@code{display} property, this feature is available starting in Emacs 21.
+property of text that is displayed (@pxref{Display Property}).
 
   Emacs can display a number of different image formats; some of them
 are supported only if particular support libraries are installed on
-your machine.  In some environments, Emacs allows loading image
+your machine.  In some environments, Emacs can load image
 libraries on demand; if so, the variable @code{image-library-alist}
 can be used to modify the set of known names for these dynamic
 libraries (though it is not possible to add new image formats).
 
-  The supported image formats include XBM, XPM (needing the
-libraries @code{libXpm} version 3.4k and @code{libz}), GIF (needing
-@code{libungif} 4.1.0), Postscript, PBM, JPEG (needing the
-@code{libjpeg} library version v6a), TIFF (needing @code{libtiff} v3.4),
-and PNG (needing @code{libpng} 1.0.2).
+  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{libjpeg} library version v6a), TIFF (requiring @code{libtiff}
+v3.4), and PNG (requiring @code{libpng} 1.0.2).
 
   You specify one of these formats with an image type symbol.  The image
 type symbols are @code{xbm}, @code{xpm}, @code{gif}, @code{postscript},
@@ -3439,12 +3463,12 @@
 
 @table @code
 @item :file @var{file}
-The @code{:file} property specifies to load the image from file
+The @code{:file} property says to load the image from file
 @var{file}.  If @var{file} is not an absolute file name, it is expanded
 in @code{data-directory}.
 
 @item :data @var{data}
-The @code{:data} property specifies the actual contents of the image.
+The @code{:data} property says the actual contents of the image.
 Each image must use either @code{:data} or @code{:file}, but not both.
 For most image types, the value of the @code{:data} property should be a
 string containing the image data; we recommend using a unibyte string.
@@ -3703,12 +3727,7 @@
 @subsection GIF Images
 @cindex GIF
 
-  For GIF images, specify image type @code{gif}.  Because of the patents
-in the US covering the LZW algorithm, the continued use of GIF format is
-a problem for the whole Internet; to end this problem, it is a good idea
-for everyone, even outside the US, to stop using GIFs right away
-(@uref{http://www.burnallgifs.org/}).  But if you still want to use
-them, Emacs can display them.
+  For GIF images, specify image type @code{gif}.
 
 @table @code
 @item :index @var{index}
@@ -3887,8 +3906,9 @@
 This function inserts @var{image} in the current buffer at point.  The
 value @var{image} should be an image descriptor; it could be a value
 returned by @code{create-image}, or the value of a symbol defined with
-@code{defimage}.  The argument @var{string} specifies the text to put in
-the buffer to hold the image.
+@code{defimage}.  The argument @var{string} specifies the text to put
+in the buffer to hold the image.  If it is omitted or @code{nil},
+@code{insert-image} uses @code{" "} by default.
 
 The argument @var{area} specifies whether to put the image in a margin.
 If it is @code{left-margin}, the image appears in the left margin;
@@ -3999,16 +4019,16 @@
 buttons in Emacs buffers, such as might be used for help hyper-links,
 etc.  Emacs uses buttons for the hyper-links in help text and the like.
 
-A button is essentially a set of properties attached (via text
-properties or overlays) to a region of text in an Emacs buffer, which
-are called its button properties.  @xref{Button Properties}.
-
-One of the these properties (@code{action}) is a function, which will
+  A button is essentially a set of properties attached (via text
+properties or overlays) to a region of text in an Emacs buffer.  These
+properties are called @dfn{button properties}.
+
+  One of the these properties (@code{action}) is a function, which will
 be called when the user invokes it using the keyboard or the mouse.
 The invoked function may then examine the button and use its other
 properties as desired.
 
-In some ways the Emacs button package duplicates functionality offered
+  In some ways the Emacs button package duplicates functionality offered
 by the widget package (@pxref{Top, , Introduction, widget, The Emacs
 Widget Library}), but the button package has the advantage that it is
 much faster, much smaller, and much simpler to use (for elisp
@@ -4024,7 +4044,6 @@
 * Making Buttons::         Adding buttons to Emacs buffers.
 * Manipulating Buttons::   Getting and setting properties of buttons.
 * Button Buffer Commands:: Buffer-wide commands and bindings for buttons.
-* Manipulating Button Types::
 @end menu
 
 @node Button Properties
@@ -4033,13 +4052,10 @@
 
   Buttons have an associated list of properties defining their
 appearance and behavior, and other arbitrary properties may be used
-for application specific purposes.
-
-Some properties that have special meaning to the button package
-include:
+for application specific purposes.  Some properties that have special
+meaning to the button package include:
 
 @table @code
-
 @item action
 @kindex action @r{(button property)}
 The function to call when the user invokes the button, which is passed
@@ -4094,7 +4110,7 @@
 standard button functions do).
 @end table
 
-There are other properties defined for the regions of text in a
+  There are other properties defined for the regions of text in a
 button, but these are not generally interesting for typical uses.
 
 @node Button Types
@@ -4122,9 +4138,9 @@
 reflected in its subtypes.
 @end defun
 
-Using @code{define-button-type} to define default properties for
+  Using @code{define-button-type} to define default properties for
 buttons is not necessary---buttons without any specified type use the
-built-in button-type @code{button}---but it is is encouraged, since
+built-in button-type @code{button}---but it is encouraged, since
 doing so usually makes the resulting code clearer and more efficient.
 
 @node Making Buttons
@@ -4132,19 +4148,19 @@
 @cindex making buttons
 
   Buttons are associated with a region of text, using an overlay or
-text-properties to hold button-specific information, all of which are
+text properties to hold button-specific information, all of which are
 initialized from the button's type (which defaults to the built-in
 button type @code{button}).  Like all Emacs text, the appearance of
 the button is governed by the @code{face} property; by default (via
 the @code{face} property inherited from the @code{button} button-type)
 this is a simple underline, like a typical web-page link.
 
-For convenience, there are two sorts of button-creation functions,
+  For convenience, there are two sorts of button-creation functions,
 those that add button properties to an existing region of a buffer,
 called @code{make-...button}, and those also insert the button text,
 called @code{insert-...button}.
 
-The button-creation functions all take the @code{&rest} argument
+  The button-creation functions all take the @code{&rest} argument
 @var{properties}, which should be a sequence of @var{property value}
 pairs, specifying properties to add to the button; see @ref{Button
 Properties}.  In addition, the keyword argument @code{:type} may be
@@ -4153,40 +4169,41 @@
 during creation will be inherited from the button's type (if the type
 defines such a property).
 
-The following functions add a button using an overlay
+  The following functions add a button using an overlay
 (@pxref{Overlays}) to hold the button properties:
 
 @defun make-button beg end &rest properties
 @tindex make-button
-Make a button from @var{beg} to @var{end} in the current buffer.
+This makes a button from @var{beg} to @var{end} in the
+current buffer, and returns it.
 @end defun
 
 @defun insert-button label &rest properties
 @tindex insert-button
-Insert a button with the label @var{label}.
+This insert a button with the label @var{label} at point,
+and returns it.
 @end defun
 
-The following functions are similar, but use Emacs text-properties
+  The following functions are similar, but use Emacs text properties
 (@pxref{Text Properties}) to hold the button properties, making the
 button actually part of the text instead of being a property of the
-buffer (using text-properties is usually faster than using overlays,
-so this may be preferable when creating large numbers of buttons):
+buffer.  Buttons using text properties do not create markers into the
+buffer, which is important for speed when you use extremely large
+numbers of buttons.  Both functions return the position of the start
+of the new button:
 
 @defun make-text-button beg end &rest properties
 @tindex make-text-button
-Make a button from @var{beg} to @var{end} in the current buffer, using
-text-properties.
+This makes a button from @var{beg} to @var{end} in the current buffer, using
+text properties.
 @end defun
 
 @defun insert-text-button label &rest properties
 @tindex insert-text-button
-Insert a button with the label @var{label}, using text-properties.
+This inserts a button with the label @var{label} at point, using text
+properties.
 @end defun
 
-Buttons using text-properties retain no markers into the buffer are
-retained, which is important for speed in cases where there are
-extremely large numbers of buttons.
-
 @node Manipulating Buttons
 @subsection Manipulating Buttons
 @cindex manipulating buttons
@@ -4250,6 +4267,21 @@
 Return the button at position @var{pos} in the current buffer, or @code{nil}.
 @end defun
 
+@defun button-type-put type prop val
+@tindex button-type-put
+Set the button-type @var{type}'s @var{prop} property to @var{val}.
+@end defun
+
+@defun button-type-get type prop
+@tindex button-type-get
+Get the property of button-type @var{type} named @var{prop}.
+@end defun
+
+@defun button-type-subtype-p type supertype
+@tindex button-type-subtype-p
+Return @code{t} if button-type @var{type} is a subtype of @var{supertype}.
+@end defun
+
 @node Button Buffer Commands
 @subsection Button Buffer Commands
 @cindex button buffer commands
@@ -4267,8 +4299,9 @@
 parent keymap for its keymap.
 
 If the button has a non-@code{nil} @code{follow-link} property, and
-@var{mouse-1-click-follows-link} is set, a @key{Mouse-1} click will
-also activate the @code{push-button} command.
+@var{mouse-1-click-follows-link} is set, a quick @key{Mouse-1} click
+will also activate the @code{push-button} command.
+@xref{Links and Mouse-1}.
 
 @deffn Command push-button &optional pos use-mouse-action
 @tindex push-button
@@ -4320,25 +4353,6 @@
 @var{pos} in the search, instead of starting at the next button.
 @end defun
 
-@node Manipulating Button Types
-@subsection Manipulating Button Types
-@cindex manipulating button types
-
-@defun button-type-put type prop val
-@tindex button-type-put
-Set the button-type @var{type}'s @var{prop} property to @var{val}.
-@end defun
-
-@defun button-type-get type prop
-@tindex button-type-get
-Get the property of button-type @var{type} named @var{prop}.
-@end defun
-
-@defun button-type-subtype-p type supertype
-@tindex button-type-subtype-p
-Return @code{t} if button-type @var{type} is a subtype of @var{supertype}.
-@end defun
-
 @node Blinking
 @section Blinking Parentheses
 @cindex parenthesis matching
@@ -4412,14 +4426,10 @@
 @end defopt
 
 @defopt mode-line-inverse-video
-This variable controls the use of inverse video for mode lines and menu
-bars.  If it is non-@code{nil}, then these lines are displayed in
-inverse video.  Otherwise, these lines are displayed normally, just like
-other text.  The default is @code{t}.
-
-For window frames, this feature actually applies the face named
-@code{mode-line}; that face is normally set up as the inverse of the
-default face, unless you change it.
+This variable controls the use of inverse video for mode lines and
+menu bars.  If it is non-@code{nil}, then these lines are displayed in
+the face @code{mode-line}.  Otherwise, these lines are displayed
+normally, just like other text.  The default is @code{t}.
 @end defopt
 
 @node Usual Display
@@ -4603,22 +4613,26 @@
 @table @asis
 @item 0
 The glyph for the end of a truncated screen line (the default for this
-is @samp{$}).  @xref{Glyphs}.  Newer Emacs versions, on some platforms,
-display arrows to indicate truncation---the display table has no effect
-in these situations.
+is @samp{$}).  @xref{Glyphs}.  On graphical terminals, Emacs uses
+arrows in the fringes to indicate truncation, so the display table has
+no effect.
+
 @item 1
 The glyph for the end of a continued line (the default is @samp{\}).
-Newer Emacs versions, on some platforms, display curved arrows to
-indicate continuation---the display table has no effect in these
-situations.
+On graphical terminals, Emacs uses curved arrows in the fringes to
+indicate continuation, so the display table has no effect.
+
 @item 2
 The glyph for indicating a character displayed as an octal character
 code (the default is @samp{\}).
+
 @item 3
 The glyph for indicating a control character (the default is @samp{^}).
+
 @item 4
 A vector of glyphs for indicating the presence of invisible lines (the
 default is @samp{...}).  @xref{Selective Display}.
+
 @item 5
 The glyph used to draw the border between side-by-side windows (the
 default is @samp{|}).  @xref{Splitting Windows}.  This takes effect only
@@ -4678,9 +4692,10 @@
 table if any.  The display table chosen is called the @dfn{active}
 display table.
 
-@defun window-display-table window
+@defun window-display-table &optional window
 This function returns @var{window}'s display table, or @code{nil}
-if @var{window} does not have an assigned display table.
+if @var{window} does not have an assigned display table.  The default
+for @var{window} is the selected window.
 @end defun
 
 @defun set-window-display-table window table
--- a/lispref/edebug.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/edebug.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1,6 +1,6 @@
 @comment -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1992, 1993, 1994, 1998, 1999 Free Software Foundation, Inc.
+@c Copyright (C) 1992, 1993, 1994, 1998, 1999, 2005 Free Software Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 
 @c This file can also be used by an independent Edebug User
@@ -99,7 +99,7 @@
 the Lisp code you are debugging.  This is referred to as the @dfn{source
 code buffer}, and it is temporarily read-only.
 
-  An arrow at the left margin indicates the line where the function is
+  An arrow in the left fringe indicates the line where the function is
 executing.  Point initially shows where within the line the function is
 executing, but this ceases to be true if you move point yourself.
 
@@ -158,16 +158,15 @@
 
 @kindex C-M-x
 @findex eval-defun (Edebug)
-  Once you have loaded Edebug, the command @kbd{C-M-x}
-(@code{eval-defun}) is redefined so that when invoked with a prefix
-argument on a definition, it instruments the definition before
-evaluating it.  (The source code itself is not modified.)  If the
-variable @code{edebug-all-defs} is non-@code{nil}, that inverts the
-meaning of the prefix argument: in this case, @kbd{C-M-x} instruments the
-definition @emph{unless} it has a prefix argument.  The default value of
-@code{edebug-all-defs} is @code{nil}.  The command @kbd{M-x
-edebug-all-defs} toggles the value of the variable
-@code{edebug-all-defs}.
+  When you invoke command @kbd{C-M-x} (@code{eval-defun}) with a
+prefix argument on a function definition, it instruments the
+definition before evaluating it.  (This does not modify the source
+code itself.)  If the variable @code{edebug-all-defs} is
+non-@code{nil}, that inverts the meaning of the prefix argument: in
+this case, @kbd{C-M-x} instruments the definition @emph{unless} it has
+a prefix argument.  The default value of @code{edebug-all-defs} is
+@code{nil}.  The command @kbd{M-x edebug-all-defs} toggles the value
+of the variable @code{edebug-all-defs}.
 
 @findex eval-region @r{(Edebug)}
 @findex eval-current-buffer @r{(Edebug)}
@@ -302,11 +301,12 @@
 inside Edebug.  This is usually an advantage.  See also the
 @code{edebug-continue-kbd-macro} option (@pxref{Edebug Options}).
 
-When you enter a new Edebug level, the initial execution mode comes from
-the value of the variable @code{edebug-initial-mode}.  By default, this
-specifies step mode.  Note that you may reenter the same Edebug level
-several times if, for example, an instrumented function is called
-several times from one command.
+When you enter a new Edebug level, the initial execution mode comes
+from the value of the variable @code{edebug-initial-mode}.
+(@xref{Edebug Options}.)  By default, this specifies step mode.  Note
+that you may reenter the same Edebug level several times if, for
+example, an instrumented function is called several times from one
+command.
 
 @defopt edebug-sit-for-seconds
 This option specifies how many seconds to wait between execution steps
@@ -1082,7 +1082,7 @@
 (defmacro for (var from init to final do &rest body)
   "Execute a simple \"for\" loop.
 For example, (for i from 1 to 10 do (print i))."
-  (declare (edebug symbolp "from" form "to" form "do" &rest form))
+  (declare (debug symbolp "from" form "to" form "do" &rest form))
   ...)
 @end example
 
--- a/lispref/elisp.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/elisp.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -26,7 +26,7 @@
 
 @ifnottex
 This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
-Reference Manual, corresponding to Emacs version 21.3.
+Reference Manual, corresponding to Emacs version 22.1.
 @c Please REMEMBER to update edition number in *four* places in this file
 @c                 and also in *one* place in intro.texi and *one* in README.
 
@@ -52,7 +52,7 @@
 
 @titlepage
 @title GNU Emacs Lisp Reference Manual
-@subtitle For Emacs Version 21
+@subtitle For Emacs Version 22
 @c The edition number appears in several places in this file
 @c and also in the file intro.texi.
 @subtitle Revision @value{VERSION}, January 2002
@@ -66,7 +66,7 @@
 
 @sp 2
 Edition @value{VERSION} @*
-Revised for Emacs Version 21.3,@*
+Revised for Emacs Version 22.1,@*
 January 2002.@*
 @sp 2
 ISBN 1-882114-73-6
@@ -96,7 +96,7 @@
 
 @ifnottex
 This Info file contains edition @value{VERSION} of the GNU Emacs Lisp
-Reference Manual, corresponding to GNU Emacs version 21.3.
+Reference Manual, corresponding to GNU Emacs version 22.1.
 @end ifnottex
 
 @menu
@@ -173,7 +173,7 @@
 * Index::                   Index including concepts, functions, variables,
                               and other terms.
 
-* New Symbols::             New functions and variables in Emacs 21.
+* New Symbols::             New functions and variables in Emacs 22.
 
       --- The Detailed Node Listing ---
 
--- a/lispref/files.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/files.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -578,16 +578,15 @@
 this case.
 
 If @var{append} is non-@code{nil}, then the specified text is appended
-to the existing file contents (if any).  Starting in Emacs 21, if
-@var{append} is an integer, then @code{write-region} seeks to that byte
-offset from the start of the file and writes the data from there.
+to the existing file contents (if any).  If @var{append} is an
+integer, @code{write-region} seeks to that byte offset from the start
+of the file and writes the data from there.
 
 If @var{mustbenew} is non-@code{nil}, then @code{write-region} asks
-for confirmation if @var{filename} names an existing file.
-Starting in Emacs 21, if @var{mustbenew} is the symbol @code{excl},
-then @code{write-region} does not ask for confirmation, but instead
-it signals an error @code{file-already-exists} if the file already
-exists.
+for confirmation if @var{filename} names an existing file.  If
+@var{mustbenew} is the symbol @code{excl}, then @code{write-region}
+does not ask for confirmation, but instead it signals an error
+@code{file-already-exists} if the file already exists.
 
 The test for an existing file, when @var{mustbenew} is @code{excl}, uses
 a special system feature.  At least for files on a local disk, there is
@@ -2013,7 +2012,7 @@
 @subsection Generating Unique File Names
 
   Some programs need to write temporary files.  Here is the usual way to
-construct a name for such a file, starting in Emacs 21:
+construct a name for such a file:
 
 @example
 (make-temp-file @var{name-of-application})
@@ -2106,7 +2105,7 @@
 
 @tindex small-temporary-file-directory
 @defvar small-temporary-file-directory
-This variable (new in Emacs 21) specifies the directory name for
+This variable specifies the directory name for
 creating certain temporary files, which are likely to be small.
 
 If you want to write a temporary file which is likely to be small, you
--- a/lispref/frames.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/frames.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1700,13 +1700,12 @@
 @section Text Terminal Colors
 @cindex colors on text-only terminals
 
-  Emacs can display color on text-only terminals, starting with version
-21.  These terminals usually support only a small number of colors, and
-the computer uses small integers to select colors on the terminal.  This
-means that the computer cannot reliably tell what the selected color
-looks like; instead, you have to inform your application which small
-integers correspond to which colors.  However, Emacs does know the
-standard set of colors and will try to use them automatically.
+  Text-only terminals usually support only a small number of colors,
+and the computer uses small integers to select colors on the terminal.
+This means that the computer cannot reliably tell what the selected
+color looks like; instead, you have to inform your application which
+small integers correspond to which colors.  However, Emacs does know
+the standard set of colors and will try to use them automatically.
 
   The functions described in this section control how terminal colors
 are used by Emacs.
--- a/lispref/hash.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/hash.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -27,9 +27,9 @@
 the way two alists can share a common tail.
 @end itemize
 
-  Emacs Lisp (starting with Emacs 21) provides a general-purpose hash
-table data type, along with a series of functions for operating on them.
-Hash tables have no read syntax, and print in hash notation, like this:
+  Emacs Lisp provides a general-purpose hash table data type, along
+with a series of functions for operating on them.  Hash tables have no
+read syntax, and print in hash notation, like this:
 
 @example
 (make-hash-table)
--- a/lispref/internals.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/internals.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -477,28 +477,22 @@
   (args)
      Lisp_Object args;
 @{
-  register Lisp_Object val;
-  Lisp_Object args_left;
+  register Lisp_Object val = Qnil;
   struct gcpro gcpro1;
 @end group
 
 @group
-  if (NILP (args))
-    return Qnil;
-
-  args_left = args;
-  GCPRO1 (args_left);
+  GCPRO1 (args);
 @end group
 
 @group
-  do
+  while (CONSP (args))
     @{
-      val = Feval (Fcar (args_left));
+      val = Feval (XCAR (args));
       if (!NILP (val))
-        break;
-      args_left = Fcdr (args_left);
+	break;
+      args = XCDR (args);
     @}
-  while (!NILP (args_left));
 @end group
 
 @group
@@ -549,7 +543,7 @@
 @code{MANY}, indicating an unlimited number of evaluated arguments (the
 equivalent of @code{&rest}).  Both @code{UNEVALLED} and @code{MANY} are
 macros.  If @var{max} is a number, it may not be less than @var{min} and
-it may not be greater than seven.
+it may not be greater than eight.
 
 @item interactive
 This is an interactive specification, a string such as might be used as
--- a/lispref/keymaps.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/keymaps.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1930,8 +1930,8 @@
 That specifies the default kind of separator.  (For compatibility,
 @code{""} and @code{-} also count as separators.)
 
-  Starting in Emacs 21, certain other values of @var{separator-type}
-specify a different style of separator.  Here is a table of them:
+  Certain other values of @var{separator-type} specify a different
+style of separator.  Here is a table of them:
 
 @table @code
 @item "--no-line"
@@ -2247,9 +2247,11 @@
 @end defvar
 
 @defvar menu-bar-update-hook
-This normal hook is run whenever the user clicks on the menu bar, before
-displaying a submenu.  You can use it to update submenus whose contents
-should vary.
+This normal hook is run by redisplay to update the menu bar contents,
+before redisplaying the menu bar.  You can use it to update submenus
+whose contents should vary.  Since this hook is run frequently, we
+advise you to ensure that the functions it calls do not take much time
+in the usual case.
 @end defvar
 
 @node Tool Bar
@@ -2258,7 +2260,7 @@
 
   A @dfn{tool bar} is a row of icons at the top of a frame, that execute
 commands when you click on them---in effect, a kind of graphical menu
-bar.  Emacs supports tool bars starting with version 21.
+bar.
 
   The frame parameter @code{tool-bar-lines} (X resource @samp{toolBar})
 controls how many lines' worth of height to reserve for the tool bar.  A
--- a/lispref/lists.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/lists.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -248,7 +248,7 @@
 @tindex pop
 @defmac pop listname
 This macro is a way of examining the @sc{car} of a list,
-and taking it off the list, all at once.  It is new in Emacs 21.
+and taking it off the list, all at once.
 
 It operates on the list which is stored in the symbol @var{listname}.
 It removes this element from the list by setting @var{listname}
@@ -436,7 +436,6 @@
 @defmac push newelt listname
 This macro provides an alternative way to write
 @code{(setq @var{listname} (cons @var{newelt} @var{listname}))}.
-It is new in Emacs 21.
 
 @example
 (setq l '(a b))
--- a/lispref/minibuf.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/minibuf.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1731,14 +1731,14 @@
 
 @defun minibuffer-prompt-end
 @tindex minibuffer-prompt-end
-This function, available starting in Emacs 21, returns the current
+This function returns the current
 position of the end of the minibuffer prompt, if a minibuffer is
 current.  Otherwise, it returns the minimum valid buffer position.
 @end defun
 
 @defun minibuffer-contents
 @tindex minibuffer-contents
-This function, available starting in Emacs 21, returns the editable
+This function returns the editable
 contents of the minibuffer (that is, everything except the prompt) as
 a string, if a minibuffer is current.  Otherwise, it returns the
 entire contents of the current buffer.
@@ -1752,7 +1752,7 @@
 
 @defun delete-minibuffer-contents
 @tindex delete-minibuffer-contents
-This function, available starting in Emacs 21, erases the editable
+This function erases the editable
 contents of the minibuffer (that is, everything except the prompt), if
 a minibuffer is current.  Otherwise, it erases the entire buffer.
 @end defun
--- a/lispref/modes.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/modes.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1220,7 +1220,7 @@
 buffer, such as its name, associated file, depth of recursive editing,
 and major and minor modes.  A window can also have a @dfn{header
 line}, which is much like the mode line but appears at the top of the
-window (starting in Emacs 21).
+window.
 
   This section describes how to control the contents of the mode line
 and header line.  We include it in this chapter because much of the
@@ -1295,7 +1295,7 @@
 where they appear.
 
 If you set this variable to @code{nil} in a buffer, that buffer does not
-have a mode line.  (This feature was added in Emacs 21.)
+have a mode line.
 @end defvar
 
   A mode-line construct may be as simple as a fixed string of text, but
@@ -1349,7 +1349,6 @@
 @item (:eval @var{form})
 A list whose first element is the symbol @code{:eval} says to evaluate
 @var{form}, and use the result as a string to display.
-(This feature is new as of Emacs 21.)
 
 @item (:propertize @var{elt} @var{props}@dots{})
 A list whose first element is the symbol @code{:propertize} says to
@@ -1713,7 +1712,7 @@
 @subsection Properties in the Mode Line
 @cindex text properties in the mode line
 
-  Starting in Emacs 21, certain text properties are meaningful in the
+  Certain text properties are meaningful in the
 mode line.  The @code{face} property affects the appearance of text; the
 @code{help-echo} property associate help strings with the text, and
 @code{local-map} can make the text mouse-sensitive.
@@ -1757,7 +1756,7 @@
 @cindex header line (of a window)
 @cindex window header line
 
-  Starting in Emacs 21, a window can have a @dfn{header line} at the
+  A window can have a @dfn{header line} at the
 top, just as it can have a mode line at the bottom.  The header line
 feature works just like the mode-line feature, except that it's
 controlled by different variables.
--- a/lispref/nonascii.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/nonascii.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -95,9 +95,10 @@
 
 @defun position-bytes position
 @tindex position-bytes
-Return the byte-position corresponding to buffer position @var{position}
-in the current buffer.  If @var{position} is out of range, the value
-is @code{nil}.
+Return the byte-position corresponding to buffer position
+@var{position} in the current buffer.  This is 1 at the start of the
+buffer, and counts upward in bytes.  If @var{position} is out of
+range, the value is @code{nil}.
 @end defun
 
 @defun byte-to-position byte-position
@@ -359,6 +360,11 @@
 special purposes within Emacs.
 @end defun
 
+@deffn Command list-charset-chars charset
+This command displays a list of characters in the character set
+@var{charset}.
+@end deffn
+
 @node Chars and Bytes
 @section Characters and Bytes
 @cindex bytes and characters
@@ -474,6 +480,13 @@
 coding systems (@pxref{Coding Systems}) are capable of representing all
 of the text in question.
 
+@defun charset-after &optional pos
+This function return the charset of a character in the current buffer
+at position @var{pos}.  If @var{pos} is omitted or @code{nil}, it
+defauls to the current value of point.  If @var{pos} is out of range,
+the value is @code{nil}.
+@end defun
+
 @defun find-charset-region beg end &optional translation
 This function returns a list of the character sets that appear in the
 current buffer between positions @var{beg} and @var{end}.
@@ -673,7 +686,7 @@
 uses one to encode the buffer contents.
 
   You can specify the coding system to use either explicitly
-(@pxref{Specifying Coding Systems}), or implicitly using the defaulting
+(@pxref{Specifying Coding Systems}), or implicitly using a default
 mechanism (@pxref{Default Coding Systems}).  But these methods may not
 completely specify what to do.  For example, they may choose a coding
 system such as @code{undefined} which leaves the character code
--- a/lispref/objects.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/objects.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1166,7 +1166,7 @@
 
     A hash table is a very fast kind of lookup table, somewhat like an
 alist in that it maps keys to corresponding values, but much faster.
-Hash tables are a new feature in Emacs 21; they have no read syntax, and
+Hash tables have no read syntax, and
 print using hash notation.  @xref{Hash Tables}.
 
 @example
@@ -1549,9 +1549,9 @@
 @cindex @samp{#@var{n}=} read syntax
 @cindex @samp{#@var{n}#} read syntax
 
-  In Emacs 21, to represent shared or circular structures within a
-complex of Lisp objects, you can use the reader constructs
-@samp{#@var{n}=} and @samp{#@var{n}#}.
+  To represent shared or circular structures within a complex of Lisp
+objects, you can use the reader constructs @samp{#@var{n}=} and
+@samp{#@var{n}#}.
 
   Use @code{#@var{n}=} before an object to label it for later reference;
 subsequently, you can use @code{#@var{n}#} to refer the same object in
--- a/lispref/os.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/os.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1618,35 +1618,6 @@
 looked up in this char-table.  If the value found there is
 non-@code{nil}, then it is used instead of the actual input character.
 
-In the example below, we set @code{keyboard-translate-table} to a
-char-table.  Then we fill it in to swap the characters @kbd{C-s} and
-@kbd{C-\} and the characters @kbd{C-q} and @kbd{C-^}.  Subsequently,
-typing @kbd{C-\} has all the usual effects of typing @kbd{C-s}, and vice
-versa.
-
-@cindex flow control example
-@example
-@group
-(defun evade-flow-control ()
-  "Replace C-s with C-\ and C-q with C-^."
-  (interactive)
-@end group
-@group
-  (setq keyboard-translate-table
-        (make-char-table 'keyboard-translate-table nil))
-@end group
-@group
-  ;; @r{Swap @kbd{C-s} and @kbd{C-\}.}
-  (aset keyboard-translate-table ?\034 ?\^s)
-  (aset keyboard-translate-table ?\^s ?\034)
-@end group
-@group
-  ;; @r{Swap @kbd{C-q} and @kbd{C-^}.}
-  (aset keyboard-translate-table ?\036 ?\^q)
-  (aset keyboard-translate-table ?\^q ?\036))
-@end group
-@end example
-
 Note that this translation is the first thing that happens to a
 character after it is read from the terminal.  Record-keeping features
 such as @code{recent-keys} and dribble files record the characters after
@@ -1664,6 +1635,26 @@
 the keyboard translate table if necessary.
 @end defun
 
+  Here's an example of using the @code{keyboard-translate-table} to
+make @kbd{C-x}, @kbd{C-c} and @kbd{C-v} perform the cut, copy and paste
+operations:
+
+@example
+(keyboard-translate ?\C-x 'control-x)
+(keyboard-translate ?\C-c 'control-c)
+(keyboard-translate ?\C-v 'control-v)
+(global-set-key [control-x] 'kill-region)
+(global-set-key [control-c] 'kill-ring-save)
+(global-set-key [control-v] 'yank)
+@end example
+
+@noindent
+On a graphical terminal that supports extended @acronym{ASCII} input,
+you can still get the standard Emacs meanings of one of those
+characters by typing it with the shift key.  That makes it a different
+character as far as keyboard translation is concerned, but it has the
+same usual meaning.
+
   The remaining translation features translate subsequences of key
 sequences being read.  They are implemented in @code{read-key-sequence}
 and have no effect on input read with @code{read-event}.
--- a/lispref/searching.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/searching.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -338,7 +338,7 @@
 in both multibyte and unibyte representations, because only the
 @acronym{ASCII} characters are excluded.
 
-Starting in Emacs 21, a character alternative can also specify named
+A character alternative can also specify named
 character classes (@pxref{Char Classes}).  This is a POSIX feature whose
 syntax is @samp{[:@var{class}:]}.  Using a character class is equivalent
 to mentioning each of the characters in that class; but the latter is
@@ -416,7 +416,7 @@
 @cindex character classes in regexp
 
   Here is a table of the classes you can use in a character alternative,
-in Emacs 21, and what they mean:
+and what they mean:
 
 @table @samp
 @item [:ascii:]
--- a/lispref/streams.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/streams.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -790,7 +790,7 @@
 @end defopt
 
   These variables are used for detecting and reporting circular
-and shared structure---but they are only defined in Emacs 21.
+and shared structure:
 
 @tindex print-circle
 @defvar print-circle
--- a/lispref/strings.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/strings.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -691,8 +691,8 @@
 arguments @var{objects} are the computed values to be formatted.
 
 The characters in @var{string}, other than the format specifications,
-are copied directly into the output; starting in Emacs 21, if they have
-text properties, these are copied into the output also.
+are copied directly into the output; if they have text properties,
+these are copied into the output also.
 @end defun
 
 @cindex @samp{%} in format
@@ -732,7 +732,7 @@
 by their contents alone, with no @samp{"} characters, and symbols appear
 without @samp{\} characters.
 
-Starting in Emacs 21, if the object is a string, its text properties are
+If the object is a string, its text properties are
 copied into the output.  The text properties of the @samp{%s} itself
 are also copied, but those of the object take priority.
 
--- a/lispref/text.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/text.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -4225,8 +4225,6 @@
 described above in this section, as well as the hooks attached to
 certain special text properties (@pxref{Special Properties}) and overlay
 properties (@pxref{Overlay Properties}).
-
-This variable is available starting in Emacs 21.
 @end defvar
 
 @ignore
--- a/lispref/windows.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/lispref/windows.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1583,7 +1583,7 @@
 
   @dfn{Vertical fractional scrolling} means shifting the image in the
 window up or down by a specified multiple or fraction of a line.
-Starting in Emacs 21, each window has a @dfn{vertical scroll position},
+Each window has a @dfn{vertical scroll position},
 which is a number, never less than zero.  It specifies how far to raise
 the contents of the window.  Raising the window contents generally makes
 all or part of some lines disappear off the top, and all or part of some
@@ -2053,7 +2053,6 @@
 If this variable is non-@code{nil}, in any given buffer,
 then the size of any window displaying the buffer remains fixed
 unless you explicitly change it or Emacs has no other choice.
-(This feature is new in Emacs 21.)
 
 If the value is @code{height}, then only the window's height is fixed;
 if the value is @code{width}, then only the window's width is fixed.
--- a/mac/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/mac/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,17 @@
+2005-03-05  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* INSTALL: Mention new target `NonCarbon'.
+	
+2005-03-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* makefile.MPW (NonCarbon): New target.  The target `Emacs' is now
+	used for the Carbon build that defines HAVE_CARBON.
+
+	* inc/config.h (HAVE_STDLIB_H): Define to 1.
+	
+	* src/EmacsMPW.r (SIZE): Increase preferred memory size to 32MB.
+	[HAVE_CARBON] (crfg): New resource for extra stack space.
+
 2004-12-24  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
 	* makefile.MPW: Add dependencies for fringe.c.x, image.c.x, and
--- a/mac/INSTALL	Tue Mar 08 08:37:20 2005 +0000
+++ b/mac/INSTALL	Wed Mar 09 00:09:34 2005 +0000
@@ -182,6 +182,12 @@
   make Emacs -f makefile.MPW > Emacs.MakeScript
   Emacs.MakeScript
 
+The above commands create an executable that uses the Carbon API.  The
+non-Carbon version can also be created by replacing all the
+occurrences of `Emacs' above with `NonCarbon'.  Not that the
+non-Carbon version does not support some features such as file
+dialogs, drag-and-drop, and unicode menus.
+
 To build Emacs using CodeWarrior, start up the CodeWarrior IDE, choose
 File->Import Project...  and select the file cw6-mcp.xml.  When
 prompted to save the project, navigate to same directory as the file
--- a/mac/inc/config.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/mac/inc/config.h	Wed Mar 09 00:09:34 2005 +0000
@@ -184,7 +184,7 @@
 /* #undef HAVE_TERMIOS_H */
 #define HAVE_LIMITS_H 1
 #define HAVE_STRING_H 1
-/* #undef HAVE_STDLIB_H */
+#define HAVE_STDLIB_H 1
 /* #undef HAVE_TERMCAP_H */
 /* #undef HAVE_TERM_H */
 /* #undef HAVE_STDIO_EXT_H */
--- a/mac/makefile.MPW	Tue Mar 08 08:37:20 2005 +0000
+++ b/mac/makefile.MPW	Wed Mar 09 00:09:34 2005 +0000
@@ -21,7 +21,8 @@
 # Boston, MA 02111-1307, USA.  */
 #
 # Defines the following targets:
-#   Emacs (default) - normal Emacs build.
+#   Emacs (default) - normal Carbon Emacs build.
+#   NonCarbon - non-Carbon Emacs build.
 #   Clean - remove all object and executable files to prepare for a fresh build.
 #   Doc - generate the "DOC" file in ~emacs/etc/.
 #   Make-DocFile - build the make-docfile tool, utility for generating "DOC".
@@ -38,7 +39,9 @@
 Make-DocFileDir = {Lib-Src}			# directory containing make-docfile tool
 
 Makefile = makefile.MPW			# self reference
+NonCarbonMakeOut = NonCarbon.MakeOut	# temporary file for non-Carbon build script
 
+CarbonOption = -d HAVE_CARBON
 SymOption = # -sym on			# remove hash mark before "-sym on" to enable source debugging
 OptOption = # -opt speed			# alternatively set to -opt off or -opt size
 
@@ -47,7 +50,7 @@
 PPCCOptions = {SymOption} {OptOption} -noMapCR -enum int -alloca ¶
 	-typecheck relaxed -w off ¶
 	-includes unix -i {Includes},{Src} ¶
-	-d emacs=1 -d HAVE_CONFIG_H -d MAC_OS -d MAC_OS8
+	-d emacs=1 -d HAVE_CONFIG_H -d MAC_OS -d MAC_OS8 {CarbonOption}
 
 LinkOptions = {SymOption} -d
 
@@ -132,29 +135,42 @@
 	"{Src}macmenu.c.x" ¶
 	"{Src}macterm.c.x"
 
+StdLibraries = ¶
+	"{SharedLibraries}CarbonLib" ¶
+	"{SharedLibraries}StdCLib" ¶
+	"{PPCLibraries}StdCRuntime.o" ¶
+	"{PPCLibraries}PPCCRuntime.o"
+
+NonCarbonLibs = ¶
+	"{SharedLibraries}InterfaceLib" ¶
+	"{SharedLibraries}StdCLib" ¶
+	"{SharedLibraries}MathLib" ¶
+	"{SharedLibraries}AppleScriptLib" ¶
+	"{SharedLibraries}TextEncodingConverter" ¶
+	"{SharedLibraries}AppearanceLib" ¶
+	"{SharedLibraries}QuickTimeLib" ¶
+	"{PPCLibraries}StdCRuntime.o" ¶
+	"{PPCLibraries}PPCCRuntime.o" ¶
+	"{PPCLibraries}PPCToolLibs.o"
+
 # The next two are the dependency rules for building Emacs.
 
 Emacs ÄÄ {Makefile} {DocTarget}DOC {EmacsObjects} {MacObjects}
 	PPCLink ¶
 		{LinkOptions} ¶
 		{EmacsObjects} {MacObjects} ¶
-		"{SharedLibraries}InterfaceLib" ¶
-		"{SharedLibraries}StdCLib" ¶
-		"{SharedLibraries}MathLib" ¶
-		"{SharedLibraries}AppleScriptLib" ¶
-		"{SharedLibraries}TextEncodingConverter" ¶
-		"{SharedLibraries}AppearanceLib" ¶
-		"{SharedLibraries}QuickTimeLib" ¶
-		"{PPCLibraries}StdCRuntime.o" ¶
-		"{PPCLibraries}PPCCRuntime.o" ¶
-		"{PPCLibraries}PPCToolLibs.o" ¶
+		{StdLibraries} ¶
 		-o "{EmacsTarget}"
 
 Emacs ÄÄ {Makefile} "{Source}"Emacs.maclf.r "{Source}"EmacsMPW.maclf.r
-	Rez -a "{Source}"Emacs.maclf.r -o "{EmacsTarget}"
-	Rez -a "{Source}"EmacsMPW.maclf.r -o "{EmacsTarget}"
+	Rez {CarbonOption} -a "{Source}"Emacs.maclf.r -o "{EmacsTarget}"
+	Rez {CarbonOption} -a "{Source}"EmacsMPW.maclf.r -o "{EmacsTarget}"
 	SetFile "{EmacsTarget}" -t APPL -c 'EMAx' -a B
 
+NonCarbon Ä
+	Make -f "{Makefile}" -d CarbonOption="" -d StdLibraries='{NonCarbonLibs}' > "{NonCarbonMakeOut}"
+	"{NonCarbonMakeOut}"
+
 # Rez cannot handle files with Unix style end lines at all.  So generate
 # them.  It does not hurt if Emacs.r and EmacsMPW.r already have Mac end
 # lines.
@@ -951,6 +967,7 @@
 	Delete -i stdout stderr
 	Delete -i {Make-DocFile-Objects} {Make-DocFileDir}make-docfile
 	Delete -i "{Source}"Emacs.maclf.r "{Source}"EmacsMPW.maclf.r
+	Delete -i "{NonCarbonMakeOut}"
 
 DistClean Ä Clean
 	Delete -i "Emacs CW"Å
--- a/mac/src/EmacsMPW.r	Tue Mar 08 08:37:20 2005 +0000
+++ b/mac/src/EmacsMPW.r	Wed Mar 09 00:09:34 2005 +0000
@@ -42,6 +42,18 @@
 	reserved,
 	reserved,
 	reserved,
-	16777216,
+	33554432,
 	16777216
 };
+
+#ifdef HAVE_CARBON
+resource 'cfrg' (0) {
+    {
+	kPowerPCCFragArch, kIsCompleteCFrag, kNoVersionNum, kNoVersionNum,
+	311296, /* 48K (default) + 256K (EXTRA_STACK_ALLOC in macterm.c) */
+	kNoAppSubFolder,
+	kApplicationCFrag, kDataForkCFragLocator, kZeroOffset, kCFragGoesToEOF,
+	"",
+    }
+};
+#endif
--- a/man/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,104 @@
+2005-03-07  Richard M. Stallman  <rms@gnu.org>
+
+	* url.texi: Fix usage of "e.g.".
+	(HTTP language/coding): Explain the rules for these strings.
+
+	* misc.texi (Single Shell, Shell Options): Fix previous change.
+
+	* building.texi (Debugger Operation): Update GUD tooltip enable info.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* building.texi (Starting GUD): Don't explain text vs graphical
+	GDB here.  Just mention it and xref.
+	Delete "just one debugger process".
+	(Debugger Operation): Move GUD tooltip info here.
+	(GUD Tooltips): Node deleted.
+	(GDB Graphical Interface): Explain the two GDB modes here.
+
+	* woman.texi (Introduction): Minor cleanups.
+
+	* url.texi (HTTP language/coding): Get rid of "Emacs 21".
+
+	* sending.texi (Sending Mail): Minor cleanup.
+	(Mail Aliases): Explain quoting conventions.
+	Update key rebinding example.
+	(Header Editing): C-M-i is like M-TAB.
+	(Mail Mode Misc): mail-attach-file does not do MIME.
+
+	* rmail.texi (Rmail Inbox): Move text from Remote Mailboxes
+	that really belongs here.
+	(Remote Mailboxes): Text moved to Rmail Inbox.
+	(Rmail Display): Mention Mouse-1.
+	(Movemail): Clarify two movemail versions.
+	Clarify rmail-movemail-program.
+	
+	* pcl-cvs.texi (About PCL-CVS): Get rid of "Emacs 21".
+	(Installation): Node deleted.
+
+	* misc.texi (Single Shell): Replace uudecode example with gpg example.
+	Document async shell commands.
+	(Shell History): Clarify.
+	(Shell Ring): Mention C-UP an C-DOWN.
+	(Shell Options): Add comint-prompt-read-only.
+	(Invoking emacsclient): Set EDITOR to run Emacs.
+	(Sorting): No need to explain what region is.
+	(Saving Emacs Sessions): Fix typo.
+	(Recursive Edit): Fix punctuation.
+	(Emulation): Don't mention "PC bindings" which are standard.
+	(Hyperlinking): Explain Mouse-1 convention here.
+	(Find Func): Node deleted.
+
+	* mh-e.texi (Preface): Get rid of "Emacs 21".
+
+	* help.texi (Name Help): Xref to Hyperlinking.
+
+	* glossary.texi (Glossary):
+	Rename "Balance Parentheses" to "Balancing...".
+	Add "Byte Compilation".  Correct "Copyleft".
+	New xref in "Customization".
+	Clarify "Current Line", "Echoing", "Fringe", "Frame", "Speedbar".
+	Add "Graphical Terminal" "Keybinding", "Margin", "Window System".
+	Rename "Registers" to "Register".
+	Replace "Selecting" with "Selected Frame",
+	"Selected Window", and "Selecting a Buffer".
+
+	* files.texi (Types of Log File): Explain how projects'
+	methods can vary.
+
+	* eshell.texi (Installation): Delete node (for Emacs 20).
+
+	* display.texi (Faces): Delete "Emacs 21".
+
+	* custom.texi (Changing a Variable): C-M-i like M-TAB.
+	* fixit.texi (Spelling): C-M-i like M-TAB.
+	* mini.texi (Completion Options): C-M-i like M-TAB.
+	* programs.texi (Symbol Completion): C-M-i like M-TAB.
+	* text.texi (Text Mode): C-M-i like M-TAB.
+
+	* commands.texi (Keys): Mention F1 and F2 in list of prefixes.
+
+	* calendar.texi (Specified Dates): Mention `g w'.
+	(Appointments): appt-activate toggles with no arg.
+
+2005-03-05  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* flymake.texi: Refill and tweak style in @lisp blocks.
+
+2005-03-05  Juri Linkov  <juri@jurta.org>
+
+	* cmdargs.texi (Emacs Invocation): Add cindex
+	"invocation (command line arguments)"
+	(Misc X): Add -nbc, --no-blinking-cursor.
+
+2005-03-04  Ulf Jasper  <ulf.jasper@web.de>
+
+	* calendar.texi (iCalendar): No need to require it now.
+
+2005-03-03  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus.texi (Slow/Expensive Connection): Don't abbreviate "very".
+
 2005-03-03  Nick Roberts  <nickrob@snap.net.nz>
 
 	* trouble.texi (Contributing): Mention Savannah. Direct users to
@@ -14,6 +115,10 @@
 	Mention additional functions.
 	(Algebraic Simplifications): Mention additional simplifications.
 
+2005-02-27  Richard M. Stallman  <rms@gnu.org>
+
+	* building.texi (Compilation): Update mode line status info.
+
 2005-02-27  Matt Hodges  <MPHodges@member.fsf.org>
 
 	* calendar.texi (General Calendar): Document binding of
--- a/man/building.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/building.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -325,7 +325,6 @@
 * Debugger Operation::	Connection between the debugger and source buffers.
 * Commands of GUD::	Key bindings for common commands.
 * GUD Customization::	Defining your own commands for GUD.
-* GUD Tooltips::        Showing variable values by pointing with the mouse.
 * GDB Graphical Interface::  An enhanced mode that uses GDB features to
                         implement a graphical debugging environment through
                         Emacs.
@@ -340,18 +339,9 @@
 @table @kbd
 @item M-x gdb @key{RET} @var{file} @key{RET}
 @findex gdb
-Run GDB as a subprocess of Emacs.  By default, GDB starts as for
-@kbd{M-x gdba} below.  If you want GDB to start as in Emacs 21.3 and
-earlier then edit the string in the minibuffer or set
-@code{gud-gdb-command-name} to ``gdb --fullname''.  You need to do
-this if you want to run multiple debugging sessions within one Emacs
-session.  In this case, the command creates a buffer for input and
-output to GDB, and switches to it.  If a GDB buffer already exists, it
-just switches to that buffer.
-
-@item M-x gdba @key{RET} @var{file} @key{RET}
-Run GDB as a subprocess of Emacs, providing a graphical interface
-to GDB features through Emacs.  @xref{GDB Graphical Interface}.
+Run GDB as a subprocess of Emacs.  By default, this operates in
+graphical mode; @xref{GDB Graphical Interface}.  Graphical mode
+does not support any other debuggers.
 
 @item M-x dbx @key{RET} @var{file} @key{RET}
 @findex dbx
@@ -396,8 +386,6 @@
 allowed.  GUD assumes that the first argument not starting with a
 @samp{-} is the executable file name.
 
-  Emacs can only run one debugger process at a time.
-
 @node Debugger Operation
 @subsection Debugger Operation
 
@@ -424,6 +412,16 @@
 commands for your debugger are available, and you can use the Shell mode
 history commands to repeat them.  @xref{Shell Mode}.
 
+@cindex tooltips with GUD
+@vindex tooltip-gud-modes
+@vindex tooltip-gud-tips-p
+  The Tooltip facility (@pxref{Tooltips}) provides support for GUD@.
+You activate this feature by setting the variable
+@code{tooltip-gud-tips-p} to @code{t}.  Then you can display a
+variable's value in a tooltip simply by pointing at it with the mouse.
+This operates in the GUD buffer and in source buffers with major modes
+in the list @code{tooltip-gud-modes}.
+
 @node Commands of GUD
 @subsection Commands of GUD
 
@@ -653,28 +651,24 @@
 ignores any numeric argument.
 @end table
 
-@node GUD Tooltips
-@subsection GUD Tooltips
-
-@cindex tooltips with GUD
-The Tooltip facility (@pxref{Tooltips}) provides support for GUD@.  If
-GUD support is activated by customizing the @code{tooltip} group,
-variable values can be displayed in tooltips by pointing at them with
-the mouse in the GUD buffer or in source buffers with major modes in the
-customizable list @code{tooltip-gud-modes}.
-
 @node GDB Graphical Interface
 @subsection GDB Graphical Interface
 
-By default, the command @code{gdb} starts GDB using a graphical
+  By default, the command @code{gdb} starts GDB using a graphical
 interface where you view and control the program's data using Emacs
 windows.  You can still interact with GDB through the GUD buffer, but
 the point of this mode is that you can do it through menus and clicks,
 without needing to know GDB commands.
 
+@vindex gud-gdb-command-name
 @findex gdba
-If you have customised @code{gud-gdb-command-name}, then start this
-mode with the command @code{gdba}.
+  You can also run GDB in text command mode, which creates a buffer
+for input and output to GDB.  To do this, set
+@code{gud-gdb-command-name} to @code{"gdb --fullname"} or edit the
+startup command in the minibuffer to say that.  You need to do use
+text command mode to run multiple debugging sessions within one Emacs
+session.  If you have customised @code{gud-gdb-command-name} in that
+way, then you can use @kbd{M-x gdba} to invoke GDB in graphical mode.
 
 @menu
 * Layout::               Control the number of displayed buffers.
--- a/man/calendar.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/calendar.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -186,6 +186,8 @@
 Move point to specified date (@code{calendar-goto-date}).
 @item g D
 Move point to specified day of year (@code{calendar-goto-day-of-year}).
+@item g w
+Move point to specified week of year (@code{calendar-goto-iso-week}).
 @item o
 Center calendar around specified month (@code{calendar-other-month}).
 @item .
@@ -201,9 +203,13 @@
 
 @kindex g D @r{(Calendar mode)}
 @findex calendar-goto-day-of-year
+@kindex g w @r{(Calendar mode)}
+@findex calendar-goto-iso-week
   @kbd{g D} (@code{calendar-goto-day-of-year}) prompts for a year and
-day number, and moves to that date.  Negative day numbers count backward
-from the end of the year.
+day number, and moves to that date.  Negative day numbers count
+backward from the end of the year.  @kbd{g w}
+(@code{calendar-goto-iso-week}) prompts for a year and week number,
+and moves to that week.
 
 @kindex o @r{(Calendar mode)}
 @findex calendar-other-month
@@ -1351,7 +1357,7 @@
 appointment list for today from the diary file, giving all diary entries
 found with recognizable times of day, and reminds you just before each
 of them. Calling @code{appt-activate} with a negative argument disables
-the appointment package.
+the appointment package.  With no argument, it toggles.
 
   For example, suppose the diary file contains these lines:
 
@@ -1406,8 +1412,6 @@
 most diary entries.  Please note that @file{icalendar.el} is work in
 progress, so usage may evolve in future.
 
-  To activate the package, use @code{(require 'icalendar)}.
-
 @findex icalendar-import-buffer
   The command @code{icalendar-import-buffer} extracts
 iCalendar data from the current buffer and adds it to your (default)
--- a/man/cmdargs.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/cmdargs.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -9,6 +9,7 @@
 @cindex options (command line)
 @cindex switches (command line)
 @cindex startup (command line arguments)
+@cindex invocation (command line arguments)
 
   GNU Emacs supports command line arguments to request various actions
 when invoking Emacs.  These are for compatibility with other editors and
@@ -1211,6 +1212,13 @@
 @opindex --line-spacing
 @cindex line spacing, command-line argument
 Specify @var{pixels} as additional space to put between lines, in pixels.
+
+@item -nbc
+@opindex -nbc
+@itemx --no-blinking-cursor
+@opindex --no-blinking-cursor
+@cindex blinking cursor disable, command-line argument
+Disable the blinking cursor on graphical terminals.
 @end table
 
   The @samp{--xrm} option (@pxref{Resources}) specifies additional
--- a/man/commands.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/commands.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -168,11 +168,13 @@
 key sequences, not one.@refill
 
   All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
-@kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x n}, @w{@kbd{C-x
-r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6}, @key{ESC}, and
-@kbd{M-g}.  But this list is not cast in concrete; it is
-just a matter of Emacs's standard key bindings.  If you customize Emacs,
-you can make new prefix keys, or eliminate these.  @xref{Key Bindings}.
+@kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x
+n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x
+6}, @key{ESC}, and @kbd{M-g}.  (@key{F1} and @key{F2} are aliases for
+@kbd{C-h} and @kbd{C-x 6}.)  But this list is not cast in concrete; it
+is just a matter of Emacs's standard key bindings.  If you customize
+Emacs, you can make new prefix keys, or eliminate these.  @xref{Key
+Bindings}.
 
   If you do make or eliminate prefix keys, that changes the set of
 possible key sequences.  For example, if you redefine @kbd{C-f} as a
--- a/man/custom.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/custom.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -345,8 +345,9 @@
 @kindex M-TAB @r{(customization buffer)}
 @findex widget-complete
   While editing a value or field that is a file name, directory name,
-command name, or anything else for which completion is defined, you can
-type @kbd{M-@key{TAB}} (@code{widget-complete}) to do completion.
+command name, or anything else for which completion is defined, you
+can type @kbd{M-@key{TAB}} (@code{widget-complete}) to do completion.
+(@kbd{@key{ESC} @key{TAB}} and @kbd{C-M-i} do the same thing.)
 
   Some variables have a small fixed set of possible legitimate values.
 These variables don't let you edit the value textually.  Instead, an
--- a/man/display.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/display.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -81,14 +81,14 @@
 background colors for the current frame only; see @ref{Frame
 Parameters}.)
 
-  Emacs 21 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 you use variable-width fonts.  In particular, indentation
-commands can give inconsistent results, so we recommend you avoid
-variable-width fonts for editing program source code.  Filling will
-sometimes make lines too long or too short.  We plan to address these
-issues in future Emacs versions.
+  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
+you use variable-width fonts.  In particular, indentation commands can
+give inconsistent results, so we recommend you avoid variable-width
+fonts for editing program source code.  Filling will sometimes make
+lines too long or too short.  We plan to address these issues in
+future Emacs versions.
 
 @findex list-faces-display
   To see what faces are currently defined, and what they look like, type
--- a/man/eshell.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/eshell.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -80,7 +80,6 @@
 
 @menu
 * What is Eshell?::             A brief introduction to the Emacs Shell.
-* Installation::                For users of Emacs 20 and XEmacs.
 * Command basics::              The basics of command usage.
 * Commands::
 * Arguments::
@@ -146,8 +145,6 @@
 looks like: But don't let it fool you; once you know what's going on,
 it's easier than it looks: @code{ls -lt **/*.doc(Lk+50aM+5)}.}
 
-As of Emacs 21, Eshell is part of the standard Emacs distribution.
-
 @menu
 * Contributors to Eshell::      People who have helped out!
 @end menu
@@ -192,196 +189,6 @@
 requests, bug reports and encouragement.  Thanks a lot!  Without you
 there would be no new releases of Eshell.
 
-@node Installation
-@chapter Installation
-@cindex installation
-
-As mentioned above, Eshell comes preinstalled as of Emacs 21.  If you're
-using Emacs 20.4 or later, or XEmacs 21, you can download the most
-recent version of Eshell from
-@url{http://www.gci-net.com/users/j/johnw/Emacs/packages/eshell.tar.gz}.
-
-However, if you are using Emacs 21, you may skip this section.
-
-@section Short Form
-
-Here's exactly what to do, with no explanation why:
-
-@enumerate
-@item
-@samp{M-x load-file RET eshell-auto.el RET}.
-
-@item
-@samp{ESC : (add-to-list 'load-path "<path where Eshell resides>") RET}.
-
-@item
-@samp{ESC : (add-to-list 'load-path "<path where Pcomplete resides>") RET}.
-
-@item
-@samp{M-x eshell RET}.
-
-You should see a version banner displayed.
-
-@item
-@samp{ls RET}.
-
-Confirm that you see a file listing.
-
-@item
-@samp{eshell-test RET}.
-
-Confirm that everything runs correctly.  Use @kbd{M-x eshell-report-bug} if
-not.
-
-@item
-@samp{cd $@{dirname (locate-library "eshell-auto")@} RET}.
-
-@item
-@samp{find-file Makefile RET}.
-
-@item
-Edit the Makefile to reflect your site.
-
-@item
-@samp{M-x eshell RET}.
-
-@item
-@samp{make install RET}.
-
-@item
-@samp{find-file $user-init-file RET}.
-
-@item
-Add the following lines to your @file{.emacs} file:
-
-@example
-(add-to-list 'load-path "<directory where you install Eshell>")
-(load "eshell-auto")
-@end example
-
-@item
-@samp{M-x eshell RET}.
-
-@item
-@samp{customize-option #'eshell-modules-list RET}.
-
-@item
-Select the extension modules you prefer.
-
-@item
-Restart Emacs!
-
-@item
-@samp{M-x info RET m Eshell RET}.
-
-Read the manual and enjoy!
-@end enumerate
-
-@section Long Form
-
-@enumerate
-@item
-Before building and installing Eshell, it is important to test that it
-will work properly on your system.  To do this, first load the file
-@file{eshell-auto}, which will define certain autoloads required to run
-Eshell.  This can be done using the command @kbd{M-x load-file}, and
-then selecting the file @file{eshell-auto.el}.
-
-@item
-In order for Emacs to find Eshell's files, the Eshell directory must be
-added to the @code{load-path} variable.  This can be done within Emacs by
-typing:
-
-@example
-ESC : (add-to-list 'load-path "<path where Eshell resides>") RET
-ESC : (add-to-list 'load-path "<path where Pcomplete resides>") RET
-@end example
-
-@item
-Start Eshell from the distributed sources, using default settings, by
-typing @kbd{M-x eshell}.
-
-@item
-Verify that Eshell is functional by typing @command{ls} followed by
-@key{RET}.  You should have already seen a version banner announcing the
-version number of this release, followed by a prompt.
-
-@item
-Run the test suite by typing @command{eshell-test} followed by @key{RET}
-in the Eshell buffer.  It is important that Emacs be left alone while
-the tests are running, since extraneous command input may cause some of
-the tests to fail (they were never intended to run in the background).
-If all of the tests pass, Eshell should work just fine on your system.
-If any of the tests fail, please send e-mail to the Eshell maintainer
-using the command @kbd{M-x eshell-report-bug}.
-
-@item
-Edit the file @file{Makefile} in the directory containing the Eshell
-sources to reflect the location of certain Emacs directories at your
-site.  The only things you really have to change are the definitions of
-@code{lispdir} and @code{infodir}.  The elisp files will be copied to
-@code{lispdir}, and the info file to @code{infodir}.
-
-@item
-Type @kbd{make install} in the directory containing the Eshell sources.
-This will byte-compile all of the @file{*.el} files and copy both the
-source and compiled versions to the directories specified in the
-previous step.  It will also copy the info file, and add a corresponding
-entry to your @file{dir} file----if the program @code{install-info} can
-be found on your system.
-
-If you only want to create the compiled elisp files, but don't want to
-install them, you can type just @kbd{make} instead.
-
-@item
-Add the directory into which Eshell was installed to your
-@code{load-path} variable.  This can be done by adding the following
-line to your @file{.emacs} file:
-
-@example
-(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/eshell")
-@end example
-
-The actual directory on your system may differ.
-
-@item
-To install Eshell privately, edit your @file{.emacs} file; to install
-Eshell site-wide, edit the file @file{site-start.el} in your
-@file{site-lisp} directory (usually
-@file{/usr/local/share/emacs/site-lisp} or something similar).  In
-either case enter the following line into the appropriate file:
-
-@example
-(load "eshell-auto")
-@end example
-
-@item
-Restart Emacs.  After restarting, customize the variable
-@code{eshell-modules-list}.  This variable selects which Eshell
-extension modules you want to use.  You will find documentation on each
-of those modules in the Info manual.
-@end enumerate
-
-@cindex documentation, printed version
-@cindex printed version of documentation
-If you have @TeX{} installed at your site, you can make a typeset manual
-from @file{eshell.texi}.
-
-@enumerate
-@item
-Run @TeX{} by typing @kbd{texi2dvi eshell.texi}.  (With Emacs 21.1 or
-later, typing @kbd{make eshell.dvi} in the @file{man/} subdirectory of
-the Emacs source distribution will do that.)
-
-@item
-Convert the resulting device independent file @file{eshell.dvi} to a
-form which your printer can output and print it.  If you have a
-postscript printer, there is a program, @code{dvi2ps}, which does that; there
-is also a program which comes together with @TeX{}, @code{dvips}, which
-you can use.  For other printers, use a suitable DVI driver,
-e.g., @code{dvilj4} for LaserJet-compatible printers.
-@end enumerate
-
 @node Command basics
 @chapter Basic overview
 
--- a/man/files.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/files.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1297,23 +1297,27 @@
 @cindex log File, types of
 @cindex version control log
 
-GNU projects under a revision control system generally possess
-@emph{two} types of log for changes.  One is the per-file log
-maintained by the revision control system: each time you check in a
-change, you must fill out a @dfn{log entry} for the change (@pxref{Log
-Buffer}).  This kind of log is called the @dfn{version control log},
-also the @dfn{revision control log}, @dfn{RCS log}, or @dfn{CVS log}.
-
-The other kind of log is the change log file, typically a file called
-@file{ChangeLog}.  It provides a chronological record of all changes
-to a large portion of a program---one directory and its
-subdirectories.  A small program would use one @file{ChangeLog} file;
-a large program may well merit a @file{ChangeLog} file in each major
-directory.  @xref{Change Log}.
-
-When you use version control, you can use just the per-file log if you
-wish, or you can use both kinds of logs.  When you use both, you
-typically want to write just one entry for each change.  You can write
+  Projects that use a revision control system can have @emph{two}
+types of log for changes.  One is the per-file log maintained by the
+revision control system: each time you check in a change, you must
+fill out a @dfn{log entry} for the change (@pxref{Log Buffer}).  This
+kind of log is called the @dfn{version control log}, also the
+@dfn{revision control log}, @dfn{RCS log}, or @dfn{CVS log}.
+
+  The other kind of log is the file @file{ChangeLog} (@pxref{Change
+Log}).  It provides a chronological record of all changes to a large
+portion of a program---typically one directory and its subdirectories.
+A small program would use one @file{ChangeLog} file; a large program
+may well merit a @file{ChangeLog} file in each major directory.
+@xref{Change Log}.
+
+  A project maintained with version control can use just the per-file
+log, or it can use both kinds of logs.  It can handle some files one
+way and some files the other way.  Each project has its policy, which
+you should follow.
+
+  When the policy is to use both, you typically want to write an entry
+for each change just once, then put it into both logs.  You can write
 the entry in @file{ChangeLog}, then copy it to the log buffer when you
 check in the change.  Or you can write the entry in the log buffer
 while checking in the change, and later use the @kbd{C-x v a} command
--- a/man/fixit.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/fixit.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -311,9 +311,10 @@
 completions based on spelling correction.  Insert the beginning of a
 word, and then type @kbd{M-@key{TAB}}; the command displays a
 completion list window.  (If your window manager intercepts
-@kbd{M-@key{TAB}}, type @kbd{@key{ESC} @key{TAB}}.)  To choose one of
-the completions listed, click @kbd{Mouse-2} on it, or move the cursor
-there in the completions window and type @key{RET}.  @xref{Text Mode}.
+@kbd{M-@key{TAB}}, type @kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.)  To
+choose one of the completions listed, click @kbd{Mouse-2} or
+@kbd{Mouse-1} fast on it, or move the cursor there in the completions
+window and type @key{RET}.  @xref{Text Mode}.
 
 @ignore
 @findex reload-ispell
--- a/man/flymake.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/flymake.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -419,19 +419,16 @@
 First, we write the @code{init-function}:
 
 @lisp
-(defun flymake-perl-init(buffer)
-    (let* ((temp-file   (flymake-init-create-temp-buffer-copy
-			     buffer
-			     'flymake-create-temp-inplace))
-		   (local-file  (concat (flymake-build-relative-path
-				  (file-name-directory
-				    (buffer-file-name
-				      (current-buffer)))
-							      (file-name-directory temp-file))
-								(file-name-nondirectory temp-file))))
-	(list "perl" (list "-wc " local-file))
-	)
-)
+(defun flymake-perl-init (buffer)
+  (let* ((temp-file (flymake-init-create-temp-buffer-copy
+                     buffer 'flymake-create-temp-inplace))
+         (local-file  (concat (flymake-build-relative-path
+                               (file-name-directory
+                                (buffer-file-name
+                                 (current-buffer)))
+                               (file-name-directory temp-file))
+                              (file-name-nondirectory temp-file))))
+    (list "perl" (list "-wc " local-file))))
 @end lisp
 
 @code{flymake-perl-init} creates a temporary copy of the buffer
@@ -444,11 +441,11 @@
 
 @lisp
 (setq flymake-allowed-file-name-masks
-	  (cons '(".+\\.pl$"
-	  flymake-perl-init
-	  flymake-simple-cleanup
-	  flymake-get-real-file-name)
-	flymake-allowed-file-name-masks))
+      (cons '(".+\\.pl$"
+              flymake-perl-init
+              flymake-simple-cleanup
+              flymake-get-real-file-name)
+            flymake-allowed-file-name-masks))
 @end lisp
 
 Note that we use standard @code{cleanup-function} and
@@ -458,8 +455,9 @@
 
 @lisp
 (setq flymake-err-line-patterns
-	  (cons '("\\(.*\\) at \\([^ \n]+\\) line \\([0-9]+\\)[,.\n]" 2 3 nil 1)
-			flymake-err-line-patterns))
+      (cons '("\\(.*\\) at \\([^ \n]+\\) line \\([0-9]+\\)[,.\n]"
+              2 3 nil 1)
+            flymake-err-line-patterns))
 @end lisp
 
 @node Example -- Configuring a tool called via make
@@ -475,11 +473,11 @@
 
 @lisp
 (setq flymake-allowed-file-name-masks
-	  (cons '(".+\\.c$"
-	    flymake-simple-make-init
-	    flymake-simple-cleanup
-	    flymake-get-real-file-name)
-      flymake-allowed-file-name-masks))
+      (cons '(".+\\.c$"
+              flymake-simple-make-init
+              flymake-simple-cleanup
+              flymake-get-real-file-name)
+            flymake-allowed-file-name-masks))
 @end lisp
 
 @code{flymake-simple-make-init} builds the following @code{make}
@@ -487,12 +485,11 @@
 
 @lisp
 (list "make"
-    (list "-s"
-		  "-C"
-		   base-dir
-		  (concat "CHK_SOURCES=" source)
-		  "SYNTAX_CHECK_MODE=1"
-		  "check-syntax"))
+      (list "-s" "-C"
+            base-dir
+            (concat "CHK_SOURCES=" source)
+            "SYNTAX_CHECK_MODE=1"
+            "check-syntax"))
 @end lisp
 
 @code{base-dir} is a directory containing @code{Makefile}, see @ref{Locating the buildfile}.
@@ -748,12 +745,11 @@
 @code{flymake-compile}:
 
 @lisp
-(defun flymake-compile()
-    "kill all flymake syntax checks, start compilation"
-    (interactive)
-    (flymake-stop-all-syntax-checks)
-    (call-interactively 'compile)
-)
+(defun flymake-compile ()
+  "Kill all flymake syntax checks then start compilation."
+  (interactive)
+  (flymake-stop-all-syntax-checks)
+  (call-interactively 'compile))
 @end lisp
 
 It just kills all the active syntax check processes before calling
--- a/man/glossary.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/glossary.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -65,7 +65,7 @@
 editing session.  Emacs makes backup files automatically to help you
 track down or cancel changes you later regret making.  @xref{Backup}.
 
-@item Balance Parentheses
+@item Balancing Parentheses
 Emacs can balance parentheses (or other matching delimiters) either
 manually or automatically.  You do manual balancing with the commands
 to move over parenthetical groupings (@pxref{Moving by Parens}).
@@ -139,6 +139,9 @@
 @item By Default
 See `default.'
 
+@item Byte Compilation
+See `compilation.'
+
 @item @kbd{C-}
 @kbd{C-} in the name of a character is an abbreviation for Control.
 @xref{User Input,C-}.
@@ -246,15 +249,16 @@
 
 @item Copyleft
 A copyleft is a notice giving the public legal permission to
-redistribute a program or other work of art.  Copyright is normally used
-to keep users divided and helpless; with copyleft we turn that around
-to empower users and encourage them to cooperate.
+redistribute and modify a program or other work of art, but requiring
+modified versions to carry similar permission.  Copyright is normally
+used to keep users divided and helpless; with copyleft we turn that
+around to empower users and encourage them to cooperate.
 
 The particular form of copyleft used by the GNU project is called the
 GNU General Public License.  @xref{Copying}.
 
 @item @key{CTRL}
-The @key{CTLR} or ``control'' key is what you hold down
+The @key{CTRL} or ``control'' key is what you hold down
 in order to enter a control character (q.v.).
 
 @item Current Buffer
@@ -263,7 +267,7 @@
 @xref{Buffers}.
 
 @item Current Line
-The current line is a line point is on (@pxref{Point}).
+The current line is the line that point is on (@pxref{Point}).
 
 @item Current Paragraph
 The current paragraph is the paragraph that point is in.  If point is
@@ -284,8 +288,9 @@
 
 @item Customization
 Customization is making minor changes in the way Emacs works.  It is
-often done by setting variables (@pxref{Variables}) or by rebinding
-key sequences (@pxref{Keymaps}).
+often done by setting variables (@pxref{Variables}) or faces
+(@pxref{Face Customization}), or by rebinding key sequences
+(@pxref{Keymaps}).
 
 @cindex cut and paste
 @item Cut and Paste
@@ -372,9 +377,10 @@
 @samp{*Messages*} so you can review them later.  @xref{Echo Area}.
 
 @item Echoing
-Echoing is acknowledging the receipt of commands by displaying them (in
-the echo area).  Emacs never echoes single-character key sequences;
-longer key sequences echo only if you pause while typing them.
+Echoing is acknowledging the receipt of input events by displaying
+them (in the echo area).  Emacs never echoes single-character key
+sequences; longer key sequences echo only if you pause while typing
+them.
 
 @item Electric
 We say that a character is electric if it is normally self-inserting
@@ -493,16 +499,16 @@
 @item Frame
 A frame is a rectangular cluster of Emacs windows.  Emacs starts out
 with one frame, but you can create more.  You can subdivide each frame
-into Emacs windows (q.v.@:).  When you are using a windowing system, all
-the frames can be visible at the same time.  @xref{Frames}.  Some
-other editors use the term ``window'' for this, but in Emacs a window
-means something else.
+into Emacs windows (q.v.@:).  When you are using a window system
+(q.v.@:), all the frames can be visible at the same time.
+@xref{Frames}.  Some other editors use the term ``window'' for this,
+but in Emacs a window means something else.
 
 @item Fringe
-On windowed displays, there's a narrow portion of the frame (q.v.@:)
-between the text area and the window's border.  Emacs displays the
-fringe using a special face (q.v.@:) called @code{fringe}.
-@xref{Faces,fringe}.
+On a graphical terminal (q.v.@:), there's a narrow portion of the
+frame (q.v.@:) between the text area and the window's border.  Emacs
+displays the fringe using a special face (q.v.@:) called
+@code{fringe}.  @xref{Faces,fringe}.
 
 @item FTP
 FTP is an acronym for File Transfer Protocol.  Emacs uses an FTP client
@@ -550,6 +556,10 @@
 @key{RET} or @key{ESC}.  In Emacs, typing a graphic character inserts
 that character (in ordinary editing modes).  @xref{Inserting Text}.
 
+@item Graphical Terminal
+A graphical terminal is one that can display images and multiple fonts.
+Usually it also has a window system (q.v.@:).
+
 @item Highlighting
 Highlighting text means displaying it with a different foreground and/or
 background color to make it stand out from the rest of the text in the
@@ -642,6 +652,9 @@
 them extend exactly to a specified width.
 @xref{Format Justification}.
 
+@item Keybinding
+See `binding.'
+
 @item Keyboard Macro
 Keyboard macros are a way of defining new Emacs commands from
 sequences of existing ones, with no need to write a Lisp program.
@@ -761,6 +774,10 @@
 which configures Emacs for editing a certain sort of text.  Ideally,
 each programming language has its own major mode.  @xref{Major Modes}.
 
+@item Margin
+The space between the usable part of a window (including the
+fringe) and the window edge.
+
 @item Mark
 The mark points to a position in the text.  It specifies one end of the
 region (q.v.@:), point being the other end.  Many commands operate on
@@ -981,7 +998,7 @@
 The region is the text between point (q.v.@:) and the mark (q.v.@:).
 Many commands operate on the text of the region.  @xref{Mark,Region}.
 
-@item Registers
+@item Register
 Registers are named slots in which text or buffer positions or
 rectangles can be saved for later use.  @xref{Registers}.  A related
 Emacs feature is `bookmarks' (q.v.@:).
@@ -1054,7 +1071,15 @@
 applications.  Emacs has special mouse commands for transferring text
 using the secondary selection.  @xref{Secondary Selection}.
 
-@item Selecting
+@item Selected Frame
+The selected frame is the one your input currently operates on.
+@xref{Frames}.
+
+@item Selected Window
+The selected frame is the one your input currently operates on.
+@xref{Basic Window}.
+
+@item Selecting a Buffer
 Selecting a buffer means making it the current (q.v.@:) buffer.
 @xref{Select Buffer}.
 
@@ -1100,7 +1125,7 @@
 space bar.
 
 @item Speedbar
-Speedbar is a special tall frame that provides fast access to Emacs
+The speedbar is a special tall frame that provides fast access to Emacs
 buffers, functions within those buffers, Info nodes, and other
 interesting parts of text within Emacs.  @xref{Speedbar}.
 
@@ -1262,6 +1287,10 @@
 other editors use the term ``window'' for what we call a `frame'
 (q.v.@:) in Emacs.
 
+@item Window System
+A window system is a graphical terminal (q.v.@:) that can display multiple
+windows for different programs at the same time.
+
 @item Word Abbrev
 See `abbrev.'
 
--- a/man/gnus.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/gnus.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -26688,7 +26688,7 @@
 
 @item gnus-read-active-file
 Set this to @code{nil}, which will inhibit Gnus from requesting the
-entire active file from the server.  This file is often v.  large.  You
+entire active file from the server.  This file is often very large.  You
 also have to set @code{gnus-check-new-newsgroups} and
 @code{gnus-check-bogus-newsgroups} to @code{nil} to make sure that Gnus
 doesn't suddenly decide to fetch the active file anyway.
--- a/man/help.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/help.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -249,15 +249,15 @@
   @kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but describes
 Lisp variables instead of Lisp functions.  Its default is the Lisp symbol
 around or before point, but only if that is the name of a known Lisp
-variable.  @xref{Variables}.@refill
+variable.  @xref{Variables}.
 
-  Help buffers describing variables or functions defined in Lisp
-normally have hyperlinks to the Lisp definition, if you have the Lisp
-source files installed.  If you know Lisp, this provides the ultimate
-documentation.  If you don't know Lisp, you should learn it.  If you
-are just @emph{using} Emacs, treating Emacs as an object (file), then
-you don't really love it.  For true intimacy with your editor, you
-need to read the source code.
+  Help buffers describing Emacs variables and functions normally have
+hyperlinks to the definition, if you have the source files installed.
+(@xref{Hyperlinking}.)  If you know Lisp (or C), this provides the
+ultimate documentation.  If you don't know Lisp, you should learn it.
+If you are just @emph{using} Emacs, treating Emacs as an object
+(file), then you don't really love it.  For true intimacy with your
+editor, you need to read the source code.
 
 @node Apropos
 @section Apropos
--- a/man/mh-e.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/mh-e.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -99,7 +99,7 @@
 @cindex history
 
 The mh-e package is distributed with GNU Emacs, @footnote{Note that
-mh-e is supported with MH 6 and @w{Emacs 18} through @w{Emacs 21}.
+mh-e is supported with MH 6 and @w{Emacs 18} and up.
 Reportedly, large parts of it work with @w{MH 5} and also with
 Lucid/XEmacs and Epoch, but there are no guarantees. It is also
 distributed with Lucid/XEmacs, as well as with MH itself.} so you
--- a/man/mini.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/mini.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -400,8 +400,8 @@
 partial-completion-mode}, or customize the variable
 @code{partial-completion-mode}.  This binds the partial completion
 commands to @key{TAB}, @key{SPC}, @key{RET}, and @kbd{?}.  The usual
-completion commands are available on @kbd{M-@key{TAB}},
-@kbd{M-@key{SPC}}, @kbd{M-@key{RET}} and @kbd{M-?}.
+completion commands are available on @kbd{M-@key{TAB}} (or
+@kbd{C-M-i}), @kbd{M-@key{SPC}}, @kbd{M-@key{RET}} and @kbd{M-?}.
 
 @vindex PC-include-file-path
 @vindex PC-disable-includes
--- a/man/misc.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/misc.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -389,12 +389,11 @@
 first and the output replaces it as the contents of the region.  It
 returns the command's exit status when it is called from a Lisp program.
 
-  One use for @kbd{M-|} is to run @code{uudecode}.  For instance, if
-the buffer contains uuencoded text, type @kbd{C-x h M-| uudecode
-@key{RET}} to feed the entire buffer contents to the @code{uudecode}
-program.  That program will ignore everything except the encoded text,
-and will store the decoded output into the file whose name is
-specified in the encoded text.
+  One use for @kbd{M-|} is to run @code{gpg} to see what keys are in
+the buffer.  For instance, if the buffer contains a GPG key, type
+@kbd{C-x h M-| gpg @key{RET}} to feed the entire buffer contents
+to the @code{gpg} program.  That program will ignore everything except
+the encoded keys, and will output a list of the keys it contains.
 
 @vindex shell-file-name
   Both @kbd{M-!} and @kbd{M-|} use @code{shell-file-name} to specify the
@@ -405,13 +404,18 @@
 @env{PATH} when Emacs is started.  Your @file{.emacs} file can override
 either or both of these default initializations.@refill
 
-  Both @kbd{M-!} and @kbd{M-|} wait for the shell command to complete.
-To stop waiting, type @kbd{C-g} to quit; that terminates the shell
+  Both @kbd{M-!} and @kbd{M-|} wait for the shell command to complete,
+unless you end the command with @samp{&} to make it asyncronous.  To
+stop waiting, type @kbd{C-g} to quit; that terminates the shell
 command with the signal @code{SIGINT}---the same signal that @kbd{C-c}
-normally generates in the shell.  Emacs waits until the command actually
-terminates.  If the shell command doesn't stop (because it ignores the
-@code{SIGINT} signal), type @kbd{C-g} again; this sends the command a
-@code{SIGKILL} signal which is impossible to ignore.
+normally generates in the shell.  Emacs waits until the command
+actually terminates.  If the shell command doesn't stop (because it
+ignores the @code{SIGINT} signal), type @kbd{C-g} again; this sends
+the command a @code{SIGKILL} signal which is impossible to ignore.
+
+  Asynchronous commands ending in @samp{&} feed their output into
+the buffer @samp{*Async Shell Command*}.  Output arrives in that
+buffer regardless of whether it is visible in a window.
 
   To specify a coding system for @kbd{M-!} or @kbd{M-|}, use the command
 @kbd{C-x @key{RET} c} immediately beforehand.  @xref{Specify Coding}.
@@ -704,12 +708,12 @@
 @subsection Shell Command History
 
   Shell buffers support three ways of repeating earlier commands.  You
-can use the same keys used in the minibuffer; these work much as they do
-in the minibuffer, inserting text from prior commands while point
-remains always at the end of the buffer.  You can move through the
-buffer to previous inputs in their original place, then resubmit them or
-copy them to the end.  Or you can use a @samp{!}-style history
-reference.
+can use keys like those used for the minibuffer history; these work
+much as they do in the minibuffer, inserting text from prior commands
+while point remains always at the end of the buffer.  You can move
+through the buffer to previous inputs in their original place, then
+resubmit them or copy them to the end.  Or you can use a
+@samp{!}-style history reference.
 
 @menu
 * Ring: Shell Ring.             Fetching commands from the history list.
@@ -724,11 +728,13 @@
 @findex comint-previous-input
 @kindex M-p @r{(Shell mode)}
 @item M-p
+@itemx C-@key{UP}
 Fetch the next earlier old shell command.
 
 @kindex M-n @r{(Shell mode)}
 @findex comint-next-input
 @item M-n
+@itemx C-@key{DOWN}
 Fetch the next later old shell command.
 
 @kindex M-r @r{(Shell mode)}
@@ -762,11 +768,13 @@
 history commands except that they operate on the text at the end of the
 shell buffer, where you would normally insert text to send to the shell.
 
-  @kbd{M-p} fetches an earlier shell command to the end of the shell buffer.
-Successive use of @kbd{M-p} fetches successively earlier shell commands,
-each replacing any text that was already present as potential shell input.
-@kbd{M-n} does likewise except that it finds successively more recent shell
-commands from the buffer.
+  @kbd{M-p} fetches an earlier shell command to the end of the shell
+buffer.  Successive use of @kbd{M-p} fetches successively earlier
+shell commands, each replacing any text that was already present as
+potential shell input.  @kbd{M-n} does likewise except that it finds
+successively more recent shell commands from the buffer.
+@kbd{C-@key{UP}} works like @kbd{M-p}, and @kbd{C-@key{DOWN}} like
+@kbd{M-n}.
 
   The history search commands @kbd{M-r} and @kbd{M-s} read a regular
 expression and search through the history for a matching command.  Aside
@@ -948,6 +956,10 @@
 show the current buffer.  The default value is @code{nil}, which means
 point does not jump to the end.
 
+@vindex comint-prompt-read-only
+  If you set @code{comint-prompt-read-only}, the prompts in the Comint
+buffer are read-only.
+
 @vindex comint-input-ignoredups
   The variable @code{comint-input-ignoredups} controls whether successive
 identical inputs are stored in the input history.  A non-@code{nil}
@@ -1297,10 +1309,10 @@
 running @code{emacsclient} in a script.  It specifies a command to run
 if @code{emacsclient} fails to contact Emacs.  For example, the
 following setting for the @var{EDITOR} environment variable will
-always give an editor, even if Emacs is not running:
+always give you an editor, even if no Emacs server is running:
 
 @example
-EDITOR="emacsclient --alternate-editor vi +%d %s"
+EDITOR="emacsclient --alternate-editor emacs +%d %s"
 @end example
 
 @noindent
@@ -1537,8 +1549,8 @@
 @cindex sorting
 
   Emacs provides several commands for sorting text in the buffer.  All
-operate on the contents of the region (the text between point and the
-mark).  They divide the text of the region into many @dfn{sort records},
+operate on the contents of the region.
+They divide the text of the region into many @dfn{sort records},
 identify a @dfn{sort key} for each record, and then reorder the records
 into the order determined by the sort keys.  The records are ordered so
 that their keys are in alphabetical order, or, for numeric sorting, in
@@ -1895,7 +1907,7 @@
 @findex desktop-save
 @vindex desktop-save-mode
   You can save the desktop manually with the command @kbd{M-x
-desktop-save}.  You can also enable automatical desktop saving when
+desktop-save}.  You can also enable automatic desktop saving when
 you exit Emacs: use the Customization buffer (@pxref{Easy
 Customization}) to set @code{desktop-save-mode} to @code{t} for future
 sessions, or add this line in your @file{~/.emacs} file:
@@ -1962,7 +1974,7 @@
 Mode lines display a pair of square brackets for each recursive editing
 level currently in progress.
 
-  Exiting the inner recursive edit (such as, with the debugger @kbd{c}
+  Exiting the inner recursive edit (such as with the debugger @kbd{c}
 command) resumes the command running in the next level up.  When that
 command finishes, you can then use @kbd{C-M-c} to exit another recursive
 editing level, and so on.  Exiting applies to the innermost level only.
@@ -2041,11 +2053,7 @@
 @cindex ``PC'' key bindings
 The command @kbd{M-x pc-bindings-mode} sets up certain key bindings
 for ``PC compatibility''---what people are often used to on PCs---as
-follows: @kbd{Delete} and its variants delete forward instead of
-backward, @kbd{C-Backspace} kills backward a word (as @kbd{C-Delete}
-normally would), @kbd{M-Backspace} does undo, @kbd{Home} and @kbd{End}
-move to beginning and end of line, @kbd{C-Home} and @kbd{C-End} move
-to beginning and end of buffer and @kbd{C-Escape} does
+follows: @kbd{M-Backspace} does undo, and @kbd{C-Escape} does
 @code{list-buffers}.
 
 @item PC Selection mode
@@ -2132,9 +2140,13 @@
 @cindex navigation
   Various modes documented elsewhere have hypertext features so that
 you can follow links, usually by clicking @kbd{Mouse-2} on the link or
-typing @key{RET} while point is on the link.  Info mode, Help mode and
-the Dired-like modes are examples.  The Tags facility links between
-uses and definitions in source files, see @ref{Tags}.  Imenu provides
+typing @key{RET} while point is on the link.  Clicking @kbd{Mouse-1}
+quickly on the link also follows it.  (Hold @kbd{Mouse-1} for longer
+if you want to set point instead.)
+
+  Info mode, Help mode and the Dired-like modes are examples of modes
+that have links in the buffer.  The Tags facility links between uses
+and definitions in source files, see @ref{Tags}.  Imenu provides
 navigation amongst items indexed in the current buffer, see
 @ref{Imenu}.  Info-lookup provides mode-specific lookup of definitions
 in Info indexes, see @ref{Documentation}.  Speedbar maintains a frame
@@ -2149,7 +2161,6 @@
 * Browse-URL::                  Following URLs.
 * Goto-address::                Activating URLs.
 * FFAP::                        Finding files etc. at point.
-* Find-func::                   Finding function and variable definitions.
 @end menu
 
 @node Browse-URL
@@ -2288,41 +2299,6 @@
 find the one you select (@code{ffap-menu}).
 @end table
 
-@node Find-func
-@subsection Finding Function and Variable Definitions
-@cindex definitions, finding in Lisp sources
-@cindex Lisp definitions, finding in sources
-
-@table @kbd
-@item M-x find-function @key{RET} @var{function} @key{RET}
-Find the definition of @var{function} in its source file.
-@item M-x find-variable @key{RET} @var{variable} @key{RET}
-Find the definition of @var{variable} in its source file.
-@item M-x find-function-on-key @key{RET} @var{key}
-Find the definition of the function that @var{key} invokes.
-@end table
-
-  These commands provide an easy way to find the definitions of Emacs
-Lisp functions and variables.  They are similar in purpose to the Tags
-facility (@pxref{Tags}), but don't require a tags table; on the other
-hand, they only work for function and variable definitions that are
-already loaded in the Emacs session.
-
-@findex find-function
-@findex find-function-on-key
-@findex find-variable
-  To find the definition of a function, use @kbd{M-x find-function}.
-@kbd{M-x find-variable} finds the definition of a specified variable.
-@kbd{M-x find-function-on-key} finds the definition of the function
-bound to a specified key.
-
-  To use these commands, you must have the Lisp source (@samp{.el})
-files available along with the compiled (@samp{.elc}) files, in
-directories in @code{load-path}.  You can use compressed source files
-if you enable Auto Compression mode.  These commands only handle
-definitions written in Lisp, not primitive functions or variables
-defined in the C code of Emacs.
-
 @node Dissociated Press, Amusements, Hyperlinking, Top
 @section Dissociated Press
 
--- a/man/pcl-cvs.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/pcl-cvs.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -77,7 +77,7 @@
 @end ifnottex
 
 @menu
-* About PCL-CVS::               Installation, credits, history, @dots{}
+* About PCL-CVS::               Credits, history, @dots{}
 
 * Getting started::             An introduction with a walk-through example.
 * Buffer contents::             An explanation of the buffer contents.
@@ -100,7 +100,6 @@
 About PCL-CVS
 
 * Contributors::                Contributors to PCL-CVS.
-* Installation::
 
 Commands
 
@@ -152,14 +151,11 @@
 Stefan Monnier picked up development again, adding some major new
 functionality and taking over the maintenance.
 
-As of Emacs 21, PCL-CVS is part of the standard Emacs distribution.
-
 @menu
 * Contributors::                Contributors to PCL-CVS.
-* Installation::
 @end menu
 
-@node     Contributors, Installation, About PCL-CVS, About PCL-CVS
+@node     Contributors,, About PCL-CVS, About PCL-CVS
 @section Contributors to PCL-CVS
 @cindex Contributors
 @cindex Authors
@@ -236,39 +232,6 @@
 there would be no new releases of PCL-CVS.
 
 
-@node   Installation,  , Contributors, About PCL-CVS
-@section Installation
-@cindex Installation
-
-As mentioned above, PCL-CVS comes bundled with Emacs version 21.1 and
-later.  If you're using Emacs 20, you can download an older version of
-PCL-CVS from @uref{ftp://flint.cs.yale.edu/pub/monnier/pcl-cvs}.  That
-version also works on XEmacs.
-
-If you are running XEmacs 21.0 or later, PCL-CVS is available in
-pre-compiled package form.  Please refer to the XEmacs manual for
-instructions regarding package selection and installation.  Currently,
-that PCL-CVS package also requires you to have installed the
-@file{xemacs-base}, @file{elib}, and @file{dired} packages.
-
-If you have @TeX{} installed at your site, you can make a typeset manual
-from @file{pcl-cvs.texi}.
-
-@enumerate
-@item
-If PCL-CVS came with the Emacs distribution, type @kbd{make pcl-cvs.dvi}
-in the @file{man} subdirectory of the Emacs source tree.
-@item
-Alternatively, run @TeX{} by typing @kbd{texi2dvi pcl-cvs.texi}.
-@item
-Convert the resulting device independent file @file{pcl-cvs.dvi} to a
-form which your printer can output and print it.  If you have a
-PostScript printer, there is a program, @code{dvi2ps}, which does.  There
-is also a program which comes together with @TeX{}, @code{dvips}, which
-you can use.
-@end enumerate
-
-
 @node Getting started, Buffer contents, About PCL-CVS, Top
 @chapter Getting started
 @cindex Introduction
--- a/man/programs.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/programs.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -1326,8 +1326,8 @@
 partial symbol before point against the set of meaningful symbol
 names.  This command inserts at point any additional characters that
 it can determine from the partial name.  (If your window manager
-defines @kbd{M-@key{TAB}} to switch windows, you can type this Emacs
-command as @kbd{@key{ESC} @key{TAB}}.)
+defines @kbd{M-@key{TAB}} to switch windows, you can type
+@kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.)
 
   If the partial name in the buffer has multiple possible completions
 that differ in the very next character, so that it is impossible to
--- a/man/rmail.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/rmail.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -297,13 +297,14 @@
 @section Rmail Files and Inboxes
 @cindex inbox file
 
-  The operating system places incoming mail for you in a file that we
-call your @dfn{inbox}.  When you start up Rmail, it runs a C program
-called @code{movemail} to copy the new messages from your inbox into
-your primary Rmail file, which also contains other messages saved from
-previous Rmail sessions.  It is in this file that you actually read the
-mail with Rmail.  This operation is called @dfn{getting new mail}.  You
-can get new mail at any time in Rmail by typing @kbd{g}.
+  When you receive mail locally, the operating system places incoming
+mail for you in a file that we call your @dfn{inbox}.  When you start
+up Rmail, it runs a C program called @code{movemail} to copy the new
+messages from your local inbox into your primary Rmail file, which
+also contains other messages saved from previous Rmail sessions.  It
+is in this file that you actually read the mail with Rmail.  This
+operation is called @dfn{getting new mail}.  You can get new mail at
+any time in Rmail by typing @kbd{g}.
 
 @vindex rmail-primary-inbox-list
 @cindex @env{MAIL} environment variable
@@ -344,6 +345,35 @@
 as its internal format.  However, the Rmail file will still be separate
 from the inbox file, even on systems where their format is the same.
 
+@vindex rmail-preserve-inbox
+  When getting new mail, Rmail first copies the new mail from the inbox
+file to the Rmail file; then it saves the Rmail file; then it truncates
+the inbox file.  This way, a system crash may cause duplication of mail
+between the inbox and the Rmail file, but cannot lose mail.  If
+@code{rmail-preserve-inbox} is non-@code{nil}, then Rmail will copy new
+mail from the inbox file to the Rmail file without truncating the inbox
+file.  You may wish to set this, for example, on a portable computer you
+use to check your mail via POP while traveling, so that your mail will
+remain on the server and you can save it later on your workstation.
+
+  In some cases, Rmail copies the new mail from the inbox file
+indirectly.  First it runs the @code{movemail} program to move the mail
+from the inbox to an intermediate file called
+@file{~/.newmail-@var{inboxname}}.  Then Rmail merges the new mail from
+that file, saves the Rmail file, and only then deletes the intermediate
+file.  If there is a crash at the wrong time, this file continues to
+exist, and Rmail will use it again the next time it gets new mail from
+that inbox.
+
+  If Rmail is unable to convert the data in
+@file{~/.newmail-@var{inboxname}} into Babyl format, it renames the file
+to @file{~/RMAILOSE.@var{n}} (@var{n} is an integer chosen to make the
+name unique) so that Rmail will not have trouble with the data again.
+You should look at the file, find whatever message confuses Rmail
+(probably one that includes the control-underscore character, octal code
+037), and delete it.  Then you can use @kbd{1 g} to get new mail from
+the corrected file.
+
 @node Rmail Files
 @section Multiple Rmail Files
 
@@ -1003,8 +1033,9 @@
   You can highlight and activate URLs in incoming messages by adding
 the function @code{goto-address} to the hook
 @code{rmail-show-message-hook}.  Then you can browse these URLs by
-clicking on them with @kbd{Mouse-2} or by moving to one and typing
-@kbd{C-c @key{RET}}.  @xref{Goto-address, Activating URLs, Activating URLs}.
+clicking on them with @kbd{Mouse-2} (or @kbd{Mouse-1} quickly) or by
+moving to one and typing @kbd{C-c @key{RET}}.  @xref{Goto-address,
+Activating URLs, Activating URLs}.
 
 @node Rmail Coding
 @section Rmail and Coding Systems
@@ -1158,30 +1189,27 @@
 @section @code{movemail} program
 @cindex @code{movemail} program
 
-  When invoked for the first time, Rmail attempts to locate
-@code{movemail} program and determine its version.  There are
-two versions of @code{movemail} program: the native one, shipped with
-GNU Emacs (we will refer to it as @samp{emacs version}) and the one
-coming from GNU mailutils (@xref{movemail,,,mailutils,GNU mailutils},
-we will refer to it as @samp{mailutils version}).  Both versions are
-compatible with each other in the sense that they support the same
-command line syntax and the same basic subset of options.  However,
-the @samp{mailutils} version offers a much richer set of
-features.
+  When invoked for the first time, Rmail attempts to locate the
+@code{movemail} program and determine its version.  There are two
+versions of @code{movemail} program: the native one, shipped with GNU
+Emacs (the ``emacs version'') and the one included in GNU mailutils
+(the ``mailutils version'', @pxref{movemail,,,mailutils,GNU
+mailutils}).  They support the same command line syntax and the same
+basic subset of options.  However, the @samp{mailutils} version offers
+additional features.
 
-The @samp{Emacs version} of @code{movemail} is able to retrieve mail from usual
-UNIX mailbox formats and from remote mailboxes using the POP3 protocol.
+  The Emacs version of @code{movemail} is able to retrieve mail from
+usual UNIX mailbox formats and from remote mailboxes using the POP3
+protocol.
 
-The @samp{Mailutils version} is able to handle a wide set of mailbox
+  The Mailutils version is able to handle a wide set of mailbox
 formats, such as plain UNIX mailboxes, @code{maildir} and @code{MH}
-mailboxes, etc.  It is able to retrieve remote mail using POP3 or IMAP4
-protocol.  In the latter case, @code{mailutils movemail} can be
-instructed to retrieve mail using a TLS encrypted channel.
-
-The @samp{Mailutils movemail} accepts mailbox argument in the @acronym{URL}
-form.  The detailed description of mailbox @acronym{URL}s can be found
-in @ref{URL,,,mailutils,Mailbox URL Formats}.  In short, a
-@acronym{URL} is:
+mailboxes, etc.  It is able to retrieve remote mail using POP3 or
+IMAP4 protocol, and can retrieve mail from them using a TLS encrypted
+channel.  It also accepts mailbox argument in the @acronym{URL} form.
+The detailed description of mailbox @acronym{URL}s can be found in
+@ref{URL,,,mailutils,Mailbox URL Formats}.  In short, a @acronym{URL}
+is:
 
 @smallexample
 @var{proto}://[@var{user}[:@var{password}]@@]@var{host-or-file-name}
@@ -1244,55 +1272,26 @@
 e.g., @code{imap://smith:guessme@@remote.server.net}.
 @end table
 
-Alternatively, the mailbox may be specified as a file name of the
-mailbox to use.  This is equivalent to specifying the @samp{file} protocol:
+  Alternatively, you can specify the file name of the mailbox to use.
+This is equivalent to specifying the @samp{file} protocol:
 
 @smallexample
-/var/spool/mail/user @equiv{} file://var/spool/mail/user
+/var/spool/mail/@var{user} @equiv{} file://var/spool/mail/@var{user}
 @end smallexample
 
 @vindex rmail-movemail-program
 @vindex rmail-movemail-search-path
- To determine which version of @code{movemail} is being used, Rmail
-examines the value of @code{rmail-movemail-program} variable.  If it
-is set, its value is used as a full path to the @code{movemail} binary.
-Otherwise, Rmail searches for @code{movemail} in the list of directories
-constructed by appending the values of @code{rmail-movemail-search-path} and
-@code{exec-path} to @code{exec-directory}.  
+  The variable @code{rmail-movemail-program} controls which version of
+@code{movemail} to use.  If that is a string, it specifies the
+absolute file name of the @code{movemail} executable.  If it is
+@code{nil}, Rmail searches for @code{movemail} in the directories
+listed in @code{rmail-movemail-search-path} and @code{exec-path}, then
+in @code{exec-directory}.
   
 @node Remote Mailboxes
 @section Retrieving Mail from Remote Mailboxes
 @pindex movemail
 
-@vindex rmail-preserve-inbox
-  When getting new mail, Rmail first copies the new mail from the inbox
-file to the Rmail file; then it saves the Rmail file; then it truncates
-the inbox file.  This way, a system crash may cause duplication of mail
-between the inbox and the Rmail file, but cannot lose mail.  If
-@code{rmail-preserve-inbox} is non-@code{nil}, then Rmail will copy new
-mail from the inbox file to the Rmail file without truncating the inbox
-file.  You may wish to set this, for example, on a portable computer you
-use to check your mail via POP while traveling, so that your mail will
-remain on the server and you can save it later on your workstation.
-
-  In some cases, Rmail copies the new mail from the inbox file
-indirectly.  First it runs the @code{movemail} program to move the mail
-from the inbox to an intermediate file called
-@file{~/.newmail-@var{inboxname}}.  Then Rmail merges the new mail from
-that file, saves the Rmail file, and only then deletes the intermediate
-file.  If there is a crash at the wrong time, this file continues to
-exist, and Rmail will use it again the next time it gets new mail from
-that inbox.
-
-  If Rmail is unable to convert the data in
-@file{~/.newmail-@var{inboxname}} into Babyl format, it renames the file
-to @file{~/RMAILOSE.@var{n}} (@var{n} is an integer chosen to make the
-name unique) so that Rmail will not have trouble with the data again.
-You should look at the file, find whatever message confuses Rmail
-(probably one that includes the control-underscore character, octal code
-037), and delete it.  Then you can use @kbd{1 g} to get new mail from
-the corrected file.
-
   Some sites use a method called POP for accessing users' inbox data
 instead of storing the data in inbox files.  The @code{Emacs
 movemail} can work with POP if you compile it with the macro
--- a/man/sending.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/sending.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -45,7 +45,7 @@
 back later (or never).  If you use the @kbd{C-x m} command again when you
 have been composing another message but have not sent it, you are asked to
 confirm before the old message is erased.  If you answer @kbd{n}, the
-@samp{*mail*} buffer is left selected with its old contents, so you can
+@samp{*mail*} buffer remains selected with its old contents, so you can
 finish the old message and send it.  @kbd{C-u C-x m} is another way to do
 this.  Sending the message marks the @samp{*mail*} buffer ``unmodified,''
 which avoids the need for confirmation when @kbd{C-x m} is next used.
@@ -289,7 +289,21 @@
 alias maingnu gnu@@gnu.org local-gnu
 @end example
 
-  Emacs also recognizes include commands in @samp{.mailrc} files.
+@noindent
+Addresses specified in this way should use doublequotes around an
+entire address when the address contains spaces.  But you need not
+include doublequotes around parts of the address, such as the person's
+full name.  Emacs puts them in if they are needed.  For example,
+
+@example
+alias chief-torturer "George W. Bush <bush@@whitehouse.gov>"
+@end example
+
+@noindent
+is correct.  Emacs will insert the address as @samp{"George W. Bush"
+<bush@@whitehouse.gov>}.
+
+  Emacs also recognizes ``include'' commands in @samp{.mailrc} files.
 They look like this:
 
 @example
@@ -363,12 +377,10 @@
 @smallexample
 (add-hook 'mail-mode-hook
           (lambda ()
-            (substitute-key-definition
-              'next-line 'mail-abbrev-next-line
-              mail-mode-map global-map)
-            (substitute-key-definition
-              'end-of-buffer 'mail-abbrev-end-of-buffer
-              mail-mode-map global-map)))
+            (define-key
+              mail-mode-map [remap next-line] 'mail-abbrev-next-line)
+            (define-key
+              mail-mode-map [remap end-of-buffer] 'mail-abbrev-end-of-buffer)))
 @end smallexample
 
 @node Mail Mode
@@ -503,8 +515,8 @@
 determine the full name.  The variable @code{mail-complete-style}
 controls whether to insert the full name, and what style to use, as in
 @code{mail-from-style} (@pxref{Mail Headers}).  (If your window
-manager defines @kbd{M-@key{TAB}} to switch windows, you can type this
-Emacs command as @kbd{@key{ESC} @key{TAB}}.)
+manager defines @kbd{M-@key{TAB}} to switch windows, you can type
+@kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.)
 
   For completion purposes, the valid mailing addresses are taken to be
 the local users' names plus your personal mail aliases.  You can
@@ -626,7 +638,8 @@
 often more convenient to use a special command, @kbd{C-c C-i}
 (@code{mail-attach-file}).  This command inserts the file contents at
 the end of the buffer, after your signature if any, with a delimiter
-line that includes the file name.
+line that includes the file name.  Note that this is not a MIME
+attachment.
 
 @vindex mail-mode-hook
 @vindex mail-setup-hook
--- a/man/text.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/text.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -857,7 +857,7 @@
 of the partial word in the buffer before point, using the spelling
 dictionary as the space of possible words.  @xref{Spelling}.  If your
 window manager defines @kbd{M-@key{TAB}} to switch windows, you can
-type this Emacs command as @kbd{@key{ESC} @key{TAB}}.
+type @kbd{@key{ESC} @key{TAB}} or @kbd{C-M-i}.
 
 @vindex text-mode-hook
   Entering Text mode runs the hook @code{text-mode-hook}.  Other major
--- a/man/url.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/url.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -109,7 +109,7 @@
 the possible exception of @code{telnet}, it is rare for ports to be
 specified, and it is possible using a non-standard port may have
 undesired consequences if a different service is listening on that
-port (e.g.@: an HTTP URL specifying the SMTP port can cause mail to be
+port (e.g., an HTTP URL specifying the SMTP port can cause mail to be
 sent).@c , but @xref{Other Variables, url-bad-port-list}.
 The meaning of
 the @var{path} component depends on the service.
@@ -142,7 +142,7 @@
 @noindent where
 @table @var
 @item type
-is the type of the URL scheme, e.g.@: @code{http}
+is the type of the URL scheme, e.g., @code{http}
 @item user
 is the username associated with it, or @code{nil};
 @item password
@@ -182,7 +182,7 @@
 @findex url-set-attributes
 @findex url-set-full
 These attributes have accessors named @code{url-@var{part}}, where
-@var{part} is the name of one of the elements above, e.g.@:
+@var{part} is the name of one of the elements above, e.g.,
 @code{url-host}.  Similarly, there are setters of the form
 @code{url-set-@var{part}}.
 
@@ -317,7 +317,12 @@
 @subsection Language and Encoding Preferences
 
 HTTP allows clients to express preferences for the language and
-encoding of documents which servers may honour.
+encoding of documents which servers may honour.  For each of these
+variables, the value is a string; it can specify a single choice, or
+it can be a comma-separated list in descending order of preference.
+Each element can be followed by @samp{;q=@var{priority}} to specify
+its preference level; e.g., for @code{url-mime-language-string},
+@w{@code{"de, en-gb;q=0.8, en;q=0.7"}}.
 
 @defopt url-mime-charset-string
 @cindex character sets
@@ -325,23 +330,22 @@
 This variable specifies a preference for character sets when documents
 can be served in more than one encoding.
 
-HTTP allows specifying a list of MIME charsets which indicate your
-preferred character set encodings, e.g.@: Latin-9 or Big5, and these
-can be weighted.  In Emacs 21 this list is generated automatically
-from the list of defined coding systems which have associated MIME
-types.  These are sorted by coding priority.  @xref{Recognize Coding,
-, Recognizing Coding Systems, emacs, The GNU Emacs Manual}.
+HTTP allows specifying a series of MIME charsets which indicate your
+preferred character set encodings, e.g., Latin-9 or Big5, and these
+can be weighted.  The default series is generated automatically from
+the associated MIME types of all defined coding systems, sorted by the
+coding system priority specified in Emacs.  @xref{Recognize Coding, ,
+Recognizing Coding Systems, emacs, The GNU Emacs Manual}.
 @end defopt
 
 @defopt url-mime-language-string
 @cindex language preferences
 A string specifying the preferred language when servers can serve
-files in several languages.  Use RFC 1766 abbreviations, e.g.@:
-@samp{en} for English, @samp{de} for German.  It can be a
-comma-separated list in descending order of preference.  The ordering
-can be made explicit using `q' factors defined by HTTP, e.g.@:
-@w{@samp{de, en-gb;q=0.8, en;q=0.7}}.  It can be @samp{*} to get the
-first available language (as opposed to the default).
+files in several languages.  Use RFC 1766 abbreviations, e.g.,
+@samp{en} for English, @samp{de} for German.
+
+The string can be @code{"*"} to get the first available language (as
+opposed to the default).
 @end defopt
 
 @node HTTP URL Options
--- a/man/woman.texi	Tue Mar 08 08:37:20 2005 +0000
+++ b/man/woman.texi	Wed Mar 09 00:09:34 2005 +0000
@@ -117,9 +117,10 @@
 Microsoft Windows, but has also been tested on MS-DOS, and various
 versions of UNIX and GNU/Linux.
 
-WoMan is distributed with GNU Emacs 21, and the current source code and
-documentation files are available from
-@uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, my web server}.
+WoMan is distributed with GNU Emacs.  In addition, the current source
+code and documentation files are available from
+@uref{http://centaur.maths.qmw.ac.uk/Emacs/WoMan/, the WoMan web
+server}.
 
 WoMan implements a subset of the formatting performed by the Emacs
 @code{man} (or @code{manual-entry}) command to format a Unix-style
--- a/src/ChangeLog	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/ChangeLog	Wed Mar 09 00:09:34 2005 +0000
@@ -1,3 +1,132 @@
+2005-03-08  Kenichi Handa  <handa@m17n.org>
+
+	* frame.c (x_set_font): Call set_default_ascii_font if an
+	available font is found.
+
+	* fontset.c (set_default_ascii_font): New function.
+	(syms_of_fontset): Don't set FONTSET_ASCII (Vdefault_fontset)
+	here.
+
+	* fontset.h (set_default_ascii_font): Extern it.
+
+2005-03-07  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (CLEAR_IMAGE_CACHE_COUNT): New const.
+	(clear_image_cache_count): New var.
+	(redisplay_internal): Don't clear face and image caches in the
+	middle of redisplay; do it afterwards.
+
+	* blockinput.h (TOTALLY_UNBLOCK_INPUT): Avoid dangling else.
+
+	* xdisp.c (notice_overwritten_cursor): Check that phys_cursor.vpos
+	is valid.  If not, clear phys_cursor_on_p and return.
+
+2005-03-07  Andreas Schwab  <schwab@suse.de>
+
+	* blockinput.h (UNBLOCK_INPUT_TO): Always call UNBLOCK_INPUT.
+
+2005-03-06  Richard M. Stallman  <rms@gnu.org>
+
+	* keyboard.c (Ftop_level): Let Fthrow deal with UNBLOCK_INPUT.
+
+	* eval.c (unwind_to_catch): Use UNBLOCK_INPUT_TO.
+	(Feval, Ffuncall): Use CHECK_CONS_LIST.
+
+	* lisp.h (CHECK_CONS_LIST): New macro (two definitions).
+
+	* blockinput.h (UNBLOCK_INPUT_TO): New macro.
+	(TOTALLY_UNBLOCK_INPUT): Handle a pending signal if any.
+
+2005-03-05  Juri Linkov  <juri@jurta.org>
+
+	* emacs.c (USAGE1): Replace Info node name "command arguments"
+	with "emacs invocation".
+	(USAGE3): Fix usage of `--color=MODE' which actually doesn't
+	allow arguments `--color' and `MODE' to be separated by space.
+	Add --no-blinking-cursor, -nbc.
+	(standard_args): Add -nbc, --no-blinking-cursor.
+
+2005-03-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* s/vms.h: Define NO_HYPHENS_IN_FILENAMES.
+	* s/vms4-4.h, s/vms5-5.h: Undefine NO_HYPHENS_IN_FILENAMES.
+	* fileio.c (Fexpand_file_name) [VMS]:
+	Use NO_HYPHENS_IN_FILENAMES, not VMS4_4.
+	* doc.c (munge_doc_file_name) [VMS]: Likewise.
+	(Fsnarf_documentation): Call munge_doc_file_name.
+
+2005-03-04  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* s/vms.h (FILE_SYSTEM_CASE): New macro.
+	* fileio.c (Fexpand_file_name) [VMS]: Don't upcase the name
+	"manually"; this is now handled generally via FILE_SYSTEM_CASE.
+
+2005-03-04  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* emacs.c (main): Change `#ifdef HAVE_CARBON' to `#if
+	defined (MAC_OSX) && defined (HAVE_CARBON)'.
+
+	* image.c [!MAC_OSX && TARGET_API_MAC_CARBON]: Include
+	QuickTime.h.
+
+	* mac.c [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
+	[!MAC_OSX] (select) [TARGET_API_MAC_CARBON]: Use ReceiveNextEvent.
+	(posix_pathname_to_fsspec, fsspec_to_posix_pathname): New
+	functions.
+	(mac_clear_font_name_table): Move extern to macterm.h.
+
+	* macfns.c (install_window_handler): Move extern to macterm.h.
+	(Fx_file_dialog): Check STRINGP (default_filename) to see it is
+	valid.  Don't check !NILP (dir) because it is already checked with
+	CHECK_STRING.
+	(Fx_file_dialog) [!MAC_OSX]: Use FSSpec instead of FSRef for
+	specifying the default location and obtaining the selected
+	filename.
+
+	* macgui.h [!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
+
+	* macmenu.c [TARGET_API_MAC_CARBON]: Don't include headers that
+	are included via Carbon.h.
+
+	* macterm.c [TARGET_API_MAC_CARBON && !MAC_OSX]: Define
+	USE_CARBON_EVENTS to 1.
+	(qd) [__MRC__ && TARGET_API_MAC_CARBON]: Don't declare.
+	(x_free_frame_resources): Call remove_window_handler for
+	non-tooltip windows.
+	[TARGET_API_MAC_CARBON]: Don't include headers that are included
+	via Carbon.h.
+	[TARGET_API_MAC_CARBON] (mac_do_track_dragUPP)
+	(mac_do_receive_dragUPP): New variables.
+	(mac_handle_service_event, init_service_handler): Put declarations
+	and definitions in #ifdef MAC_OSX.
+	(install_window_handler) [TARGET_API_MAC_CARBON]: Create UPPs for
+	drag-and-drop handler functions and register them.
+	(remove_window_handler): New function.
+	(do_ae_open_documents, mac_do_receive_drag) [!MAC_OSX]: Use
+	fsspec_to_posix_pathname.
+	(main): Change #if !TARGET_API_MAC_CARBON to #ifdef MAC_OS8.
+	(XTread_socket) [!MAC_OSX]: Don't pass keyboard events to TSM.
+	[MAC_OS8] (make_mac_terminal_frame) [TARGET_API_MAC_CARBON]: Set
+	default cursors.
+	(mac_initialize) [USE_CARBON_EVENTS && !MAC_OSX] : Don't call
+	init_service_handler or init_quit_char_handler.
+	(mac_initialize) [!MAC_OSX]: Don't call MakeMeTheFrontProcess.
+
+	* macterm.h (install_window_handler, remove_window_handler)
+	(posix_pathname_to_fsspec, fsspec_to_posix_pathname)
+	(mac_clear_font_name_table): New externs.
+
+2005-03-03  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* fileio.c (FILE_SYSTEM_CASE): Define macro if not already defined.
+	(Ffile_name_directory): Use FILE_SYSTEM_CASE unconditionally.
+	(Fexpand_file_name): Likewise.
+
+2005-03-03  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* emacs.c (Fkill_emacs): Use EXIT_SUCCESS;
+	no longer special-case VMS.  Add bogus return value.
+
 2005-03-02  Kim F. Storm  <storm@cua.dk>
 
 	* dispextern.h (XASSERTS): Define to 0 if not already defined.
@@ -17,6 +146,11 @@
 
 	* keyboard.c (Fposn_at_x_y): Check integerness of X and Y.
 
+2005-02-27  Richard M. Stallman  <rms@gnu.org>
+
+	* xdisp.c (fast_find_position): Rename END to BEG.
+	(syms_of_xdisp) <menu-bar-update-hook>: Doc fix.
+
 2005-02-27  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* gtkutil.c (xg_resize_outer_widget): Remove unneeded call to
@@ -777,7 +911,7 @@
 	[TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise.
 	Reject only when there are no filename items.  Set background color
 	before (un)highlighting the window below the dragged items.
-	(XTread_socket) [!USE_CARBON_EVENTS]: Don't call do_window_update.
+	(XTread_socket) [USE_CARBON_EVENTS]: Don't call do_window_update.
 
 2005-01-05  Romain Francoise  <romain@orebokech.com>
 
--- a/src/blockinput.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/blockinput.h	Wed Mar 09 00:09:34 2005 +0000
@@ -94,7 +94,28 @@
     }						\
   while (0)
 
-#define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0)
+/* Undo any number of BLOCK_INPUT calls,
+   and also reinvoke any pending signal.  */
+
+#define TOTALLY_UNBLOCK_INPUT			\
+  do if (interrupt_input_blocked != 0)		\
+    {						\
+      interrupt_input_blocked = 1;		\
+      UNBLOCK_INPUT;				\
+    }						\
+  while (0)
+
+/* Undo any number of BLOCK_INPUT calls down to level LEVEL,
+   and also (if the level is now 0) reinvoke any pending signal.  */
+
+#define UNBLOCK_INPUT_TO(LEVEL)				\
+  do							\
+    {							\
+      interrupt_input_blocked = (LEVEL) + 1;		\
+      UNBLOCK_INPUT;					\
+    }							\
+  while (0)
+
 #define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT
 
 /* In critical section ? */
--- a/src/doc.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/doc.c	Wed Mar 09 00:09:34 2005 +0000
@@ -58,26 +58,24 @@
 extern Lisp_Object Voverriding_local_map;
 
 /* For VMS versions with limited file name syntax,
-   convert the name to something VMS will allow. */
+   convert the name to something VMS will allow.  */
 static void
 munge_doc_file_name (name)
      char *name;
 {
 #ifdef VMS
-#ifndef VMS4_4
-  /* For VMS versions with limited file name syntax,
-     convert the name to something VMS will allow.  */
-  p = name;
+#ifndef NO_HYPHENS_IN_FILENAMES
+  extern char * sys_translate_unix (char *ufile);
+  strcpy (name, sys_translate_unix (name));
+#else /* NO_HYPHENS_IN_FILENAMES */
+  char *p = name;
   while (*p)
     {
       if (*p == '-')
 	*p = '_';
       p++;
     }
-#endif /* not VMS4_4 */
-#ifdef VMS4_4
-  strcpy (name, sys_translate_unix (name));
-#endif /* VMS4_4 */
+#endif /* NO_HYPHENS_IN_FILENAMES */
 #endif /* VMS */
 }
 
@@ -607,21 +605,7 @@
       strcpy (name, SDATA (Vdoc_directory));
     }
   strcat (name, SDATA (filename)); 	/*** Add this line ***/
-#ifdef VMS
-#ifndef VMS4_4
-  /* For VMS versions with limited file name syntax,
-     convert the name to something VMS will allow.  */
-  p = name;
-  while (*p)
-    {
-      if (*p == '-')
-	*p = '_';
-      p++;
-    }
-#else /* VMS4_4 */
-  strcpy (name, sys_translate_unix (name));
-#endif /* VMS4_4 */
-#endif /* VMS */
+  munge_doc_file_name (name);
 
   /* Vbuild_files is nil when temacs is run, and non-nil after that.  */
   if (NILP (Vbuild_files))
--- a/src/emacs.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/emacs.c	Wed Mar 09 00:09:34 2005 +0000
@@ -250,7 +250,7 @@
 display editor.  The recommended way to start Emacs for normal editing\n\
 is with no options at all.\n\
 \n\
-Run M-x info RET m emacs RET m command arguments RET inside Emacs to\n\
+Run M-x info RET m emacs RET m emacs invocation RET inside Emacs to\n\
 read the main documentation for these command-line arguments.\n\
 \n\
 Initialization options:\n\
@@ -296,7 +296,7 @@
 --background-color, -bg COLOR   window background color\n\
 --border-color, -bd COLOR       main border color\n\
 --border-width, -bw WIDTH       width of main border\n\
---color MODE                    color mode for character terminals;\n\
+--color, --color=MODE           color mode for character terminals;\n\
                                   MODE defaults to `auto', and can also\n\
                                   be `never', `auto', `always',\n\
                                   or a mode name like `ansi8'\n\
@@ -313,6 +313,7 @@
 --line-spacing, -lsp PIXELS     additional space to put between lines\n\
 --mouse-color, -ms COLOR        mouse cursor color in Emacs window\n\
 --name NAME                     title for initial Emacs frame\n\
+--no-blinking-cursor, -nbc      disable blinking cursor\n\
 --reverse-video, -r, -rv        switch foreground and background\n\
 --title, -T TITLE               title for initial Emacs frame\n\
 --vertical-scroll-bars, -vb     enable vertical scroll bars\n\
@@ -1486,7 +1487,7 @@
   init_ntproc ();	/* must precede init_editfns.  */
 #endif
 
-#ifdef HAVE_CARBON
+#if defined (MAC_OSX) && defined (HAVE_CARBON)
   if (initialized)
     init_mac_osx_environment ();
 #endif
@@ -1632,12 +1633,12 @@
       syms_of_fontset ();
 #endif /* HAVE_NTGUI */
 
-#ifdef HAVE_CARBON
+#if defined (MAC_OSX) && defined (HAVE_CARBON)
       syms_of_macterm ();
       syms_of_macfns ();
       syms_of_macmenu ();
       syms_of_fontset ();
-#endif /* HAVE_CARBON */
+#endif /* MAC_OSX && HAVE_CARBON */
 
 #ifdef SYMS_SYSTEM
       SYMS_SYSTEM;
@@ -1832,6 +1833,7 @@
   { "-ib", "--internal-border", 10, 1 },
   { "-ms", "--mouse-color", 10, 1 },
   { "-cr", "--cursor-color", 10, 1 },
+  { "-nbc", "--no-blinking-cursor", 10, 0 },
   { "-fn", "--font", 10, 1 },
   { "-font", 0, 10, 1 },
   { "-fs", "--fullscreen", 10, 0 },
@@ -2060,14 +2062,9 @@
   if (STRINGP (Vauto_save_list_file_name))
     unlink (SDATA (Vauto_save_list_file_name));
 
-  exit (INTEGERP (arg) ? XINT (arg)
-#ifdef VMS
-	: 1
-#else
-	: 0
-#endif
-	);
+  exit (INTEGERP (arg) ? XINT (arg) : EXIT_SUCCESS);
   /* NOTREACHED */
+  return 0;
 }
 
 
--- a/src/eval.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/eval.c	Wed Mar 09 00:09:34 2005 +0000
@@ -1176,7 +1176,7 @@
 
   /* Restore certain special C variables.  */
   set_poll_suppress_count (catch->poll_suppress_count);
-  interrupt_input_blocked = catch->interrupt_input_blocked;
+  UNBLOCK_INPUT_TO (catch->interrupt_input_blocked);
   handling_signal = 0;
   immediate_quit = 0;
 
@@ -2067,6 +2067,8 @@
       args_left = original_args;
       numargs = Flength (args_left);
 
+      CHECK_CONS_LIST ();
+
       if (XINT (numargs) < XSUBR (fun)->min_args ||
 	  (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < XINT (numargs)))
 	return Fsignal (Qwrong_number_of_arguments, Fcons (fun, Fcons (numargs, Qnil)));
@@ -2190,6 +2192,8 @@
 	return Fsignal (Qinvalid_function, Fcons (fun, Qnil));
     }
  done:
+  CHECK_CONS_LIST ();
+
   lisp_eval_depth--;
   if (backtrace.debug_on_exit)
     val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
@@ -2746,6 +2750,8 @@
 
   if (SUBRP (fun))
     {
+      CHECK_CONS_LIST ();
+
       if (numargs < XSUBR (fun)->min_args
 	  || (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < numargs))
 	{
@@ -2844,6 +2850,7 @@
 	return Fsignal (Qinvalid_function, Fcons (fun, Qnil));
     }
  done:
+  CHECK_CONS_LIST ();
   lisp_eval_depth--;
   if (backtrace.debug_on_exit)
     val = call_debugger (Fcons (Qexit, Fcons (val, Qnil)));
--- a/src/fileio.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/fileio.c	Wed Mar 09 00:09:34 2005 +0000
@@ -148,6 +148,10 @@
 #  define lstat stat
 #endif
 
+#ifndef FILE_SYSTEM_CASE
+#define FILE_SYSTEM_CASE(filename)  (filename)
+#endif
+
 /* Nonzero during writing of auto-save files */
 int auto_saving;
 
@@ -417,9 +421,7 @@
   if (!NILP (handler))
     return call2 (handler, Qfile_name_directory, filename);
 
-#ifdef FILE_SYSTEM_CASE
   filename = FILE_SYSTEM_CASE (filename);
-#endif
   beg = SDATA (filename);
 #ifdef DOS_NT
   beg = strcpy (alloca (strlen (beg) + 1), beg);
@@ -1124,14 +1126,7 @@
       UNGCPRO;
     }
 
-#ifdef VMS
-  /* Filenames on VMS are always upper case.  */
-  name = Fupcase (name);
-#endif
-#ifdef FILE_SYSTEM_CASE
   name = FILE_SYSTEM_CASE (name);
-#endif
-
   nm = SDATA (name);
 
 #ifdef DOS_NT
@@ -1231,23 +1226,23 @@
 	    slash = p;
 	  }
 	  if (p[0] == '-')
-#ifndef VMS4_4
-	    /* VMS pre V4.4,convert '-'s in filenames. */
+#ifdef NO_HYPHENS_IN_FILENAMES
 	    if (lbrack == rbrack)
 	      {
-		if (dots < 2)   /* this is to allow negative version numbers */
+                /* Avoid clobbering negative version numbers.  */
+                if (dots < 2)
 		  p[0] = '_';
 	      }
 	    else
-#endif /* VMS4_4 */
+#endif /* NO_HYPHENS_IN_FILENAMES */
 	      if (lbrack > rbrack &&
 		  ((p[-1] == '.' || p[-1] == '[' || p[-1] == '<') &&
 		   (p[1] == '.' || p[1] == ']' || p[1] == '>')))
 		lose = 1;
-#ifndef VMS4_4
+#ifdef NO_HYPHENS_IN_FILENAMES
 	      else
 		p[0] = '_';
-#endif /* VMS4_4 */
+#endif /* NO_HYPHENS_IN_FILENAMES */
 	  /* count open brackets, reset close bracket pointer */
 	  if (p[0] == '[' || p[0] == '<')
 	    lbrack++, brack = 0;
@@ -1627,12 +1622,12 @@
 	}
       else
 	{
-#ifndef VMS4_4
+#ifdef NO_HYPHENS_IN_FILENAMES
 	  if (*p == '-' &&
 	      o[-1] != '[' && o[-1] != '<' && o[-1] != '.' &&
 	      p[1] != ']' && p[1] != '>' && p[1] != '.')
 	    *p = '_';
-#endif /* VMS4_4 */
+#endif /* NO_HYPHENS_IN_FILENAMES */
 	  *o++ = *p++;
 	}
 #else /* not VMS */
@@ -6301,7 +6296,7 @@
     {
        Lisp_Object val1 = double_dollars (val);
        tem = Fsymbol_value (Qfile_name_history);
-       if (history_delete_duplicates) 
+       if (history_delete_duplicates)
 	 XSETCDR (tem, Fdelete (val1, XCDR(tem)));
        XSETCAR (tem, val1);
     }
--- a/src/fontset.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/fontset.c	Wed Mar 09 00:09:34 2005 +0000
@@ -774,6 +774,23 @@
 }
 
 
+/* Set the ASCII font of the default fontset to FONTNAME if that is
+   not yet set.  */
+void
+set_default_ascii_font (fontname)
+     Lisp_Object fontname;
+{
+  if (! CONSP (FONTSET_ASCII (Vdefault_fontset)))
+    {
+      int id = fs_query_fontset (fontname, 2);
+
+      if (id >= 0)
+	fontname = XCDR (FONTSET_ASCII (FONTSET_FROM_ID (id)));
+      FONTSET_ASCII (Vdefault_fontset)
+	= Fcons (make_number (0), fontname);
+    }
+}
+
 
 /********** INTERFACES TO xfaces.c, xfns.c, and dispextern.h **********/
 
@@ -2129,21 +2146,6 @@
   FONTSET_ID (Vdefault_fontset) = make_number (0);
   FONTSET_NAME (Vdefault_fontset)
     = build_string ("-*-*-*-*-*-*-*-*-*-*-*-*-fontset-default");
-  {
-    Lisp_Object default_ascii_font;
-
-#if defined (macintosh)
-    default_ascii_font
-      = build_string ("-apple-monaco-medium-r-*--*-120-*-*-*-*-mac-roman");
-#elif defined (WINDOWSNT)
-    default_ascii_font
-      = build_string ("-*-courier new-normal-r-*-*-*-100-*-*-*-*-iso8859-1");
-#else
-    default_ascii_font
-      = build_string ("-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1");
-#endif
-    FONTSET_ASCII (Vdefault_fontset) = default_ascii_font;
-  }
   AREF (Vfontset_table, 0) = Vdefault_fontset;
   next_fontset_id = 1;
 
--- a/src/fontset.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/fontset.h	Wed Mar 09 00:09:34 2005 +0000
@@ -204,6 +204,7 @@
 			      int, Lisp_Object));
 extern int make_fontset_for_ascii_face P_ ((FRAME_PTR, int, struct face *));
 extern int new_fontset_from_font_name P_ ((Lisp_Object));
+extern void set_default_ascii_font P_ ((Lisp_Object));
 extern struct font_info *fs_load_font P_ ((struct frame *, char *, int));
 extern int fs_query_fontset P_ ((Lisp_Object, int));
 EXFUN (Fquery_fontset, 2);
--- a/src/frame.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/frame.c	Wed Mar 09 00:09:34 2005 +0000
@@ -3084,6 +3084,7 @@
     error ("The default fontset can't be used for a frame font");
   else if (STRINGP (result))
     {
+      set_default_ascii_font (result);
       if (STRINGP (fontset_name))
 	{
 	  /* Fontset names are built from ASCII font names, so the
--- a/src/image.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/image.c	Wed Mar 09 00:09:34 2005 +0000
@@ -88,15 +88,19 @@
 #include <alloca.h>
 #include <sys/param.h>
 #endif
+#if TARGET_API_MAC_CARBON
 #ifdef MAC_OSX
 #include <QuickTime/QuickTime.h>
-#else /* not MAC_OSX */
+#else  /* not MAC_OSX */
+#include <QuickTime.h>
+#endif	/* not MAC_OSX */
+#else  /* not TARGET_API_MAC_CARBON */
 #include <Windows.h>
 #include <Gestalt.h>
 #include <TextUtils.h>
 #include <ImageCompression.h>
 #include <QuickTimeComponents.h>
-#endif /* not MAC_OSX */
+#endif	/* not TARGET_API_MAC_CARBON */
 
 /* MAC_TODO : Color tables on Mac.  */
 #undef COLOR_TABLE_SUPPORT
--- a/src/keyboard.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/keyboard.c	Wed Mar 09 00:09:34 2005 +0000
@@ -1350,11 +1350,6 @@
     cancel_hourglass ();
 #endif
 
-  /* Unblock input if we enter with input blocked.  This may happen if
-     redisplay traps e.g. during tool-bar update with input blocked.  */
-  while (INPUT_BLOCKED_P)
-    UNBLOCK_INPUT;
-
   return Fthrow (Qtop_level, Qnil);
 }
 
--- a/src/lisp.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/lisp.h	Wed Mar 09 00:09:34 2005 +0000
@@ -53,6 +53,11 @@
 
 #endif /* 0 */
 
+#ifdef GC_CHECK_CONS_LIST
+#define CHECK_CONS_LIST() check_cons_list()
+#else
+#define CHECK_CONS_LIST() 0
+#endif
 
 /* These are default choices for the types to use.  */
 #ifdef _LP64
--- a/src/mac.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/mac.c	Wed Mar 09 00:09:34 2005 +0000
@@ -25,20 +25,8 @@
 #include <stdio.h>
 #include <errno.h>
 #include <time.h>
-#include <utime.h>
-#include <dirent.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <pwd.h>
-#include <grp.h>
-#include <sys/param.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#if __MWERKS__
-#include <unistd.h>
-#endif
-
+
+#ifdef HAVE_CARBON
 #ifdef MAC_OSX
 #undef mktime
 #undef DEBUG
@@ -57,7 +45,12 @@
 #define realloc unexec_realloc
 #undef init_process
 #define init_process emacs_init_process
-#else /* not MAC_OSX */
+#else  /* not MAC_OSX */
+#undef SIGHUP
+#define OLDP2C 1
+#include <Carbon.h>
+#endif	/* not MAC_OSX */
+#else	/* not HAVE_CARBON */
 #include <Files.h>
 #include <MacTypes.h>
 #include <TextUtils.h>
@@ -69,7 +62,24 @@
 #include <OSA.h>
 #include <AppleScript.h>
 #include <Scrap.h>
-#endif /* not MAC_OSX */
+#include <Events.h>
+#include <Processes.h>
+#include <EPPC.h>
+#endif	/* not HAVE_CARBON */
+
+#include <utime.h>
+#include <dirent.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <pwd.h>
+#include <grp.h>
+#include <sys/param.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#if __MWERKS__
+#include <unistd.h>
+#endif
 
 #include "lisp.h"
 #include "process.h"
@@ -812,8 +822,6 @@
 }
 
 
-#include <Events.h>
-
 long target_ticks = 0;
 
 #ifdef __MRC__
@@ -856,7 +864,24 @@
   struct timeval *timeout;
 {
 #if TARGET_API_MAC_CARBON
-  return 1;
+  OSErr err;
+  EventTimeout timeout_sec =
+    (timeout
+     ? (EMACS_SECS (*timeout) * kEventDurationSecond
+	+ EMACS_USECS (*timeout) * kEventDurationMicrosecond)
+     : kEventDurationForever);
+
+  if (FD_ISSET (0, rfds))
+    {
+      BLOCK_INPUT;
+      err = ReceiveNextEvent (0, NULL, timeout_sec, kEventLeaveInQueue, NULL);
+      UNBLOCK_INPUT;
+      if (err == noErr)
+	return 1;
+      else
+	FD_ZERO (rfds);
+    }
+  return 0;
 #else /* not TARGET_API_MAC_CARBON */
   EventRecord e;
   UInt32 sleep_time = EMACS_SECS (*timeout) * 60 +
@@ -1421,6 +1446,39 @@
   return 1;  /* success */
 }
 
+
+OSErr
+posix_pathname_to_fsspec (ufn, fs)
+     const char *ufn;
+     FSSpec *fs;
+{
+  Str255 mac_pathname;
+
+  if (posix_to_mac_pathname (ufn, mac_pathname, sizeof (mac_pathname)) == 0)
+    return fnfErr;
+  else
+    {
+      c2pstr (mac_pathname);
+      return FSMakeFSSpec (0, 0, mac_pathname, fs);
+    }
+}
+
+OSErr
+fsspec_to_posix_pathname (fs, ufn, ufnbuflen)
+     const FSSpec *fs;
+     char *ufn;
+     int ufnbuflen;
+{
+  char mac_pathname[MAXPATHLEN];
+
+  if (path_from_vol_dir_name (mac_pathname, sizeof (mac_pathname) - 1,
+			      fs->vRefNum, fs->parID, fs->name)
+      && mac_to_posix_pathname (mac_pathname, ufn, ufnbuflen))
+    return noErr;
+  else
+    return fnfErr;
+}
+
 #ifndef MAC_OSX
 
 int
@@ -1899,9 +1957,6 @@
 }
 
 
-#include <Processes.h>
-#include <EPPC.h>
-
 /* Event class of HLE sent to subprocess.  */
 const OSType kEmacsSubprocessSend = 'ESND';
 
@@ -2770,7 +2825,6 @@
   return Qnil;
 }
 
-extern void mac_clear_font_name_table P_ ((void));
 
 DEFUN ("mac-clear-font-name-table", Fmac_clear_font_name_table, Smac_clear_font_name_table, 0, 0, 0,
        doc: /* Clear the font name table.  */)
--- a/src/macfns.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/macfns.c	Wed Mar 09 00:09:34 2005 +0000
@@ -2294,8 +2294,6 @@
 
 /* Create and set up the Mac window for frame F.  */
 
-extern OSErr install_window_handler (WindowPtr);
-
 static void
 mac_window (f)
      struct frame *f;
@@ -4356,7 +4354,7 @@
 	options.actionButtonLabel = CFSTR ("Ok");
 	options.windowTitle = CFSTR ("Enter name");
 
-	if (!NILP(default_filename))
+	if (STRINGP (default_filename))
 	  {
 	    Lisp_Object utf8 = ENCODE_UTF_8 (default_filename);
 	    char *begPtr = SDATA(utf8);
@@ -4381,22 +4379,29 @@
       }
     
     /* Set the default location and continue*/
-    if (status == noErr) {
-      if (!NILP(dir)) {
+    if (status == noErr)
+      {
+	AEDesc defLocAed;
+#ifdef MAC_OSX
 	FSRef defLoc;
-	AEDesc defLocAed;
 	status = FSPathMakeRef(SDATA(ENCODE_FILE(dir)), &defLoc, NULL);
+#else
+	FSSpec defLoc;
+	status = posix_pathname_to_fsspec (SDATA (ENCODE_FILE (dir)), &defLoc);
+#endif
 	if (status == noErr) 
 	  {
+#ifdef MAC_OSX
 	    AECreateDesc(typeFSRef, &defLoc, sizeof(FSRef), &defLocAed);
+#else
+	    AECreateDesc(typeFSS, &defLoc, sizeof(FSSpec), &defLocAed);
+#endif
 	    NavCustomControl(dialogRef, kNavCtlSetLocation, (void*) &defLocAed);
 	    AEDisposeDesc(&defLocAed);
 	  }
+	status = NavDialogRun(dialogRef);
       }
 
-      status = NavDialogRun(dialogRef);
-    }
-
     if (saveName) CFRelease(saveName);
     if (message) CFRelease(message);
 
@@ -4413,11 +4418,22 @@
 	  {
 	    NavReplyRecord reply;
 	    AEDesc aed;
+#ifdef MAC_OSX
 	    FSRef fsRef;
+#else
+	    FSSpec fs;
+#endif
 	    status = NavDialogGetReply(dialogRef, &reply);
+
+#ifdef MAC_OSX
 	    AECoerceDesc(&reply.selection, typeFSRef, &aed);
 	    AEGetDescData(&aed, (void *) &fsRef, sizeof (FSRef));
 	    FSRefMakePath(&fsRef, (UInt8 *) filename, sizeof (filename));
+#else
+	    AECoerceDesc (&reply.selection, typeFSS, &aed);
+	    AEGetDescData (&aed, (void *) &fs, sizeof (FSSpec));
+	    fsspec_to_posix_pathname (&fs, filename, sizeof (filename) - 1);
+#endif
 	    AEDisposeDesc(&aed);
 	    if (reply.saveFileName)
 	      {
--- a/src/macgui.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/macgui.h	Wed Mar 09 00:09:34 2005 +0000
@@ -29,10 +29,11 @@
 
 typedef unsigned long Time;
 
-#if MAC_OSX
+#ifdef HAVE_CARBON
+#undef Z
+#ifdef MAC_OSX
 #undef mktime
 #undef DEBUG
-#undef Z
 #undef free
 #undef malloc
 #undef realloc
@@ -44,8 +45,6 @@
 #include <Carbon/Carbon.h>
 #undef mktime
 #define mktime emacs_mktime
-#undef Z
-#define Z (current_buffer->text->z)
 #undef free
 #define free unexec_free
 #undef malloc
@@ -59,12 +58,19 @@
 #undef init_process
 #define init_process emacs_init_process
 #undef INFINITY
-#else
+#else  /* not MAC_OSX */
+#undef SIGHUP
+#define OLDP2C 1
+#include <Carbon.h>
+#endif  /* not MAC_OSX */
+#undef Z
+#define Z (current_buffer->text->z)
+#else /* not HAVE_CARBON */
 #include <QuickDraw.h>		/* for WindowPtr */
 #include <QDOffscreen.h>	/* for GWorldPtr */
 #include <Windows.h>
 #include <Gestalt.h>
-#endif
+#endif /* not HAVE_CARBON */
 
 typedef WindowPtr Window;
 typedef GWorldPtr Pixmap;
--- a/src/macmenu.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/macmenu.c	Wed Mar 09 00:09:34 2005 +0000
@@ -35,7 +35,7 @@
 #include "charset.h"
 #include "coding.h"
 
-#ifndef MAC_OSX
+#if !TARGET_API_MAC_CARBON
 #include <MacTypes.h>
 #include <Menus.h>
 #include <QuickDraw.h>
@@ -47,7 +47,7 @@
 #if defined (__MRC__) || (__MSL__ >= 0x6000)
 #include <ControlDefinitions.h>
 #endif
-#endif /* not MAC_OSX */
+#endif /* not TARGET_API_MAC_CARBON */
 
 /* This may include sys/types.h, and that somehow loses
    if this is not done before the other system files.  */
--- a/src/macterm.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/macterm.c	Wed Mar 09 00:09:34 2005 +0000
@@ -34,12 +34,12 @@
 #include <alloca.h>
 #endif
 
-#ifdef MAC_OSX
+#if TARGET_API_MAC_CARBON
 /* USE_CARBON_EVENTS determines if the Carbon Event Manager is used to
    obtain events from the event queue.  If set to 0, WaitNextEvent is
    used instead.  */
 #define USE_CARBON_EVENTS 1
-#else /* not MAC_OSX */
+#else /* not TARGET_API_MAC_CARBON */
 #include <Quickdraw.h>
 #include <ToolUtils.h>
 #include <Sound.h>
@@ -58,7 +58,7 @@
 #if __profile__
 #include <profiler.h>
 #endif
-#endif /* not MAC_OSX */
+#endif /* not TARGET_API_MAC_CARBON */
 
 #include "systty.h"
 #include "systime.h"
@@ -247,7 +247,7 @@
 
 extern int inhibit_window_system;
 
-#if __MRC__
+#if __MRC__ && !TARGET_API_MAC_CARBON
 QDGlobals qd;  /* QuickDraw global information structure.  */
 #endif
 
@@ -5591,6 +5591,9 @@
 
   BLOCK_INPUT;
 
+  if (wp != tip_window)
+    remove_window_handler (wp);
+
   DisposeWindow (wp);
   if (wp == tip_window)
     /* Neither WaitNextEvent nor ReceiveNextEvent receives `window
@@ -7104,7 +7107,7 @@
 
 /* The Mac Event loop code */
 
-#ifndef MAC_OSX
+#if !TARGET_API_MAC_CARBON
 #include <Events.h>
 #include <Quickdraw.h>
 #include <Balloons.h>
@@ -7125,7 +7128,7 @@
 #if __MWERKS__
 #include <unix.h>
 #endif
-#endif /* ! MAC_OSX */
+#endif /* ! TARGET_API_MAC_CARBON */
 
 #define M_APPLE 128
 #define I_ABOUT 1
@@ -7226,12 +7229,16 @@
 /* Drag and Drop */
 static pascal OSErr mac_do_track_drag (DragTrackingMessage, WindowPtr, void*, DragReference);
 static pascal OSErr mac_do_receive_drag (WindowPtr, void*, DragReference);
+static DragTrackingHandlerUPP mac_do_track_dragUPP = NULL;
+static DragReceiveHandlerUPP mac_do_receive_dragUPP = NULL;
 #endif
 
 #if USE_CARBON_EVENTS
+#ifdef MAC_OSX
 /* Preliminary Support for the OSX Services Menu */
 static OSStatus mac_handle_service_event (EventHandlerCallRef,EventRef,void*);
 static void init_service_handler ();
+#endif
 /* Window Event Handler */
 static pascal OSStatus mac_handle_window_event (EventHandlerCallRef,
 						EventRef, void *);
@@ -7870,7 +7877,7 @@
 }
 
 #if USE_CARBON_EVENTS
-
+#ifdef MAC_OSX
 void
 init_service_handler ()
 {
@@ -7966,7 +7973,7 @@
     }
   return err;
 }
-
+#endif
 
 static pascal OSStatus
 mac_handle_window_event (next_handler, event, data)
@@ -8063,14 +8070,30 @@
 				   NULL, NULL);
 #endif
 #if TARGET_API_MAC_CARBON
+  if (mac_do_track_dragUPP == NULL)
+    mac_do_track_dragUPP = NewDragTrackingHandlerUPP (mac_do_track_drag);
+  if (mac_do_receive_dragUPP == NULL)
+    mac_do_receive_dragUPP = NewDragReceiveHandlerUPP (mac_do_receive_drag);
+
   if (err == noErr)
-    err = InstallTrackingHandler (mac_do_track_drag, window, NULL);
+    err = InstallTrackingHandler (mac_do_track_dragUPP, window, NULL);
   if (err == noErr)
-    err = InstallReceiveHandler (mac_do_receive_drag, window, NULL);
+    err = InstallReceiveHandler (mac_do_receive_dragUPP, window, NULL);
 #endif
   return err;
 }
 
+void
+remove_window_handler (window)
+     WindowPtr window;
+{
+#if TARGET_API_MAC_CARBON
+  if (mac_do_track_dragUPP)
+    RemoveTrackingHandler (mac_do_track_dragUPP, window);
+  if (mac_do_receive_dragUPP)
+    RemoveReceiveHandler (mac_do_receive_dragUPP, window);
+#endif
+}
 
 /* Open Application Apple Event */
 static pascal OSErr
@@ -8149,9 +8172,9 @@
         /* AE file list is one based so just use that for indexing here.  */
         for (i = 1; i <= num_files_to_open; i++)
 	  {
+	    char unix_path_name[MAXPATHLEN];
 #ifdef MAC_OSX
 	    FSRef fref;
-	    char unix_path_name[MAXPATHLEN];
 
 	    err = AEGetNthPtr (&the_desc, i, typeFSRef, &keyword,
 			       &actual_type, &fref, sizeof (FSRef),
@@ -8163,15 +8186,13 @@
 		== noErr)
 #else
 	    FSSpec fs;
-	    Str255 path_name, unix_path_name;
 
 	    err = AEGetNthPtr(&the_desc, i, typeFSS, &keyword, &actual_type,
 			      (Ptr) &fs, sizeof (fs), &actual_size);
 	    if (err != noErr) continue;
 
-	    if (path_from_vol_dir_name (path_name, 255, fs.vRefNum, fs.parID,
-					fs.name) &&
-		mac_to_posix_pathname (path_name, unix_path_name, 255))
+	    if (fsspec_to_posix_pathname (&fs, unix_path_name,
+					  sizeof (unix_path_name) - 1) == noErr)
 #endif
 	      /* x-dnd functions expect undecoded filenames.  */
 	      drag_and_drop_file_list =
@@ -8290,10 +8311,9 @@
 	{
 #ifdef MAC_OSX
 	  FSRef fref;
+#endif
 	  char unix_path_name[MAXPATHLEN];
-#else
-	  Str255 path_name, unix_path_name;
-#endif
+
 	  GetFlavorData (theDrag, theItem, flavorTypeHFS, &data, &size, 0L);
 #ifdef MAC_OSX
 	  /* Use Carbon routines, otherwise it converts the file name
@@ -8301,9 +8321,8 @@
 	  FSpMakeFSRef (&data.fileSpec, &fref);
 	  if (! FSRefMakePath (&fref, unix_path_name, sizeof (unix_path_name)));
 #else
-	  if (path_from_vol_dir_name (path_name, 255, data.fileSpec.vRefNum,
-				      data.fileSpec.parID, data.fileSpec.name) &&
-	      mac_to_posix_pathname (path_name, unix_path_name, 255))
+	  if (fsspec_to_posix_pathname (&data.fileSpec, unix_path_name,
+					sizeof (unix_path_name) - 1) == noErr)
 #endif
 	    /* x-dnd functions expect undecoded filenames.  */
             drag_and_drop_file_list =
@@ -8400,7 +8419,7 @@
    hints and prompts in the minibuffer after the user stops typing for
    a wait, etc.  */
 
-#if !TARGET_API_MAC_CARBON
+#ifdef MAC_OS8
 #undef main
 int
 main (void)
@@ -8982,7 +9001,7 @@
 	    int keycode = (er.message & keyCodeMask) >> 8;
 	    int xkeysym;
 
-#if USE_CARBON_EVENTS
+#if USE_CARBON_EVENTS && defined (MAC_OSX)
 	    /* When using Carbon Events, we need to pass raw keyboard
 	       events to the TSM ourselves.  If TSM handles it, it
 	       will pass back noErr, otherwise it will pass back
@@ -9291,12 +9310,21 @@
   f->output_data.mac->mouse_pixel = 0xff00ff;
   f->output_data.mac->cursor_foreground_pixel = 0x0000ff;
 
+#if TARGET_API_MAC_CARBON
+  f->output_data.mac->text_cursor = kThemeIBeamCursor;
+  f->output_data.mac->nontext_cursor = kThemeArrowCursor;
+  f->output_data.mac->modeline_cursor = kThemeArrowCursor;
+  f->output_data.mac->hand_cursor = kThemePointingHandCursor;
+  f->output_data.mac->hourglass_cursor = kThemeWatchCursor;
+  f->output_data.mac->horizontal_drag_cursor = kThemeResizeLeftRightCursor;
+#else
   f->output_data.mac->text_cursor = GetCursor (iBeamCursor);
   f->output_data.mac->nontext_cursor = &arrow_cursor;
   f->output_data.mac->modeline_cursor = &arrow_cursor;
   f->output_data.mac->hand_cursor = &arrow_cursor;
   f->output_data.mac->hourglass_cursor = GetCursor (watchCursor);
   f->output_data.mac->horizontal_drag_cursor = &arrow_cursor;
+#endif
 
   FRAME_FONTSET (f) = -1;
   f->output_data.mac->explicit_parent = 0;
@@ -9831,7 +9859,7 @@
 #if TARGET_API_MAC_CARBON
   init_required_apple_events ();
 
-#if USE_CARBON_EVENTS
+#if USE_CARBON_EVENTS && defined (MAC_OSX)
   init_service_handler ();
 
   init_quit_char_handler ();
@@ -9839,9 +9867,11 @@
 
   DisableMenuCommand (NULL, kHICommandQuit);
 
+#ifdef MAC_OSX
   if (!inhibit_window_system)
     MakeMeTheFrontProcess ();
 #endif
+#endif
   UNBLOCK_INPUT;
 }
 
--- a/src/macterm.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/macterm.h	Wed Mar 09 00:09:34 2005 +0000
@@ -607,10 +607,17 @@
 extern void mac_draw_line_to_pixmap P_ ((Display *, Pixmap, GC, int, int,
 					 int, int));
 extern void mac_unload_font P_ ((struct mac_display_info *, XFontStruct *));
+extern OSErr install_window_handler P_ ((WindowPtr));
+extern void remove_window_handler P_ ((WindowPtr));
 
 #define FONT_TYPE_FOR_UNIBYTE(font, ch) 0
 #define FONT_TYPE_FOR_MULTIBYTE(font, ch) 0
 
+/* Defined in mac.c.  */
+
+extern OSErr posix_pathname_to_fsspec P_ ((const char *, FSSpec *));
+extern OSErr fsspec_to_posix_pathname P_ ((const FSSpec *, char *, int));
+extern void mac_clear_font_name_table P_ ((void));
 #if TARGET_API_MAC_CARBON
 extern CFStringRef cfstring_create_with_utf8_cstring P_ ((const char *));
 #endif
--- a/src/s/vms.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/s/vms.h	Wed Mar 09 00:09:34 2005 +0000
@@ -109,6 +109,11 @@
    your system and must be used only through an encapsulation
    (Which you should place, by convention, in sysdep.c).  */
 
+/* In olden days, VMS filenames did not support hyphen (i.e., the "-"
+   character).  You can #undef this in vmsX-Y.h for newer versions.  */
+
+#define NO_HYPHENS_IN_FILENAMES
+
 /* Do you have the sharable library bug?  If you link with a sharable
    library that contains psects with the NOSHR attribute and also refer to
    those psects in your program, the linker give you a private version of
@@ -135,6 +140,10 @@
 
 /* #define READ_SYSUAF */
 
+/* Traditionally, filenames on VMS are always upper case.  */
+
+#define FILE_SYSTEM_CASE Fupcase
+
 /* On VMS these have a different name */
 
 #define index strchr
--- a/src/s/vms4-4.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/s/vms4-4.h	Wed Mar 09 00:09:34 2005 +0000
@@ -1,5 +1,7 @@
 #include "vms.h"
 #define VMS4_4
 
+#undef NO_HYPHENS_IN_FILENAMES
+
 /* arch-tag: 2e65c7ad-0d17-45a0-b4cb-3e76c72ea9d5
    (do not change this comment) */
--- a/src/s/vms5-5.h	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/s/vms5-5.h	Wed Mar 09 00:09:34 2005 +0000
@@ -2,6 +2,8 @@
 #define VMS5_5
 #define VMS4_4
 
+#undef NO_HYPHENS_IN_FILENAMES
+
 /* The bug that SHARABLE_LIB_BUG fixes is gone in version 5.5 of VMS.
    And defining it causes lossage because sys_errlist has a different
    number of elements.  */
--- a/src/xdisp.c	Tue Mar 08 08:37:20 2005 +0000
+++ b/src/xdisp.c	Wed Mar 09 00:09:34 2005 +0000
@@ -784,6 +784,13 @@
 #define CLEAR_FACE_CACHE_COUNT	500
 static int clear_face_cache_count;
 
+/* Similarly for the image cache.  */
+
+#ifdef HAVE_WINDOW_SYSTEM
+#define CLEAR_IMAGE_CACHE_COUNT	101
+static int clear_image_cache_count;
+#endif
+
 /* Record the previous terminal frame we displayed.  */
 
 static struct frame *previous_terminal_frame;
@@ -10479,7 +10486,9 @@
   CHARPOS (this_line_start_pos) = 0;
   consider_all_windows_p |= buffer_shared > 1;
   ++clear_face_cache_count;
-
+#ifdef HAVE_WINDOW_SYSTEM
+  ++clear_image_cache_count;
+#endif
 
   /* Build desired matrices, and update the display.  If
      consider_all_windows_p is non-zero, do it for all windows on all
@@ -10492,13 +10501,6 @@
       struct frame **updated
 	= (struct frame **) alloca (size * sizeof *updated);
 
-      /* Clear the face cache eventually.  */
-      if (clear_face_cache_count > CLEAR_FACE_CACHE_COUNT)
-	{
-	  clear_face_cache (0);
-	  clear_face_cache_count = 0;
-	}
-
       /* Recompute # windows showing selected buffer.  This will be
 	 incremented each time such a window is displayed.  */
       buffer_shared = 0;
@@ -10514,12 +10516,6 @@
 		   variables.  */
 		select_frame_for_redisplay (frame);
 
-#ifdef HAVE_WINDOW_SYSTEM
-	      if (clear_face_cache_count % 50 == 0
-		  && FRAME_WINDOW_P (f))
-		clear_image_cache (f, 0);
-#endif /* HAVE_WINDOW_SYSTEM */
-
 	      /* Mark all the scroll bars to be removed; we'll redeem
 		 the ones we want when we redisplay their windows.  */
 	      if (condemn_scroll_bars_hook)
@@ -10723,6 +10719,29 @@
   if (windows_or_buffers_changed && !pause)
     goto retry;
 
+  /* Clear the face cache eventually.  */
+  if (consider_all_windows_p)
+    {
+      if (clear_face_cache_count > CLEAR_FACE_CACHE_COUNT)
+	{
+	  clear_face_cache (0);
+	  clear_face_cache_count = 0;
+	}
+#ifdef HAVE_WINDOW_SYSTEM
+      if (clear_image_cache_count > CLEAR_IMAGE_CACHE_COUNT)
+	{
+	  Lisp_Object tail, frame;
+	  FOR_EACH_FRAME (tail, frame)
+	    {
+	      struct frame *f = XFRAME (frame);
+	      if (FRAME_WINDOW_P (f))
+		clear_image_cache (f, 0);
+	    }
+	  clear_image_cache_count = 0;
+	}
+#endif /* HAVE_WINDOW_SYSTEM */
+    }
+
  end_of_redisplay:
   unbind_to (count, Qnil);
   RESUME_POLLING;
@@ -20350,8 +20369,10 @@
   if (area != TEXT_AREA)
     return;
 
-  row = w->current_matrix->rows + w->phys_cursor.vpos;
-  if (!row->displays_text_p)
+  if (w->phys_cursor.vpos < 0
+      || w->phys_cursor.vpos >= w->current_matrix->nrows
+      || (row = w->current_matrix->rows + w->phys_cursor.vpos,
+	  !(row->enabled_p && row->displays_text_p)))
     return;
 
   if (row->cursor_in_fringe_p)