changeset 83122:d895a49cccb9

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-291 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-292 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-293 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-294 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-295 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-296 Allow restarting an existing debugger session that's exited * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-297 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-298 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-162
author Karoly Lorentey <lorentey@elte.hu>
date Tue, 11 May 2004 09:12:09 +0000
parents 84cafe5c268f (current diff) 510785c43ed0 (diff)
children ad01ab3c6f4d
files lisp/ChangeLog src/fileio.c src/lisp.h src/print.c src/xdisp.c src/xfns.c
diffstat 46 files changed, 597 insertions(+), 453 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/admin/notes/exit-value	Tue May 11 09:12:09 2004 +0000
@@ -0,0 +1,23 @@
+ttn 2004-05-09
+
+The exit value of a program returning to the shell on unixoid systems is
+typically 0 for success, and non-0 (such as 1) for failure.  For vms it is
+odd (1,3,5...) for success, even (0,2,4...) for failure.
+
+This holds from the point of view of the "shell" (in quotes because vms has a
+different dispatch model that is not explained further here).
+
+From the point of view of the program, nowadays stdlib.h on both type of
+systems provides macros `EXIT_SUCCESS' and `EXIT_FAILURE' that should DTRT.
+
+NB: The numerical values of these macros DO NOT need to fulfill the the exit
+value requirements outlined in the first paragraph!  That is the job of the
+`exit' function.  Thus, this kind of construct shows misunderstanding:
+
+   #ifdef VMS
+      exit (1);
+   #else
+      exit (0);
+   #endif
+
+Values aside from EXIT_SUCCESS and EXIT_FAILURE are tricky.
--- a/configure	Tue May 11 09:11:36 2004 +0000
+++ b/configure	Tue May 11 09:12:09 2004 +0000
@@ -1573,15 +1573,6 @@
    use GNU make.  If you do not have GNU make, then you must
    now do \`make distclean' in ${srcdir},
    and then run $0 again." >&2;}
-
-extrasub='/^VPATH[	 ]*=/c\
-vpath %.c $(srcdir)\
-vpath %.h $(srcdir)\
-vpath %.y $(srcdir)\
-vpath %.l $(srcdir)\
-vpath %.s $(srcdir)\
-vpath %.in $(srcdir)\
-vpath %.texi $(srcdir)'
 fi
 
 #### Given the configuration name, set machfile and opsysfile to the
@@ -4194,7 +4185,7 @@
 
 
 late_LDFLAGS=$LDFLAGS
-if test $GCC = yes; then
+if test "$GCC" = yes; then
   LDFLAGS="$LDFLAGS -Wl,-znocombreloc"
 else
   LDFLAGS="$LDFLAGS -znocombreloc"
--- a/etc/NEWS	Tue May 11 09:11:36 2004 +0000
+++ b/etc/NEWS	Tue May 11 09:12:09 2004 +0000
@@ -90,6 +90,16 @@
 
 * Changes in Emacs 21.4
 
+** Convenient commands to switch buffers in a cyclic order are C-x <left>
+(prev-buffer) and C-x <right> (next-buffer).
+
+** Commands winner-redo and winner-undo, from winner.el, are now bound to
+C-c <left> and C-c <right>, respectively.  This is an incompatible change.
+
+** Help commands `describe-funcion' and `describe-key' now show function
+arguments in italics.  To change the default highlighting customize the
+face `help-argument-name'.
+
 ---
 ** The comint prompt can now be made read-only, using the new user
 option `comint-prompt-read-only'.  This is not enabled by default,
@@ -3509,10 +3519,7 @@
 with Custom.
 
 ** UTF-16 coding systems are available, encoding the same characters
-as mule-utf-8.  Coding system `utf-16-le-dos' is useful as the value
-of `selection-coding-system' in MS Windows, allowing you to paste
-multilingual text from the clipboard.  Set it interactively with
-C-x RET x or in .emacs with `(set-selection-coding-system 'utf-16-le-dos)'.
+as mule-utf-8.
 
 ** There is a new language environment for UTF-8 (set up automatically
 in UTF-8 locales).
--- a/etc/PROBLEMS	Tue May 11 09:11:36 2004 +0000
+++ b/etc/PROBLEMS	Tue May 11 09:12:09 2004 +0000
@@ -574,11 +574,6 @@
 appropriate keyboard encoding automatically, but it doesn't do that
 yet.)
 
-Windows uses UTF-16 encoding to deal with multilingual text (text not
-encodable in the `system codepage') in the clipboard.  To deal with
-this, load the library `utf-16' and use `set-selection-coding-system'
-to set the clipboard coding system to `utf-16-le-with-signature-dos'.
-
 The %b specifier for format-time-string does not produce abbreviated
 month names with consistent widths for some locales on some versions
 of Windows. This is caused by a deficiency in the underlying system
--- a/leim/ChangeLog	Tue May 11 09:11:36 2004 +0000
+++ b/leim/ChangeLog	Tue May 11 09:12:09 2004 +0000
@@ -1,3 +1,8 @@
+2004-05-10  Andreas Schwab  <schwab@suse.de>
+
+	* Makefile.in (all): Readd dependency on ${WORLD} so that lisp
+	files are compiled when bootstrapping.
+
 2004-05-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* quail/latin-ltx.el ("TeX"): Fix typo.
--- a/leim/Makefile.in	Tue May 11 09:11:36 2004 +0000
+++ b/leim/Makefile.in	Tue May 11 09:12:09 2004 +0000
@@ -1,5 +1,5 @@
 # Makefile for leim subdirectory in GNU Emacs.
-# Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
+# Copyright (C) 1997, 2004 Electrotechnical Laboratory, JAPAN.
 # Licensed to the Free Software Foundation.
 
 # This file is part of GNU Emacs.
@@ -147,7 +147,7 @@
 .el.elc:
 	${RUN-EMACS} -f batch-byte-compile $<
 
-all: ${BUILT-EMACS} ${SUBDIRS} leim-list.el
+all: ${BUILT-EMACS} ${SUBDIRS} leim-list.el ${WORLD}
 
 # To ensure that we can run Emacs.  This target is ignored (never
 # being hit) if a user changes default value of EMACS.
--- a/lib-src/ChangeLog	Tue May 11 09:11:36 2004 +0000
+++ b/lib-src/ChangeLog	Tue May 11 09:12:09 2004 +0000
@@ -1,3 +1,8 @@
+2004-05-08  Jason Rumney  <jasonr@gnu.org>
+
+	* makefile.w32-in (lisp1, lisp2): Split lisp to avoid long
+	command-lines.
+
 2004-05-08  Thien-Thi Nguyen  <ttn@gnu.org>
 
 	* cvtmail.c: Throughout, replace 0 destined for `exit' arg
--- a/lib-src/makefile.w32-in	Tue May 11 09:11:36 2004 +0000
+++ b/lib-src/makefile.w32-in	Tue May 11 09:12:09 2004 +0000
@@ -139,7 +139,7 @@
 MSDOS_SUPPORT = $(lispsource)dos-fns.elc $(lispsource)dos-vars.elc $(lispsource)international/ccl.elc $(lispsource)international/codepage.elc
 VMS_SUPPORT = $(lispsource)vmsproc.elc $(lispsource)vms-patch.elc
 
-lisp= \
+lisp1= \
 	$(lispsource)abbrev.elc \
 	$(lispsource)buff-menu.elc \
 	$(lispsource)button.elc \
@@ -178,7 +178,9 @@
 	$(lispsource)international/latin-5.el \
 	$(lispsource)international/latin-8.el \
 	$(lispsource)international/latin-9.el \
-	$(lispsource)case-table.elc \
+	$(lispsource)case-table.elc
+
+lisp2 = \
 	$(lispsource)language/chinese.elc \
 	$(lispsource)language/cyrillic.elc \
 	$(lispsource)language/indian.elc \
@@ -228,7 +230,8 @@
 $(DOC):		make-docfile
 		- $(DEL) $(DOC)
 		"$(THISDIR)/$(BLD)/make-docfile" -o $(DOC) -d ../src $(obj)
