changeset 83381:d84f940244dc

Merged from miles@gnu.org--gnu-2005 (patch 116-117, 544-550) Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-544 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-545 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-546 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-547 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-548 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-549 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-550 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-116 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-117 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-421
author Karoly Lorentey <lorentey@elte.hu>
date Sat, 17 Sep 2005 19:10:55 +0000
parents 94f174e5569d (current diff) 6759056e7603 (diff)
children 7a3090aca393
files ChangeLog lisp/ChangeLog lisp/bindings.el lisp/help-fns.el lisp/international/iso-insert.el lisp/net/newsticker.el lisp/progmodes/vhdl-mode.el lisp/recentf.el lisp/url/url-mailto.el lispref/ChangeLog man/ChangeLog man/emacs.texi man/newsticker.texi src/Makefile.in src/coding.c src/emacs.c src/fileio.c src/print.c src/xdisp.c
diffstat 49 files changed, 2047 insertions(+), 1162 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,3 +1,9 @@
+2005-09-15  Ulf Jasper  <ulf.jasper@web.de>
+
+	* Makefile.in (install-arch-indep, uninstall):
+	Handle newsticker manual.
+	(info): Add - to commands.
+
 2005-09-11  Kim F. Storm  <storm@cua.dk>
 
 	* AUTHORS: Regenerate.
--- a/Makefile.in	Sat Sep 17 19:00:49 2005 +0000
+++ b/Makefile.in	Sat Sep 17 19:10:55 2005 +0000
@@ -486,7 +486,7 @@
 	      chmod a+r ${infodir}/dir); \
 	   fi; \
 	   cd ${srcdir}/info ; \
-	   for f in ada-mode* autotype* calc* ccmode* cl* dired-x* ebrowse* ediff* efaq* eintr* elisp* emacs* emacs-mime* emacs-xtra* eshell* eudc* flymake* forms* gnus* idlwave* info* message* mh-e* org* pcl-cvs* pgg* reftex* sc* ses* sieve* speedbar* tramp* vip* widget* woman* smtpmail* url*; do \
+	   for f in ada-mode* autotype* calc* ccmode* cl* dired-x* ebrowse* ediff* efaq* eintr* elisp* emacs* emacs-mime* emacs-xtra* eshell* eudc* flymake* forms* gnus* idlwave* info* message* mh-e* newsticker* org* pcl-cvs* pgg* reftex* sc* ses* sieve* speedbar* tramp* vip* widget* woman* smtpmail* url*; do \
 	     (cd $${thisdir}; \
 	      ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
 	      chmod a+r ${infodir}/$$f); \
@@ -496,7 +496,7 @@
 	thisdir=`/bin/pwd`; \
 	if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
 	then \
-	  for f in ada-mode autotype calc ccmode cl dired-x ebrowse ediff efaq elisp eintr emacs emacs-mime emacs-xtra eshell eudc flymake forms gnus idlwave info message mh-e org pcl-cvs pgg reftex sc ses sieve speedbar tramp vip viper widget woman smtpmail url; do \
+	  for f in ada-mode autotype calc ccmode cl dired-x ebrowse ediff efaq elisp eintr emacs emacs-mime emacs-xtra eshell eudc flymake forms gnus idlwave info message mh-e newsticker org pcl-cvs pgg reftex sc ses sieve speedbar tramp vip viper widget woman smtpmail url; do \
 	    (cd $${thisdir}; \
 	     ${INSTALL_INFO} --info-dir=${infodir} ${infodir}/$$f); \
 	  done; \
@@ -562,7 +562,7 @@
 	done
 	(cd ${archlibdir} && rm -f fns-*)
 	-rm -rf ${libexecdir}/emacs/${version}