-		"$(THISDIR)/$(BLD)/make-docfile" -a $(DOC) -d ../src $(lisp)
+		"$(THISDIR)/$(BLD)/make-docfile" -a $(DOC) -d ../src $(lisp1)
+		"$(THISDIR)/$(BLD)/make-docfile" -a $(DOC) -d ../src $(lisp2)
 		$(CP) $(DOC) ../etc/DOC-X
 		- mkdir "../src/$(OBJDIR)"
 		- mkdir "../src/$(OBJDIR)/etc"
--- a/lisp/ChangeLog	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/ChangeLog	Tue May 11 09:12:09 2004 +0000
@@ -1,5 +1,57 @@
+2004-05-10  Kenichi Handa  <handa@m17n.org>
+
+	* descr-text.el (describe-char): Fix previous change.  Don't make
+	a unibyte character to multibyte in the *Help* buffer.
+
+2004-05-10  Miles Bader  <miles@gnu.org>
+
+	* lisp/progmodes/gud.el (gud-common-init): Only consider an existing
+	buffer an error if the debugger process is actually running.
+
+2004-05-10  Juanma Barranquero  <lektu@terra.es>
+
+	* subr.el (remove-overlays, read-passwd): Fix docstring.
+
+	* help-fns.el (help-argument-name): Default to italic.
+	(help-highlight-arguments): Return always (usage . doc), even when
+	usage is nil.
+
+2004-05-09  Jason Rumney  <jasonr@gnu.org>
+
+	* international/code-pages (cp932, cp936, cp949, c950): Remove.
+	Only define cp125* if windows-125* is already defined.
+
+	* language/korean.el (cp949): Add alias.
+
+	* language/chinese.el (cp936, cp950): Add aliases.
+
+	* language/japanese.el (cp932): Add alias.
+
+	* term/w32-win.el: Require code-pages.
+
+	* international/mule-cmds.el (set-locale-environment): On
+	MS-Windows use ansi code-page for default coding-systems.
+	Set up paper sizes for Windows 3 letter languages.
+
+	* international/code-pages.el (cp932, cp936, cp949, cp950): Add
+	aliases.  Also add cp125* if not already defined.
+
+2004-05-09  Juanma Barranquero  <lektu@terra.es>
+
+	* net/quickurl.el (quickurl, quickurl-browse-url, quickurl-read):
+	Don't use CL-style default args.
+
+	* pcvs.el (cvs-mode-run, cvs-is-within-p): Fix typo in docstring.
+	(cvs-get-marked): Remove redundant arglist info.
+
+	* help-fns.el (help-highlight-arguments): Don't try to highlight
+	missing or autoloaded arglists.  Accept structured arguments, like
+	the first ones of `do' and `flet'.
+
 2004-05-08  Andreas Schwab  <schwab@suse.de>
 
+	* emacs-lisp/checkdoc.el (checkdoc-minor-mode): Doc fix.
+
 	* international/subst-ksc.el: Fix references to utf-translate-cjk
 	into utf-translate-cjk-mode.
 	* international/subst-big5.el: Likewise.
@@ -42,7 +94,7 @@
 	Baha'i calendar to Emacs.  This calendar is based on a solar year
 	of 19 months of 19 days, with 4 intercalary days.  Each year
 	begins on March 21, with the calendar starting in 1844.
-	
+
 	* calendar/cal-menu.el, calendar/calendar.el,
 	calendar/diary-lib.el, calendar/holidays.el: Added support for
 	using cal-bahai.el.
@@ -63,6 +115,14 @@
 	(open-line): Make argument names match their use in docstring.
 	(split-line): Fix docstring.
 
+	* emacs-lisp/cl-macs.el (do, do*): Put usage info in a format
+	usable by `describe-function'.
+	(gensym, gentemp, typep, ignore-errors): Make argument names match
+	their use in docstring.
+
+	* progmodes/python.el (python-describe-symbol): Pass INTERACTIVE-P
+	argument to `help-setup-xref'.
+
 2004-05-07  Kai Grossjohann  <kai@emptydomain.de>
 
 	Version 2.0.40 of Tramp released.
--- a/lisp/descr-text.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/descr-text.el	Tue May 11 09:12:09 2004 +0000
@@ -465,7 +465,6 @@
   (if (>= pos (point-max))
       (error "No character follows specified position"))
   (let* ((char (char-after pos))
-	 (char-string (buffer-substring pos (1+ pos)))
 	 (charset (char-charset char))
 	 (buffer (current-buffer))
 	 (composition (find-composition pos nil nil t))
@@ -478,125 +477,114 @@
 	 (overlays (mapcar #'(lambda (o) (overlay-properties o))
 			   (overlays-at pos)))
 	 item-list max-width unicode)
-    (if (eq charset 'unknown)
-	(setq item-list '("character"))
 
-      (if (or (< char 256)
-	      (memq 'mule-utf-8 (find-coding-systems-region pos (1+ pos)))
-	      (get-char-property pos 'untranslated-utf-8))
-	  (setq unicode (or (get-char-property pos 'untranslated-utf-8)
-			    (encode-char char 'ucs))))
-      (setq item-list
-	    `(("character")
-	      ("charset"
-	       ,(symbol-name charset)
-	       ,(format "(%s)" (charset-description charset)))
-	      ("code point"
-	       ,(let ((split (split-char char)))
-		  (if (= (charset-dimension charset) 1)
-		      (format "%d" (nth 1 split))
-		    (format "%d %d" (nth 1 split) (nth 2 split)))))
-	      ("syntax"
- 	       ,(let ((syntax (syntax-after pos)))
-		  (with-temp-buffer
-		    (internal-describe-syntax-value syntax)
-		    (buffer-string))))
-	      ("category"
-	       ,@(let ((category-set (char-category-set char)))
-		   (if (not category-set)
-		       '("-- none --")
-		     (mapcar #'(lambda (x) (format "%c:%s  "
-						   x (category-docstring x)))
-			     (category-set-mnemonics category-set)))))
-	      ,@(let ((props (aref char-code-property-table char))
-		      ps)
-		  (when props
-		    (while props
-		      (push (format "%s:" (pop props)) ps)
-		      (push (format "%s;" (pop props)) ps))
-		    (list (cons "Properties" (nreverse ps)))))
-	      ("buffer code"
-	       ,(encoded-string-description
-		 (string-as-unibyte (char-to-string char)) nil))
-	      ("file code"
-	       ,@(let* ((coding buffer-file-coding-system)
-			(encoded (encode-coding-char char coding)))
-		   (if encoded
-		       (list (encoded-string-description encoded coding)
-			     (format "(encoded by coding system %S)" coding))
-		     (list "not encodable by coding system"
-			   (symbol-name coding)))))
-	      ("display"
-	       ,(cond
-		 (disp-vector
-		  (setq disp-vector (copy-sequence disp-vector))
-		  (dotimes (i (length disp-vector))
-		    (setq char (aref disp-vector i))
-		    (aset disp-vector i
-			  (cons char (describe-char-display pos char))))
-		  (format "by display table entry [%s] (see below)"
-			  (mapconcat #'(lambda (x) (format "?%c" (car x)))
-				     disp-vector " ")))
-		 (composition
-		  (let ((from (car composition))
-			(to (nth 1 composition))
-			(next (1+ pos))
-			(components (nth 2 composition))
-			ch)
-		    (setcar composition
-			    (and (< from pos) (buffer-substring from pos)))
-		    (setcar (cdr composition)
-			    (and (< next to) (buffer-substring next to)))
-		    (dotimes (i (length components))
-		      (if (integerp (setq ch (aref components i)))
-			  (push (cons ch (describe-char-display pos ch))
-				component-chars)))
-		    (setq component-chars (nreverse component-chars))
-		    (format "composed to form \"%s\" (see below)"
-			    (buffer-substring from to))))
-		 (t
-		  (let ((display (describe-char-display pos char)))
-		    (if (display-graphic-p (selected-frame))
-			(if display
-			    (concat
-			     "by this font (glyph code)\n"
-			     (format "     %s (0x%02X)"
-				     (car display) (cdr display)))
-			  "no font available")
+    (if (or (< char 256)
+	    (memq 'mule-utf-8 (find-coding-systems-region pos (1+ pos)))
+	    (get-char-property pos 'untranslated-utf-8))
+	(setq unicode (or (get-char-property pos 'untranslated-utf-8)
+			  (encode-char char 'ucs))))
+    (setq item-list
+	  `(("character"
+	    ,(format "%s (0%o, %d, 0x%x%s)" 
+		     (apply 'propertize (if (not multibyte-p)
+					    (single-key-description char)
+					  (if (< char 128)
+					      (single-key-description char)
+					    (string-to-multibyte
+					     (char-to-string char))))
+			    (text-properties-at pos))
+		     char char char
+		     (if unicode
+			 (format ", U+%04X" unicode)
+		       "")))
+	    ("charset"
+	     ,(symbol-name charset)
+	     ,(format "(%s)" (charset-description charset)))
+	    ("code point"
+	     ,(let ((split (split-char char)))
+		(if (= (charset-dimension charset) 1)
+		    (format "%d" (nth 1 split))
+		  (format "%d %d" (nth 1 split) (nth 2 split)))))
+	    ("syntax"
+	     ,(let ((syntax (syntax-after pos)))
+		(with-temp-buffer
+		  (internal-describe-syntax-value syntax)
+		  (buffer-string))))
+	    ("category"
+	     ,@(let ((category-set (char-category-set char)))
+		 (if (not category-set)
+		     '("-- none --")
+		   (mapcar #'(lambda (x) (format "%c:%s  "
+						 x (category-docstring x)))
+			   (category-set-mnemonics category-set)))))
+	    ,@(let ((props (aref char-code-property-table char))
+		    ps)
+		(when props
+		  (while props
+		    (push (format "%s:" (pop props)) ps)
+		    (push (format "%s;" (pop props)) ps))
+		  (list (cons "Properties" (nreverse ps)))))
+	    ("buffer code"
+	     ,(encoded-string-description
+	       (string-as-unibyte (char-to-string char)) nil))
+	    ("file code"
+	     ,@(let* ((coding buffer-file-coding-system)
+		      (encoded (encode-coding-char char coding)))
+		 (if encoded
+		     (list (encoded-string-description encoded coding)
+			   (format "(encoded by coding system %S)" coding))
+		   (list "not encodable by coding system"
+			 (symbol-name coding)))))
+	    ("display"
+	     ,(cond
+	       (disp-vector
+		(setq disp-vector (copy-sequence disp-vector))
+		(dotimes (i (length disp-vector))
+		  (setq char (aref disp-vector i))
+		  (aset disp-vector i
+			(cons char (describe-char-display pos char))))
+		(format "by display table entry [%s] (see below)"
+			(mapconcat #'(lambda (x) (format "?%c" (car x)))
+				   disp-vector " ")))
+	       (composition
+		(let ((from (car composition))
+		      (to (nth 1 composition))
+		      (next (1+ pos))
+		      (components (nth 2 composition))
+		      ch)
+		  (setcar composition
+			  (and (< from pos) (buffer-substring from pos)))
+		  (setcar (cdr composition)
+			  (and (< next to) (buffer-substring next to)))
+		  (dotimes (i (length components))
+		    (if (integerp (setq ch (aref components i)))
+			(push (cons ch (describe-char-display pos ch))
+			      component-chars)))
+		  (setq component-chars (nreverse component-chars))
+		  (format "composed to form \"%s\" (see below)"
+			  (buffer-substring from to))))
+	       (t
+		(let ((display (describe-char-display pos char)))
+		  (if (display-graphic-p (selected-frame))
 		      (if display
-			  (format "terminal code %s" display)
-			"not encodable for terminal"))))))
-	      ,@(let ((unicodedata (and unicode
-					(describe-char-unicode-data unicode))))
-		  (if unicodedata
-		      (cons (list "Unicode data" " ") unicodedata))))))
+			  (concat
+			   "by this font (glyph code)\n"
+			   (format "     %s (0x%02X)"
+				   (car display) (cdr display)))
+			"no font available")
+		    (if display
+			(format "terminal code %s" display)
+		      "not encodable for terminal"))))))
+	    ,@(let ((unicodedata (and unicode
+				      (describe-char-unicode-data unicode))))
+		(if unicodedata
+		    (cons (list "Unicode data" " ") unicodedata)))))
     (setq max-width (apply #'max (mapcar #'(lambda (x) (length (car x)))
 					 item-list)))
-    (pop item-list)
-
     (with-output-to-temp-buffer "*Help*"
       (with-current-buffer standard-output
 	(set-buffer-multibyte multibyte-p)
 	(let ((formatter (format "%%%ds:" max-width)))
-	  (insert (format formatter "character") " ")
-	  (setq pos (point))
-	  (insert char-string
-		  (format " (`%s', 0%o, %d, 0x%x"
-			  (if (< char 256)
-			      (single-key-description char)
-			    (char-to-string char))
-			  char char char)
-		  (if (eq charset 'unknown)
-		      ") -- invalid character code\n"
-		    (if unicode
-			(format ", U+%04X)\n" unicode)
-		      ")\n")))
-	  (mapc #'(lambda (props)
-		    (let ((o (make-overlay pos (1+ pos))))
-		      (while props
-			(overlay-put o (car props) (nth 1 props))
-			(setq props (cddr props)))))
-		overlays)
 	  (dolist (elt item-list)
 	    (when (cadr elt)
 	      (insert (format formatter (car elt)))
@@ -610,6 +598,18 @@
 		(insert " " clm))
 	      (insert "\n"))))
 
+	(save-excursion
+	  (goto-char (point-min))
+	  (search-forward "character: ")
+	  (setq pos (point)))
+	(if overlays
+	    (mapc #'(lambda (props)
+		      (let ((o (make-overlay pos (1+ pos))))
+			(while props
+			  (overlay-put o (car props) (nth 1 props))
+			  (setq props (cddr props)))))
+		  overlays))
+
 	(when disp-vector
 	  (insert
 	   "\nThe display table entry is displayed by ")
--- a/lisp/emacs-lisp/checkdoc.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/emacs-lisp/checkdoc.el	Tue May 11 09:12:09 2004 +0000
@@ -1246,7 +1246,7 @@
 With prefix ARG, turn Checkdoc minor mode on iff ARG is positive.
 
 In Checkdoc minor mode, the usual bindings for `eval-defun' which is
-bound to \\<checkdoc-minor-mode-map> \\[checkdoc-eval-defun] and `checkdoc-eval-current-buffer' are overridden to include
+bound to \\<checkdoc-minor-mode-map>\\[checkdoc-eval-defun] and `checkdoc-eval-current-buffer' are overridden to include
 checking of documentation strings.
 
 \\{checkdoc-minor-mode-map}"
--- a/lisp/emacs-lisp/cl-macs.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/emacs-lisp/cl-macs.el	Tue May 11 09:12:09 2004 +0000
@@ -164,21 +164,21 @@
 ;;; Symbols.
 
 (defvar *gensym-counter*)
-(defun gensym (&optional arg)
+(defun gensym (&optional prefix)
   "Generate a new uninterned symbol.
 The name is made by appending a number to PREFIX, default \"G\"."
-  (let ((prefix (if (stringp arg) arg "G"))
-	(num (if (integerp arg) arg
+  (let ((pfix (if (stringp prefix) prefix "G"))
+	(num (if (integerp prefix) prefix
 	       (prog1 *gensym-counter*
 		 (setq *gensym-counter* (1+ *gensym-counter*))))))
-    (make-symbol (format "%s%d" prefix num))))
+    (make-symbol (format "%s%d" pfix num))))
 
-(defun gentemp (&optional arg)
+(defun gentemp (&optional prefix)
   "Generate a new interned symbol with a unique name.
 The name is made by appending a number to PREFIX, default \"G\"."
-  (let ((prefix (if (stringp arg) arg "G"))
+  (let ((pfix (if (stringp prefix) prefix "G"))
 	name)
-    (while (intern-soft (setq name (format "%s%d" prefix *gensym-counter*)))
+    (while (intern-soft (setq name (format "%s%d" pfix *gensym-counter*)))
       (setq *gensym-counter* (1+ *gensym-counter*)))
     (intern name)))
 
@@ -1177,12 +1177,14 @@
 
 (defmacro do (steps endtest &rest body)
   "The Common Lisp `do' loop.
-Format is: (do ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
+
+\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
   (cl-expand-do-loop steps endtest body nil))
 
 (defmacro do* (steps endtest &rest body)
   "The Common Lisp `do*' loop.
-Format is: (do* ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
+
+\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
   (cl-expand-do-loop steps endtest body t))
 
 (defun cl-expand-do-loop (steps endtest body star)
@@ -2398,10 +2400,10 @@
 	  ((eq (car type) 'satisfies) (list (cadr type) val))
 	  (t (error "Bad type spec: %s" type)))))
 
-(defun typep (val type)   ; See compiler macro below.
+(defun typep (object type)   ; See compiler macro below.
   "Check that OBJECT is of type TYPE.
 TYPE is a Common Lisp-style type specifier."
-  (eval (cl-make-type-test 'val type)))
+  (eval (cl-make-type-test 'object type)))
 
 (defmacro check-type (form type &optional string)
   "Verify that FORM is of type TYPE; signal an error if not.
@@ -2438,8 +2440,8 @@
 	       nil))))
 
 (defmacro ignore-errors (&rest body)
-  "Execute FORMS; if an error occurs, return nil.
-Otherwise, return result of last FORM."
+  "Execute BODY; if an error occurs, return nil.
+Otherwise, return result of last form in BODY."
   `(condition-case nil (progn ,@body) (error nil)))
 
 
--- a/lisp/help-fns.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/help-fns.el	Tue May 11 09:12:09 2004 +0000
@@ -45,10 +45,10 @@
 With ARG, you are asked to choose which language."
   (interactive "P")
   (let ((lang (if arg
-		    (let ((minibuffer-setup-hook minibuffer-setup-hook))
-		      (add-hook 'minibuffer-setup-hook
-				'minibuffer-completion-help)
-		      (read-language-name 'tutorial "Language: " "English"))
+                  (let ((minibuffer-setup-hook minibuffer-setup-hook))
+                    (add-hook 'minibuffer-setup-hook
+                              'minibuffer-completion-help)
+                    (read-language-name 'tutorial "Language: " "English"))
 		(if (get-language-info current-language-environment 'tutorial)
 		    current-language-environment
 		  "English")))
@@ -237,7 +237,7 @@
 	    (concat "src/" file)
 	  file)))))
 
-(defface help-argument-name '((t (:weight bold)))
+(defface help-argument-name '((t (:slant italic)))
   "Face to highlight function arguments in docstrings.")
 
 (defun help-do-arg-highlight (doc args)
@@ -253,17 +253,16 @@
 
 (defun help-highlight-arguments (usage doc &rest args)
   (when usage
-    (let ((case-fold-search nil)
-          (next (not args))
-          (opt nil))
-      ;; Make a list of all arguments
-      (with-temp-buffer
-        (insert usage)
-        (goto-char (point-min))
+    (with-temp-buffer
+      (insert usage)
+      (goto-char (point-min))
+      (let ((case-fold-search nil)
+            (next (not (or args (looking-at "\\["))))
+            (opt nil))
         ;; Make a list of all arguments
         (while next
           (or opt (not (looking-at " &")) (setq opt t))
-          (if (not (re-search-forward " \\([\\[(]?\\)\\([^] &)\.]+\\)" nil t))
+          (if (not (re-search-forward " \\([\\[(]*\\)\\([^] &)\.]+\\)" nil t))
               (setq next nil)
             (setq args (cons (match-string 2) args))
             (when (and opt (string= (match-string 1) "("))
@@ -272,11 +271,11 @@
               (search-backward "(")
               (goto-char (scan-sexps (point) 1)))))
         ;; Highlight aguments in the USAGE string
-        (setq usage (help-do-arg-highlight (buffer-string) args)))
-      ;; Highlight arguments in the DOC string
-      (setq doc (and doc (help-do-arg-highlight doc args)))
-      ;; Return value is like the one from help-split-fundoc, but highlighted
-      (cons usage doc))))
+        (setq usage (help-do-arg-highlight (buffer-string) args))
+        ;; Highlight arguments in the DOC string
+        (setq doc (and doc (help-do-arg-highlight doc args))))))
+  ;; Return value is like the one from help-split-fundoc, but highlighted
+  (cons usage doc))
 
 ;;;###autoload
 (defun describe-function-1 (function)
--- a/lisp/international/code-pages.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/international/code-pages.el	Tue May 11 09:12:09 2004 +0000
@@ -4482,20 +4482,18 @@
   ?๐  ?๑  ?๒  ?๓  ?๔  ?๕  ?๖  ?๗  ?๘  ?๙  ?๚  ?๛   nil nil nil nil]
  "ISO-8859-11.  This is `thai-tis620' with the addition of no-break-space.")
 
-(dotimes (i 8)
+(dotimes (i 9)
   (let ((w (intern (format "windows-125%d" i)))
 	(c (intern (format "cp125%d" i))))
-    (if (coding-system-p c)		; 1251 is in cyrillic.el
+    ;; Define cp125* as aliases for all windows-125*, so on Windows
+    ;; we can just concat "cp" to the ANSI codepage we get from the system
+    ;; and not have to worry about whether it should be "cp" or "windows-".
+    (if (coding-system-p w)
 	(define-coding-system-alias c w))
     ;; Compatibility with codepage.el, though cp... are not the
     ;; canonical names.
     (push (assoc w non-iso-charset-alist) non-iso-charset-alist)))
 
-;; Use Unicode font under Windows.  Jason Rumney fecit.
-(if (fboundp 'w32-add-charset-info)
-    (unless (boundp 'w32-unicode-charset-defined)
-      (w32-add-charset-info "iso10646-1" 'w32-charset-ansi t)))
-
 (provide 'code-pages)
 
 ;;; arch-tag: 8b6e3c73-b271-4198-866d-ea6d0ceff1b2
--- a/lisp/international/mule-cmds.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/international/mule-cmds.el	Tue May 11 09:12:09 2004 +0000
@@ -2413,6 +2413,16 @@
 	  (prefer-coding-system coding-system)
 	  (setq locale-coding-system coding-system))))
 
+    ;; On Windows, override locale-coding-system, keyboard-coding-system,
+    ;; selection-coding-system with system codepage.
+    (when (boundp 'w32-ansi-code-page)
+      (let ((code-page-coding (intern (format "cp%d" w32-ansi-code-page))))
+	(when (coding-system-p code-page-coding)
+	  (setq locale-coding-system code-page-coding)
+	  (set-selection-coding-system code-page-coding)
+	  (set-keyboard-coding-system code-page-coding)
+	  (set-terminal-coding-system code-page-coding))))
+
     ;; Default to A4 paper if we're not in a C, POSIX or US locale.
     ;; (See comments in Flocale_info.)
     (let ((locale locale)
@@ -2435,7 +2445,11 @@
 						("posix$" . letter)
 						(".._us" . letter)
 						(".._pr" . letter)
-						(".._ca" . letter)))
+						(".._ca" . letter)
+						("enu$" . letter) ; Windows
+						("esu$" . letter)
+						("enc$" . letter)
+						("frc$" . letter)))
 		    'a4))))))
   nil)
 
--- a/lisp/language/chinese.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/language/chinese.el	Tue May 11 09:12:09 2004 +0000
@@ -80,6 +80,7 @@
 (define-coding-system-alias 'euc-cn 'chinese-iso-8bit)
 (define-coding-system-alias 'cn-gb 'chinese-iso-8bit)
 (define-coding-system-alias 'gb2312 'chinese-iso-8bit)
+(define-coding-system-alias 'cp936 'chinese-iso-8bit)
 
 (make-coding-system
  'chinese-hz 0 ?z
@@ -137,6 +138,7 @@
 
 (define-coding-system-alias 'big5 'chinese-big5)
 (define-coding-system-alias 'cn-big5 'chinese-big5)
+(define-coding-system-alias 'cp950 'chinese-big5)
 
 ;; Big5 font requires special encoding.
 (define-ccl-program ccl-encode-big5-font
--- a/lisp/language/japanese.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/language/japanese.el	Tue May 11 09:12:09 2004 +0000
@@ -67,6 +67,7 @@
 
 (define-coding-system-alias 'shift_jis 'japanese-shift-jis)
 (define-coding-system-alias 'sjis 'japanese-shift-jis)
+(define-coding-system-alias 'cp932 'japanese-shift-jis)
 
 (make-coding-system
  'japanese-iso-7bit-1978-irv 2 ?j
--- a/lisp/language/korean.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/language/korean.el	Tue May 11 09:12:09 2004 +0000
@@ -38,6 +38,7 @@
 
 (define-coding-system-alias 'euc-kr 'korean-iso-8bit)
 (define-coding-system-alias 'euc-korea 'korean-iso-8bit)
+(define-coding-system-alias 'cp949 'korean-iso-8bit)
 
 (make-coding-system
  'iso-2022-kr 2 ?k
--- a/lisp/net/quickurl.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/net/quickurl.el	Tue May 11 09:12:09 2004 +0000
@@ -256,14 +256,16 @@
 
 ;; Main code:
 
-(defun* quickurl-read (&optional (buffer (current-buffer)))
+(defun* quickurl-read (&optional buffer)
   "`read' the URL list from BUFFER into `quickurl-urls'.
 
+BUFFER, if nil, defaults to current buffer.
 Note that this function moves point to `point-min' before doing the `read'
 It also restores point after the `read'."
   (save-excursion
     (setf (point) (point-min))
-    (setq quickurl-urls (funcall quickurl-sort-function (read buffer)))))
+    (setq quickurl-urls (funcall quickurl-sort-function
+                                 (read (or buffer (current-buffer)))))))
 
 (defun quickurl-load-urls ()
   "Load the contents of `quickurl-url-file' into `quickurl-urls'."
@@ -298,14 +300,15 @@
     (message "Found %s" (quickurl-url-url url))))
 
 ;;;###autoload
-(defun* quickurl (&optional (lookup (funcall quickurl-grab-lookup-function)))
+(defun* quickurl (&optional lookup)
   "Insert an URL based on LOOKUP.
 
 If not supplied LOOKUP is taken to be the word at point in the current
 buffer, this default action can be modifed via
 `quickurl-grab-lookup-function'."
   (interactive)
-  (when lookup
+  (when (or lookup
+            (setq lookup (funcall quickurl-grab-lookup-function)))
     (quickurl-load-urls)
     (let ((url (quickurl-find-url lookup)))
       (if (null url)
@@ -392,14 +395,15 @@
           (message "Added %s" url))))))
 
 ;;;###autoload
-(defun* quickurl-browse-url (&optional (lookup (funcall quickurl-grab-lookup-function)))
+(defun quickurl-browse-url (&optional lookup)
   "Browse the URL associated with LOOKUP.
 
 If not supplied LOOKUP is taken to be the word at point in the
 current buffer, this default action can be modifed via
 `quickurl-grab-lookup-function'."
   (interactive)
-  (when lookup
+  (when (or lookup
+            (setq lookup (funcall quickurl-grab-lookup-function)))
     (quickurl-load-urls)
     (let ((url (quickurl-find-url lookup)))
       (if url
--- a/lisp/pcvs.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/pcvs.el	Tue May 11 09:12:09 2004 +0000
@@ -1312,10 +1312,7 @@
 Otherwise, if the cursor selects a directory, and IGNORE-CONTENTS is
 nil, return all files in it, else return just the directory.
 Otherwise return (a list containing) the file the cursor points to, or
-an empty list if it doesn't point to a file at all.
-
-Args: &optional IGNORE-MARKS IGNORE-CONTENTS."
-
+an empty list if it doesn't point to a file at all."
   (let ((fis nil))
     (dolist (fi (if (and (boundp 'cvs-minor-current-files)
 			 (consp cvs-minor-current-files))
@@ -1754,7 +1751,7 @@
 
 
 (defun cvs-is-within-p (fis dir)
-  "Non-nil is buffer is inside one of FIS (in DIR)."
+  "Non-nil if buffer is inside one of FIS (in DIR)."
   (when (stringp buffer-file-name)
     (setq buffer-file-name (expand-file-name buffer-file-name))
     (let (ret)
@@ -1774,7 +1771,7 @@
 DONT-CHANGE-DISC non-nil indicates that the command will not change the
   contents of files.  This is only used by the parser.
 POSTPROC is a list of expressions to be evaluated at the very end (after
-  parsing if applicable).  It will be prepended with `progn' is necessary."
+  parsing if applicable).  It will be prepended with `progn' if necessary."
   (let ((def-dir default-directory))
     ;; Save the relevant buffers
     (save-some-buffers nil (lambda () (cvs-is-within-p fis def-dir))))
--- a/lisp/progmodes/gud.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/progmodes/gud.el	Tue May 11 09:12:09 2004 +0000
@@ -4,7 +4,7 @@
 ;; Maintainer: FSF
 ;; Keywords: unix, tools
 
-;; Copyright (C) 1992,93,94,95,96,1998,2000,02,2003 Free Software Foundation, Inc.
+;; Copyright (C) 1992,93,94,95,96,1998,2000,02,03,04 Free Software Foundation, Inc.
 
 ;; This file is part of GNU Emacs.
 
@@ -2387,7 +2387,8 @@
 	 (filepart (and file-word (concat "-" (file-name-nondirectory file))))
 	 (existing-buffer (get-buffer (concat "*gud" filepart "*"))))
     (pop-to-buffer (concat "*gud" filepart "*"))
-    (if existing-buffer (error "This program is already running under gdb"))
+    (when (and existing-buffer (get-buffer-process existing-buffer))
+      (error "This program is already running under gdb"))
     ;; Set the dir, in case the buffer already existed with a different dir.
     (setq default-directory dir)
     ;; Set default-directory to the file's directory.
--- a/lisp/progmodes/python.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/progmodes/python.el	Tue May 11 09:12:09 2004 +0000
@@ -1343,7 +1343,7 @@
 	     (toggle-read-only 1)
 	     (setq view-return-to-alist
 		   (list (cons (selected-window) help-return-method))))))
-      (help-setup-xref (list 'python-describe-symbol symbol))
+      (help-setup-xref (list 'python-describe-symbol symbol) (interactive-p))
       (with-output-to-temp-buffer (help-buffer)
 	(with-current-buffer standard-output
 	  (set (make-local-variable 'comint-redirect-subvert-readonly) t)
@@ -1387,7 +1387,7 @@
 		    (string-match "^Python \\([0-9]+\\.[0-9]+\\>\\)" s)
 		    (match-string 1 s)))
 	 ;; Whether info files have a Python version suffix, e.g. in Debian.
-	 (versioned 
+	 (versioned
 	  (with-temp-buffer
 	    (with-no-warnings (Info-mode))
 	    (condition-case ()
--- a/lisp/sb-dir-minus.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-dir-minus.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
-static char * sb_dir__xpm[] = {
-"20 15 4 1",
+static char * sb_dir_minus_xpm[] = {
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
-" .......            ",
-".+++++++.           ",
-".+@@@@@@+.......... ",
-".+@@@@@@@++++++++++.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@++++++@@@@@+.",
-".+@@@@@++++++@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".++++++++++++++++++.",
-" .................. "};
+"#	c #828282",
+"  ......            ",
+" .++++++.           ",
+".+@@@@@@+.........  ",
+".+@@@@@@@+++++++++. ",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@+++++@@@@@@+#",
+".+@@@@@@.....@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+" #++++++++++++++++# ",
+"  ################  "};
--- a/lisp/sb-dir-plus.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-dir-plus.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
-static char * sb_dir+_xpm[] = {
-"20 15 4 1",
+static char * sb_dir_plus_xpm[] = {
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
-" .......            ",
-".+++++++.           ",
-".+@@@@@@+.......... ",
-".+@@@@@@@++++++++++.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@++@@@@@@@+.",
-".+@@@@@@@++@@@@@@@+.",
-".+@@@@@++++++@@@@@+.",
-".+@@@@@++++++@@@@@+.",
-".+@@@@@@@++@@@@@@@+.",
-".+@@@@@@@++@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".++++++++++++++++++.",
-" .................. "};
+"#	c #828282",
+"  ......            ",
+" .++++++.           ",
+".+@@@@@@+.........  ",
+".+@@@@@@@+++++++++. ",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@+@@@@@@@@+#",
+".+@@@@@@@+.@@@@@@@+#",
+".+@@@@@+++++@@@@@@+#",
+".+@@@@@@.+...@@@@@+#",
+".+@@@@@@@+.@@@@@@@+#",
+".+@@@@@@@@.@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+" #++++++++++++++++# ",
+"  ################  "};
--- a/lisp/sb-dir.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-dir.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
 static char * sb_dir_xpm[] = {
-"20 15 4 1",
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
-" .......            ",
-".+++++++.           ",
-".+@@@@@@+.......... ",
-".+@@@@@@@++++++++++.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".++++++++++++++++++.",
-" .................. "};
+"#	c #828282",
+"  ......            ",
+" .++++++.           ",
+".+@@@@@@+.........  ",
+".+@@@@@@@+++++++++. ",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+" #++++++++++++++++# ",
+"  ################  "};
--- a/lisp/sb-mail.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-mail.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
 static char * sb_mail_xpm[] = {
-"20 15 4 1",
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
-"@	c #FFFFFF",
-"................... ",
-".++++++++++++++++++.",
-".++@@@@@@@@@@@@@@++.",
-".+@++@@@@@@@@@@++@+.",
-".+@@@++@@@@@@++@@@+.",
-".+@@@@@++@@++@@@@@+.",
-".+@@@@@@@++@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@+@@@@@@+@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@+@@@@@@@@@@+@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".++@@@@@@@@@@@@@@++.",
-".++++++++++++++++++.",
-" .................. "};
+"@	c #828282",
+"#	c #FFFFFF",
+" .................. ",
+".++++++++++++++++++@",
+".++##############++@",
+".+#++##########++#+@",
+".+###++######++###+@",
+".+#####++##++#####+@",
+".+#######++#######+@",
+".+################+@",
+".+####+######+####+@",
+".+################+@",
+".+##+##########+##+@",
+".+################+@",
+".++##############++@",
+".++++++++++++++++++@",
+" @@@@@@@@@@@@@@@@@@ "};
--- a/lisp/sb-pg-minus.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-pg-minus.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
-static char * sb_file__xpm[] = {
-"20 15 4 1",
+static char * sb_pg_minus_xpm[] = {
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
-"@	c #FFFFFF",
+"@	c #828282",
+"#	c #FFFFFF",
 "       ............ ",
-"      .++++++++++++.",
-"     .++@@@@@@@@@@+.",
-"    .+@+@@@@@@@@@@+.",
-"   .+@@+@@@@@@@@@@+.",
-"  .+@@@+@@@@@@@@@@+.",
-" .+@@@@+@@@@@@@@@@+.",
-".+++++++@++++++@@@+.",
-".+@@@@@@@++++++@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".++++++++++++++++++.",
-" .................. "};
+"      .++++++++++++@",
+"     .++##########+@",
+"    .+#+##########+@",
+"   .+##+##########+@",
+"  .+###+##########+@",
+" .+####+##########+@",
+".+++++++#+++++####+@",
+".+########.....###+@",
+".+################+@",
+".+################+@",
+".+################+@",
+".+################+@",
+".++++++++++++++++++@",
+" @@@@@@@@@@@@@@@@@@ "};
--- a/lisp/sb-pg-plus.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-pg-plus.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
-static char * sb_file+_xpm[] = {
-"20 15 4 1",
+static char * sb_pg_plus_xpm[] = {
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
-"@	c #FFFFFF",
+"@	c #828282",
+"#	c #FFFFFF",
 "       ............ ",
-"      .++++++++++++.",
-"     .++@@@@@@@@@@+.",
-"    .+@+@@@@@@@@@@+.",
-"   .+@@+@@@@@@@@@@+.",
-"  .+@@@+@@@++@@@@@+.",
-" .+@@@@+@@@++@@@@@+.",
-".+++++++@++++++@@@+.",
-".+@@@@@@@++++++@@@+.",
-".+@@@@@@@@@++@@@@@+.",
-".+@@@@@@@@@++@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".++++++++++++++++++.",
-" .................. "};
+"      .++++++++++++@",
+"     .++##########+@",
+"    .+#+##########+@",
+"   .+##+##########+@",
+"  .+###+###+######+@",
+" .+####+###+.#####+@",
+".+++++++#+++++####+@",
+".+########.+...###+@",
+".+#########+.#####+@",
+".+##########.#####+@",
+".+################+@",
+".+################+@",
+".++++++++++++++++++@",
+" @@@@@@@@@@@@@@@@@@ "};
--- a/lisp/sb-pg.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-pg.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
-static char * sb_file_xpm[] = {
-"20 15 4 1",
+static char * sb_pg_xpm[] = {
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
-"@	c #FFFFFF",
+"@	c #828282",
+"#	c #FFFFFF",
 "       ............ ",
-"      .++++++++++++.",
-"     .++@@@@@@@@@@+.",
-"    .+@+@@@@@@@@@@+.",
-"   .+@@+@@@@@@@@@@+.",
-"  .+@@@+@@@@@@@@@@+.",
-" .+@@@@+@@@@@@@@@@+.",
-".+++++++@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".++++++++++++++++++.",
-" .................. "};
+"      .++++++++++++@",
+"     .++##########+@",
+"    .+#+##########+@",
+"   .+##+##########+@",
+"  .+###+##########+@",
+" .+####+##########+@",
+".+++++++##########+@",
+".+################+@",
+".+################+@",
+".+################+@",
+".+################+@",
+".+################+@",
+".++++++++++++++++++@",
+" @@@@@@@@@@@@@@@@@@ "};
--- a/lisp/sb-tag-gt.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-tag-gt.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
 static char * sb_tag_gt_xpm[] = {
-"20 15 4 1",
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
+"#	c #828282",
 "                    ",
 "                    ",
-"    ............... ",
-"   .+++++++++++++++.",
-"  .+@@@@@++@@@@@@@+.",
-" .+@@@@@@+++@@@@@@+.",
-".+@@@@@@@++++@@@@@+.",
-".+@++@@@@+++++@@@@+.",
-".+@++@@@@+++++.@@@+.",
-".+@@@@@@@++++.@@@@+.",
-" .+@@@@@@+++.@@@@@+.",
-"  .+@@@@@++.@@@@@@+.",
-".  .++++++.++++++++.",
-"    ............... ",
+"    ..............  ",
+"   .++++++++++++++. ",
+"  .+@@@@@++@@@@@@@+#",
+" .+@@@@@@+++@@@@@@+#",
+".+@@@@@@@++++@@@@@+#",
+".+@++@@@@+++++@@@@+#",
+".+@++@@@@+++++#@@@+#",
+".+@@@@@@@++++#@@@@+#",
+" #+@@@@@@+++#@@@@@+#",
+"  #+@@@@@++#@@@@@@+#",
+"   #++++++#+++++++# ",
+"    ##############  ",
 "                    "};
--- a/lisp/sb-tag-minus.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-tag-minus.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
-static char * sb_tag__xpm[] = {
-"20 15 4 1",
+static char * sb_tag_minus_xpm[] = {
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
+"#	c #828282",
 "                    ",
 "                    ",
-"    ............... ",
-"   .+++++++++++++++.",
-"  .+@@@@@@@@@@@@@@+.",
-" .+@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@++@@++++++@@@@@+.",
-".+@++@@++++++@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-" .+@@@@@@@@@@@@@@@+.",
-"  .+@@@@@@@@@@@@@@+.",
-".  .+++++++++++++++.",
-"    ............... ",
+"    ..............  ",
+"   .++++++++++++++. ",
+"  .+@@@@@@@@@@@@@@+#",
+" .+@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@++@@+++++@@@@@@+#",
+".+@++@@@.....@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+" #+@@@@@@@@@@@@@@@+#",
+"  #+@@@@@@@@@@@@@@+#",
+"   #++++++++++++++# ",
+"    ##############  ",
 "                    "};
--- a/lisp/sb-tag-plus.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-tag-plus.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
-static char * sb_tag+_xpm[] = {
-"20 15 4 1",
+static char * sb_tag_plus_xpm[] = {
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
+"#	c #828282",
 "                    ",
 "                    ",
-"    ............... ",
-"   .+++++++++++++++.",
-"  .+@@@@@@@@@@@@@@+.",
-" .+@@@@@@++@@@@@@@+.",
-".+@@@@@@@++@@@@@@@+.",
-".+@++@@++++++@@@@@+.",
-".+@++@@++++++@@@@@+.",
-".+@@@@@@@++@@@@@@@+.",
-" .+@@@@@@++@@@@@@@+.",
-"  .+@@@@@@@@@@@@@@+.",
-".  .+++++++++++++++.",
-"    ............... ",
+"    ..............  ",
+"   .++++++++++++++. ",
+"  .+@@@@@@@@@@@@@@+#",
+" .+@@@@@@+@@@@@@@@+#",
+".+@@@@@@@+.@@@@@@@+#",
+".+@++@@+++++@@@@@@+#",
+".+@++@@@.+...@@@@@+#",
+".+@@@@@@@+.@@@@@@@+#",
+" #+@@@@@@@.@@@@@@@+#",
+"  #+@@@@@@@@@@@@@@+#",
+"   #++++++++++++++# ",
+"    ##############  ",
 "                    "};
--- a/lisp/sb-tag-type.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-tag-type.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
 static char * sb_tag_type_xpm[] = {
-"20 15 4 1",
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
+"#	c #828282",
 "                    ",
 "                    ",
-"    ............... ",
-"   .+++++++++++++++.",
-"  .+@@@@@@@@@@@@@@+.",
-" .+@@@@@@++++++@@@+.",
-".+@@@@@@@++++++@@@+.",
-".+@++@@@@@@++@@@@@+.",
-".+@++@@@@@@++@@@@@+.",
-".+@@@@@@@@@++@@@@@+.",
-" .+@@@@@@@@++@@@@@+.",
-"  .+@@@@@@@@@@@@@@+.",
-".  .+++++++++++++++.",
-"    ............... ",
+"    ..............  ",
+"   .++++++++++++++. ",
+"  .+@@@@@@@@@@@@@@+#",
+" .+@@@@@@++++++@@@+#",
+".+@@@@@@@++++++@@@+#",
+".+@++@@@@@@++@@@@@+#",
+".+@++@@@@@@++@@@@@+#",
+".+@@@@@@@@@++@@@@@+#",
+" #+@@@@@@@@++@@@@@+#",
+"  #+@@@@@@@@@@@@@@+#",
+"   #++++++++++++++# ",
+"    ##############  ",
 "                    "};
--- a/lisp/sb-tag-v.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-tag-v.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
 static char * sb_tag_v_xpm[] = {
-"20 15 4 1",
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
+"#	c #828282",
 "                    ",
 "                    ",
-"    ............... ",
-"   .+++++++++++++++.",
-"  .+@@@@@@@@@@@@@@+.",
-" .+@@@++++++++++.@+.",
-".+@@@@@++++++++.@@+.",
-".+@++@@@++++++.@@@+.",
-".+@++@@@@++++.@@@@+.",
-".+@@@@@@@@++.@@@@@+.",
-" .+@@@@@@@@.@@@@@@+.",
-"  .+@@@@@@@@@@@@@@+.",
-".  .+++++++++++++++.",
-"    ............... ",
+"    ..............  ",
+"   .++++++++++++++. ",
+"  .+@@@@@@@@@@@@@@+#",
+" .+@@@++++++++++#@+#",
+".+@@@@@++++++++#@@+#",
+".+@++@@@++++++#@@@+#",
+".+@++@@@@++++#@@@@+#",
+".+@@@@@@@@++#@@@@@+#",
+" #+@@@@@@@@#@@@@@@+#",
+"  #+@@@@@@@@@@@@@@+#",
+"   #++++++++++++++# ",
+"    ##############  ",
 "                    "};
--- a/lisp/sb-tag.xpm	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/sb-tag.xpm	Tue May 11 09:12:09 2004 +0000
@@ -1,22 +1,23 @@
 /* XPM */
 static char * sb_tag_xpm[] = {
-"20 15 4 1",
+"20 15 5 1",
 " 	c None",
-".	c #828282",
+".	c #B8B8B8",
 "+	c #000000",
 "@	c #FFF993",
+"#	c #828282",
 "                    ",
 "                    ",
-"    ............... ",
-"   .+++++++++++++++.",
-"  .+@@@@@@@@@@@@@@+.",
-" .+@@@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-".+@++@@@@@@@@@@@@@+.",
-".+@++@@@@@@@@@@@@@+.",
-".+@@@@@@@@@@@@@@@@+.",
-" .+@@@@@@@@@@@@@@@+.",
-"  .+@@@@@@@@@@@@@@+.",
-".  .+++++++++++++++.",
-"    ............... ",
+"    ..............  ",
+"   .++++++++++++++. ",
+"  .+@@@@@@@@@@@@@@+#",
+" .+@@@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+".+@++@@@@@@@@@@@@@+#",
+".+@++@@@@@@@@@@@@@+#",
+".+@@@@@@@@@@@@@@@@+#",
+" #+@@@@@@@@@@@@@@@+#",
+"  #+@@@@@@@@@@@@@@+#",
+"   #++++++++++++++# ",
+"    ##############  ",
 "                    "};
--- a/lisp/subr.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/subr.el	Tue May 11 09:12:09 2004 +0000
@@ -1280,7 +1280,7 @@
 (defun read-passwd (prompt &optional confirm default)
   "Read a password, prompting with PROMPT.  Echo `.' for each character typed.
 End with RET, LFD, or ESC.  DEL or C-h rubs out.  C-u kills line.
-Optional argument CONFIRM, if non-nil, then read it twice to make sure.
+If optional CONFIRM is non-nil, read password twice to make sure.
 Optional DEFAULT is a default password to use instead of empty input."
   (if confirm
       (let (success)
@@ -1534,8 +1534,8 @@
 
 (defun remove-overlays (&optional beg end name val)
   "Clear BEG and END of overlays whose property NAME has value VAL.
-Overlays might be moved and or split.
-BEG and END default to the beginning resp. end of buffer."
+Overlays might be moved and/or split.
+BEG and END default respectively to the beginning and end of buffer."
   (unless beg (setq beg (point-min)))
   (unless end (setq end (point-max)))
   (if (< end beg)
--- a/lisp/term/w32-win.el	Tue May 11 09:11:36 2004 +0000
+++ b/lisp/term/w32-win.el	Tue May 11 09:12:09 2004 +0000
@@ -77,6 +77,8 @@
 (require 'select)
 (require 'menu-bar)
 (require 'x-dnd)
+(require 'code-pages)
+
 ;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
 (if (fboundp 'new-fontset)
     (require 'fontset))
--- a/src/ChangeLog	Tue May 11 09:11:36 2004 +0000
+++ b/src/ChangeLog	Tue May 11 09:12:09 2004 +0000
@@ -1,3 +1,41 @@
+2004-05-10  Andreas Schwab  <schwab@suse.de>
+
+	* lisp.h: Declare Fmake_symbolic_link.
+
+	* fileio.c (Frename_file): Remove extra argument in call to
+	Fmake_symbolic_link.
+
+2004-05-10  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (calc_line_height_property): Use string position when
+	object is a string.
+
+2004-05-10  Kenichi Handa  <handa@m17n.org>
+
+	* print.c (temp_output_buffer_setup): Bind inhibit-read-only and
+	inhibit-modification-hooks to t temporarily before calling
+	Ferase_buffer.
+
+	* xfns.c (x_create_tip_frame): Bind inhibit-read-only and
+	inhibit-modification-hooks to t temporarily before calling
+	Ferase_buffer.
+
+	* w32fns.c (x_create_tip_frame): Bind inhibit-read-only and
+	inhibit-modification-hooks to t temporarily before calling
+	Ferase_buffer.
+
+	* fns.c (count_combining): Delete it.
+	(concat): Don't check combining bytes.
+
+2004-05-09  Jason Rumney  <jasonr@gnu.org>
+
+	* w32fns.c (Vw32_ansi_code_page): New Lisp variable.
+	(globals_of_w32fns): Set it.
+
+2004-05-09  Piet van Oostrum  <piet@cs.uu.nl>  (tiny change)
+
+	* data.c (Fquo): Simplify.
+
 2004-05-08  Peter Whaite  <emacs@whaite.ca>  (tiny change)
 
 	* data.c (Fquo): If any argument is float, do the computation in
--- a/src/data.c	Tue May 11 09:11:36 2004 +0000
+++ b/src/data.c	Tue May 11 09:12:09 2004 +0000
@@ -2699,9 +2699,7 @@
      Lisp_Object *args;
 {
   int argnum;
-  if (nargs == 2)
-    return arith_driver (Adiv, nargs, args);
-  for (argnum = 0; argnum < nargs; argnum++)
+  for (argnum = 2; argnum < nargs; argnum++)
     if (FLOATP (args[argnum]))
       return float_arith_driver (0, 0, Adiv, nargs, args);
   return arith_driver (Adiv, nargs, args);
--- a/src/fileio.c	Tue May 11 09:11:36 2004 +0000
+++ b/src/fileio.c	Tue May 11 09:12:09 2004 +0000
@@ -1,5 +1,5 @@
 /* File IO for GNU Emacs.
-   Copyright (C) 1985,86,87,88,93,94,95,96,97,98,99,2000,01,2003
+   Copyright (C) 1985,86,87,88,93,94,95,96,97,98,99,2000,01,03,2004
      Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -2731,7 +2731,7 @@
           symlink_target = Ffile_symlink_p (file);
           if (! NILP (symlink_target))
             Fmake_symbolic_link (symlink_target, newname,
-                                 NILP (ok_if_already_exists) ? Qnil : Qt, Qt);
+                                 NILP (ok_if_already_exists) ? Qnil : Qt);
           else
 #endif
             Fcopy_file (file, newname,
--- a/src/fns.c	Tue May 11 09:11:36 2004 +0000
+++ b/src/fns.c	Tue May 11 09:12:09 2004 +0000
@@ -527,27 +527,6 @@
   return concat (1, &arg, CONSP (arg) ? Lisp_Cons : XTYPE (arg), 0);
 }
 
-/* In string STR of length LEN, see if bytes before STR[I] combine
-   with bytes after STR[I] to form a single character.  If so, return
-   the number of bytes after STR[I] which combine in this way.
-   Otherwize, return 0.  */
-
-static int
-count_combining (str, len, i)
-     unsigned char *str;
-     int len, i;
-{
-  int j = i - 1, bytes;
-
-  if (i == 0 || i == len || CHAR_HEAD_P (str[i]))
-    return 0;
-  while (j >= 0 && !CHAR_HEAD_P (str[j])) j--;
-  if (j < 0 || ! BASE_LEADING_CODE_P (str[j]))
-    return 0;
-  PARSE_MULTIBYTE_SEQ (str + j, len - j, bytes);
-  return (bytes <= i - j ? 0 : bytes - (i - j));
-}
-
 /* This structure holds information of an argument of `concat' that is
    a string and has text properties to be copied.  */
 struct textprop_rec
@@ -710,25 +689,18 @@
 	  && STRING_MULTIBYTE (this) == some_multibyte)
 	{
 	  int thislen_byte = SBYTES (this);
-	  int combined;
 
 	  bcopy (SDATA (this), SDATA (val) + toindex_byte,
 		 SBYTES (this));
-	  combined =  (some_multibyte && toindex_byte > 0
-		       ? count_combining (SDATA (val),
-					  toindex_byte + thislen_byte,
-					  toindex_byte)
-		       : 0);
 	  if (! NULL_INTERVAL_P (STRING_INTERVALS (this)))
 	    {
 	      textprops[num_textprops].argnum = argnum;
-	      /* We ignore text properties on characters being combined.  */
-	      textprops[num_textprops].from = combined;
+	      textprops[num_textprops].from = 0;
 	      textprops[num_textprops++].to = toindex;
 	    }
 	  toindex_byte += thislen_byte;
-	  toindex += thisleni - combined;
-	  STRING_SET_CHARS (val, SCHARS (val) - combined);
+	  toindex += thisleni;
+	  STRING_SET_CHARS (val, SCHARS (val));
 	}
       /* Copy a single-byte string to a multibyte string.  */
       else if (STRINGP (this) && STRINGP (val))
@@ -814,13 +786,7 @@
 					SDATA (val) + toindex_byte);
 		    else
 		      SSET (val, toindex_byte++, XINT (elt));
-		    if (some_multibyte
-			&& toindex_byte > 0
-			&& count_combining (SDATA (val),
-					    toindex_byte, toindex_byte - 1))
-		      STRING_SET_CHARS (val, SCHARS (val) - 1);
-		    else
-		      toindex++;
+		    toindex++;
 		  }
 		else
 		  /* If we have any multibyte characters,
--- a/src/lisp.h	Tue May 11 09:11:36 2004 +0000
+++ b/src/lisp.h	Tue May 11 09:12:09 2004 +0000
@@ -2743,6 +2743,7 @@
 EXFUN (Fmake_temp_name, 1);
 extern void init_fileio_once P_ ((void));
 extern Lisp_Object make_temp_name P_ ((Lisp_Object, int));
+EXFUN (Fmake_symbolic_link, 3);
 
 /* Defined in abbrev.c */
 
--- a/src/print.c	Tue May 11 09:11:36 2004 +0000
+++ b/src/print.c	Tue May 11 09:12:09 2004 +0000
@@ -601,6 +601,8 @@
   eassert (current_buffer->overlays_after == NULL);
   current_buffer->enable_multibyte_characters
     = buffer_defaults.enable_multibyte_characters;
+  specbind (Qinhibit_read_only, Qt);
+  specbind (Qinhibit_modification_hooks, Qt);
   Ferase_buffer ();
   XSETBUFFER (buf, current_buffer);
 
--- a/src/w32fns.c	Tue May 11 09:11:36 2004 +0000
+++ b/src/w32fns.c	Tue May 11 09:12:09 2004 +0000
@@ -234,6 +234,9 @@
 Lisp_Object Qw32_charset_unicode;
 #endif
 
+/* The ANSI codepage.  */
+Lisp_Object Vw32_ansi_code_page;
+
 /* Prefix for system colors.  */
 #define SYSTEM_COLOR_PREFIX "System"
 #define SYSTEM_COLOR_PREFIX_LEN (sizeof (SYSTEM_COLOR_PREFIX) - 1)
@@ -7112,6 +7115,8 @@
   old_buffer = current_buffer;
   set_buffer_internal_1 (XBUFFER (buffer));
   current_buffer->truncate_lines = Qnil;
+  specbind (Qinhibit_read_only, Qt);
+  specbind (Qinhibit_modification_hooks, Qt);
   Ferase_buffer ();
   Finsert (1, &text);
   set_buffer_internal_1 (old_buffer);
@@ -8793,6 +8798,11 @@
   /* ditto for GetClipboardSequenceNumber.  */
   clipboard_sequence_fn = (ClipboardSequence_Proc)
     GetProcAddress (user32_lib, "GetClipboardSequenceNumber");
+
+  DEFVAR_INT ("w32-ansi-code-page",
+	      &Vw32_ansi_code_page,
+	      doc: /* The ANSI code page used by the system.  */);
+  XSETINT (Vw32_ansi_code_page, GetACP ());
 }
 
 #undef abort
--- a/src/xdisp.c	Tue May 11 09:11:36 2004 +0000
+++ b/src/xdisp.c	Tue May 11 09:12:09 2004 +0000
@@ -18528,12 +18528,16 @@
      XFontStruct *font;
      int boff, *total;
 {
-  Lisp_Object val;
+  Lisp_Object position, val;
   Lisp_Object face_name = Qnil;
   int ascent, descent, height, override;
 
-  val = Fget_char_property (make_number (IT_CHARPOS (*it)),
-			    prop, it->object);
+  if (STRINGP (it->object))
+    position = make_number (IT_STRING_CHARPOS (*it));
+  else
+    position = make_number (IT_CHARPOS (*it));
+
+  val = Fget_char_property (position, prop, it->object);
 
   if (NILP (val))
     return val;
--- a/src/xfns.c	Tue May 11 09:11:36 2004 +0000
+++ b/src/xfns.c	Tue May 11 09:12:09 2004 +0000
@@ -4447,6 +4447,8 @@
   old_buffer = current_buffer;
   set_buffer_internal_1 (XBUFFER (buffer));
   current_buffer->truncate_lines = Qnil;
+  specbind (Qinhibit_read_only, Qt);
+  specbind (Qinhibit_modification_hooks, Qt);
   Ferase_buffer ();
   Finsert (1, &text);
   set_buffer_internal_1 (old_buffer);