-	(cd ${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* emacs-xtra* flymake* forms* gnus* info* mh-e* org* sc* ses* vip* smtpmail* url*)
+	(cd ${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* emacs-xtra* flymake* forms* gnus* info* mh-e* newsticker* org* sc* ses* vip* smtpmail* url*)
 	(cd ${man1dir}  && rm -f emacs${manext} emacsclient${manext} etags${manext} ctags${manext})
 	(cd ${bindir}  && rm -f $(EMACSFULL) $(EMACS))
 
@@ -721,9 +721,9 @@
 # put the info files in $(srcdir),
 # so we can do ok running make in the build dir.
 info: force-info
-	(cd man; $(MAKE) $(MFLAGS) info)
-	(cd lispref; $(MAKE) $(MFLAGS) info)
-	(cd lispintro; $(MAKE) $(MFLAGS) info)
+	-(cd man; $(MAKE) $(MFLAGS) info)
+	-(cd lispref; $(MAKE) $(MFLAGS) info)
+	-(cd lispintro; $(MAKE) $(MFLAGS) info)
 dvi:
 	(cd man; $(MAKE) $(MFLAGS) dvi)
 	(cd lispref; $(MAKE) $(MFLAGS) elisp.dvi)
--- a/etc/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/etc/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,3 +1,12 @@
+2005-09-15  Kenichi Handa  <handa@m17n.org>
+
+	* PROBLEMS: Fix the paragraph describing the limitation of
+	UTF-8/16/7.
+
+2005-09-14  Romain Francoise  <romain@orebokech.com>
+
+	* NEWS: Add entry for write-region-inhibit-fsync.
+
 2005-09-09  Kevin Ryde  <user42@zip.com.au>
 
 	* MORE.STUFF: Update url for calculator.el.
--- a/etc/NEWS	Sat Sep 17 19:00:49 2005 +0000
+++ b/etc/NEWS	Sat Sep 17 19:10:55 2005 +0000
@@ -618,6 +618,12 @@
 attempt to construct a unique auto-save name (e.g. for remote files).
 
 +++
+*** The new option `write-region-inhibit-fsync' disables calls to fsync
+in `write-region'.  This can be useful on laptops to avoid spinning up
+the hard drive upon each file save.  Enabling this variable may result
+in data loss, use with care.
+
++++
 *** If the user visits a file larger than `large-file-warning-threshold',
 Emacs asks for confirmation.
 
@@ -1478,6 +1484,14 @@
 
 * New Modes and Packages in Emacs 22.1
 
+---
+** Newsticker is now part of the Emacs distribution.
+
+Newsticker asynchronously retrieves headlines (RSS) from a list of news
+sites, prepares these headlines for reading, and allows for loading the
+corresponding articles in a web browser.  Its documentation is in a
+separate manual.
+
 +++
 ** Filesets are collections of files.  You can define a fileset in
 various ways, such as based on a directory tree or based on
@@ -2991,11 +3005,17 @@
 with other details of skeleton construction.
 
 ---
-** New variable `hs-set-up-overlay' allows customization of the overlay
+** Hideshow mode changes
+
+*** New variable `hs-set-up-overlay' allows customization of the overlay
 used to effect hiding for hideshow minor mode.  Integration with isearch
 handles the overlay property `display' specially, preserving it during
 temporary overlay showing in the course of an isearch operation.
 
+*** New variable `hs-allow-nesting' non-nil means that hiding a block does
+not discard the hidden state of any "internal" blocks; when the parent
+block is later shown, the internal blocks remain hidden.  Default is nil.
+
 +++
 ** `hide-ifdef-mode' now uses overlays rather than selective-display
 to hide its text.  This should be mostly transparent but slightly
@@ -4586,6 +4606,17 @@
 an event is composed by combining the ID of the hot-spot with the
 mouse event, e.g. [area4 mouse-1] if the hot-spot's ID is `area4'.
 
++++
+*** The function `find-image' now searches in etc/images/ and etc/.
+The new variable `image-load-path' is a list of locations in which to
+search for image files.  The default is to search in etc/images, then
+in etc/, and finally in the directories specified by `load-path'.
+Subdirectories of etc/ and etc/images are not recursively searched; if
+you put an image file in a subdirectory, you have to specify it
+explicitly; for example, if an image is put in etc/images/foo/bar.xpm:
+
+  (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
+
 ** Mouse pointer features:
 
 +++ (lispref)
--- a/etc/PROBLEMS	Sat Sep 17 19:00:49 2005 +0000
+++ b/etc/PROBLEMS	Sat Sep 17 19:10:55 2005 +0000
@@ -841,9 +841,16 @@
 
 ** The UTF-8/16/7 coding systems don't encode CJK (Far Eastern) characters.
 
-Emacs by default only supports the parts of the Unicode BMP whose code
-points are in the ranges 0000-33ff and e000-ffff.  This excludes: most
-of CJK, Yi and Hangul, as well as everything outside the BMP.
+Emacs directly supports the Unicode BMP whose code points are in the
+ranges 0000-33ff and e000-ffff, and indirectly supports the parts of
+CJK characters belonging to these legacy charsets:
+
+    GB2312, Big5, JISX0208, JISX0212, JISX0213-1, JISX0213-2, KSC5601
+
+The latter support is done in Utf-Translate-Cjk mode (turned on by
+default).   Which Unicode CJK characters are decoded into which Emacs
+charset is decided by the current language environment.  For instance,
+in Chinese-GB, most of them are decoded into chinese-gb2312.
 
 If you read UTF-8 data with code points outside these ranges, the
 characters appear in the buffer as raw bytes of the original UTF-8
@@ -853,13 +860,6 @@
 substituted with the Unicode `replacement character', and you lose
 information.
 
-To edit such UTF data, turn on Utf-Translate-Cjk mode, which makes
-many common CJK characters available for encoding and decoding and can
-be extended by updating the tables it uses.  This also allows you to
-save as UTF buffers containing characters decoded by the chinese-,
-japanese- and korean- coding systems, e.g. cut and pasted from
-elsewhere.
-
 ** Mule-UCS loads very slowly.
 
 Changes to Emacs internals interact badly with Mule-UCS's `un-define'
--- a/lib-src/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/lib-src/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,3 +1,9 @@
+2005-09-15  Richard M. Stallman  <rms@gnu.org>
+
+	* Makefile.in (update-game-score.o): New target.
+	Compile and link this progranm separately.
+	(update-game-score${EXEEXT}): Use GETOPTDEPTS.
+
 2005-09-11  Jason Rumney  <jasonr@gnu.org>
 
 	* makefile.w32-in (../src/config.h): Don't overwrite. Print a
--- a/lib-src/Makefile.in	Sat Sep 17 19:00:49 2005 +0000
+++ b/lib-src/Makefile.in	Sat Sep 17 19:10:55 2005 +0000
@@ -460,10 +460,12 @@
 hexl${EXEEXT}: ${srcdir}/hexl.c ../src/config.h
 	$(CC) ${ALL_CFLAGS} ${srcdir}/hexl.c $(LOADLIBES) -o hexl
 
-update-game-score${EXEEXT}: ${srcdir}/update-game-score.c ../src/config.h
-	$(CC) ${ALL_CFLAGS} ${srcdir}/update-game-score.c \
+update-game-score${EXEEXT}: update-game-score.o $(GETOPTDEPS)
+	$(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} update-game-score.o $(GETOPTOBJS) $(LOADLIBES) -o update-game-score
+
+update-game-score.o: ${srcdir}/update-game-score.c ../src/config.h $(GETOPT_H)
+	$(CC) -c ${CPP_CFLAGS} ${srcdir}/update-game-score.c \
 	  -DHAVE_SHARED_GAME_DIR="\"$(gamedir)\"" \
-	  $(LOADLIBES) -o update-game-score
 
 /* These are NOT included in INSTALLABLES or UTILITIES.
    See ../src/Makefile.in.  */
--- a/lisp/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,10 +1,92 @@
+2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* image.el (image-load-path): New variable.
+	(image-search-load-path): New function.
+	(find-image): Search for images in `image-load-path'.
+
+2005-09-15  David Ponce  <david@dponce.com>
+
+	* recentf.el (recentf-save-file-modes): New option.
+	(recentf-save-list): Use it.
+
+2005-09-15  Nick Roberts  <nickrob@snap.net.nz>
+
+	* bindings.el (mode-line-eol-desc, mode-line-coding-system-map)
+	(mode-line-mule-info, mode-line-modified): Move bindings from
+	mouse-3 to mouse-1.
+
+2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* simple.el (sendmail-user-agent-compose): Revert last change.
+
+2005-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* net/ange-ftp.el (ange-ftp-process-filter): Revert to ^#+$.
+	Use with-current-buffer.
+	(ange-ftp-gwp-start): Remove unused var `gw-user'.
+	(ange-ftp-guess-hash-mark-size): Remove unused var `result'.
+	(ange-ftp-insert-directory): Remove unused var `short'.
+	(ange-ftp-file-name-sans-versions): Remove unused var `host-type'.
+
+	* pcvs-defs.el (cvs-version): Recognize CVSNT version string.
+	(cvs-execute-single-dir): Change default: cvs-1.9 is ancient.
+
+	* calendar/cal-menu.el: Don't require easymenu, since we don't use it.
+	(check-calendar-holidays, diary-list-entries): Autoload.
+	Otherwise `emacs -q' followed by "mouse-2 -> diary entries" burps.
+	(calendar-mouse-holidays, calendar-mouse-view-diary-entries): Simplify.
+
+	* calendar/diary-lib.el (diary-show-all-entries): Fix last change,
+	which mistakenly removed a call to display-buffer.
+
+2005-09-14  Juanma Barranquero  <lekktu@gmail.com>
+
+	* obsolete/iso-insert.el: Move to obsolete/ from international/.
+
+2005-09-14  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* progmodes/hideshow.el
+	(hs-hide-comments-when-hiding-all): Remove autoload cookie.
+	(hs-allow-nesting): New user var.
+	(hs-discard-overlays): Skip "internal" overlays if nesting allowed.
+	(hs-hide-block-at-point): When nesting allowed,
+	if there is already an overlay in place, delete it.
+	(hs-safety-is-job-n): Delete func; remove call sites.
+	(hs-hide-level-recursive): Don't pre-clean if nesting allowed.
+	(hs-overlay-at): New func.
+	(hs-already-hidden-p, hs-show-block): Use it.
+	(hs-hide-all): Don't pre-clean if nesting allowed.
+	(hs-show-all): Temporarily disallow
+	nesting around call to `hs-discard-overlays'.
+
+2005-09-14  Chong Yidong  <cyd@stupidchicken.com>
+
+	* mouse.el (mouse-major-mode-menu): Make `prefix' optional.
+	Delete unused local var.
+
+2005-09-13  Juanma Barranquero  <lekktu@gmail.com>
+
+	* help-fns.el (describe-categories): "?\ " -> "?\s".
+	(help-do-arg-highlight): Recognize also ARG-n, as in
+	`move-to-left-margin' (ARG+n is already recognized).  Simplify.
+
+	* international/codepage.el (dos-unsupported-char-glyph):
+	* net/newsticker.el (tool-bar-map, w3-mode-map)
+	(w3m-minor-mode-map):
+	* progmodes/vhdl-mode.el (conf-alist, conf-entry, conf-key)
+	(ent-alist):
+	* textmodes/reftex-vars.el (reftex-tables-dirty): Add defvars.
+
 2005-09-13  Chong Yidong  <cyd@stupidchicken.com>
 
 	* custom.el (custom-push-theme): Handle the case where a symbol is
 	bound but face properties have not yet been assigned.
 
-	* mail/sendmail.el (mail): Use new buffer if `noerase' argument is
-	`new'.
+	* mail/sendmail.el (mail): Use new buffer if `noerase' is `new'.
+	Fix behavior if noerase is `t' and there is no mail buffer.
+
+	* simple.el (sendmail-user-agent-compose): Use a new mail buffer
+	if `continue' is nil, rather than signal an error.
 
 2005-09-12  Richard M. Stallman  <rms@gnu.org>
 
@@ -65,7 +147,6 @@
 
 	* time-stamp.el: Mention variable `time-stamp-pattern' in doc
 	strings of the variables it can override.
-
 	(time-stamp): New (as yet undocumented) time-stamp-format escapes
 	%Q and %q, for fully-qualified domain name and unqualified host name.
 
@@ -232,13 +313,6 @@
 
 2005-09-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-	* net/ange-ftp.el (ange-ftp-process-filter): Revert to ^#+$.
-	Use with-current-buffer.
-	(ange-ftp-gwp-start): Remove unused var `gw-user'.
-	(ange-ftp-guess-hash-mark-size): Remove unused var `result'.
-	(ange-ftp-insert-directory): Remove unused var `short'.
-	(ange-ftp-file-name-sans-versions): Remove unused var `host-type'.
-
 	* buff-menu.el (Buffer-menu-make-sort-button): Add docstrings, use
 	non-anonymous functions.
 
--- a/lisp/bindings.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/bindings.el	Sat Sep 17 19:10:55 2005 +0000
@@ -123,7 +123,7 @@
 
 (defvar mode-line-coding-system-map
   (let ((map (make-sparse-keymap)))
-    (define-key map [mode-line mouse-3]
+    (define-key map [mode-line mouse-1]
       (lambda (e)
 	(interactive "e")
 	(save-selected-window
@@ -156,7 +156,7 @@
       (setq desc
 	    (propertize
 	     mnemonic
-	     'help-echo (format "%s end-of-line; mouse-3 to cycle"
+	     'help-echo (format "%s end-of-line; mouse-1 to cycle"
 				(if (eq eol 0) "Unix-style LF"
 				  (if (eq eol 1) "Dos-style CRLF"
 				    (if (eq eol 2) "Mac-style CR"
@@ -164,7 +164,7 @@
 	     'keymap
 	     (eval-when-compile
 	       (let ((map (make-sparse-keymap)))
-		 (define-key map [mode-line mouse-3] 'mode-line-change-eol)
+		 (define-key map [mode-line mouse-1] 'mode-line-change-eol)
 		 map))
 	     'mouse-face 'mode-line-highlight))
       (push (cons eol (cons mnemonic desc)) mode-line-eol-desc-cache)
@@ -190,7 +190,7 @@
 	    (when buffer-file-coding-system
 	      (if enable-multibyte-characters
 		  (concat (symbol-name buffer-file-coding-system)
-			  " buffer; mouse-3: describe coding system")
+			  " buffer; mouse-1: describe coding system")
 		(concat "Unibyte " (symbol-name buffer-file-coding-system)
 			" buffer")))))
       'mouse-face 'mode-line-highlight
@@ -230,27 +230,27 @@
   (list (propertize
 	 "%1*"
 	 'help-echo (purecopy (lambda (window object point)
- 				(format "%sead-only: mouse-3 toggles"
+ 				(format "%sead-only: mouse-1 toggles"
 					(save-selected-window
 					  (select-window window)
 					  (if buffer-read-only
 					      "R"
 					    "Not r")))))
 	 'local-map (purecopy (make-mode-line-mouse-map
-			       'mouse-3
+			       'mouse-1
 			       #'mode-line-toggle-read-only))
 	 'mouse-face 'mode-line-highlight)
 	(propertize
 	 "%1+"
 	 'help-echo  (purecopy (lambda (window object point)
-				 (format "%sodified: mouse-3 toggles"
+				 (format "%sodified: mouse-1 toggles"
 					 (save-selected-window
 					   (select-window window)
 					   (if (buffer-modified-p)
 					     "M"
 					   "Not m")))))
 	 'local-map (purecopy (make-mode-line-mouse-map
-			       'mouse-3 #'mode-line-toggle-modified))
+			       'mouse-1 #'mode-line-toggle-modified))
 	 'mouse-face 'mode-line-highlight))
   "Mode-line control for displaying whether current buffer is modified.")
 
--- a/lisp/calendar/cal-menu.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/calendar/cal-menu.el	Sat Sep 17 19:10:55 2005 +0000
@@ -44,7 +44,6 @@
 (defvar event)
 
 (eval-when-compile (require 'calendar))
-(require 'easymenu)
 
 (define-key calendar-mode-map [menu-bar edit] 'undefined)
 (define-key calendar-mode-map [menu-bar search] 'undefined)
@@ -323,12 +322,14 @@
     (calendar-cursor-to-date (calendar-current-date))
     (calendar-cursor-holidays)))
 
+(autoload 'check-calendar-holidays "holidays")
+(autoload 'diary-list-entries "diary-lib")
+
 (defun calendar-mouse-holidays ()
   "Pop up menu of holidays for mouse selected date."
   (interactive)
   (let* ((date (calendar-event-to-date))
-         (l (mapcar '(lambda (x) (list x))
-                    (check-calendar-holidays date)))
+         (l (mapcar 'list (check-calendar-holidays date)))
          (selection
           (cal-menu-x-popup-menu
            event
@@ -350,11 +351,10 @@
          (diary-list-include-blanks nil)
          (diary-display-hook 'ignore)
          (diary-entries
-          (mapcar '(lambda (x) (split-string (car (cdr x)) "\^M\\|\n"))
-                  (list-diary-entries date 1)))
+          (mapcar (lambda (x) (split-string (car (cdr x)) "\^M\\|\n"))
+                  (diary-list-entries date 1)))
          (holidays (if holidays-in-diary-buffer
-                       (mapcar '(lambda (x) (list x))
-                               (check-calendar-holidays date))))
+                       (check-calendar-holidays date)))
          (title (concat "Diary entries "
                         (if diary (format "from %s " diary) "")
                         "for "
@@ -365,9 +365,7 @@
            (list title
                  (append
                   (list title)
-                  (if holidays
-                      (mapcar '(lambda (x) (list (concat "     " (car x))))
-                              holidays))
+                  (mapcar (lambda (x) (list (concat "     " x))) holidays)
                   (if holidays
                       (list "--shadow-etched-in" "--shadow-etched-in"))
                   (if diary-entries
--- a/lisp/calendar/diary-lib.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/calendar/diary-lib.el	Sat Sep 17 19:10:55 2005 +0000
@@ -764,7 +764,8 @@
         (pop-up-frames (window-dedicated-p (selected-window))))
     (with-current-buffer (or (find-buffer-visiting d-file)
                              (find-file-noselect d-file t))
-      (diary-unhide-everything))))
+      (diary-unhide-everything)
+      (display-buffer (current-buffer)))))
 
 (defcustom diary-mail-addr
   (if (boundp 'user-mail-address) user-mail-address "")
--- a/lisp/follow.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/follow.el	Sat Sep 17 19:10:55 2005 +0000
@@ -4,7 +4,7 @@
 ;;   2005 Free Software Foundation, Inc.
 
 ;; Author: Anders Lindgren <andersl@andersl.com>
-;; Maintainer: Anders Lindgren <andersl@andersl.com>
+;; Maintainer: FSF (Anders' email bounces, Sep 2005)
 ;; Created: 1995-05-25
 ;; Keywords: display, window, minor-mode, convenience
 ;; Last Changed: 1999-11-17
--- a/lisp/gnus/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/gnus/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,3 +1,8 @@
+2005-09-13  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* gnus-sum.el (gnus-summary-edit-article-done): Remove text props
+	before parsing header.
+
 2005-09-10  Reiner Steib  <Reiner.Steib@gmx.de>
 
 	* spam-report.el (spam-report-gmane): Fix generation of spam
--- a/lisp/gnus/gnus-sum.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/gnus/gnus-sum.el	Sat Sep 17 19:10:55 2005 +0000
@@ -9561,7 +9561,8 @@
 	    (save-excursion
 	      (save-restriction
 		(message-narrow-to-head)
-		(let ((head (buffer-string))
+		(let ((head (buffer-substring-no-properties
+			     (point-min) (point-max)))
 		      header)
 		  (with-temp-buffer
 		    (insert (format "211 %d Article retrieved.\n"
--- a/lisp/help-fns.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/help-fns.el	Sat Sep 17 19:10:55 2005 +0000
@@ -269,22 +269,20 @@
 (defun help-do-arg-highlight (doc args)
   (with-syntax-table (make-syntax-table emacs-lisp-mode-syntax-table)
     (modify-syntax-entry ?\- "w")
-    (while args
-      (let ((arg (prog1 (car args) (setq args (cdr args)))))
-        (setq doc (replace-regexp-in-string
-                   ;; This is heuristic, but covers all common cases
-                   ;; except ARG1-ARG2
-                   (concat "\\<"                   ; beginning of word
-                           "\\(?:[a-z-]*-\\)?"     ; for xxx-ARG
-                           "\\("
-                           (regexp-quote arg)
-                           "\\)"
-                           "\\(?:es\\|s\\|th\\)?"  ; for ARGth, ARGs
-                           "\\(?:-[a-z-]+\\)?"     ; for ARG-xxx
-                           "\\>")                  ; end of word
-                   (help-default-arg-highlight arg)
-                   doc t t 1))))
-    doc))
+    (dolist (arg args doc)
+      (setq doc (replace-regexp-in-string
+                 ;; This is heuristic, but covers all common cases
+                 ;; except ARG1-ARG2
+                 (concat "\\<"                   ; beginning of word
+                         "\\(?:[a-z-]*-\\)?"     ; for xxx-ARG
+                         "\\("
+                         (regexp-quote arg)
+                         "\\)"
+                         "\\(?:es\\|s\\|th\\)?"  ; for ARGth, ARGs
+                         "\\(?:-[a-z0-9-]+\\)?"  ; for ARG-xxx, ARG-n
+                         "\\>")                  ; end of word
+                 (help-default-arg-highlight arg)
+                 doc t t 1)))))
 
 (defun help-highlight-arguments (usage doc &rest args)
   (when usage
@@ -720,7 +718,7 @@
 	    (dotimes (i 95)
 	      (let ((elt (aref docs i)))
 		(when elt
-		  (insert (+ i ?\ ) ": " elt "\n"))))
+		  (insert (+ i ?\s) ": " elt "\n"))))
 	    (while (setq table (char-table-parent table))
 	      (insert "\nThe parent category table is:")
 	      (describe-vector table 'help-describe-category-set))))))))
--- a/lisp/image.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/image.el	Sat Sep 17 19:10:55 2005 +0000
@@ -49,6 +49,14 @@
 with one argument, a string containing the image data.  If PREDICATE returns
 a non-nil value, TYPE is the image's type.")
 
+(defvar image-load-path
+  (list (file-name-as-directory (expand-file-name "images" data-directory))
+	data-directory 'load-path)
+  "List of locations in which to search for image files.
+If an element is a string, it defines a directory to search in.
+If an element is a variable symbol, the value of that variable is
+used as a list of directories to search.")
+
 (defun image-jpeg-p (data)
   "Value is non-nil if DATA, a string, consists of JFIF image data.
 We accept the tag Exif because that is the same format."
@@ -269,6 +277,20 @@
 	  (delete-overlay overlay)))
       (setq overlays (cdr overlays)))))
 
+(defun image-search-load-path (file path)
+  (let (found pathname)
+    (while (and (not found) (consp path))
+      (cond
+       ((stringp (car path))
+	(setq found
+	      (file-readable-p
+	       (setq pathname (expand-file-name file (car path))))))
+       ((and (symbolp (car path)) (boundp (car path)))
+	(if (setq pathname (image-search-load-path
+			    file (symbol-value (car path))))
+	    (setq found t))))
+      (setq path (cdr path)))
+    (if found pathname)))
 
 ;;;###autoload
 (defun find-image (specs)
@@ -286,7 +308,7 @@
 specification to be returned.  Return nil if no specification is
 satisfied.
 
-The image is looked for first on `load-path' and then in `data-directory'."
+The image is looked for in `image-load-path'."
   (let (image)
     (while (and specs (null image))
       (let* ((spec (car specs))
@@ -296,20 +318,11 @@
 	     found)
 	(when (image-type-available-p type)
 	  (cond ((stringp file)
-		 (let ((path load-path))
-		   (while (and (not found) path)
-		     (let ((try-file (expand-file-name file (car path))))
-		       (when (file-readable-p try-file)
-			 (setq found try-file)))
-		     (setq path (cdr path)))
-		   (unless found
-		     (let ((try-file (expand-file-name file data-directory)))
-		       (if (file-readable-p try-file)
-			   (setq found try-file))))
-		   (if found
-		       (setq image
-			     (cons 'image (plist-put (copy-sequence spec)
-						     :file found))))))
+		 (if (setq found (image-search-load-path
+				  file image-load-path))
+		     (setq image
+			   (cons 'image (plist-put (copy-sequence spec)
+						   :file found)))))
 		((not (null data))
 		 (setq image (cons 'image spec)))))
 	(setq specs (cdr specs))))
--- a/lisp/international/codepage.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/international/codepage.el	Sat Sep 17 19:10:55 2005 +0000
@@ -44,6 +44,8 @@
 
 ;;; Code:
 
+(defvar dos-unsupported-char-glyph)
+
 (defun cp-coding-system-for-codepage-1 (coding mnemonic iso-name
 					       decoder encoder)
   "Make coding system CODING for a DOS codepage using translation tables.
--- a/lisp/international/iso-insert.el	Sat Sep 17 19:00:49 2005 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,632 +0,0 @@
-;;; iso-insert.el --- insert functions for ISO 8859/1  -*- coding: iso-8859-1;-*-
-
-;; Copyright (C) 1987, 1994, 2001 Free Software Foundation, Inc.
-
-;; Author: Howard Gayle
-;; Maintainer: FSF
-;; Keywords: i18n
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; Provides keys for inserting ISO Latin-1 characters.  They use the
-;; prefix key C-x 8.  Type C-x 8 C-h for a list.
-
-;;; Code:
-
-(defun insert-no-break-space ()
-   (interactive "*")
-   (insert ?\ )
-)
-
-(defun insert-inverted-exclamation-mark ()
-   (interactive "*")
-   (insert ?\¡)
-)
-
-(defun insert-cent-sign ()
-   (interactive "*")
-   (insert ?\¢)
-)
-
-(defun insert-pound-sign ()
-   (interactive "*")
-   (insert ?\£)
-)
-
-(defun insert-general-currency-sign ()
-   (interactive "*")
-   (insert ?\¤)
-)
-
-(defun insert-yen-sign ()
-   (interactive "*")
-   (insert ?\¥)
-)
-
-(defun insert-broken-vertical-line ()
-   (interactive "*")
-   (insert ?\¦)
-)
-
-(defun insert-section-sign ()
-   (interactive "*")
-   (insert ?\§)
-)
-
-(defun insert-diaeresis ()
-   (interactive "*")
-   (insert ?\¨)
-)
-
-(defun insert-copyright-sign ()
-   (interactive "*")
-   (insert ?\©)
-)
-
-(defun insert-ordinal-indicator-feminine ()
-   (interactive "*")
-   (insert ?\ª)
-)
-
-(defun insert-angle-quotation-mark-left ()
-   (interactive "*")
-   (insert ?\«)
-)
-
-(defun insert-not-sign ()
-   (interactive "*")
-   (insert ?\¬)
-)
-
-(defun insert-soft-hyphen ()
-   (interactive "*")
-   (insert ?\­)
-)
-
-(defun insert-registered-sign ()
-   (interactive "*")
-   (insert ?\®)
-)
-
-(defun insert-macron ()
-   (interactive "*")
-   (insert ?\¯)
-)
-
-(defun insert-degree-sign ()
-   (interactive "*")
-   (insert ?\°)
-)
-
-(defun insert-plus-or-minus-sign ()
-   (interactive "*")
-   (insert ?\±)
-)
-
-(defun insert-superscript-two ()
-   (interactive "*")
-   (insert ?\²)
-)
-
-(defun insert-superscript-three ()
-   (interactive "*")
-   (insert ?\³)
-)
-
-(defun insert-acute-accent ()
-   (interactive "*")
-   (insert ?\´)
-)
-
-(defun insert-micro-sign ()
-   (interactive "*")
-   (insert ?\µ)
-)
-
-(defun insert-pilcrow ()
-   (interactive "*")
-   (insert ?\¶)
-)
-
-(defun insert-middle-dot ()
-   (interactive "*")
-   (insert ?\·)
-)
-
-(defun insert-cedilla ()
-   (interactive "*")
-   (insert ?\¸)
-)
-
-(defun insert-superscript-one ()
-   (interactive "*")
-   (insert ?\¹)
-)
-
-(defun insert-ordinal-indicator-masculine ()
-   (interactive "*")
-   (insert ?\º)
-)
-
-(defun insert-angle-quotation-mark-right ()
-   (interactive "*")
-   (insert ?\»)
-)
-
-(defun insert-fraction-one-quarter ()
-   (interactive "*")
-   (insert ?\¼)
-)
-
-(defun insert-fraction-one-half ()
-   (interactive "*")
-   (insert ?\½)
-)
-
-(defun insert-fraction-three-quarters ()
-   (interactive "*")
-   (insert ?\¾)
-)
-
-(defun insert-inverted-question-mark ()
-   (interactive "*")
-   (insert ?\¿)
-)
-
-(defun insert-A-grave ()
-   (interactive "*")
-   (insert ?\À)
-)
-
-(defun insert-A-acute ()
-   (interactive "*")
-   (insert ?\Á)
-)
-
-(defun insert-A-circumflex ()
-   (interactive "*")
-   (insert ?\Â)
-)
-
-(defun insert-A-tilde ()
-   (interactive "*")
-   (insert ?\Ã)
-)
-
-(defun insert-A-umlaut ()
-   (interactive "*")
-   (insert ?\Ä)
-)
-
-(defun insert-A-ring ()
-   (interactive "*")
-   (insert ?\Å)
-)
-
-(defun insert-AE ()
-   (interactive "*")
-   (insert ?\Æ)
-)
-
-(defun insert-C-cedilla ()
-   (interactive "*")
-   (insert ?\Ç)
-)
-
-(defun insert-E-grave ()
-   (interactive "*")
-   (insert ?\È)
-)
-
-(defun insert-E-acute ()
-   (interactive "*")
-   (insert ?\É)
-)
-
-(defun insert-E-circumflex ()
-   (interactive "*")
-   (insert ?\Ê)
-)
-
-(defun insert-E-umlaut ()
-   (interactive "*")
-   (insert ?\Ë)
-)
-
-(defun insert-I-grave ()
-   (interactive "*")
-   (insert ?\Ì)
-)
-
-(defun insert-I-acute ()
-   (interactive "*")
-   (insert ?\Í)
-)
-
-(defun insert-I-circumflex ()
-   (interactive "*")
-   (insert ?\Î)
-)
-
-(defun insert-I-umlaut ()
-   (interactive "*")
-   (insert ?\Ï)
-)
-
-(defun insert-D-stroke ()
-   (interactive "*")
-   (insert ?\Ð)
-)
-
-(defun insert-N-tilde ()
-   (interactive "*")
-   (insert ?\Ñ)
-)
-
-(defun insert-O-grave ()
-   (interactive "*")
-   (insert ?\Ò)
-)
-
-(defun insert-O-acute ()
-   (interactive "*")
-   (insert ?\Ó)
-)
-
-(defun insert-O-circumflex ()
-   (interactive "*")
-   (insert ?\Ô)
-)
-
-(defun insert-O-tilde ()
-   (interactive "*")
-   (insert ?\Õ)
-)
-
-(defun insert-O-umlaut ()
-   (interactive "*")
-   (insert ?\Ö)
-)
-
-(defun insert-multiplication-sign ()
-   (interactive "*")
-   (insert ?\×)
-)
-
-(defun insert-O-slash ()
-   (interactive "*")
-   (insert ?\Ø)
-)
-
-(defun insert-U-grave ()
-   (interactive "*")
-   (insert ?\Ù)
-)
-
-(defun insert-U-acute ()
-   (interactive "*")
-   (insert ?\Ú)
-)
-
-(defun insert-U-circumflex ()
-   (interactive "*")
-   (insert ?\Û)
-)
-
-(defun insert-U-umlaut ()
-   (interactive "*")
-   (insert ?\Ü)
-)
-
-(defun insert-Y-acute ()
-   (interactive "*")
-   (insert ?\Ý)
-)
-
-(defun insert-THORN ()
-   (interactive "*")
-   (insert ?\Þ)
-)
-
-(defun insert-ss ()
-   (interactive "*")
-   (insert ?\ß)
-)
-
-(defun insert-a-grave ()
-   (interactive "*")
-   (insert ?\à)
-)
-
-(defun insert-a-acute ()
-   (interactive "*")
-   (insert ?\á)
-)
-
-(defun insert-a-circumflex ()
-   (interactive "*")
-   (insert ?\â)
-)
-
-(defun insert-a-tilde ()
-   (interactive "*")
-   (insert ?\ã)
-)
-
-(defun insert-a-umlaut ()
-   (interactive "*")
-   (insert ?\ä)
-)
-
-(defun insert-a-ring ()
-   (interactive "*")
-   (insert ?\å)
-)
-
-(defun insert-ae ()
-   (interactive "*")
-   (insert ?\æ)
-)
-
-(defun insert-c-cedilla ()
-   (interactive "*")
-   (insert ?\ç)
-)
-
-(defun insert-e-grave ()
-   (interactive "*")
-   (insert ?\è)
-)
-
-(defun insert-e-acute ()
-   (interactive "*")
-   (insert ?\é)
-)
-
-(defun insert-e-circumflex ()
-   (interactive "*")
-   (insert ?\ê)
-)
-
-(defun insert-e-umlaut ()
-   (interactive "*")
-   (insert ?\ë)
-)
-
-(defun insert-i-grave ()
-   (interactive "*")
-   (insert ?\ì)
-)
-
-(defun insert-i-acute ()
-   (interactive "*")
-   (insert ?\í)
-)
-
-(defun insert-i-circumflex ()
-   (interactive "*")
-   (insert ?\î)
-)
-
-(defun insert-i-umlaut ()
-   (interactive "*")
-   (insert ?\ï)
-)
-
-(defun insert-d-stroke ()
-   (interactive "*")
-   (insert ?\ð)
-)
-
-(defun insert-n-tilde ()
-   (interactive "*")
-   (insert ?\ñ)
-)
-
-(defun insert-o-grave ()
-   (interactive "*")
-   (insert ?\ò)
-)
-
-(defun insert-o-acute ()
-   (interactive "*")
-   (insert ?\ó)
-)
-
-(defun insert-o-circumflex ()
-   (interactive "*")
-   (insert ?\ô)
-)
-
-(defun insert-o-tilde ()
-   (interactive "*")
-   (insert ?\õ)
-)
-
-(defun insert-o-umlaut ()
-   (interactive "*")
-   (insert ?\ö)
-)
-
-(defun insert-division-sign ()
-   (interactive "*")
-   (insert ?\÷)
-)
-
-(defun insert-o-slash ()
-   (interactive "*")
-   (insert ?\ø)
-)
-
-(defun insert-u-grave ()
-   (interactive "*")
-   (insert ?\ù)
-)
-
-(defun insert-u-acute ()
-   (interactive "*")
-   (insert ?\ú)
-)
-
-(defun insert-u-circumflex ()
-   (interactive "*")
-   (insert ?\û)
-)
-
-(defun insert-u-umlaut ()
-   (interactive "*")
-   (insert ?\ü)
-)
-
-(defun insert-y-acute ()
-   (interactive "*")
-   (insert ?\ý)
-)
-
-(defun insert-thorn ()
-   (interactive "*")
-   (insert ?\þ)
-)
-
-(defun insert-y-umlaut ()
-   (interactive "*")
-   (insert ?\ÿ)
-)
-
-(defvar 8859-1-map nil "Keymap for ISO 8859/1 character insertion.")
-(if 8859-1-map nil
-   (setq 8859-1-map (make-keymap))
-   (define-key 8859-1-map " "    'insert-no-break-space)
-   (define-key 8859-1-map "!"    'insert-inverted-exclamation-mark)
-   (define-key 8859-1-map "\""   (make-sparse-keymap))
-   (define-key 8859-1-map "\"\"" 'insert-diaeresis)
-   (define-key 8859-1-map "\"A"  'insert-A-umlaut)
-   (define-key 8859-1-map "\"E"  'insert-E-umlaut)
-   (define-key 8859-1-map "\"I"  'insert-I-umlaut)
-   (define-key 8859-1-map "\"O"  'insert-O-umlaut)
-   (define-key 8859-1-map "\"U"  'insert-U-umlaut)
-   (define-key 8859-1-map "\"a"  'insert-a-umlaut)
-   (define-key 8859-1-map "\"e"  'insert-e-umlaut)
-   (define-key 8859-1-map "\"i"  'insert-i-umlaut)
-   (define-key 8859-1-map "\"o"  'insert-o-umlaut)
-   (define-key 8859-1-map "\"u"  'insert-u-umlaut)
-   (define-key 8859-1-map "\"y"  'insert-y-umlaut)
-   (define-key 8859-1-map "'"    (make-sparse-keymap))
-   (define-key 8859-1-map "''"   'insert-acute-accent)
-   (define-key 8859-1-map "'A"   'insert-A-acute)
-   (define-key 8859-1-map "'E"   'insert-E-acute)
-   (define-key 8859-1-map "'I"   'insert-I-acute)
-   (define-key 8859-1-map "'O"   'insert-O-acute)
-   (define-key 8859-1-map "'U"   'insert-U-acute)
-   (define-key 8859-1-map "'Y"   'insert-Y-acute)
-   (define-key 8859-1-map "'a"   'insert-a-acute)
-   (define-key 8859-1-map "'e"   'insert-e-acute)
-   (define-key 8859-1-map "'i"   'insert-i-acute)
-   (define-key 8859-1-map "'o"   'insert-o-acute)
-   (define-key 8859-1-map "'u"   'insert-u-acute)
-   (define-key 8859-1-map "'y"   'insert-y-acute)
-   (define-key 8859-1-map "$"    'insert-general-currency-sign)
-   (define-key 8859-1-map "+"    'insert-plus-or-minus-sign)
-   (define-key 8859-1-map ","    (make-sparse-keymap))
-   (define-key 8859-1-map ",,"   'insert-cedilla)
-   (define-key 8859-1-map ",C"   'insert-C-cedilla)
-   (define-key 8859-1-map ",c"   'insert-c-cedilla)
-   (define-key 8859-1-map "-"    'insert-soft-hyphen)
-   (define-key 8859-1-map "."    'insert-middle-dot)
-   (define-key 8859-1-map "/"    (make-sparse-keymap))
-   (define-key 8859-1-map "//"   'insert-division-sign)
-   (define-key 8859-1-map "/O"   'insert-O-slash)
-   (define-key 8859-1-map "/o"   'insert-o-slash)
-   (define-key 8859-1-map "1"    (make-sparse-keymap))
-   (define-key 8859-1-map "1/"   (make-sparse-keymap))
-   (define-key 8859-1-map "1/2"  'insert-fraction-one-half)
-   (define-key 8859-1-map "1/4"  'insert-fraction-one-quarter)
-   (define-key 8859-1-map "3"    (make-sparse-keymap))
-   (define-key 8859-1-map "3/"   (make-sparse-keymap))
-   (define-key 8859-1-map "3/4"  'insert-fraction-three-quarters)
-   (define-key 8859-1-map "<"    'insert-angle-quotation-mark-left)
-   (define-key 8859-1-map "="    'insert-macron)
-   (define-key 8859-1-map ">"    'insert-angle-quotation-mark-right)
-   (define-key 8859-1-map "?"    'insert-inverted-question-mark)
-   (define-key 8859-1-map "A"    'insert-A-ring)
-   (define-key 8859-1-map "E"    'insert-AE)
-   (define-key 8859-1-map "C"    'insert-copyright-sign)
-   (define-key 8859-1-map "D"    'insert-D-stroke)
-   (define-key 8859-1-map "L"    'insert-pound-sign)
-   (define-key 8859-1-map "P"    'insert-pilcrow)
-   (define-key 8859-1-map "R"    'insert-registered-sign)
-   (define-key 8859-1-map "S"    'insert-section-sign)
-   (define-key 8859-1-map "T"    'insert-THORN)
-   (define-key 8859-1-map "Y"    'insert-yen-sign)
-   (define-key 8859-1-map "^"    (make-sparse-keymap))
-   (define-key 8859-1-map "^1"   'insert-superscript-one)
-   (define-key 8859-1-map "^2"   'insert-superscript-two)
-   (define-key 8859-1-map "^3"   'insert-superscript-three)
-   (define-key 8859-1-map "^A"   'insert-A-circumflex)
-   (define-key 8859-1-map "^E"   'insert-E-circumflex)
-   (define-key 8859-1-map "^I"   'insert-I-circumflex)
-   (define-key 8859-1-map "^O"   'insert-O-circumflex)
-   (define-key 8859-1-map "^U"   'insert-U-circumflex)
-   (define-key 8859-1-map "^a"   'insert-a-circumflex)
-   (define-key 8859-1-map "^e"   'insert-e-circumflex)
-   (define-key 8859-1-map "^i"   'insert-i-circumflex)
-   (define-key 8859-1-map "^o"   'insert-o-circumflex)
-   (define-key 8859-1-map "^u"   'insert-u-circumflex)
-   (define-key 8859-1-map "_"    (make-sparse-keymap))
-   (define-key 8859-1-map "_a"   'insert-ordinal-indicator-feminine)
-   (define-key 8859-1-map "_o"   'insert-ordinal-indicator-masculine)
-   (define-key 8859-1-map "`"    (make-sparse-keymap))
-   (define-key 8859-1-map "`A"   'insert-A-grave)
-   (define-key 8859-1-map "`E"   'insert-E-grave)
-   (define-key 8859-1-map "`I"   'insert-I-grave)
-   (define-key 8859-1-map "`O"   'insert-O-grave)
-   (define-key 8859-1-map "`U"   'insert-U-grave)
-   (define-key 8859-1-map "`a"   'insert-a-grave)
-   (define-key 8859-1-map "`e"   'insert-e-grave)
-   (define-key 8859-1-map "`i"   'insert-i-grave)
-   (define-key 8859-1-map "`o"   'insert-o-grave)
-   (define-key 8859-1-map "`u"   'insert-u-grave)
-   (define-key 8859-1-map "a"    'insert-a-ring)
-   (define-key 8859-1-map "e"    'insert-ae)
-   (define-key 8859-1-map "c"    'insert-cent-sign)
-   (define-key 8859-1-map "d"    'insert-d-stroke)
-   (define-key 8859-1-map "o"    'insert-degree-sign)
-   (define-key 8859-1-map "s"    'insert-ss)
-   (define-key 8859-1-map "t"    'insert-thorn)
-   (define-key 8859-1-map "u"    'insert-micro-sign)
-   (define-key 8859-1-map "x"    'insert-multiplication-sign)
-   (define-key 8859-1-map "|"    'insert-broken-vertical-line)
-   (define-key 8859-1-map "~"    (make-sparse-keymap))
-   (define-key 8859-1-map "~A"   'insert-A-tilde)
-   (define-key 8859-1-map "~N"   'insert-N-tilde)
-   (define-key 8859-1-map "~O"   'insert-O-tilde)
-   (define-key 8859-1-map "~a"   'insert-a-tilde)
-   (define-key 8859-1-map "~n"   'insert-n-tilde)
-   (define-key 8859-1-map "~o"   'insert-o-tilde)
-   (define-key 8859-1-map "~~"   'insert-not-sign)
-   (if (not (lookup-key global-map "\C-x8"))
-      (define-key global-map "\C-x8" 8859-1-map))
-)
-(defalias '8859-1-map 8859-1-map)
-
-(provide 'iso-insert)
-
-;;; arch-tag: eb5f97bd-a034-4851-92ff-ab1f1bf92814
-;;; iso-insert.el ends here
--- a/lisp/mail/sendmail.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/mail/sendmail.el	Sat Sep 17 19:10:55 2005 +0000
@@ -1657,6 +1657,9 @@
 
   (if (eq noerase 'new)
       (pop-to-buffer (generate-new-buffer "*mail*"))
+    (and noerase
+	 (not (get-buffer "*mail*"))
+	 (setq noerase nil))
     (pop-to-buffer "*mail*"))
 
   ;; Avoid danger that the auto-save file can't be written.
@@ -1673,8 +1676,8 @@
   ;; (in case the user has actually visited a file *mail*).
 ;  (set-visited-file-name nil)
   (let (initialized)
-    (and (or (not noerase)
-	     (eq noerase 'new))
+    (and (not (and noerase
+		   (not (eq noerase 'new))))
 	 (if buffer-file-name
 	     (if (buffer-modified-p)
 		 (when (y-or-n-p "Buffer has unsaved changes; reinitialize it and discard them? ")
--- a/lisp/mouse.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/mouse.el	Sat Sep 17 19:10:55 2005 +0000
@@ -153,7 +153,7 @@
 
 (defvar mouse-major-mode-menu-prefix)	; dynamically bound
 
-(defun mouse-major-mode-menu (event prefix)
+(defun mouse-major-mode-menu (event &optional prefix)
   "Pop up a mode-specific menu of mouse commands.
 Default to the Edit menu if the major mode doesn't define a menu."
   ;; Switch to the window clicked on, because otherwise
@@ -173,8 +173,7 @@
 	 ;; default to the edit menu.
 	 (newmap (if ancestor
 		     (make-sparse-keymap (concat mode-name " Mode"))
-		   menu-bar-edit-menu))
-	 result)
+		   menu-bar-edit-menu)))
     (if ancestor
 	;; Make our menu inherit from the desired keymap which we want
 	;; to display as the menu now.
--- a/lisp/net/ange-ftp.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/net/ange-ftp.el	Sat Sep 17 19:10:55 2005 +0000
@@ -1641,81 +1641,75 @@
 ;; on to ange-ftp-process-handle-line to deal with.
 
 (defun ange-ftp-process-filter (proc str)
-  (let ((buffer (process-buffer proc))
-	(old-buffer (current-buffer)))
-
-    ;; Eliminate nulls.
-    (while (string-match "\000+" str)
-      (setq str (replace-match "" nil nil str)))
-
-    ;; see if the buffer is still around... it could have been deleted.
-    (if (buffer-name buffer)
-	(unwind-protect
-	    (progn
-	      (set-buffer (process-buffer proc))
-
-	      ;; handle hash mark printing
-	      (and ange-ftp-process-busy
-		   (string-match "\\`#+\\'" str)
-		   (setq str (ange-ftp-process-handle-hash str)))
-	      (comint-output-filter proc str)
-	      ;; Replace STR by the result of the comint processing.
-	      (setq str (buffer-substring comint-last-output-start
-					  (process-mark proc)))
-	      (if ange-ftp-process-busy
-		  (progn
-		    (setq ange-ftp-process-string (concat ange-ftp-process-string
-							  str))
-
-		    ;; if we gave an empty password to the USER command earlier
-		    ;; then we should send a null password now.
-		    (if (string-match "Password: *$" ange-ftp-process-string)
-			(process-send-string proc "\n"))))
-	      (while (and ange-ftp-process-busy
-			  (string-match "\n" ange-ftp-process-string))
-		(let ((line (substring ange-ftp-process-string
-				       0
-				       (match-beginning 0)))
-                      (seen-prompt nil))
-		  (setq ange-ftp-process-string (substring ange-ftp-process-string
-							   (match-end 0)))
-		  (while (string-match "\\`ftp> *" line)
-                    (setq seen-prompt t)
-		    (setq line (substring line (match-end 0))))
-                  (if (not (and seen-prompt ange-ftp-pending-error-line))
-                      (ange-ftp-process-handle-line line proc)
-                    ;; If we've seen a potential error message and it
-                    ;; hasn't been cancelled by a good message before
-                    ;; seeing a propt, then the error was real.
-                    (delete-process proc)
-                    (setq ange-ftp-process-busy nil
-                          ange-ftp-process-result-line ange-ftp-pending-error-line))))
-
-	      ;; has the ftp client finished?  if so then do some clean-up
-	      ;; actions.
-	      (if (not ange-ftp-process-busy)
-		  (progn
-		    ;; reset the xfer size
-		    (setq ange-ftp-xfer-size 0)
-
-		    ;; issue the "done" message since we've finished.
-		    (if (and ange-ftp-process-msg
-			     ange-ftp-process-verbose
-			     ange-ftp-process-result)
-			(progn
-			  (ange-ftp-message "%s...done" ange-ftp-process-msg)
-			  (ange-ftp-repaint-minibuffer)
-			  (setq ange-ftp-process-msg nil)))
-
-		    ;; is there a continuation we should be calling?  if so,
-		    ;; we'd better call it, making sure we only call it once.
-		    (if ange-ftp-process-continue
-			(let ((cont ange-ftp-process-continue))
-			  (setq ange-ftp-process-continue nil)
-			  (ange-ftp-call-cont cont
-					      ange-ftp-process-result
-					      ange-ftp-process-result-line))))))
-	  (set-buffer old-buffer)))))
+  ;; Eliminate nulls.
+  (while (string-match "\000+" str)
+    (setq str (replace-match "" nil nil str)))
+
+  ;; see if the buffer is still around... it could have been deleted.
+  (when (buffer-live-p (process-buffer proc))
+    (with-current-buffer (process-buffer proc)
+
+      ;; handle hash mark printing
+      (and ange-ftp-process-busy
+           (string-match "^#+$" str)
+           (setq str (ange-ftp-process-handle-hash str)))
+      (comint-output-filter proc str)
+      ;; Replace STR by the result of the comint processing.
+      (setq str (buffer-substring comint-last-output-start
+                                  (process-mark proc)))
+      (if ange-ftp-process-busy
+          (progn
+            (setq ange-ftp-process-string (concat ange-ftp-process-string
+                                                  str))
+
+            ;; if we gave an empty password to the USER command earlier
+            ;; then we should send a null password now.
+            (if (string-match "Password: *$" ange-ftp-process-string)
+                (process-send-string proc "\n"))))
+      (while (and ange-ftp-process-busy
+                  (string-match "\n" ange-ftp-process-string))
+        (let ((line (substring ange-ftp-process-string
+                               0
+                               (match-beginning 0)))
+              (seen-prompt nil))
+          (setq ange-ftp-process-string (substring ange-ftp-process-string
+                                                   (match-end 0)))
+          (while (string-match "\\`ftp> *" line)
+            (setq seen-prompt t)
+            (setq line (substring line (match-end 0))))
+          (if (not (and seen-prompt ange-ftp-pending-error-line))
+              (ange-ftp-process-handle-line line proc)
+            ;; If we've seen a potential error message and it
+            ;; hasn't been cancelled by a good message before
+            ;; seeing a propt, then the error was real.
+            (delete-process proc)
+            (setq ange-ftp-process-busy nil
+                  ange-ftp-process-result-line ange-ftp-pending-error-line))))
+
+      ;; has the ftp client finished?  if so then do some clean-up
+      ;; actions.
+      (if (not ange-ftp-process-busy)
+          (progn
+            ;; reset the xfer size
+            (setq ange-ftp-xfer-size 0)
+
+            ;; issue the "done" message since we've finished.
+            (if (and ange-ftp-process-msg
+                     ange-ftp-process-verbose
+                     ange-ftp-process-result)
+                (progn
+                  (ange-ftp-message "%s...done" ange-ftp-process-msg)
+                  (ange-ftp-repaint-minibuffer)
+                  (setq ange-ftp-process-msg nil)))
+
+            ;; is there a continuation we should be calling?  if so,
+            ;; we'd better call it, making sure we only call it once.
+            (if ange-ftp-process-continue
+                (let ((cont ange-ftp-process-continue))
+                  (setq ange-ftp-process-continue nil)
+                  (ange-ftp-call-cont cont
+                                      ange-ftp-process-result
+                                      ange-ftp-process-result-line))))))))
 
 (defun ange-ftp-process-sentinel (proc str)
   "When ftp process changes state, nuke all file-entries in cache."
@@ -1795,8 +1789,7 @@
 
 (defun ange-ftp-gwp-start (host user name args)
   "Login to the gateway machine and fire up an ftp process."
-  (let* ((gw-user (ange-ftp-get-user ange-ftp-gateway-host))
-	 ;; It would be nice to make process-connection-type nil,
+  (let* (;; It would be nice to make process-connection-type nil,
 	 ;; but that doesn't work: ftp never responds.
 	 ;; Can anyone find a fix for that?
 	 (proc (let ((process-connection-type t))
@@ -2137,7 +2130,6 @@
       (save-excursion
 	(set-buffer (process-buffer proc))
 	(let* ((status (ange-ftp-raw-send-cmd proc "hash"))
-	       (result (car status))
 	       (line (cdr status)))
 	  (save-match-data
 	    (if (string-match ange-ftp-hash-mark-msgs line)
@@ -4484,8 +4476,7 @@
 ;; `ange-ftp-ls' handles this.
 
 (defun ange-ftp-insert-directory (file switches &optional wildcard full)
-  (let ((short (ange-ftp-abbreviate-filename file))
-	(parsed (ange-ftp-ftp-name (expand-file-name file)))
+  (let ((parsed (ange-ftp-ftp-name (expand-file-name file)))
 	tem)
     (if parsed
 	(if (and (not wildcard)
@@ -4511,10 +4502,9 @@
 (defun ange-ftp-file-name-sans-versions (file keep-backup-version)
   (let* ((short (ange-ftp-abbreviate-filename file))
 	 (parsed (ange-ftp-ftp-name short))
-	 host-type func)
+	 func)
     (if parsed
-	(setq host-type (ange-ftp-host-type (car parsed))
-	      func (cdr (assq (ange-ftp-host-type (car parsed))
+	(setq func (cdr (assq (ange-ftp-host-type (car parsed))
 			      ange-ftp-sans-version-alist))))
     (if func (funcall func file keep-backup-version)
       (ange-ftp-real-file-name-sans-versions file keep-backup-version))))
--- a/lisp/net/newsticker.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/net/newsticker.el	Sat Sep 17 19:10:55 2005 +0000
@@ -10,7 +10,7 @@
 ;; Created:     17. June 2003
 ;; Keywords:    News, RSS
 ;; Time-stamp:  "26. August 2005, 16:33:46 (ulf)"
-;; CVS-Version: $Id: newsticker.el,v 1.2 2005/09/12 22:54:28 miles Exp $
+;; CVS-Version: $Id: newsticker.el,v 1.3 2005/09/13 08:47:44 lektu Exp $
 
 (defconst newsticker-version "1.8" "Version number of newsticker.el.")
 
@@ -86,7 +86,7 @@
 ;; following.
 ;;   (add-hook 'newsticker-mode-hook 'imenu-add-menubar-index)
 
-;; That's it. 
+;; That's it.
 
 ;; Usage
 ;; -----
@@ -353,6 +353,11 @@
 (require 'derived)
 (require 'xml)
 
+;; Silence warnings
+(defvar tool-bar-map)
+(defvar w3-mode-map)
+(defvar w3m-minor-mode-map)
+
 ;; ======================================================================
 ;;; Customizables
 ;; ======================================================================
@@ -967,7 +972,7 @@
   :type 'boolean
   :set 'newsticker--set-customvar
   :group 'newsticker-ticker)
-  
+
 (defcustom newsticker-hide-old-items-in-echo-area
   t
   "Decides whether to show only the newest news items in the ticker.
@@ -2368,7 +2373,7 @@
             (run-at-time newsticker-display-interval
                          newsticker-display-interval
                          'newsticker--display-tick))))
-  
+
 (defun newsticker-stop ()
   "Stop the newsticker and the newsticker-ticker.
 Cancel the timers for display and retrieval.  Run `newsticker-stop-hook'
@@ -2429,7 +2434,7 @@
        ;; Emacs 21.3.50 does not care if we turn off auto-fill in the
        ;; definition of newsticker-mode, so we do it here (again)
        (auto-fill-mode -1)
-       
+
        (set-buffer-file-coding-system 'utf-8)
 
        (if newsticker-use-full-width
@@ -2521,7 +2526,7 @@
                           (w3m-remove-image
                            pos (next-single-property-change pos 'w3m-image))
                         (w3m-toggle-inline-image t))))))))))))
-  
+
 ;; ======================================================================
 ;;; keymap stuff
 ;; ======================================================================
@@ -2789,7 +2794,7 @@
   (interactive)
   (newsticker--buffer-hideshow 'desc-old nil)
   (newsticker--buffer-redraw))
-  
+
 (defun newsticker-show-old-item-desc ()
   "Show the description of old items."
   (interactive)
@@ -2863,7 +2868,7 @@
   "Hide description of entry at point."
   (interactive)
   (save-excursion
-    (let* (pos1 pos2 
+    (let* (pos1 pos2
                 (inhibit-read-only t)
                 inv-prop org-inv-prop
                 is-invisible)
@@ -2890,7 +2895,7 @@
   "Show description of entry at point."
   (interactive)
   (save-excursion
-    (let* (pos1 pos2 
+    (let* (pos1 pos2
                 (inhibit-read-only t)
                 inv-prop org-inv-prop
                 is-invisible)
@@ -3049,7 +3054,7 @@
         (set-process-coding-system proc 'no-conversion 'no-conversion)
         (set-process-sentinel proc 'newsticker--sentinel)))))
 
-  
+
 (defun newsticker-mouse-browse-url (event)
   "Call `browse-url' for the link of the item at which the EVENT occurred."
   (interactive "e")
@@ -3157,7 +3162,7 @@
                   (let ((start (match-beginning 0)))
                     (unless (search-forward "-->" nil t)
                       (error "Can't find end of comment"))
-                    (delete-region start (point)))) 
+                    (delete-region start (point))))
                 ;; And another one (20050702)! If description is HTML
                 ;; encoded and starts with a `<', wrap the whole
                 ;; description in a CDATA expression.  This happened for
@@ -3324,7 +3329,7 @@
                              (guid (if (stringp tguid)
                                        tguid
                                      (car (xml-node-children tguid)))))
-                        ;;(message "guid=%s" guid) 
+                        ;;(message "guid=%s" guid)
                         (setq old-item
                               (newsticker--cache-contains newsticker--cache
                                                           name-symbol title
@@ -3396,7 +3401,7 @@
         (when (and imageurl
                    (string-match "%l" newsticker-heading-format))
           (newsticker--image-get name imageurl))))))
-  
+
 (defun newsticker--display-tick ()
   "Called from the display timer.
 This function calls a display function, according to the variable
@@ -3828,17 +3833,17 @@
                                                           feed-name-symbol)))
                     items)
               (put-text-property pos (point) 'feed (car feed))
-              
+
               ;; insert empty line between feeds
               (let ((p (point)))
                 (insert "\n")
                 (put-text-property p (point) 'hard t)))))
         (append newsticker-url-list newsticker-url-list-defaults))
-  
+
   (newsticker--buffer-set-faces (point-min) (point-max))
   (newsticker--buffer-set-invisibility (point-min) (point-max))
   (goto-char (point-min)))
-  
+
 (defun newsticker--buffer-insert-item (item &optional feed-name-symbol)
   "Insert a news item in the current buffer.
 Insert the string PREFIX and a formatted representation of the
@@ -3889,7 +3894,7 @@
                (setq format newsticker-item-format)
              (if (eq type 'feed)
                  (setq format newsticker-heading-format)))
-           
+
            (while (> (length format) 0)
              (let ((prefix (if (> (length format) 1)
                                (substring format 0 2)
@@ -3971,7 +3976,7 @@
                         ;; in case that the format string contained newlines
                         (put-text-property p (point) 'hard t))
                       (setq format (substring format (match-beginning 2)))))))
-    
+
            ;; decode HTML if possible...
            (let ((is-rendered-HTML nil))
              (when (and newsticker-html-renderer pos-text-start pos-text-end)
@@ -3990,8 +3995,6 @@
                          (save-excursion
                            (funcall newsticker-html-renderer pos-text-start
                                     pos-text-end)))
-                       ;; FIXME: compiler warning about free variable
-                       ;; w3m-minor-mode-map
                        (cond ((eq newsticker-html-renderer 'w3m-region)
                               (add-text-properties pos (point-max)
                                                    (list 'keymap
@@ -4060,7 +4063,7 @@
              (add-text-properties pos (point)
                                   (list 'nt-title (newsticker--title item)
                                         'nt-desc (newsticker--desc item))))
-    
+
            (add-text-properties pos (point)
                                 (list 'nt-type type
                                       'nt-face type
@@ -4083,7 +4086,7 @@
            ;; left margin
            ;;(unless (memq type '(feed item))
            ;;(set-left-margin pos (1- (point)) 1))
-           
+
            ;; save rendered stuff
            (cond ((eq type 'desc)
 		  ;; preformatted contents
@@ -4201,8 +4204,8 @@
         (put-text-property (max (point-min) pos1) (1- pos2)
                            'invisible
                            (list (intern
-                                  (concat 
-                                   (symbol-name 
+                                  (concat
+                                   (symbol-name
                                     (if (eq nt-type 'extra) 'desc nt-type))
                                    "-"
                                    (symbol-name nt-age)))
@@ -4218,8 +4221,8 @@
         (put-text-property (1- pos1) (1- pos2)
                            'invisible
                            (list (intern
-                                  (concat 
-                                   (symbol-name 
+                                  (concat
+                                   (symbol-name
                                     (if (eq nt-type 'extra) 'desc nt-type))
                                    "-"
                                    (symbol-name nt-age)))
@@ -4253,7 +4256,7 @@
                      'newsticker-enclosure-face))))
     (when face
       (put-text-property pos1 (max pos1 pos2) 'face face))))
-         
+
 (defun newsticker--insert-image (img string)
   "Insert IMG with STRING at point.
 This is a work-around for a strange behavior of Emacs versions before
@@ -4528,7 +4531,7 @@
                   (newsticker--debug-msg
                    "Item `%s' from %s has expired on %s"
                    (newsticker--title item)
-                   (format-time-string "%Y-%02m-%d, %H:%M" 
+                   (format-time-string "%Y-%02m-%d, %H:%M"
                                        (newsticker--time item))
                    (format-time-string "%Y-%02m-%d, %H:%M" exp-time))
                   (setcar (nthcdr 4 item) new-age)))))
@@ -4746,7 +4749,7 @@
             (setcdr feed-list (sort (cdr feed-list)
                                     sort-fun)))
           newsticker--cache)))
-  
+
 (defun newsticker--cache-update (&optional save)
   "Update newsticker cache file.
 If optional argument SAVE is not nil the cache file is saved to disk."
@@ -4832,7 +4835,7 @@
                            (list name url nil nil nil) t)))
           outlines))
   (customize-variable 'newsticker-url-list))
-  
+
 ;; ======================================================================
 ;;; Auto marking
 ;; ======================================================================
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/obsolete/iso-insert.el	Sat Sep 17 19:10:55 2005 +0000
@@ -0,0 +1,632 @@
+;;; iso-insert.el --- insert functions for ISO 8859/1  -*- coding: iso-8859-1;-*-
+
+;; Copyright (C) 1987, 1994, 2001 Free Software Foundation, Inc.
+
+;; Author: Howard Gayle
+;; Maintainer: FSF
+;; Keywords: i18n
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Provides keys for inserting ISO Latin-1 characters.  They use the
+;; prefix key C-x 8.  Type C-x 8 C-h for a list.
+
+;;; Code:
+
+(defun insert-no-break-space ()
+   (interactive "*")
+   (insert ?\ )
+)
+
+(defun insert-inverted-exclamation-mark ()
+   (interactive "*")
+   (insert ?\¡)
+)
+
+(defun insert-cent-sign ()
+   (interactive "*")
+   (insert ?\¢)
+)
+
+(defun insert-pound-sign ()
+   (interactive "*")
+   (insert ?\£)
+)
+
+(defun insert-general-currency-sign ()
+   (interactive "*")
+   (insert ?\¤)
+)
+
+(defun insert-yen-sign ()
+   (interactive "*")
+   (insert ?\¥)
+)
+
+(defun insert-broken-vertical-line ()
+   (interactive "*")
+   (insert ?\¦)
+)
+
+(defun insert-section-sign ()
+   (interactive "*")
+   (insert ?\§)
+)
+
+(defun insert-diaeresis ()
+   (interactive "*")
+   (insert ?\¨)
+)
+
+(defun insert-copyright-sign ()
+   (interactive "*")
+   (insert ?\©)
+)
+
+(defun insert-ordinal-indicator-feminine ()
+   (interactive "*")
+   (insert ?\ª)
+)
+
+(defun insert-angle-quotation-mark-left ()
+   (interactive "*")
+   (insert ?\«)
+)
+
+(defun insert-not-sign ()
+   (interactive "*")
+   (insert ?\¬)
+)
+
+(defun insert-soft-hyphen ()
+   (interactive "*")
+   (insert ?\­)
+)
+
+(defun insert-registered-sign ()
+   (interactive "*")
+   (insert ?\®)
+)
+
+(defun insert-macron ()
+   (interactive "*")
+   (insert ?\¯)
+)
+
+(defun insert-degree-sign ()
+   (interactive "*")
+   (insert ?\°)
+)
+
+(defun insert-plus-or-minus-sign ()
+   (interactive "*")
+   (insert ?\±)
+)
+
+(defun insert-superscript-two ()
+   (interactive "*")
+   (insert ?\²)
+)
+
+(defun insert-superscript-three ()
+   (interactive "*")
+   (insert ?\³)
+)
+
+(defun insert-acute-accent ()
+   (interactive "*")
+   (insert ?\´)
+)
+
+(defun insert-micro-sign ()
+   (interactive "*")
+   (insert ?\µ)
+)
+
+(defun insert-pilcrow ()
+   (interactive "*")
+   (insert ?\¶)
+)
+
+(defun insert-middle-dot ()
+   (interactive "*")
+   (insert ?\·)
+)
+
+(defun insert-cedilla ()
+   (interactive "*")
+   (insert ?\¸)
+)
+
+(defun insert-superscript-one ()
+   (interactive "*")
+   (insert ?\¹)
+)
+
+(defun insert-ordinal-indicator-masculine ()
+   (interactive "*")
+   (insert ?\º)
+)
+
+(defun insert-angle-quotation-mark-right ()
+   (interactive "*")
+   (insert ?\»)
+)
+
+(defun insert-fraction-one-quarter ()
+   (interactive "*")
+   (insert ?\¼)
+)
+
+(defun insert-fraction-one-half ()
+   (interactive "*")
+   (insert ?\½)
+)
+
+(defun insert-fraction-three-quarters ()
+   (interactive "*")
+   (insert ?\¾)
+)
+
+(defun insert-inverted-question-mark ()
+   (interactive "*")
+   (insert ?\¿)
+)
+
+(defun insert-A-grave ()
+   (interactive "*")
+   (insert ?\À)
+)
+
+(defun insert-A-acute ()
+   (interactive "*")
+   (insert ?\Á)
+)
+
+(defun insert-A-circumflex ()
+   (interactive "*")
+   (insert ?\Â)
+)
+
+(defun insert-A-tilde ()
+   (interactive "*")
+   (insert ?\Ã)
+)
+
+(defun insert-A-umlaut ()
+   (interactive "*")
+   (insert ?\Ä)
+)
+
+(defun insert-A-ring ()
+   (interactive "*")
+   (insert ?\Å)
+)
+
+(defun insert-AE ()
+   (interactive "*")
+   (insert ?\Æ)
+)
+
+(defun insert-C-cedilla ()
+   (interactive "*")
+   (insert ?\Ç)
+)
+
+(defun insert-E-grave ()
+   (interactive "*")
+   (insert ?\È)
+)
+
+(defun insert-E-acute ()
+   (interactive "*")
+   (insert ?\É)
+)
+
+(defun insert-E-circumflex ()
+   (interactive "*")
+   (insert ?\Ê)
+)
+
+(defun insert-E-umlaut ()
+   (interactive "*")
+   (insert ?\Ë)
+)
+
+(defun insert-I-grave ()
+   (interactive "*")
+   (insert ?\Ì)
+)
+
+(defun insert-I-acute ()
+   (interactive "*")
+   (insert ?\Í)
+)
+
+(defun insert-I-circumflex ()
+   (interactive "*")
+   (insert ?\Î)
+)
+
+(defun insert-I-umlaut ()
+   (interactive "*")
+   (insert ?\Ï)
+)
+
+(defun insert-D-stroke ()
+   (interactive "*")
+   (insert ?\Ð)
+)
+
+(defun insert-N-tilde ()
+   (interactive "*")
+   (insert ?\Ñ)
+)
+
+(defun insert-O-grave ()
+   (interactive "*")
+   (insert ?\Ò)
+)
+
+(defun insert-O-acute ()
+   (interactive "*")
+   (insert ?\Ó)
+)
+
+(defun insert-O-circumflex ()
+   (interactive "*")
+   (insert ?\Ô)
+)
+
+(defun insert-O-tilde ()
+   (interactive "*")
+   (insert ?\Õ)
+)
+
+(defun insert-O-umlaut ()
+   (interactive "*")
+   (insert ?\Ö)
+)
+
+(defun insert-multiplication-sign ()
+   (interactive "*")
+   (insert ?\×)
+)
+
+(defun insert-O-slash ()
+   (interactive "*")
+   (insert ?\Ø)
+)
+
+(defun insert-U-grave ()
+   (interactive "*")
+   (insert ?\Ù)
+)
+
+(defun insert-U-acute ()
+   (interactive "*")
+   (insert ?\Ú)
+)
+
+(defun insert-U-circumflex ()
+   (interactive "*")
+   (insert ?\Û)
+)
+
+(defun insert-U-umlaut ()
+   (interactive "*")
+   (insert ?\Ü)
+)
+
+(defun insert-Y-acute ()
+   (interactive "*")
+   (insert ?\Ý)
+)
+
+(defun insert-THORN ()
+   (interactive "*")
+   (insert ?\Þ)
+)
+
+(defun insert-ss ()
+   (interactive "*")
+   (insert ?\ß)
+)
+
+(defun insert-a-grave ()
+   (interactive "*")
+   (insert ?\à)
+)
+
+(defun insert-a-acute ()
+   (interactive "*")
+   (insert ?\á)
+)
+
+(defun insert-a-circumflex ()
+   (interactive "*")
+   (insert ?\â)
+)
+
+(defun insert-a-tilde ()
+   (interactive "*")
+   (insert ?\ã)
+)
+
+(defun insert-a-umlaut ()
+   (interactive "*")
+   (insert ?\ä)
+)
+
+(defun insert-a-ring ()
+   (interactive "*")
+   (insert ?\å)
+)
+
+(defun insert-ae ()
+   (interactive "*")
+   (insert ?\æ)
+)
+
+(defun insert-c-cedilla ()
+   (interactive "*")
+   (insert ?\ç)
+)
+
+(defun insert-e-grave ()
+   (interactive "*")
+   (insert ?\è)
+)
+
+(defun insert-e-acute ()
+   (interactive "*")
+   (insert ?\é)
+)
+
+(defun insert-e-circumflex ()
+   (interactive "*")
+   (insert ?\ê)
+)
+
+(defun insert-e-umlaut ()
+   (interactive "*")
+   (insert ?\ë)
+)
+
+(defun insert-i-grave ()
+   (interactive "*")
+   (insert ?\ì)
+)
+
+(defun insert-i-acute ()
+   (interactive "*")
+   (insert ?\í)
+)
+
+(defun insert-i-circumflex ()
+   (interactive "*")
+   (insert ?\î)
+)
+
+(defun insert-i-umlaut ()
+   (interactive "*")
+   (insert ?\ï)
+)
+
+(defun insert-d-stroke ()
+   (interactive "*")
+   (insert ?\ð)
+)
+
+(defun insert-n-tilde ()
+   (interactive "*")
+   (insert ?\ñ)
+)
+
+(defun insert-o-grave ()
+   (interactive "*")
+   (insert ?\ò)
+)
+
+(defun insert-o-acute ()
+   (interactive "*")
+   (insert ?\ó)
+)
+
+(defun insert-o-circumflex ()
+   (interactive "*")
+   (insert ?\ô)
+)
+
+(defun insert-o-tilde ()
+   (interactive "*")
+   (insert ?\õ)
+)
+
+(defun insert-o-umlaut ()
+   (interactive "*")
+   (insert ?\ö)
+)
+
+(defun insert-division-sign ()
+   (interactive "*")
+   (insert ?\÷)
+)
+
+(defun insert-o-slash ()
+   (interactive "*")
+   (insert ?\ø)
+)
+
+(defun insert-u-grave ()
+   (interactive "*")
+   (insert ?\ù)
+)
+
+(defun insert-u-acute ()
+   (interactive "*")
+   (insert ?\ú)
+)
+
+(defun insert-u-circumflex ()
+   (interactive "*")
+   (insert ?\û)
+)
+
+(defun insert-u-umlaut ()
+   (interactive "*")
+   (insert ?\ü)
+)
+
+(defun insert-y-acute ()
+   (interactive "*")
+   (insert ?\ý)
+)
+
+(defun insert-thorn ()
+   (interactive "*")
+   (insert ?\þ)
+)
+
+(defun insert-y-umlaut ()
+   (interactive "*")
+   (insert ?\ÿ)
+)
+
+(defvar 8859-1-map nil "Keymap for ISO 8859/1 character insertion.")
+(if 8859-1-map nil
+   (setq 8859-1-map (make-keymap))
+   (define-key 8859-1-map " "    'insert-no-break-space)
+   (define-key 8859-1-map "!"    'insert-inverted-exclamation-mark)
+   (define-key 8859-1-map "\""   (make-sparse-keymap))
+   (define-key 8859-1-map "\"\"" 'insert-diaeresis)
+   (define-key 8859-1-map "\"A"  'insert-A-umlaut)
+   (define-key 8859-1-map "\"E"  'insert-E-umlaut)
+   (define-key 8859-1-map "\"I"  'insert-I-umlaut)
+   (define-key 8859-1-map "\"O"  'insert-O-umlaut)
+   (define-key 8859-1-map "\"U"  'insert-U-umlaut)
+   (define-key 8859-1-map "\"a"  'insert-a-umlaut)
+   (define-key 8859-1-map "\"e"  'insert-e-umlaut)
+   (define-key 8859-1-map "\"i"  'insert-i-umlaut)
+   (define-key 8859-1-map "\"o"  'insert-o-umlaut)
+   (define-key 8859-1-map "\"u"  'insert-u-umlaut)
+   (define-key 8859-1-map "\"y"  'insert-y-umlaut)
+   (define-key 8859-1-map "'"    (make-sparse-keymap))
+   (define-key 8859-1-map "''"   'insert-acute-accent)
+   (define-key 8859-1-map "'A"   'insert-A-acute)
+   (define-key 8859-1-map "'E"   'insert-E-acute)
+   (define-key 8859-1-map "'I"   'insert-I-acute)
+   (define-key 8859-1-map "'O"   'insert-O-acute)
+   (define-key 8859-1-map "'U"   'insert-U-acute)
+   (define-key 8859-1-map "'Y"   'insert-Y-acute)
+   (define-key 8859-1-map "'a"   'insert-a-acute)
+   (define-key 8859-1-map "'e"   'insert-e-acute)
+   (define-key 8859-1-map "'i"   'insert-i-acute)
+   (define-key 8859-1-map "'o"   'insert-o-acute)
+   (define-key 8859-1-map "'u"   'insert-u-acute)
+   (define-key 8859-1-map "'y"   'insert-y-acute)
+   (define-key 8859-1-map "$"    'insert-general-currency-sign)
+   (define-key 8859-1-map "+"    'insert-plus-or-minus-sign)
+   (define-key 8859-1-map ","    (make-sparse-keymap))
+   (define-key 8859-1-map ",,"   'insert-cedilla)
+   (define-key 8859-1-map ",C"   'insert-C-cedilla)
+   (define-key 8859-1-map ",c"   'insert-c-cedilla)
+   (define-key 8859-1-map "-"    'insert-soft-hyphen)
+   (define-key 8859-1-map "."    'insert-middle-dot)
+   (define-key 8859-1-map "/"    (make-sparse-keymap))
+   (define-key 8859-1-map "//"   'insert-division-sign)
+   (define-key 8859-1-map "/O"   'insert-O-slash)
+   (define-key 8859-1-map "/o"   'insert-o-slash)
+   (define-key 8859-1-map "1"    (make-sparse-keymap))
+   (define-key 8859-1-map "1/"   (make-sparse-keymap))
+   (define-key 8859-1-map "1/2"  'insert-fraction-one-half)
+   (define-key 8859-1-map "1/4"  'insert-fraction-one-quarter)
+   (define-key 8859-1-map "3"    (make-sparse-keymap))
+   (define-key 8859-1-map "3/"   (make-sparse-keymap))
+   (define-key 8859-1-map "3/4"  'insert-fraction-three-quarters)
+   (define-key 8859-1-map "<"    'insert-angle-quotation-mark-left)
+   (define-key 8859-1-map "="    'insert-macron)
+   (define-key 8859-1-map ">"    'insert-angle-quotation-mark-right)
+   (define-key 8859-1-map "?"    'insert-inverted-question-mark)
+   (define-key 8859-1-map "A"    'insert-A-ring)
+   (define-key 8859-1-map "E"    'insert-AE)
+   (define-key 8859-1-map "C"    'insert-copyright-sign)
+   (define-key 8859-1-map "D"    'insert-D-stroke)
+   (define-key 8859-1-map "L"    'insert-pound-sign)
+   (define-key 8859-1-map "P"    'insert-pilcrow)
+   (define-key 8859-1-map "R"    'insert-registered-sign)
+   (define-key 8859-1-map "S"    'insert-section-sign)
+   (define-key 8859-1-map "T"    'insert-THORN)
+   (define-key 8859-1-map "Y"    'insert-yen-sign)
+   (define-key 8859-1-map "^"    (make-sparse-keymap))
+   (define-key 8859-1-map "^1"   'insert-superscript-one)
+   (define-key 8859-1-map "^2"   'insert-superscript-two)
+   (define-key 8859-1-map "^3"   'insert-superscript-three)
+   (define-key 8859-1-map "^A"   'insert-A-circumflex)
+   (define-key 8859-1-map "^E"   'insert-E-circumflex)
+   (define-key 8859-1-map "^I"   'insert-I-circumflex)
+   (define-key 8859-1-map "^O"   'insert-O-circumflex)
+   (define-key 8859-1-map "^U"   'insert-U-circumflex)
+   (define-key 8859-1-map "^a"   'insert-a-circumflex)
+   (define-key 8859-1-map "^e"   'insert-e-circumflex)
+   (define-key 8859-1-map "^i"   'insert-i-circumflex)
+   (define-key 8859-1-map "^o"   'insert-o-circumflex)
+   (define-key 8859-1-map "^u"   'insert-u-circumflex)
+   (define-key 8859-1-map "_"    (make-sparse-keymap))
+   (define-key 8859-1-map "_a"   'insert-ordinal-indicator-feminine)
+   (define-key 8859-1-map "_o"   'insert-ordinal-indicator-masculine)
+   (define-key 8859-1-map "`"    (make-sparse-keymap))
+   (define-key 8859-1-map "`A"   'insert-A-grave)
+   (define-key 8859-1-map "`E"   'insert-E-grave)
+   (define-key 8859-1-map "`I"   'insert-I-grave)
+   (define-key 8859-1-map "`O"   'insert-O-grave)
+   (define-key 8859-1-map "`U"   'insert-U-grave)
+   (define-key 8859-1-map "`a"   'insert-a-grave)
+   (define-key 8859-1-map "`e"   'insert-e-grave)
+   (define-key 8859-1-map "`i"   'insert-i-grave)
+   (define-key 8859-1-map "`o"   'insert-o-grave)
+   (define-key 8859-1-map "`u"   'insert-u-grave)
+   (define-key 8859-1-map "a"    'insert-a-ring)
+   (define-key 8859-1-map "e"    'insert-ae)
+   (define-key 8859-1-map "c"    'insert-cent-sign)
+   (define-key 8859-1-map "d"    'insert-d-stroke)
+   (define-key 8859-1-map "o"    'insert-degree-sign)
+   (define-key 8859-1-map "s"    'insert-ss)
+   (define-key 8859-1-map "t"    'insert-thorn)
+   (define-key 8859-1-map "u"    'insert-micro-sign)
+   (define-key 8859-1-map "x"    'insert-multiplication-sign)
+   (define-key 8859-1-map "|"    'insert-broken-vertical-line)
+   (define-key 8859-1-map "~"    (make-sparse-keymap))
+   (define-key 8859-1-map "~A"   'insert-A-tilde)
+   (define-key 8859-1-map "~N"   'insert-N-tilde)
+   (define-key 8859-1-map "~O"   'insert-O-tilde)
+   (define-key 8859-1-map "~a"   'insert-a-tilde)
+   (define-key 8859-1-map "~n"   'insert-n-tilde)
+   (define-key 8859-1-map "~o"   'insert-o-tilde)
+   (define-key 8859-1-map "~~"   'insert-not-sign)
+   (if (not (lookup-key global-map "\C-x8"))
+      (define-key global-map "\C-x8" 8859-1-map))
+)
+(defalias '8859-1-map 8859-1-map)
+
+(provide 'iso-insert)
+
+;;; arch-tag: eb5f97bd-a034-4851-92ff-ab1f1bf92814
+;;; iso-insert.el ends here
--- a/lisp/pcvs-defs.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/pcvs-defs.el	Sat Sep 17 19:10:55 2005 +0000
@@ -38,11 +38,14 @@
   "*Name or full path of the cvs executable.")
 
 (defvar cvs-version
+  ;; With the divergence of the CVSNT codebase and version numbers, this is
+  ;; not really good any more.
   (ignore-errors
     (with-temp-buffer
       (call-process cvs-program nil t nil "-v")
       (goto-char (point-min))
-      (when (re-search-forward "(CVS) \\([0-9]+\\)\\.\\([0-9]+\\)" nil t)
+      (when (re-search-forward "(CVS\\(NT\\)?) \\([0-9]+\\)\\.\\([0-9]+\\)"
+                               nil t)
 	(cons (string-to-number (match-string 1))
 	      (string-to-number (match-string 2))))))
   "*Version of `cvs' installed on your system.
@@ -490,8 +493,11 @@
 ;; cvs-1.10 and above can take file arguments in other directories
 ;; while others need to be executed once per directory
 (defvar cvs-execute-single-dir
-  (if (and (consp cvs-version)
-	    (or (>= (cdr cvs-version) 10) (> (car cvs-version) 1)))
+  (if (or (null cvs-version)
+          (or (>= (cdr cvs-version) 10) (> (car cvs-version) 1)))
+      ;; Supposedly some recent versions of CVS output some directory info
+      ;; as they recurse downthe tree, but it's not good enough in the case
+      ;; where we run "cvs status foo bar/foo".
       '("status")
     t)
   "Whether cvs commands should be executed a directory at a time.
@@ -506,7 +512,7 @@
 a case the sanity check made by pcl-cvs fails and you will have to manually
 set this variable to t (until the cvs server is upgraded).
 When the above problem occurs, pcl-cvs should (hopefully) catch cvs' error
-message and replace it with a message tell you to change this variable.")
+message and replace it with a message telling you to change this variable.")
 
 ;;
 (provide 'pcvs-defs)
--- a/lisp/progmodes/hideshow.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/progmodes/hideshow.el	Sat Sep 17 19:10:55 2005 +0000
@@ -1,12 +1,12 @@
 ;;; hideshow.el --- minor mode cmds to selectively display code/comment blocks
 
 ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-;;               2004, 2005  Free Software Foundation
+;;               2004, 2005  Free Software Foundation, Inc.
 
 ;; Author: Thien-Thi Nguyen <ttn@gnu.org>
 ;;      Dan Nicolaescu <dann@ics.uci.edu>
 ;; Keywords: C C++ java lisp tools editing comments blocks hiding outlines
-;; Maintainer-Version: 5.58.2.4
+;; Maintainer-Version: 5.65.2.2
 ;; Time-of-Day-Author-Most-Likely-to-be-Recalcitrant: early morning
 
 ;; This file is part of GNU Emacs.
@@ -208,11 +208,11 @@
 ;; Thanks go to the following people for valuable ideas, code and
 ;; bug reports.
 ;;
-;;     Dean Andrews, Alf-Ivar Holm, Holger Bauer, Christoph Conrad, Dave
-;;     Love, Dirk Herrmann, Gael Marziou, Jan Djarv, Guillaume Leray,
-;;     Moody Ahmad, Preston F. Crow, Lars Lindberg, Reto Zimmermann,
-;;     Keith Sheffield, Chew Meng Kuan, Tony Lam, Pete Ware, François
-;;     Pinard, Stefan Monnier, Joseph Eydelnant, Michael Ernst
+;;  Dean Andrews, Alf-Ivar Holm, Holger Bauer, Christoph Conrad, Dave Love,
+;;  Dirk Herrmann, Gael Marziou, Jan Djarv, Guillaume Leray, Moody Ahmad,
+;;  Preston F. Crow, Lars Lindberg, Reto Zimmermann, Keith Sheffield,
+;;  Chew Meng Kuan, Tony Lam, Pete Ware, François Pinard, Stefan Monnier,
+;;  Joseph Eydelnant, Michael Ernst, Peter Heslin
 ;;
 ;; Special thanks go to Dan Nicolaescu, who reimplemented hideshow using
 ;; overlays (rather than selective display), added isearch magic, folded
@@ -243,7 +243,6 @@
   :prefix "hs-"
   :group 'languages)
 
-;;;###autoload
 (defcustom hs-hide-comments-when-hiding-all t
   "*Hide the comments too when you do an `hs-hide-all'."
   :type 'boolean
@@ -307,6 +306,11 @@
 (defvar hs-hide-all-non-comment-function nil
   "*Function called if non-nil when doing `hs-hide-all' for non-comments.")
 
+(defvar hs-allow-nesting nil
+  "*If non-nil, hiding remembers internal blocks.
+This means that when the outer block is shown again, any
+previously hidden internal blocks remain hidden.")
+
 (defvar hs-hide-hook nil
   "*Hook called (with `run-hooks') at the end of commands to hide text.
 These commands include the toggling commands (when the result is to hide
@@ -412,12 +416,19 @@
 ;; support functions
 
 (defun hs-discard-overlays (from to)
-  "Delete hideshow overlays in region defined by FROM and TO."
+  "Delete hideshow overlays in region defined by FROM and TO.
+Skip \"internal\" overlays if `hs-allow-nesting' is non-nil."
   (when (< to from)
     (setq from (prog1 to (setq to from))))
-  (dolist (ov (overlays-in from to))
-    (when (overlay-get ov 'hs)
-      (delete-overlay ov))))
+  (if hs-allow-nesting
+      (let (ov)
+        (while (> to (setq from (next-overlay-change from)))
+          (when (setq ov (hs-overlay-at from))
+            (setq from (overlay-end ov))
+            (delete-overlay ov))))
+    (dolist (ov (overlays-in from to))
+      (when (overlay-get ov 'hs)
+        (delete-overlay ov)))))
 
 (defun hs-make-overlay (b e kind &optional b-offset e-offset)
   "Return a new overlay in region defined by B and E with type KIND.
@@ -532,19 +543,16 @@
               ;; `q' is the point at the end of the block
               (progn (hs-forward-sexp mdata 1)
                      (end-of-line)
-                     (point))))
+                     (point)))
+             ov)
         (when (and (< p (point)) (> (count-lines p q) 1))
-          (hs-discard-overlays p q)
+          (cond ((and hs-allow-nesting (setq ov (hs-overlay-at p)))
+                 (delete-overlay ov))
+                ((not hs-allow-nesting)
+                 (hs-discard-overlays p q)))
           (hs-make-overlay p q 'code (- pure-p p)))
         (goto-char (if end q (min p pure-p)))))))
 
-(defun hs-safety-is-job-n ()
-  "Warn if `buffer-invisibility-spec' does not contain symbol `hs'."
-  (unless (and (listp buffer-invisibility-spec)
-               (assq 'hs buffer-invisibility-spec))
-    (message "Warning: `buffer-invisibility-spec' does not contain hs!!")
-    (sit-for 2)))
-
 (defun hs-inside-comment-p ()
   "Return non-nil if point is inside a comment, otherwise nil.
 Actually, return a list containing the buffer position of the start
@@ -587,7 +595,8 @@
             (while (and (< (point) q)
                         (> (point) p)
                         (not (looking-at hs-c-start-regexp)))
-              (setq p (point)) ;; use this to avoid an infinite cycle
+              ;; avoid an infinite cycle
+              (setq p (point))
               (forward-comment 1)
               (skip-chars-forward " \t\n\f"))
             (when (or (not (looking-at hs-c-start-regexp))
@@ -657,7 +666,8 @@
     (setq minp (1+ (point)))
     (funcall hs-forward-sexp-func 1)
     (setq maxp (1- (point))))
-  (hs-discard-overlays minp maxp)       ; eliminate weirdness
+  (unless hs-allow-nesting
+    (hs-discard-overlays minp maxp))
   (goto-char minp)
   (while (progn
            (forward-comment (buffer-size))
@@ -667,7 +677,6 @@
         (hs-hide-level-recursive (1- arg) minp maxp)
       (goto-char (match-beginning hs-block-start-mdata-select))
       (hs-hide-block-at-point t)))
-  (hs-safety-is-job-n)
   (goto-char maxp))
 
 (defmacro hs-life-goes-on (&rest body)
@@ -681,6 +690,15 @@
 
 (put 'hs-life-goes-on 'edebug-form-spec '(&rest form))
 
+(defun hs-overlay-at (position)
+  "Return hideshow overlay at POSITION, or nil if none to be found."
+  (let ((overlays (overlays-at position))
+        ov found)
+    (while (and (not found) (setq ov (car overlays)))
+      (setq found (and (overlay-get ov 'hs) ov)
+            overlays (cdr overlays)))
+    found))
+
 (defun hs-already-hidden-p ()
   "Return non-nil if point is in an already-hidden block, otherwise nil."
   (save-excursion
@@ -694,12 +712,7 @@
           ;; point is inside a block
           (goto-char (match-end 0)))))
     (end-of-line)
-    (let ((overlays (overlays-at (point)))
-          (found nil))
-      (while (and (not found) (overlayp (car overlays)))
-        (setq found (overlay-get (car overlays) 'hs)
-              overlays (cdr overlays)))
-      found)))
+    (hs-overlay-at (point))))
 
 (defun hs-c-like-adjust-block-beginning (initial)
   "Adjust INITIAL, the buffer position after `hs-block-start-regexp'.
@@ -723,7 +736,8 @@
   (hs-life-goes-on
    (message "Hiding all blocks ...")
    (save-excursion
-     (hs-discard-overlays (point-min) (point-max)) ; eliminate weirdness
+     (unless hs-allow-nesting
+       (hs-discard-overlays (point-min) (point-max)))
      (goto-char (point-min))
      (let ((count 0)
            (re (concat "\\("
@@ -746,13 +760,12 @@
                    (funcall hs-hide-all-non-comment-function)
                  (hs-hide-block-at-point t)))
            ;; found a comment, probably
-           (let ((c-reg (hs-inside-comment-p))) ; blech!
+           (let ((c-reg (hs-inside-comment-p)))
              (when (and c-reg (car c-reg))
                (if (> (count-lines (car c-reg) (nth 1 c-reg)) 1)
                    (hs-hide-block-at-point t c-reg)
                  (goto-char (nth 1 c-reg))))))
-         (message "Hiding ... %d" (setq count (1+ count)))))
-     (hs-safety-is-job-n))
+         (message "Hiding ... %d" (setq count (1+ count))))))
    (beginning-of-line)
    (message "Hiding all blocks ... done")
    (run-hooks 'hs-hide-hook)))
@@ -762,7 +775,8 @@
   (interactive)
   (hs-life-goes-on
    (message "Showing all blocks ...")
-   (hs-discard-overlays (point-min) (point-max))
+   (let ((hs-allow-nesting nil))
+     (hs-discard-overlays (point-min) (point-max)))
    (message "Showing all blocks ... done")
    (run-hooks 'hs-show-hook)))
 
@@ -781,7 +795,6 @@
            (looking-at hs-block-start-regexp)
            (hs-find-block-beginning))
        (hs-hide-block-at-point end c-reg)
-       (hs-safety-is-job-n)
        (run-hooks 'hs-hide-hook))))))
 
 (defun hs-show-block (&optional end)
@@ -793,17 +806,15 @@
   (hs-life-goes-on
    (or
     ;; first see if we have something at the end of the line
-    (catch 'eol-begins-hidden-region-p
-      (let ((here (point)))
-        (dolist (ov (save-excursion (end-of-line) (overlays-at (point))))
-          (when (overlay-get ov 'hs)
-            (goto-char
-             (cond (end (overlay-end ov))
-                   ((eq 'comment (overlay-get ov 'hs)) here)
-                   (t (+ (overlay-start ov) (overlay-get ov 'hs-b-offset)))))
-            (delete-overlay ov)
-            (throw 'eol-begins-hidden-region-p t)))
-        nil))
+    (let ((ov (hs-overlay-at (save-excursion (end-of-line) (point))))
+          (here (point)))
+      (when ov
+        (goto-char
+         (cond (end (overlay-end ov))
+               ((eq 'comment (overlay-get ov 'hs)) here)
+               (t (+ (overlay-start ov) (overlay-get ov 'hs-b-offset)))))
+        (delete-overlay ov)
+        t))
     ;; not immediately obvious, look for a suitable block
     (let ((c-reg (hs-inside-comment-p))
           p q)
@@ -812,13 +823,13 @@
                (setq p (car c-reg)
                      q (cadr c-reg))))
             ((and (hs-find-block-beginning)
-                  (looking-at hs-block-start-regexp)) ; fresh match-data, ugh
+                  ;; ugh, fresh match-data
+                  (looking-at hs-block-start-regexp))
              (setq p (point)
                    q (progn (hs-forward-sexp (hs-match-data t) 1) (point)))))
       (when (and p q)
         (hs-discard-overlays p q)
         (goto-char (if end q (1+ p)))))
-    (hs-safety-is-job-n)
     (run-hooks 'hs-show-hook))))
 
 (defun hs-hide-level (arg)
@@ -830,7 +841,6 @@
      (message "Hiding blocks ...")
      (hs-hide-level-recursive arg (point-min) (point-max))
      (message "Hiding blocks ... done"))
-   (hs-safety-is-job-n)
    (run-hooks 'hs-hide-hook)))
 
 (defun hs-toggle-hiding ()
--- a/lisp/progmodes/vhdl-mode.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/progmodes/vhdl-mode.el	Sat Sep 17 19:10:55 2005 +0000
@@ -134,12 +134,15 @@
   "Non-nil if GNU Emacs 22, ... is used.")
 
 (defvar compilation-file-regexp-alist)
+(defvar conf-alist)
+(defvar conf-entry)
+(defvar conf-key)
+(defvar ent-alist)
 (defvar itimer-version)
 (defvar lazy-lock-defer-contextually)
 (defvar lazy-lock-defer-on-scrolling)
 (defvar lazy-lock-defer-on-the-fly)
 
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Variables
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -363,7 +366,7 @@
   Case adjustment  : adjust case of inserted unit names
 
 \(*) The regular expression must match the error message starting from the
-    beginning of the line (but not necessarily to the end of the line). 
+    beginning of the line (but not necessarily to the end of the line).
 
 Compile options allows insertion of the library name (see `vhdl-project-alist')
 in order to set the compilers library option (e.g. \"vcom -work my_lib\").
@@ -1059,7 +1062,7 @@
     <cursor>
   elsif <clock>'event and <clock> = '1' then  -- rising clock edge
     if <enable> = '1' then  -- synchronous load
-      
+
     end if;
   end if;
 end process <label>;"
@@ -1328,7 +1331,7 @@
   WaveGen_Proc: process
   begin
     -- insert signal assignments here
-    
+
     wait until Clk = '1';
   end process WaveGen_Proc;
 "
@@ -4403,16 +4406,16 @@
         outputs from this component -> output port created
       - signals that are inputs to AND outputs from subcomponents are
         considered as internal connections -> internal signal created
- 
+
       Purpose:  With appropriate naming conventions it is possible to
     create higher design levels with only a few mouse clicks or key
     strokes.  A new design level can be created by simply generating a new
     component, placing the required subcomponents from the hierarchy
     browser, and wiring everything automatically.
- 
+
       Note: Automatic wiring only works reliably on templates of new
     components and component instantiations that were created by VHDL mode.
- 
+
       Component declarations can be placed in a components package (option
     `vhdl-use-components-package') which can be automatically generated for
     an entire directory or project (`C-c C-c M-p').  The VHDL'93 direct
@@ -4434,7 +4437,7 @@
 |     Note: Configurations of subcomponents (i.e. hierarchical configuration
 |   declarations) are currently not considered when displaying
 |   configurations in speedbar.
- 
+
       See the options group `vhdl-compose' for all relevant user options.
 
 
@@ -15291,7 +15294,7 @@
 (defface vhdl-speedbar-architecture-face
   '((((min-colors 88) (class color) (background light)) (:foreground "Blue1"))
     (((class color) (background light)) (:foreground "Blue"))
-    
+
     (((class color) (background dark)) (:foreground "LightSkyBlue")))
   "Face used for displaying architecture names."
   :group 'speedbar-faces)
--- a/lisp/recentf.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/recentf.el	Sat Sep 17 19:10:55 2005 +0000
@@ -74,6 +74,15 @@
   :group 'recentf
   :type 'file)
 
+(defcustom recentf-save-file-modes 384 ;; 0600
+  "Mode bits of recentf save file, as an integer, or nil.
+If non-nil, after writing `recentf-save-file', set its mode bits to
+this value.  By default give R/W access only to the user who owns that
+file.  See also the function `set-file-modes'."
+  :group 'recentf
+  :type '(choice (const :tag "Don't change" nil)
+          integer))
+  
 (defcustom recentf-exclude nil
   "*List of regexps and predicates for filenames excluded from the recent list.
 When a filename matches any of the regexps or satisfies any of the
@@ -257,7 +266,7 @@
 If it returns nil, the filename is left unchanged."
   :group 'recentf
   :type '(choice (const :tag "None" nil)
-		 (const abbreviate-file-name)
+                 (const abbreviate-file-name)
                  function))
 
 (defcustom recentf-show-file-shortcuts-flag t
@@ -1206,6 +1215,8 @@
                 (format ";;; coding: %s\n" recentf-save-file-coding-system)
                 ";;; End:\n")
         (write-file (expand-file-name recentf-save-file))
+        (when recentf-save-file-modes
+          (set-file-modes recentf-save-file recentf-save-file-modes))
         nil)
     (error
      (warn "recentf mode: %s" (error-message-string error)))))
--- a/lisp/textmodes/reftex-vars.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/textmodes/reftex-vars.el	Sat Sep 17 19:10:55 2005 +0000
@@ -29,6 +29,7 @@
 
 (eval-when-compile (require 'cl))
 (eval-and-compile
+  (defvar reftex-tables-dirty)
   (defun reftex-set-dirty (symbol value)
     (setq reftex-tables-dirty t)
     (set symbol value)))
@@ -101,22 +102,22 @@
 
       ("enumerate" ?i "item:" "~\\ref{%s}" item
        (regexp "items?" "Punkte?"))
-      
+
       ("equation"  ?e "eq:" "~(\\ref{%s})" t
        (regexp "equations?" "eqs?\\." "eqn\\." "Gleichung\\(en\\)?"  "Gl\\."))
       ("eqnarray"  ?e "eq:" nil eqnarray-like)
-      
+
       ("figure"    ?f "fig:" "~\\ref{%s}" caption
        (regexp "figure?[sn]?" "figs?\\." "Abbildung\\(en\\)?" "Abb\\."))
       ("figure*"   ?f nil nil caption)
-      
+
       ("table"     ?t "tab:" "~\\ref{%s}" caption
        (regexp "tables?" "tab\\." "Tabellen?"))
       ("table*"    ?t nil nil caption)
-      
+
       ("\\footnote[]{}" ?n "fn:" "~\\ref{%s}" 2
        (regexp "footnotes?" "Fussnoten?"))
-      
+
       ("any"       ?\  " "   "~\\ref{%s}" nil)
 
       ;; The label macro is hard coded, but it *could* be defined like this:
@@ -208,7 +209,7 @@
 `?t'    should point to a textual citation (citation as a noun).
 `?p'    should point to a parenthetical citation.")
 
-(defconst reftex-index-macros-builtin 
+(defconst reftex-index-macros-builtin
   '((default "Default \\index and \\glossary macros"
       (("\\index{*}" "idx" ?i "" nil t)
        ("\\glossary{*}" "glo" ?g "" nil t)))
@@ -220,7 +221,7 @@
     (Index-Shortcut "index.sty with \\shortindexingon"
        (("\\index[]{*}" 1 ?i "" nil t)
         ("\\index*[]{*}" 1 ?I "" nil nil)
-        ("^[]{*}" 1 ?^ "" texmathp t)   
+        ("^[]{*}" 1 ?^ "" texmathp t)
         ("_[]{*}" 1 ?_ "" texmathp nil))))
   "Builtin stuff for reftex-index-macros.
 Lower-case symbols correspond to a style file of the same name in the LaTeX
@@ -232,7 +233,7 @@
 (defgroup reftex nil
   "LaTeX label and citation support."
   :tag "RefTeX"
-  :link '(url-link :tag "Home Page" 
+  :link '(url-link :tag "Home Page"
                    "http://zon.astro.uva.nl/~dominik/Tools/")
   :link '(emacs-commentary-link :tag "Commentary in reftex.el" "reftex.el")
   :link '(custom-manual "(reftex)Top")
@@ -327,14 +328,14 @@
 automatic recentering is turned on.  When the frame gets destroyed, automatic
 recentering is turned off again.
 
-This feature can be turned on and off from the menu 
+This feature can be turned on and off from the menu
 \(Ref->Options)."
   :group 'reftex-table-of-contents-browser
   :type '(choice
           (const :tag "never" nil)
           (const :tag "always" t)
           (const :tag "in dedicated frame only" frame)))
- 
+
 (defcustom reftex-toc-split-windows-horizontally nil
   "*Non-nil means, create TOC window by splitting window horizontally."
   :group 'reftex-table-of-contents-browser
@@ -426,7 +427,7 @@
   '(amsmath endnotes fancybox floatfig longtable picinpar
             rotating sidecap subfigure supertab wrapfig LaTeX)
   "Default label alist specifications.  LaTeX should always be the last entry.
-The value of this variable is a list of symbols with associations in the 
+The value of this variable is a list of symbols with associations in the
 constant `reftex-label-alist-builtin'.  Check that constant for a full list
 of options."
   :group 'reftex-defining-label-environments
@@ -625,7 +626,7 @@
 (defcustom reftex-section-prefixes '((0 . "part:") (1 . "cha:") (t . "sec:"))
   "Prefixes for section labels.
 When the label prefix given in an entry in `reftex-label-alist' contains `%S',
-this list is used to determine the correct prefix string depending on the 
+this list is used to determine the correct prefix string depending on the
 current section level.
 The list is an alist, with each entry of the form (KEY . PREFIX)
 Possible keys are sectioning macro names like `chapter', section levels
@@ -687,7 +688,7 @@
           (regexp)
           (repeat :tag "List"
                   (string :tag "prefix (with colon)"))))
-  
+
 (defcustom reftex-special-environment-functions nil
   "List of functions to be called when trying to figure out current environment.
 These are special functions to detect \"environments\" which do not
@@ -733,7 +734,7 @@
      (let ((pos (point)) p1)
        (save-excursion
          ;; Search for any of the linguex item macros at the beginning of a line
-         (if (re-search-backward 
+         (if (re-search-backward
               \"^[ \\t]*\\\\(\\\\\\\\\\\\(ex\\\\|a\\\\|b\\\\|c\\\\|d\\\\|e\\\\|f\\\\)g?\\\\.\\\\)\" bound t)
              (progn
                (setq p1 (match-beginning 1))
@@ -743,7 +744,7 @@
                    nil
                  ;; OK, we got it
                  (cons \"linguex\" p1)))
-           ;; Return nil for not found 
+           ;; Return nil for not found
            nil))))
 
 3. Tell RefTeX to use this function
@@ -942,7 +943,7 @@
 
 (defcustom reftex-vref-is-default nil
   "*Non-nil means, the varioref macro \\vref is used as default.
-In the selection buffer, the `v' key toggles the reference macro between 
+In the selection buffer, the `v' key toggles the reference macro between
 `\\ref' and `\\vref'.  The value of this variable determines the default
 which is active when entering the selection process.
 Instead of nil or t, this may also be a string of type letters indicating
@@ -952,7 +953,7 @@
 
 (defcustom reftex-fref-is-default nil
   "*Non-nil means, the fancyref macro \\fref is used as default.
-In the selection buffer, the `V' key toggles the reference macro between 
+In the selection buffer, the `V' key toggles the reference macro between
 `\\ref', `\\fref' and `\\Fref'.  The value of this variable determines
 the default which is active when entering the selection process.
 Instead of nil or t, this may also be a string of type letters indicating
@@ -976,7 +977,7 @@
 
 (defcustom reftex-format-ref-function nil
   "Function which produces the string to insert as a reference.
-Normally should be nil, because the format to insert a reference can 
+Normally should be nil, because the format to insert a reference can
 already be specified in `reftex-label-alist'.
 This hook also is used by the special commands to insert `\\vref' and `\\fref'
 references, so even if you set this, your setting will be ignored by
@@ -1057,13 +1058,13 @@
 %i institution   %j journal        %k key        %m month
 %n number        %o organization   %p pages      %P first page
 %r address       %s school         %u publisher  %t title
-%v volume        %y year          
+%v volume        %y year
 %B booktitle, abbreviated          %T title, abbreviated
 
 Usually, only %l is needed.  The other stuff is mainly for the echo area
 display, and for (setq reftex-comment-citations t).
 
-%< as a special operator kills punctuation and space around it after the 
+%< as a special operator kills punctuation and space around it after the
 string has been formatted.
 
 A pair of square brackets indicates an optional argument, and RefTeX
@@ -1078,7 +1079,7 @@
 strings.
   In order to configure this variable, you can either set
 `reftex-cite-format' directly yourself or set it to the SYMBOL of one of
-the predefined styles.  The predefined symbols are those which have an 
+the predefined styles.  The predefined symbols are those which have an
 association in the constant `reftex-cite-format-builtin'.
 E.g.: (setq reftex-cite-format 'natbib)"
   :group 'reftex-citation-support
@@ -1172,7 +1173,7 @@
 
 (defcustom reftex-format-cite-function nil
   "Function which produces the string to insert as a citation.
-Normally should be nil, because the format to insert a reference can 
+Normally should be nil, because the format to insert a reference can
 already be specified in `reftex-cite-format'.
 The function will be called with two arguments, the CITATION KEY and the
 DEFAULT FORMAT, which is taken from `reftex-cite-format'.  The function
@@ -1255,7 +1256,7 @@
   :group 'reftex-index-support
   :set 'reftex-set-dirty
   :type `(list
-          (repeat 
+          (repeat
            :inline t
            (list :value ("" "idx" ?a "" nil)
                  (string  :tag "Macro with args")
@@ -1282,7 +1283,7 @@
 This is a list with (MACRO-KEY DEFAULT-TAG).
 
 MACRO-KEY:   Character identifying an index macro - see `reftex-index-macros'.
-DEFAULT-TAG: This is the tag to be used if the macro requires a TAG argument.  
+DEFAULT-TAG: This is the tag to be used if the macro requires a TAG argument.
              When this is nil and a TAG is needed, RefTeX will ask for it.
              When this is the empty string and the TAG argument of the index
              macro is optional, the TAG argument will be omitted."
@@ -1423,7 +1424,7 @@
 
 (defcustom reftex-index-include-context nil
   "*Non-nil means, display the index definition context in the index buffer.
-This flag may also be toggled from the index buffer with the `c' key." 
+This flag may also be toggled from the index buffer with the `c' key."
   :group 'reftex-index-support
   :type 'boolean)
 
@@ -1446,7 +1447,7 @@
 argument of a macro.  Note that crossref viewing for citations,
 references (both ways) and index entries is hard-coded.  This variable
 is only to configure additional structures for which crossreference
-viewing can be useful.  Each entry has the structure 
+viewing can be useful.  Each entry has the structure
 
 \(MACRO-RE SEARCH-RE HIGHLIGHT).
 
@@ -1467,7 +1468,7 @@
 displayed, the echo area will display information about that cross
 reference.  You can also set the variable to the symbol `window'.  In
 this case a small temporary window is used for the display.
-This feature can be turned on and off from the menu 
+This feature can be turned on and off from the menu
 \(Ref->Options)."
   :group 'reftex-viewing-cross-references
   :type '(choice (const :tag "off" nil)
@@ -1513,7 +1514,7 @@
 - If an element is the name of an environment variable, its content is used.
 - If an element starts with an exclamation mark, it is used as a command
   to retrieve the path.  A typical command with the kpathsearch library would
-  be `!kpsewhich -show-path=.tex'. 
+  be `!kpsewhich -show-path=.tex'.
 - Otherwise the element itself is interpreted as a path.
 Multiple directories can be separated by the system dependent `path-separator'.
 Directories ending in `//' or `!!' will be expanded recursively.
@@ -1528,7 +1529,7 @@
 - If an element is the name of an environment variable, its content is used.
 - If an element starts with an exclamation mark, it is used as a command
   to retrieve the path.  A typical command with the kpathsearch library would
-  be `!kpsewhich -show-path=.bib'. 
+  be `!kpsewhich -show-path=.bib'.
 - Otherwise the element itself is interpreted as a path.
 Multiple directories can be separated by the system dependent `path-separator'.
 Directories ending in `//' or `!!' will be expanded recursively.
@@ -1573,7 +1574,7 @@
 TEXINPUTS and BIBINPUTS to find TeX files and BibTeX database files.
 With this option turned on, it calls an external program specified in the
 option `reftex-external-file-finders' instead.  As a side effect,
-the variables `reftex-texpath-environment-variables' and 
+the variables `reftex-texpath-environment-variables' and
 `reftex-bibpath-environment-variables' will be ignored."
   :group 'reftex-finding-files
   :type 'boolean)
@@ -1664,7 +1665,7 @@
 (defcustom reftex-save-parse-info nil
   "*Non-nil means, save information gathered with parsing in a file.
 The file MASTER.rel in the same directory as MASTER.tex is used to save the
-information.  When this variable is t, 
+information.  When this variable is t,
 - accessing the parsing information for the first time in an editing session
   will read that file (if available) instead of parsing the document.
 - exiting Emacs or killing a buffer in reftex-mode will cause a new version
@@ -1857,7 +1858,7 @@
 may require a restart of Emacs in order to become effective."
   :group 'reftex-miscellaneous-configurations
   :group 'LaTeX
-  :type '(choice 
+  :type '(choice
           (const :tag "No plug-ins" nil)
           (const :tag "All possible plug-ins" t)
           (list
--- a/lisp/url/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/url/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,3 +1,13 @@
+2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* url-mailto.el (url-mailto): Delete mail buffer after sending
+	autogenerated mail.
+	Call `compose-mail with `new' argument if possible.
+
+2005-09-13  Chong Yidong  <cyd@stupidchicken.com>
+
+	* url-mailto.el (url-mailto): Always use a new mail buffer.
+
 2005-09-01  Chong Yidong  <cyd@stupidchicken.com>
 
 	* url-util.el (url-parse-query-string): New optional argument
--- a/lisp/url/url-mailto.el	Sat Sep 17 19:00:49 2005 +0000
+++ b/lisp/url/url-mailto.el	Sat Sep 17 19:10:55 2005 +0000
@@ -92,7 +92,11 @@
 	(setq args (cons (list "to" to) args))))
 
     (setq subject (cdr-safe (assoc "subject" args)))
-    (if (fboundp url-mail-command) (funcall url-mail-command) (mail))
+    (if (fboundp url-mail-command)
+	(if (eq url-mail-command 'compose-mail)
+	    (compose-mail nil nil nil 'new)
+	  (funcall url-mail-command))
+      (mail 'new))
     (while args
       (if (string= (caar args) "body")
 	  (progn
@@ -124,12 +128,14 @@
       ;; It seems Microsoft-ish to send without warning.
       ;; Fixme: presumably this should depend on a privacy setting.
       (if (y-or-n-p "Send this auto-generated mail? ")
-	  (cond ((eq url-mail-command 'compose-mail)
-		 (funcall (get mail-user-agent 'sendfunc) nil))
-		;; otherwise, we can't be sure
-		((fboundp 'message-send-and-exit)
-		 (message-send-and-exit))
-		(t (mail-send-and-exit nil)))))
+	  (let ((buffer (current-buffer)))
+	    (cond ((eq url-mail-command 'compose-mail)
+		   (funcall (get mail-user-agent 'sendfunc) nil))
+		  ;; otherwise, we can't be sure
+		  ((fboundp 'message-send-and-exit)
+		   (message-send-and-exit))
+		  (t (mail-send-and-exit nil)))
+	    (kill-buffer buffer))))
     nil))
 
 (provide 'url-mailto)
--- a/lispref/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/lispref/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,3 +1,18 @@
+2005-09-15  Chong Yidong  <cyd@stupidchicken.com>
+
+	* display.texi (Defining Images): Document `image-load-path'.
+
+2005-09-15  Richard M. Stallman  <rms@gnu.org>
+
+	* objects.texi (Printed Representation): Minor cleanup.
+	(Box Diagrams): Minor fix.
+	(Cons Cell Type): Move (...) index item here.
+	(Box Diagrams): From here.
+	(Array Type): Minor fix.
+	(Type Predicates): Delete index "predicates".
+	(Hash Table Type): Clarify xref.
+	(Dotted Pair Notation): Minor fix.
+
 2005-09-10  Chong Yidong  <cyd@stupidchicken.com>
 
 	* files.texi (Saving Buffers): Fix typo.
--- a/lispref/display.texi	Sat Sep 17 19:00:49 2005 +0000
+++ b/lispref/display.texi	Sat Sep 17 19:10:55 2005 +0000
@@ -3946,10 +3946,29 @@
 @var{file} exists, is used to construct the image specification to be
 returned.  If no specification is satisfied, @code{nil} is returned.
 
-The image is looked for first on @code{load-path} and then in
-@code{data-directory}.
+The image is looked for in @code{image-load-path}.
 @end defun
 
+@defvar image-load-path
+@tindex image-load-path
+This variable's value is a list of locations in which to search for
+image files.  If an element is a string, it is taken to be the name of
+a directory to search.  If an element is a variable symbol, the value
+of that variable is used as a list of directories to search.
+
+The default is to search in @file{@code{data-directory}/images}, then
+in @code{data-directory}, and finally in the directories specified by
+@code{load-path}.  Subdirectories are not automatically included in
+the search, so if you put an image file in a subdirectory, you have to
+supply the subdirectory name explicitly.  For example, if you put an
+image file @file{bar.xpm} in @file{@code{data-directory}/images/foo/},
+you should define the image as:
+
+@example
+  (defimage foo-image '((:type xpm :file "foo/bar.xpm")))
+@end example
+@end defvar
+
 @node Showing Images
 @subsection Showing Images
 
--- a/lispref/objects.texi	Sat Sep 17 19:00:49 2005 +0000
+++ b/lispref/objects.texi	Sat Sep 17 19:10:55 2005 +0000
@@ -78,10 +78,10 @@
   In most cases, an object's printed representation is also a read
 syntax for the object.  However, some types have no read syntax, since
 it does not make sense to enter objects of these types as constants in
-a Lisp program.  These objects are printed in @dfn{hash notation}: the
-characters @samp{#<} followed by a descriptive string (typically the
-type name followed by the name of the object), and closed with a
-matching @samp{>}.  For example:
+a Lisp program.  These objects are printed in @dfn{hash notation},
+which consists of the characters @samp{#<}, a descriptive string
+(typically the type name followed by the name of the object), and a
+closing @samp{>}.  For example:
 
 @example
 (current-buffer)
@@ -621,6 +621,7 @@
 @dfn{atoms}.
 
 @cindex parenthesis
+@cindex @samp{(@dots{})} in lists
   The read syntax and printed representation for lists are identical, and
 consist of a left parenthesis, an arbitrary number of elements, and a
 right parenthesis.  Here are examples of lists:
@@ -706,7 +707,6 @@
 @end group
 @end smallexample
 
-@cindex @samp{(@dots{})} in lists
 @cindex @code{nil} in lists
 @cindex empty list
   A list with no elements in it is the @dfn{empty list}; it is identical
@@ -749,7 +749,7 @@
 @end group
 @end example
 
-  The same list represented in the first box notation looks like this:
+  The same list represented in the second box notation looks like this:
 
 @example
 @group
@@ -776,7 +776,7 @@
   @dfn{Dotted pair notation} is a general syntax for cons cells that
 represents the @sc{car} and @sc{cdr} explicitly.  In this syntax,
 @code{(@var{a} .@: @var{b})} stands for a cons cell whose @sc{car} is
-the object @var{a}, and whose @sc{cdr} is the object @var{b}.  Dotted
+the object @var{a} and whose @sc{cdr} is the object @var{b}.  Dotted
 pair notation is more general than list syntax because the @sc{cdr}
 does not have to be a list.  However, it is more cumbersome in cases
 where list syntax would work.  In dotted pair notation, the list
@@ -913,9 +913,9 @@
 type of array has its own read syntax; see the following sections for
 details.
 
-  The array type is contained in the sequence type and
-contains the string type, the vector type, the bool-vector type, and the
-char-table type.
+  The array type is a subset of the sequence type, and contains the
+string type, the vector type, the bool-vector type, and the char-table
+type.
 
 @node String Type
 @subsection String Type
@@ -1166,8 +1166,8 @@
 
     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 have no read syntax, and
-print using hash notation.  @xref{Hash Tables}.
+Hash tables have no read syntax, and print using hash notation.
+@xref{Hash Tables}, for functions that operate on hash tables.
 
 @example
 (make-hash-table)
@@ -1607,7 +1607,6 @@
 
 @node Type Predicates
 @section Type Predicates
-@cindex predicates
 @cindex type checking
 @kindex wrong-type-argument
 
@@ -1942,6 +1941,7 @@
 @end group
 @end example
 
+@cindex equality of strings
 Comparison of strings is case-sensitive, but does not take account of
 text properties---it compares only the characters in the strings.  For
 technical reasons, a unibyte string and a multibyte string are
--- a/man/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/man/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,3 +1,25 @@
+2005-09-15  Richard M. Stallman  <rms@gnu.org>
+
+	* buffers.texi (List Buffers): Fix xref.
+
+	* rmail.texi (Rmail Basics): Fix xref.
+
+	* emacs.texi (Top): Update subnode menus.
+
+	* files.texi (Saving Commands): New node, broken out of Saving.
+	(Customize Save): New node, broken out of Saving.
+	Clarify effect of write-region-inhibit-fsync.
+	(Misc File Ops): Say write-region-inhibit-fsync affects write-region.
+
+	* newsticker.texi: Fix @setfilename.
+
+	* Makefile.in (INFO_TARGETS, DVI_TARGETS): Add newsticker targets.
+	(../info/newsticker, newsticker.dvi): New targets.
+
+2005-09-14  Romain Francoise  <romain@orebokech.com>
+
+	* files.texi (Saving): Mention write-region-inhibit-fsync.
+
 2005-09-05  Chong Yidong  <cyd@stupidchicken.com>
 
 	* custom.texi (Custom Themes): New node.
--- a/man/Makefile.in	Sat Sep 17 19:00:49 2005 +0000
+++ b/man/Makefile.in	Sat Sep 17 19:10:55 2005 +0000
@@ -42,7 +42,7 @@
 		../info/idlwave ../info/eudc ../info/ebrowse ../info/pcl-cvs \
 		../info/woman ../info/eshell ../info/org ../info/url \
 		../info/speedbar ../info/tramp ../info/ses ../info/smtpmail \
-		../info/flymake
+		../info/flymake ../info/newsticker
 DVI_TARGETS = 	emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
 		 ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
                  gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
@@ -50,7 +50,7 @@
 		 ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
 		 pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
 		 speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
-                 emacs-xtra.dvi
+                 newsticker.dvi emacs-xtra.dvi
 INFOSOURCES = info.texi
 
 # The following rule does not work with all versions of `make'.
@@ -322,6 +322,11 @@
 flymake.dvi: flymake.texi
 	$(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi
 
+../info/newsticker: newsticker.texi
+	cd $(srcdir); $(MAKEINFO) newsticker.texi
+newsticker.dvi: newsticker.texi
+	$(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi
+
 mostlyclean:
 	rm -f *.log *.cp *.fn *.ky *.pg *.vr core *.tp *.core gnustmp.*
 
--- a/man/buffers.texi	Sat Sep 17 19:00:49 2005 +0000
+++ b/man/buffers.texi	Sat Sep 17 19:10:55 2005 +0000
@@ -179,7 +179,7 @@
 
   @samp{*} in the first field of a line indicates the buffer is ``modified.''
 If several buffers are modified, it may be time to save some with @kbd{C-x s}
-(@pxref{Saving}).  @samp{%} indicates a read-only buffer.  @samp{.} marks the
+(@pxref{Save Commands}).  @samp{%} indicates a read-only buffer.  @samp{.} marks the
 current buffer.  Here is an example of a buffer list:@refill
 
 @smallexample
--- a/man/emacs.texi	Sat Sep 17 19:00:49 2005 +0000
+++ b/man/emacs.texi	Sat Sep 17 19:10:55 2005 +0000
@@ -378,7 +378,9 @@
 
 Saving Files
 
+* Save Commands::       Commands for saving files.
 * Backup::              How Emacs saves the old version of your file.
+* Customize Save::      Customizing the saving of files.
 * Interlocking::        How Emacs protects against simultaneous editing
                           of one file by two users.
 * File Shadowing::      Copying files to "shadows" automatically.
--- a/man/files.texi	Sat Sep 17 19:00:49 2005 +0000
+++ b/man/files.texi	Sat Sep 17 19:10:55 2005 +0000
@@ -366,6 +366,21 @@
   @dfn{Saving} a buffer in Emacs means writing its contents back into the file
 that was visited in the buffer.
 
+@menu
+* Save Commands::       Commands for saving files.
+* Backup::              How Emacs saves the old version of your file.
+* Customize Save::      Customizing the saving of files.
+* Interlocking::        How Emacs protects against simultaneous editing
+                          of one file by two users.
+* Shadowing: File Shadowing.  Copying files to "shadows" automatically.
+* Time Stamps::         Emacs can update time stamps on saved files.
+@end menu
+
+@node Save Commands
+@subsection Commands for Saving Files
+
+  These are the commands that relate to saving and writing files.
+
 @table @kbd
 @item C-x C-s
 Save the current buffer in its visited file on disk (@code{save-buffer}).
@@ -483,33 +498,6 @@
 by simultaneous editing and requires your immediate attention.
 @xref{Interlocking,, Simultaneous Editing}.
 
-@vindex require-final-newline
-  If the value of the variable @code{require-final-newline} is
-@code{t}, Emacs silently puts a newline at the end of any file that
-doesn't already end in one, every time a file is saved or written.  If
-the value is @code{visit}, Emacs adds a newline at the end of any file
-that doesn't have one, just after it visits the file.  (This marks the
-buffer as modified, and you can undo it.)  If the value is
-@code{visit-save}, that means to add newlines both on visiting and on
-saving.  If the value is @code{nil}, Emacs leaves the end of the file
-unchanged; if it's neither @code{nil} nor @code{t}, Emacs asks you
-whether to add a newline.  The default is @code{nil}.
-
-@vindex mode-require-final-newline
-  Many major modes are designed for specific kinds of files that are
-always supposed to end in newlines.  These major modes set the
-variable @code{require-final-newline} according to
-@code{mode-require-final-newline}.  By setting the latter variable,
-you can control how these modes handle final newlines.
-
-@menu
-* Backup::              How Emacs saves the old version of your file.
-* Interlocking::        How Emacs protects against simultaneous editing
-                          of one file by two users.
-* Shadowing: File Shadowing.  Copying files to "shadows" automatically.
-* Time Stamps::         Emacs can update time stamps on saved files.
-@end menu
-
 @node Backup
 @subsection Backup Files
 @cindex backup file
@@ -716,6 +704,38 @@
 any alternate names for the same file.  This has nothing to do with
 Emacs---the version control system does it.
 
+@node Customize Save
+@subsection Customizing Saving of Files
+
+@vindex require-final-newline
+  If the value of the variable @code{require-final-newline} is
+@code{t}, saving or writing a file silently puts a newline at the end
+if there isn't already one there.  If the value is @code{visit}, Emacs
+adds a newline at the end of any file that doesn't have one, just
+after it visits the file.  (This marks the buffer as modified, and you
+can undo it.)  If the value is @code{visit-save}, that means to add
+newlines both on visiting and on saving.  If the value is @code{nil},
+Emacs leaves the end of the file unchanged; if it's neither @code{nil}
+nor @code{t}, Emacs asks you whether to add a newline.  The default is
+@code{nil}.
+
+@vindex mode-require-final-newline
+  Many major modes are designed for specific kinds of files that are
+always supposed to end in newlines.  These major modes set the
+variable @code{require-final-newline} according to
+@code{mode-require-final-newline}.  By setting the latter variable,
+you can control how these modes handle final newlines.
+
+@vindex write-region-inhibit-fsync
+  When Emacs saves a file, it invokes the @code{fsync} system call to
+force the data immediately out to disk.  This is important for safety
+if the system crashes or in case of power outage.  However, it can be
+disruptive on laptops using power saving, because it requires the disk
+to spin up each time you save a file.  Setting
+@code{write-region-inhibit-fsync} to a non-@code{nil} value disables
+this synchronization.  Be careful---this means increased risk of data
+loss.
+
 @node Interlocking
 @subsection Protection against Simultaneous Editing
 
@@ -2999,8 +3019,10 @@
 @findex write-region
   @kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it
 copies the contents of the region into the specified file.  @kbd{M-x
-append-to-file} adds the text of the region to the end of the specified
-file.  @xref{Accumulating Text}.
+append-to-file} adds the text of the region to the end of the
+specified file.  @xref{Accumulating Text}.  The variable
+@code{write-region-inhibit-fsync} applies to these commands, as well
+as saving files; see @ref{Customize Save}.
 
 @findex delete-file
 @cindex deletion (of files)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/newsticker.texi	Sat Sep 17 19:10:55 2005 +0000
@@ -0,0 +1,676 @@
+\input texinfo   @c -*-texinfo-*-
+@comment $Id: newsticker.texi,v 1.4 2005/09/15 12:32:57 rms Exp $
+@comment %**start of header
+@setfilename ../info/newsticker
+@set VERSION 1.8
+@set UPDATED ``$Id: newsticker.texi,v 1.4 2005/09/15 12:32:57 rms Exp $''
+@settitle Newsticker @value{VERSION}
+@syncodeindex vr cp
+@syncodeindex fn cp
+@syncodeindex pg cp
+@comment %**end of header
+
+@copying
+This manual is for Newsticker (version @value{VERSION}, @value{UPDATED}).
+
+@noindent
+Copyright @copyright{} 2004, 2005  Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A
+copy of the license is included in the section entitled ``GNU Free
+Documentation License''.
+@end quotation
+@end copying
+
+@dircategory Emacs
+@direntry
+* Newsticker: (newsticker). A Newsticker for Emacs.
+@end direntry
+
+@titlepage
+@title Newsticker -- a Newsticker for Emacs
+@subtitle for version @value{VERSION}, @value{UPDATED}
+@author Ulf Jasper
+@author @email{ulf.jasper@@web.de}
+@author @uref{http://de.geocities.com/ulf_jasper}
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top Newsticker
+
+@insertcopying
+@end ifnottex
+
+@menu
+* Overview::
+* Requirements::
+* Installation::
+* Usage::
+* Configuration::
+* Remarks::
+* GNU Free Documentation License::
+* Index::
+@end menu
+
+@node Overview
+@chapter Overview
+
+Newsticker provides a newsticker for Emacs. A newsticker is a thing
+that asynchronously retrieves headlines from a list of news sites,
+prepares these headlines for reading, and allows for loading the
+corresponding articles in a web browser.
+
+Headlines consist of a title and (possibly) a small description. They
+are contained in RSS (RDF Site Summary) files.  Newsticker should work
+with all RSS files that follow the @uref{http://purl.org/rss/1.0/spec,
+RDF Rich Site Summary 1.0} specification. It should also work with
+version 2.0 as well as other/older/alternative rss formats (like
+0.9<something> or such). In other words: Newsticker is a ``RSS
+reader'' or ``RSS aggregator''.
+
+Newsticker provides several commands for reading headlines, navigating
+through them, marking them as read/unread, hiding old headlines etc.
+Headlines can be displayed as plain text or as rendered HTML.
+
+Headlines can be displayed in the echo area, either scrolling like
+messages in a stock-quote ticker, or just changing.
+
+Newsticker allows for automatic processing of headlines by providing
+hooks and (sample) functions for automatically downloading images and
+enclosed files (as delivered by podcasts, e.g.).
+
+@ifhtml
+Here are screen shots of the @uref{newsticker-1.7.png, version 1.7
+(current version)} and some older screen shots:
+@uref{newsticker-1.6.png, version 1.6},
+@uref{newsticker-1.5.png, version 1.5}, 
+@uref{newsticker-1.4.png, version 1.4}
+@uref{newsticker-1.3.png, version 1.3}, 
+@uref{newsticker-1.0.png, version 1.0}.
+@end ifhtml
+
+@node Requirements
+@chapter Requirements
+
+Newsticker can be used with
+@uref{http://www.gnu.org/software/emacs/emacs.html, GNU Emacs} version
+21.1 or later as well as @uref{http://www.xemacs.org, XEmacs}.  It
+requires an XML-parser (@file{xml.el}) which is part of GNU Emacs.  If
+you are using XEmacs you want to get the @file{net-utils} package
+which contains @file{xml.el} for XEmacs.
+
+Newsticker requires a program which can retrieve files via http and
+prints them to stdout.  By default Newsticker will use
+@uref{http://www.gnu.org/software/wget/wget.html, wget} for this task.
+
+
+@node Installation
+@chapter Installation
+
+Place Newsticker in a directory where Emacs can find it. Add the
+following line to your Emacs startup file (@file{~/.emacs}).
+
+@example
+(add-to-list 'load-path "/path/to/newsticker/")
+(autoload 'newsticker-start "newsticker" "Emacs Newsticker" t)
+(autoload 'newsticker-show-news "newsticker" "Emacs Newsticker" t)
+@end example
+
+Newsticker-mode supports imenu. This allows for navigating with the
+help of a menu. In order to use this feature you should also add the
+following.
+
+@example
+(add-hook 'newsticker-mode-hook 'imenu-add-menubar-index)
+@end example
+
+That's it.
+
+@node Usage
+@chapter Usage
+
+@findex newsticker-show-news
+The command @command{newsticker-show-news} will display all available
+headlines in a special buffer, called @samp{*newsticker*}.  It will
+also start the asynchronous download of headlines.  The modeline in
+the @samp{*newsticker*} buffer informs whenever new headlines have
+arrived.  Clicking mouse-button 2 or pressing RET in this buffer on a
+headline will call @command{browse-url} to load the corresponding news
+story in your favourite web browser.
+
+@findex newsticker-start-ticker
+@findex newsticker-stop-ticker
+The scrolling, or flashing of headlines in the echo area, can be
+started with the command @command{newsticker-start-ticker}. It can be
+stopped with @command{newsticker-stop-ticker}.
+
+@findex newsticker-start
+@findex newsticker-stop
+If you just want to start the periodic download of headlines use the
+command @command{newsticker-start}. Calling @command{newsticker-stop}
+will stop the periodic download, but will call
+@command{newsticker-stop-ticker} as well.
+
+@node Configuration
+@chapter Configuration
+
+All Newsticker options are customizable, i.e. they can be changed with
+Emacs customization methods: Call the command
+@command{customize-group} and enter @samp{newsticker} for the customization
+group.
+
+All Newsticker options have reasonable default values, so that in most
+cases it is not necessary to customize settings before starting Newsticker
+for the first time.
+
+Newsticker options are organized in the following groups.
+
+@itemize
+
+@item
+@command{newsticker-feed} contains options that define which news
+feeds are retrieved and how this is done.  
+
+@itemize
+@item
+@vindex newsticker-url-list
+@command{newsticker-url-list} defines the list of headlines which are
+retrieved.
+@item
+@vindex newsticker-retrieval-interval
+@command{newsticker-retrieval-interval} defines how often headlines
+are retrieved.
+@end itemize
+
+@item
+@command{newsticker-headline-processing} contains options that define
+how the retrieved headlines are processed.
+
+@itemize
+@item
+@vindex newsticker-keep-obsolete-items
+@command{newsticker-keep-obsolete-items} decides whether unread
+headlines that have been removed from the feed are kept in the
+Newsticker cache.
+@end itemize
+
+@item
+@command{newsticker-layout} contains options that define how the
+buffer for reading RSS headlines is formatted.
+
+@itemize
+@item
+@vindex newsticker-heading-format
+@command{newsticker-item-format} defines how the title of a headline
+is formatted.
+@end itemize
+
+@item
+@command{newsticker-ticker} contains options that define how headlines
+are shown in the echo area.
+
+@itemize
+@item
+@vindex newsticker-display-interval
+@vindex newsticker-scroll-smoothly
+@command{newsticker-display-interval} and
+@command{newsticker-scroll-smoothly} define how headlines are shown in
+the echo area.
+@end itemize
+
+@item
+@command{newsticker-hooks} contains options for hooking other Emacs
+commands to newsticker functions. 
+@itemize
+@item
+@vindex newsticker-new-item-functions
+@command{newsticker-new-item-functions} allows for automatic
+processing of headlines. See `newsticker-download-images', and
+`newsticker-download-enclosures' for sample functions.
+@end itemize
+
+@item
+@command{newsticker-miscellaneous} contains other Newsticker options.
+
+@end itemize
+
+Please have a look at the customization buffers for the complete list
+of options.
+
+@node Remarks
+@chapter Remarks
+
+This newsticker is designed do its job silently in the background
+without disturbing you.  However, it is probably impossible to prevent
+such a tool from slightly attenuating your Editor's responsiveness
+every once in a while.
+
+Byte-compiling newsticker.el is recommended.
+
+
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+
+@verbatim
+
+                    GNU Free Documentation License
+                    ==============================
+
+                      Version 1.2, November 2002
+     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.
+     We recommend this License principally for works whose purpose is
+     instruction or reference.
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it
+     can be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You
+     accept the license if you copy, modify or distribute the work in a
+     way requiring permission under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter section
+     of the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could
+     fall directly within that overall subject.  (Thus, if the Document
+     is in part a textbook of mathematics, a Secondary Section may not
+     explain any mathematics.)  The relationship could be a matter of
+     historical connection with the subject or with related matters, or
+     of legal, commercial, philosophical, ethical or political position
+     regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in
+     the notice that says that the Document is released under this
+     License.  If a section does not fit the above definition of
+     Secondary then it is not allowed to be designated as Invariant.
+     The Document may contain zero Invariant Sections.  If the Document
+     does not identify any Invariant Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images
+     composed of pixels) generic paint programs or (for drawings) some
+     widely available drawing editor, and that is suitable for input to
+     text formatters or for automatic translation to a variety of
+     formats suitable for input to text formatters.  A copy made in an
+     otherwise Transparent file format whose markup, or absence of
+     markup, has been arranged to thwart or discourage subsequent
+     modification by readers is not Transparent.  An image format is
+     not Transparent if used for any substantial amount of text.  A
+     copy that is not "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and
+     standard-conforming simple HTML, PostScript or PDF designed for
+     human modification.  Examples of transparent image formats include
+     PNG, XCF and JPG.  Opaque formats include proprietary formats that
+     can be read and edited only by proprietary word processors, SGML or
+     XML for which the DTD and/or processing tools are not generally
+     available, and the machine-generated HTML, PostScript or PDF
+     produced by some word processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow
+     the conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the
+     title equally prominent and visible.  You may add other material
+     on the covers in addition.  Copying with changes limited to the
+     covers, as long as they preserve the title of the Document and
+     satisfy these conditions, can be treated as verbatim copying in
+     other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a
+     machine-readable Transparent copy along with each Opaque copy, or
+     state in or with each Opaque copy a computer-network location from
+     which the general network-using public has access to download
+     using public-standard network protocols a complete Transparent
+     copy of the Document, free of added material.  If you use the
+     latter option, you must take reasonably prudent steps, when you
+     begin distribution of Opaque copies in quantity, to ensure that
+     this Transparent copy will remain thus accessible at the stated
+     location until at least one year after the last time you
+     distribute an Opaque copy (directly or through your agents or
+     retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of
+     copies, to give them a chance to provide you with an updated
+     version of the Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with
+     the Modified Version filling the role of the Document, thus
+     licensing distribution and modification of the Modified Version to
+     whoever possesses a copy of it.  In addition, you must do these
+     things in the Modified Version:
+
+       A. Use in the Title Page (and on the covers, if any) a title
+          distinct from that of the Document, and from those of
+          previous versions (which should, if there were any, be listed
+          in the History section of the Document).  You may use the
+          same title as a previous version if the original publisher of
+          that version gives permission.
+
+       B. List on the Title Page, as authors, one or more persons or
+          entities responsible for authorship of the modifications in
+          the Modified Version, together with at least five of the
+          principal authors of the Document (all of its principal
+          authors, if it has fewer than five), unless they release you
+          from this requirement.
+
+       C. State on the Title page the name of the publisher of the
+          Modified Version, as the publisher.
+
+       D. Preserve all the copyright notices of the Document.
+
+       E. Add an appropriate copyright notice for your modifications
+          adjacent to the other copyright notices.
+
+       F. Include, immediately after the copyright notices, a license
+          notice giving the public permission to use the Modified
+          Version under the terms of this License, in the form shown in
+          the Addendum below.
+
+       G. Preserve in that license notice the full lists of Invariant
+          Sections and required Cover Texts given in the Document's
+          license notice.
+
+       H. Include an unaltered copy of this License.
+
+       I. Preserve the section Entitled "History", Preserve its Title,
+          and add to it an item stating at least the title, year, new
+          authors, and publisher of the Modified Version as given on
+          the Title Page.  If there is no section Entitled "History" in
+          the Document, create one stating the title, year, authors,
+          and publisher of the Document as given on its Title Page,
+          then add an item describing the Modified Version as stated in
+          the previous sentence.
+
+       J. Preserve the network location, if any, given in the Document
+          for public access to a Transparent copy of the Document, and
+          likewise the network locations given in the Document for
+          previous versions it was based on.  These may be placed in
+          the "History" section.  You may omit a network location for a
+          work that was published at least four years before the
+          Document itself, or if the original publisher of the version
+          it refers to gives permission.
+
+       K. For any section Entitled "Acknowledgements" or "Dedications",
+          Preserve the Title of the section, and preserve in the
+          section all the substance and tone of each of the contributor
+          acknowledgements and/or dedications given therein.
+
+       L. Preserve all the Invariant Sections of the Document,
+          unaltered in their text and in their titles.  Section numbers
+          or the equivalent are not considered part of the section
+          titles.
+
+       M. Delete any section Entitled "Endorsements".  Such a section
+          may not be included in the Modified Version.
+
+       N. Do not retitle any existing section to be Entitled
+          "Endorsements" or to conflict in title with any Invariant
+          Section.
+
+       O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option
+     designate some or all of these sections as invariant.  To do this,
+     add their titles to the list of Invariant Sections in the Modified
+     Version's license notice.  These titles must be distinct from any
+     other section titles.
+
+     You may add a section Entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end
+     of the list of Cover Texts in the Modified Version.  Only one
+     passage of Front-Cover Text and one of Back-Cover Text may be
+     added by (or through arrangements made by) any one entity.  If the
+     Document already includes a cover text for the same cover,
+     previously added by you or by arrangement made by the same entity
+     you are acting on behalf of, you may not add another; but you may
+     replace the old one, on explicit permission from the previous
+     publisher that added the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination
+     all of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections Entitled
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the
+     documents in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow
+     this License in all other respects regarding verbatim copying of
+     that document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of
+     a storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided for under this License.  Any other
+     attempt to copy, modify, sublicense or distribute the Document is
+     void, and will automatically terminate your rights under this
+     License.  However, parties who have received copies, or rights,
+     from you under this License will not have their licenses
+     terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     `http://www.gnu.org/copyleft/'.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If
+     the Document does not specify a version number of this License,
+     you may choose any version ever published (not as a draft) by the
+     Free Software Foundation.
+
+@end verbatim
+
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@bye
+
+
+
+@ignore
+   arch-tag: 7a4de539-117c-4658-b799-0b9e3d0ccec0
+@end ignore
--- a/man/rmail.texi	Sat Sep 17 19:00:49 2005 +0000
+++ b/man/rmail.texi	Sat Sep 17 19:10:55 2005 +0000
@@ -92,7 +92,7 @@
 other buffers, and never happen to switch back, you have exited.  Just
 make sure to save the Rmail file eventually (like any other file you
 have changed).  @kbd{C-x s} is a good enough way to do this
-(@pxref{Saving}).  The Rmail command @kbd{b}, @code{rmail-bury},
+(@pxref{Save Commands}).  The Rmail command @kbd{b}, @code{rmail-bury},
 buries the Rmail buffer and its summary buffer without expunging and
 saving the Rmail file.
 
--- a/src/ChangeLog	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/ChangeLog	Sat Sep 17 19:10:55 2005 +0000
@@ -1,3 +1,47 @@
+2005-09-15  Richard M. Stallman  <rms@gnu.org>
+
+	* xdisp.c (overlay_arrow_at_row): Add HAVE_WINDOW_SYSTEM conditional.
+	(display_mode_element): Instead of `lisp_string' and `this',
+	record `offset' and increment that.
+	`last_offset' replaces `last'.
+
+	* Makefile.in (XMENU_OBJ): Variable deleted.
+	(obj): Use xmenu.o unconditionally.
+	(SOME_MACHINE_OBJECTS): Delete xmenu.o.
+
+	* emacs.c (main): Don't conditionalize syms_of_xmenu on HAVE_XMENU.
+
+2005-09-15  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (move_it_vertically): Don't try to fetch byte BEGV-1.
+	(reseat_at_next_visible_line_start): Likewise (in xassert).
+
+2005-09-14  Romain Francoise  <romain@orebokech.com>
+
+	* fileio.c (write_region_inhibit_fsync): New variable.
+	(Fwrite_region): Use it to skip call to fsync.
+	(syms_of_fileio): Initialize it.
+
+2005-09-14  Kenichi Handa  <handa@m17n.org>
+
+	* coding.c (code_convert_region_unwind): Argument format changed.
+	(run_pre_post_conversion_on_str): If pre-write-conversion function
+	changed the current buffer, delete the new buffer.
+	(run_pre_write_conversin_on_c_str): Likewise.
+
+	* fileio.c (Fexpand_file_name): Check multibyteness of
+	default_directory.
+
+2005-09-13  Kenichi Handa  <handa@m17n.org>
+
+	* composite.c (compose_chars_in_text): Delete it.
+
+	* composite.h (compose_chars_in_text): Delete extern.
+
+2005-09-13  Kim F. Storm  <storm@cua.dk>
+
+	* print.c (print_error_message): Fix last change.
+
 2005-09-12  Kim F. Storm  <storm@cua.dk>
 
 	* composite.c (compose_chars_in_text): Fix setup of `pend'.
--- a/src/Makefile.in	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/Makefile.in	Sat Sep 17 19:10:55 2005 +0000
@@ -310,10 +310,6 @@
 
 #ifdef HAVE_MENUS
 
-#ifndef HAVE_CARBON
-XMENU_OBJ = xmenu.o
-#endif
-
 #ifdef USE_GTK
 GTK_OBJ= gtkutil.o
 #endif
@@ -449,9 +445,6 @@
 LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM
 #endif /* not HAVE_X11 */
 #else /* not HAVE_X_WINDOWS */
-#if defined(HAVE_MENUS) && !defined(HAVE_CARBON)
-XMENU_OBJ = xmenu.o
-#endif
 #endif /* not HAVE_X_WINDOWS */
 
 LIBSOUND= @LIBSOUND@
@@ -577,7 +570,7 @@
 
 /* lastfile must follow all files
    whose initialized data areas should be dumped as pure by dump-emacs.  */
-obj=    dispnew.o frame.o scroll.o xdisp.o $(XMENU_OBJ) window.o \
+obj=    dispnew.o frame.o scroll.o xdisp.o xmenu.o window.o \
 	charset.o coding.o category.o ccl.o \
 	cm.o term.o xfaces.o $(XOBJ) $(GTK_OBJ)\
 	emacs.o keyboard.o macros.o keymap.o sysdep.o \
@@ -596,7 +589,7 @@
    These go in the DOC file on all machines
    in case they are needed there.  */
 SOME_MACHINE_OBJECTS = sunfns.o dosfns.o msdos.o \
-  xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
+  xterm.o xfns.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
   mac.o macterm.o macfns.o macmenu.o macselect.o fontset.o \
   w32.o w32bdf.o w32console.o w32fns.o w32heap.o w32inevt.o \
   w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o
--- a/src/coding.c	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/coding.c	Sat Sep 17 19:10:55 2005 +0000
@@ -5349,8 +5349,8 @@
       }									\
   } while (0)
 
-/* ARG is (CODING . BUFFER) where CODING is what to be set in
-   Vlast_coding_system_used and BUFFER if non-nil is a buffer to
+/* ARG is (CODING BUFFER ...) where CODING is what to be set in
+   Vlast_coding_system_used and the remaining elements are buffers to
    kill.  */
 static Lisp_Object
 code_convert_region_unwind (arg)
@@ -5358,8 +5358,8 @@
 {
   inhibit_pre_post_conversion = 0;
   Vlast_coding_system_used = XCAR (arg);
-  if (! NILP (XCDR (arg)))
-    Fkill_buffer (XCDR (arg));
+  for (arg = XCDR (arg); ! NILP (arg); arg = XCDR (arg))
+    Fkill_buffer (XCAR (arg));
   return Qnil;
 }
 
@@ -6077,6 +6077,7 @@
   int multibyte = STRING_MULTIBYTE (str);
   Lisp_Object old_deactivate_mark;
   Lisp_Object buffer_to_kill;
+  Lisp_Object unwind_arg;
 
   record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
   /* It is not crucial to specbind this.  */
@@ -6087,15 +6088,25 @@
      unibyte<->multibyte conversion.  For that, we adjust the
      multibyteness of the working buffer to that of STR.  */
   buffer_to_kill = set_conversion_work_buffer (multibyte);
-  record_unwind_protect (code_convert_region_unwind,
-			 Fcons (Vlast_coding_system_used, buffer_to_kill));
+  if (NILP (buffer_to_kill))
+    unwind_arg = Fcons (Vlast_coding_system_used, Qnil);
+  else
+    unwind_arg = list2 (Vlast_coding_system_used, buffer_to_kill);
+  record_unwind_protect (code_convert_region_unwind, unwind_arg);
 
   insert_from_string (str, 0, 0,
 		      SCHARS (str), SBYTES (str), 0);
   UNGCPRO;
   inhibit_pre_post_conversion = 1;
   if (encodep)
-    call2 (coding->pre_write_conversion, make_number (BEG), make_number (Z));
+    {
+      struct buffer *prev = current_buffer;
+
+      call2 (coding->pre_write_conversion, make_number (BEG), make_number (Z));
+      if (prev != current_buffer)
+	/* We must kill the current buffer too.  */
+	Fsetcdr (unwind_arg, Fcons (Fcurrent_buffer (), XCDR (unwind_arg)));
+    }
   else
     {
       Vlast_coding_system_used = coding->symbol;
@@ -6129,6 +6140,7 @@
 {
   struct gcpro gcpro1, gcpro2;
   struct buffer *cur = current_buffer;
+  struct buffer *prev;
   Lisp_Object old_deactivate_mark, old_last_coding_system_used;
   Lisp_Object args[3];
   Lisp_Object buffer_to_kill;
@@ -6145,6 +6157,7 @@
   insert_1_both (*str, nchars, nbytes, 0, 0, 0);
   UNGCPRO;
   inhibit_pre_post_conversion = 1;
+  prev = current_buffer;
   args[0] = coding->pre_write_conversion;
   args[1] = make_number (BEG);
   args[2] = make_number (Z);
@@ -6164,6 +6177,8 @@
   bcopy (BEG_ADDR, *str, coding->produced);
   coding->src_multibyte
     = ! NILP (current_buffer->enable_multibyte_characters);
+  if (prev != current_buffer)
+    Fkill_buffer (Fcurrent_buffer ());
   set_buffer_internal (cur);
   if (! NILP (buffer_to_kill))
     Fkill_buffer (buffer_to_kill);
--- a/src/composite.c	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/composite.c	Sat Sep 17 19:10:55 2005 +0000
@@ -589,132 +589,6 @@
 		       Qcomposition, prop, string);
 }
 
-/* Compose sequences of characters in the region between START and END
-   by functions registered in Vcomposition_function_table.  If STRING
-   is non-nil, operate on characters contained between indices START
-   and END in STRING.  */
-
-void
-compose_chars_in_text (start, end, string)
-     int start, end;
-     Lisp_Object string;
-{
-  int count = 0;
-  struct gcpro gcpro1;
-  Lisp_Object tail, elt, val, to;
-  /* Set to nonzero if we don't have to compose ASCII characters.  */
-  int skip_ascii;
-  int i, len, stop, c;
-  const unsigned char *ptr, *pend;
-
-  if (! CHAR_TABLE_P (Vcomposition_function_table))
-    return;
-
-  if (STRINGP (string))
-    {
-      count = SPECPDL_INDEX ();
-      GCPRO1 (string);
-      stop = end;
-      ptr = SDATA (string) + string_char_to_byte (string, start);
-      pend = SDATA (string) + SBYTES (string);
-    }
-  else
-    {
-      record_unwind_protect (save_excursion_restore, save_excursion_save ());
-      TEMP_SET_PT (start);
-      stop = (start < GPT && GPT < end ? GPT : end);
-      ptr = CHAR_POS_ADDR (start);
-      pend = CHAR_POS_ADDR (end);
-    }
-
-  /* Preserve the match data.  */
-  record_unwind_save_match_data ();
-
-  /* If none of ASCII characters have composition functions, we can
-     skip them quickly.  */
-  for (i = 0; i < 128; i++)
-    if (!NILP (CHAR_TABLE_REF (Vcomposition_function_table, i)))
-      break;
-  skip_ascii = (i == 128);
-
-
-  while (1)
-    {
-      if (skip_ascii)
-	while (start < stop && ASCII_BYTE_P (*ptr))
-	  start++, ptr++;
-
-      if (start >= stop)
-	{
-	  if (stop == end || start >= end)
-	    break;
-	  stop = end;
-	  if (STRINGP (string))
-	    ptr = SDATA (string) + string_char_to_byte (string, start);
-	  else
-	    ptr = CHAR_POS_ADDR (start);
-	}
-
-      c = STRING_CHAR_AND_LENGTH (ptr, pend - ptr, len);
-      tail = CHAR_TABLE_REF (Vcomposition_function_table, c);
-      while (CONSP (tail))
-	{
-	  elt = XCAR (tail);
-	  if (CONSP (elt)
-	      && STRINGP (XCAR (elt))
-	      && !NILP (Ffboundp (XCDR (elt))))
-	    {
-	      if (STRINGP (string))
-		val = Fstring_match (XCAR (elt), string, make_number (start));
-	      else
-		{
-		  val = Flooking_at (XCAR (elt));
-		  if (!NILP (val))
-		    val = make_number (start);
-		}
-	      if (INTEGERP (val) && XFASTINT (val) == start)
-		{
-		  to = Fmatch_end (make_number (0));
-		  val = call4 (XCDR (elt), val, to, XCAR (elt), string);
-		  if (INTEGERP (val) && XINT (val) > 1)
-		    {
-		      start += XINT (val);
-		      if (STRINGP (string))
-			{
-			  ptr = SDATA (string) + string_char_to_byte (string, start);
-			  pend = SDATA (string) + SBYTES (string);
-			}
-		      else
-			ptr = CHAR_POS_ADDR (start);
-		    }
-		  else if (STRINGP (string))
-		    {
-		      start++;
-		      ptr = SDATA (string) + string_char_to_byte (string, start);
-		      pend = SDATA (string) + SBYTES (string);
-		    }
-		  else
-		    {
-		      start++;
-		      ptr += len;
-		    }
-		  break;
-		}
-	    }
-	  tail = XCDR (tail);
-	}
-      if (!CONSP (tail))
-	{
-	  /* No composition done.  Try the next character.  */
-	  start++;
-	  ptr += len;
-	}
-    }
-
-  unbind_to (count, Qnil);
-  if (STRINGP (string))
-    UNGCPRO;
-}
 
 /* Emacs Lisp APIs.  */
 
--- a/src/composite.h	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/composite.h	Sat Sep 17 19:10:55 2005 +0000
@@ -209,7 +209,6 @@
 extern void syms_of_composite P_ ((void));
 extern void compose_text P_ ((int, int, Lisp_Object, Lisp_Object,
 			      Lisp_Object));
-extern void compose_chars_in_text P_ ((int, int, Lisp_Object));
 
 #endif /* not EMACS_COMPOSITE_H */
 
--- a/src/emacs.c	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/emacs.c	Sat Sep 17 19:10:55 2005 +0000
@@ -1628,14 +1628,12 @@
 #endif
 #endif /* HAVE_X_WINDOWS */
 
-#ifdef HAVE_MENUS
 #ifndef HAVE_NTGUI
 #ifndef MAC_OS
       /* Called before init_window_once for Mac OS Classic.  */
       syms_of_xmenu ();
 #endif
 #endif
-#endif
 
 #ifdef HAVE_NTGUI
       syms_of_w32term ();
--- a/src/fileio.c	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/fileio.c	Sat Sep 17 19:10:55 2005 +0000
@@ -227,6 +227,11 @@
    expanding file names.  This can be bound to / or \. */
 Lisp_Object Vdirectory_sep_char;
 
+#ifdef HAVE_FSYNC
+/* Nonzero means skip the call to fsync in Fwrite-region.  */
+int write_region_inhibit_fsync;
+#endif
+
 extern Lisp_Object Vuser_login_name;
 
 #ifdef WINDOWSNT
@@ -1058,6 +1063,7 @@
 #endif /* DOS_NT */
   int length;
   Lisp_Object handler, result;
+  int multibyte;
 
   CHECK_STRING (name);
 
@@ -1135,6 +1141,7 @@
 
   name = FILE_SYSTEM_CASE (name);
   nm = SDATA (name);
+  multibyte = STRING_MULTIBYTE (name);
 
 #ifdef DOS_NT
   /* We will force directory separators to be either all \ or /, so make
@@ -1300,8 +1307,7 @@
 	  if (index (nm, '/'))
 	    {
 	      nm = sys_translate_unix (nm);
-	      return make_specified_string (nm, -1, strlen (nm),
-					    STRING_MULTIBYTE (name));
+	      return make_specified_string (nm, -1, strlen (nm), multibyte);
 	    }
 #endif /* VMS */
 #ifdef DOS_NT
@@ -1313,8 +1319,7 @@
 	  if (IS_DIRECTORY_SEP (nm[1]))
 	    {
 	      if (strcmp (nm, SDATA (name)) != 0)
-		name = make_specified_string (nm, -1, strlen (nm),
-					      STRING_MULTIBYTE (name));
+		name = make_specified_string (nm, -1, strlen (nm), multibyte);
 	    }
 	  else
 #endif
@@ -1323,8 +1328,7 @@
 	    {
 	      char temp[] = " :";
 
-	      name = make_specified_string (nm, -1, p - nm,
-					    STRING_MULTIBYTE (name));
+	      name = make_specified_string (nm, -1, p - nm, multibyte);
 	      temp[0] = DRIVE_LETTER (drive);
 	      name = concat2 (build_string (temp), name);
 	    }
@@ -1332,8 +1336,7 @@
 #else /* not DOS_NT */
 	  if (nm == SDATA (name))
 	    return name;
-	  return make_specified_string (nm, -1, strlen (nm),
-					STRING_MULTIBYTE (name));
+	  return make_specified_string (nm, -1, strlen (nm), multibyte);
 #endif /* not DOS_NT */
 	}
     }
@@ -1445,6 +1448,7 @@
       && !newdir)
     {
       newdir = SDATA (default_directory);
+      multibyte |= STRING_MULTIBYTE (default_directory);
 #ifdef DOS_NT
       /* Note if special escape prefix is present, but remove for now.  */
       if (newdir[0] == '/' && newdir[1] == ':')
@@ -1710,8 +1714,7 @@
   CORRECT_DIR_SEPS (target);
 #endif /* DOS_NT */
 
-  result = make_specified_string (target, -1, o - target,
-                                  STRING_MULTIBYTE (name));
+  result = make_specified_string (target, -1, o - target, multibyte);
 
   /* Again look to see if the file name has special constructs in it
      and perhaps call the corresponding file handler.  This is needed
@@ -5300,7 +5303,7 @@
      Disk full in NFS may be reported here.  */
   /* mib says that closing the file will try to write as fast as NFS can do
      it, and that means the fsync here is not crucial for autosave files.  */
-  if (!auto_saving && fsync (desc) < 0)
+  if (!auto_saving && !write_region_inhibit_fsync && fsync (desc) < 0)
     {
       /* If fsync fails with EINTR, don't treat that as serious.  */
       if (errno != EINTR)
@@ -6746,6 +6749,13 @@
 a non-nil value.  */);
   Vauto_save_list_file_name = Qnil;
 
+#ifdef HAVE_FSYNC
+  DEFVAR_BOOL ("write-region-inhibit-fsync", &write_region_inhibit_fsync,
+	       doc: /* *Non-nil means don't call fsync after saving files.
+Enabling this variable may result in data loss!  */);
+  write_region_inhibit_fsync = 0;
+#endif
+
   defsubr (&Sfind_file_name_handler);
   defsubr (&Sfile_name_directory);
   defsubr (&Sfile_name_nondirectory);
--- a/src/print.c	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/print.c	Sat Sep 17 19:10:55 2005 +0000
@@ -1028,7 +1028,7 @@
       Lisp_Object cname = SYMBOL_NAME (caller);
       char *name = alloca (SBYTES (cname));
       bcopy (SDATA (cname), name, SBYTES (cname));
-      message_dolog (name, strlen (name), 0, 0);
+      message_dolog (name, SBYTES (cname), 0, 0);
       message_dolog (": ", 2, 0, 0);
     }
 
--- a/src/xdisp.c	Sat Sep 17 19:00:49 2005 +0000
+++ b/src/xdisp.c	Sat Sep 17 19:10:55 2005 +0000
@@ -4794,7 +4794,8 @@
 	   && indented_beyond_p (IT_CHARPOS (*it), IT_BYTEPOS (*it),
 				 (double) it->selective)) /* iftc */
       {
-	xassert (FETCH_BYTE (IT_BYTEPOS (*it) - 1) == '\n');
+	xassert (IT_BYTEPOS (*it) == BEGV
+		 || FETCH_BYTE (IT_BYTEPOS (*it) - 1) == '\n');
 	newline_found_p = forward_to_next_line_start (it, &skipped_p);
       }
 
@@ -6512,6 +6513,7 @@
       /* If buffer ends in ZV without a newline, move to the start of
 	 the line to satisfy the post-condition.  */
       if (IT_CHARPOS (*it) == ZV
+	  && ZV > BEGV
 	  && FETCH_BYTE (IT_BYTEPOS (*it) - 1) != '\n')
 	move_it_by_lines (it, 0, 0);
     }
@@ -10019,12 +10021,14 @@
 	  if (FRAME_WINDOW_P (it->f)
 	      && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0)
 	    {
+#ifdef HAVE_WINDOW_SYSTEM
 	      if (val = Fget (var, Qoverlay_arrow_bitmap), SYMBOLP (val))
 		{
 		  int fringe_bitmap;
 		  if ((fringe_bitmap = lookup_fringe_bitmap (val)) != 0)
 		    return make_number (fringe_bitmap);
 		}
+#endif
 	      return make_number (-1); /* Use default arrow bitmap */
 	    }
 	  return overlay_arrow_string_or_property (var);
@@ -15969,7 +15973,7 @@
       {
 	/* A string: output it and check for %-constructs within it.  */
 	unsigned char c;
-	const unsigned char *this, *lisp_string;
+	int offset = 0;
 
 	if (!NILP (props) || risky)
 	  {
@@ -16027,8 +16031,7 @@
 	      }
 	  }
 
-	this = SDATA (elt);
-	lisp_string = this;
+	offset = 0;
 
 	if (literal)
 	  {
@@ -16051,42 +16054,44 @@
 	    break;
 	  }
 
+	/* Handle the non-literal case.  */
+
 	while ((precision <= 0 || n < precision)
-	       && *this
+	       && SREF (elt, offset) != 0
 	       && (mode_line_target != MODE_LINE_DISPLAY
 		   || it->current_x < it->last_visible_x))
 	  {
-	    const unsigned char *last = this;
+	    int last_offset = offset;
 
 	    /* Advance to end of string or next format specifier.  */
-	    while ((c = *this++) != '\0' && c != '%')
+	    while ((c = SREF (elt, offset++)) != '\0' && c != '%')
 	      ;
 
-	    if (this - 1 != last)
+	    if (offset - 1 != last_offset)
 	      {
 		int nchars, nbytes;
 
 		/* Output to end of string or up to '%'.  Field width
 		   is length of string.  Don't output more than
 		   PRECISION allows us.  */
-		--this;
-
-		prec = c_string_width (last, this - last, precision - n,
+		offset--;
+
+		prec = c_string_width (SDATA (elt) + last_offset,
+				       offset - last_offset, precision - n,
 				       &nchars, &nbytes);
 
 		switch (mode_line_target)
 		  {
 		  case MODE_LINE_NOPROP:
 		  case MODE_LINE_TITLE:
-		    n += store_mode_line_noprop (last, 0, prec);
+		    n += store_mode_line_noprop (SDATA (elt) + last_offset, 0, prec);
 		    break;
 		  case MODE_LINE_STRING:
 		    {
-		      int bytepos = last - lisp_string;
+		      int bytepos = last_offset;
 		      int charpos = string_byte_to_char (elt, bytepos);
 		      int endpos = (precision <= 0
-				    ? string_byte_to_char (elt,
-							   this - lisp_string)
+				    ? string_byte_to_char (elt, offset)
 				    : charpos + nchars);
 
 		      n += store_mode_line_string (NULL,
@@ -16097,7 +16102,7 @@
 		    break;
 		  case MODE_LINE_DISPLAY:
 		    {
-		      int bytepos = last - lisp_string;
+		      int bytepos = last_offset;
 		      int charpos = string_byte_to_char (elt, bytepos);
 		      n += display_string (NULL, elt, Qnil, 0, charpos,
 					   it, 0, prec, 0,
@@ -16108,12 +16113,12 @@
 	      }
 	    else /* c == '%' */
 	      {
-		const unsigned char *percent_position = this;
+		int percent_position = offset;
 
 		/* Get the specified minimum width.  Zero means
 		   don't pad.  */
 		field = 0;
-		while ((c = *this++) >= '0' && c <= '9')
+		while ((c = SREF (elt, offset++)) >= '0' && c <= '9')
 		  field = field * 10 + c - '0';
 
 		/* Don't pad beyond the total padding allowed.  */
@@ -16133,7 +16138,7 @@
 		    int bytepos, charpos;
 		    unsigned char *spec;
 
-		    bytepos = percent_position - lisp_string;
+		    bytepos = percent_position;
 		    charpos = (STRING_MULTIBYTE (elt)
 			       ? string_byte_to_char (elt, bytepos)
 			       : bytepos);
@@ -16191,8 +16196,6 @@
 		else /* c == 0 */
 		  break;
 	      }
-	    this += SDATA (elt) - lisp_string;
-	    lisp_string = SDATA (elt);
 	  }
       }
       break;