changeset 83164:e8df1878cfd1

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-427 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-428 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-429 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-430 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-431 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-432 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-433 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-434 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-435 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-436 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-204
author Karoly Lorentey <lorentey@elte.hu>
date Sat, 03 Jul 2004 17:01:39 +0000
parents 8e4ea1e2c254 (current diff) 18b35062b4ab (diff)
children ed82e09208c9
files lisp/ChangeLog lisp/font-lock.el lisp/vc-rcs.el man/ChangeLog man/eshell.texi man/pcl-cvs.texi src/Makefile.in src/fontset.c src/lisp.h src/macterm.c src/xfaces.c
diffstat 46 files changed, 1784 insertions(+), 361 deletions(-) [+]
line wrap: on
line diff
--- a/admin/ChangeLog	Mon Jun 28 16:04:52 2004 +0000
+++ b/admin/ChangeLog	Sat Jul 03 17:01:39 2004 +0000
@@ -1,3 +1,7 @@
+2004-06-28  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* FOR-RELEASE: Removed entry about GTK and monochrome displays (done).
+
 2002-06-26  Eli Zaretskii  <eliz@is.elta.co.il>
 
 	* FOR-RELEASE: Moved here from the etc directory.
--- a/admin/FOR-RELEASE	Mon Jun 28 16:04:52 2004 +0000
+++ b/admin/FOR-RELEASE	Sat Jul 03 17:01:39 2004 +0000
@@ -1,8 +1,6 @@
 Tasks needed before the next release.
 
-** Test the mbox branch of Rmail.
-
-** Install the mbox branch of Rmail.
+* DOCUMENTATION
 
 ** Finish updating the Emacs Lisp manual.
 
@@ -16,9 +14,35 @@
 
 ** Update man/info.texi.
 
+
+* NEW FEATURES
+
+** Test the mbox branch of Rmail.
+
+** Install the mbox branch of Rmail.
+
+** Update Gnus.
+
+** Face remapping.
+
+
+* FATAL ERRORS
+
+** Investigate face cache related crash.
+
+Indications: Face cache seems to have been cleared, but
+redisplay uses an invalidated face_id with FACE_FROM_ID
+which then returns a NULL pointer.  Said to happen with
+isearch faces.
+
+
+* GTK RELATED BUGS
+
 ** Make geometry specifications work correctly for GTK.
 
 ** Make GTK scrollbars behave like others w.r.t. overscrolling.
 
-** Make GTK toolbar look OK on monochrome displays.
-
+
+Local variables:
+mode: outline
+end:
--- a/etc/NEWS	Mon Jun 28 16:04:52 2004 +0000
+++ b/etc/NEWS	Sat Jul 03 17:01:39 2004 +0000
@@ -925,10 +925,11 @@
 `replace-regexp' allow \,expr to be used in a replacement string,
 where expr is an arbitrary Lisp expression evaluated at replacement
 time.  In many cases, this will be more convenient than using
-`query-replace-regexp-eval'.  All regular expression replacement
-commands now allow `\?' in the replacement string to specify a
-position where the replacement string can be edited for each
-replacement.
+`query-replace-regexp-eval'.  `\#' in a replacement string now refers
+to the count of replacements already made by the replacement command.
+All regular expression replacement commands now allow `\?' in the
+replacement string to specify a position where the replacement string
+can be edited for each replacement.
 
 +++
 ** Emacs normally highlights mouse sensitive text whenever the mouse
@@ -1087,6 +1088,16 @@
 bind C-w to `isearch-yank-word' in `isearch-mode-map'.
 
 +++
+** C-M-w deletes and C-M-y grabs a character in isearch mode.
+Another method to grab a character is to enter the minibuffer by `M-e'
+and to type `C-f' at the end of the search string in the minibuffer.
+
++++
+** M-% and C-M-% typed in isearch mode invoke `query-replace' and
+`query-replace-regexp' with the current search string inserted
+in the minibuffer as initial input for the string to replace.
+
++++
 ** Yanking text now discards certain text properties that can
 be inconvenient when you did not expect them.  The variable
 `yank-excluded-properties' specifies which ones.  Insertion
@@ -1928,6 +1939,12 @@
 between the local version of the file and yesterday's head revision
 in the repository.
 
++++
+** In pcl-cvs mode, there is a new `d r' command to view the changes
+anyone has committed to the repository since you last executed
+"checkout", "update" or "commit".  That means using cvs diff options
+-rBASE -rHEAD.
+
 
 * New modes and packages in Emacs 21.4
 
--- a/leim/ChangeLog	Mon Jun 28 16:04:52 2004 +0000
+++ b/leim/ChangeLog	Sat Jul 03 17:01:39 2004 +0000
@@ -1,3 +1,13 @@
+2004-07-01  David Kastrup  <dak@gnu.org>
+
+	* quail/greek.el ("((") ("))"): add quotation mark shorthands.
+
+2004-06-30  Andreas Schwab  <schwab@suse.de>
+
+	* Makefile.in (${CHINESE-TIT:.elc=.el}): Depend on changed.tit to
+	serialize parallel builds.
+	(${MISC:.elc=.el}): Depend on changed.misc.
+
 2004-06-05  Kenichi Handa  <handa@m17n.org>
 
 	* Makefile.in (leim-list.el): Depend on leim-ext.el.  Append the
--- a/leim/Makefile.in	Mon Jun 28 16:04:52 2004 +0000
+++ b/leim/Makefile.in	Sat Jul 03 17:01:39 2004 +0000
@@ -174,6 +174,9 @@
 	${srcdir}/CXTERM-DIC/TONEPY.tit \
 	${srcdir}/CXTERM-DIC/ZOZY.tit
 
+${CHINESE-TIT:.elc=.el}: changed.tit
+	@true
+
 changed.tit: ${TIT-SOURCES}
 	${RUN-EMACS} -l ${buildlisppath}/international/titdic-cnv \
 	  -f batch-titdic-convert -dir quail ${srcdir}/CXTERM-DIC; \
@@ -187,6 +190,9 @@
 	${srcdir}/MISC-DIC/pinyin.map \
 	${srcdir}/MISC-DIC/ziranma.cin
 
+${MISC:.elc=.el}: changed.misc
+	@true
+
 changed.misc: ${MISC-SOURCES}
 	${RUN-EMACS} -l ${buildlisppath}/international/titdic-cnv \
 	  -f batch-miscdic-convert -dir quail ${srcdir}/MISC-DIC; \
--- a/leim/quail/greek.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/leim/quail/greek.el	Sat Jul 03 17:01:39 2004 +0000
@@ -485,6 +485,8 @@
  ("\"" ?,A((B) ; dialytika
  ("|" ?$,1&Z(B) ; ypogegrammeni
  ("''" ?$,1q}(B) ; koronis
+ ("((" ?,A+(B) ; #x00ab
+ ("))" ?,A;(B) ; #x00bb
 
  ("A" ?$,1&q(B)
  ("B" ?$,1&r(B)
--- a/lisp/ChangeLog	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/ChangeLog	Sat Jul 03 17:01:39 2004 +0000
@@ -1,3 +1,50 @@
+2004-07-02  Andre Spiegel  <spiegel@gnu.org>
+
+	* vc-rcs.el (vc-rcs-checkout-model): Look at the version headers
+	only if vc-consult-headers is non-nil.
+
+2004-07-02  Juri Linkov  <juri@jurta.org>
+
+	* pcvs.el (cvs-mode-diff-repository): New command.
+
+	* pcvs-defs.el (cvs-mode-diff-map): Bind r to cvs-mode-diff-repository.
+
+2004-07-01  Juri Linkov  <juri@jurta.org>
+
+	* isearch.el (isearch-mode-map): Bind C-M-w to isearch-del-char,
+	C-M-y to isearch-yank-char.  Bind M-% to isearch-query-replace,
+	C-M-% to isearch-query-replace-regexp.
+	(minibuffer-local-isearch-map): Add arrow key bindings.
+	Bind C-f to isearch-yank-char-in-minibuffer.
+	(isearch-forward): Doc fix.
+	(isearch-edit-string): Doc fix.
+	(isearch-query-replace, isearch-query-replace-regexp): New funs.
+	(isearch-del-char): Add optional arg.  Set isearch-yank-flag to t.
+	(isearch-yank-char): Add optional arg.
+	(isearch-yank-char-in-minibuffer): New fun.
+
+	* replace.el (query-replace-interactive): Change type from boolean
+	to choice.  Add value `initial'.
+	(query-replace-read-args): Handle value `initial' of
+	query-replace-interactive.
+
+2004-06-29  Kim F. Storm  <storm@cua.dk>
+
+	* progmodes/gdb-ui.el (breakpoint-enabled-bitmap-face)
+	(breakpoint-disabled-bitmap-face): Add :group 'gud.
+
+	* progmodes/ada-xref.el (ada-tight-gvd-integration):
+	Add :group 'ada.
+
+	* vc-arch.el (vc-arch-mode-line-rewrite): Add :group 'vc.
+
+2004-06-29  Juri Linkov  <juri@jurta.org>
+
+	* replace.el (query-replace-read-args): Swallow a space after
+	everything except )]" which in most cases means after a symbol.
+
+	* emacs-lisp/pp.el (pp-buffer): Add autoload.
+
 2004-06-26  David Kastrup  <dak@gnu.org>
 
 	* replace.el (perform-replace): Highlight the match even in
@@ -18,7 +65,7 @@
 
 2004-06-26  Nick Roberts  <nickrob@gnu.org>
 
-	* progmodes/gdb-ui.el (gdb-toggle-breakpoint) 
+	* progmodes/gdb-ui.el (gdb-toggle-breakpoint)
 	(gdb-goto-breakpoint): Fix breakage.
 
 2004-06-26  Eli Zaretskii  <eliz@gnu.org>
@@ -55,12 +102,11 @@
 	(replace-regexp): Explain `\,', `\#' and `\?'.
 	(replace-match-data): New function for thorough reuse/destruction
 	of old match-data.
-	(replace-match-maybe-edit): Function for implementing `\?'
-	editing.
+	(replace-match-maybe-edit): Function for implementing `\?' editing.
 	(perform-replace): Fix maintaining of the match stack including
 	already matched regions, implement `\?', fix various problems
 	with regions while editing and other stuff.
-	(replace-highlight): Simplified.
+	(replace-highlight): Simplify.
 
 2004-06-24  Daniel Pfeiffer  <occitan@esperanto.org>
 
@@ -87,8 +133,7 @@
 
 2004-06-21  Juanma Barranquero  <lektu@terra.es>
 
-	* image.el (image-library-alist): Rewrite docstring in active
-	voice.
+	* image.el (image-library-alist): Rewrite docstring in active voice.
 
 2004-06-20  Richard M. Stallman  <rms@gnu.org>
 
@@ -115,8 +160,8 @@
 
 2004-06-18  Luc Teirlinck  <teirllm@auburn.edu>
 
-	* autorevert.el (global-auto-revert-non-file-buffers): Update
-	docstring.
+	* autorevert.el (global-auto-revert-non-file-buffers):
+	Update docstring.
 
 2004-06-19  Daniel Pfeiffer  <occitan@esperanto.org>
 
@@ -137,7 +182,7 @@
 	escaped character is n or t.
 	(query-replace-regexp): Add \, and \# interpretation to
 	interactive call and document it.
-	(query-replace-regexp-eval, replace-match-string-symbols): add \#
+	(query-replace-regexp-eval, replace-match-string-symbols): Add \#
 	as shortkey for replace-count.
 	(replace-quote): New function for doubling backslashes.
 
@@ -167,8 +212,8 @@
 	* dired-aux.el (dired-do-redisplay, dired-maybe-insert-subdir):
 	Add hyperlink to emacs-xtra manual to docstring.
 
-	* autorevert.el (global-auto-revert-non-file-buffers): Add
-	hyperlink to emacs-xtra manual to docstring, as well as an
+	* autorevert.el (global-auto-revert-non-file-buffers):
+	Add hyperlink to emacs-xtra manual to docstring, as well as an
 	info-link.
 
 2004-06-14  Juanma Barranquero  <lektu@terra.es>
@@ -187,8 +232,7 @@
 	* international/code-pages.el (windows-1256, cp1125): Fix tables
 	for several characters.
 
-	* international/utf-8.el (ccl-encode-mule-utf-8): Fix previous
-	change.
+	* international/utf-8.el (ccl-encode-mule-utf-8): Fix previous change.
 
 2004-06-13  Richard M. Stallman  <rms@gnu.org>
 
@@ -234,14 +278,13 @@
 
 2004-06-13  Kenichi Handa  <handa@m17n.org>
 
-	* international/utf-8.el (ccl-decode-mule-utf-8): Fix previous
-	change.
+	* international/utf-8.el (ccl-decode-mule-utf-8): Fix previous change.
 	(ccl-untranslated-to-ucs): Fix typo.
 
 2004-06-12  Karl Chen  <quarl@hkn.eecs.berkeley.edu>  (tiny change)
 
-	* progmodes/python.el (python-open-block-statement-p): Fix
-	indentation after a block opening that contains a comment.
+	* progmodes/python.el (python-open-block-statement-p):
+	Fix indentation after a block opening that contains a comment.
 
 2004-06-12  J,Ai(Br,At(Bme Marant  <jerome@marant.org>  (tiny change)
 
@@ -257,11 +300,10 @@
 
 2004-06-12  Kenichi Handa  <handa@m17n.org>
 
-	* international/mule-cmds.el (set-language-environment): Load
-	subst tables if necessary.
-
-	* international/mule.el (decode-char): Load subst tables if
-	necessary.
+	* international/mule-cmds.el (set-language-environment):
+	Load subst tables if necessary.
+
+	* international/mule.el (decode-char): Load subst tables if necessary.
 	(encode-char): Likewise.
 
 	* international/utf-16.el (utf-16-decode-ucs): Handle a surrogate
@@ -277,18 +319,17 @@
 	(utf-16-decode-to-ucs): Handle pre-read character.
 	(utf-16le-encode-loop): Handle surrogate pair.
 	(utf-16be-encode-loop): Likewise.
-	(ccl-encode-mule-utf-16le-with-signature): Adjusted for the change
+	(ccl-encode-mule-utf-16le-with-signature): Adjust for the change
 	of utf-16le-encode-loop.
-	(ccl-encode-mule-utf-16be-with-signature): Adjusted for the change
+	(ccl-encode-mule-utf-16be-with-signature): Adjust for the change
 	of utf-16be-encode-loop.
-	(mule-utf-16-post-read-conversion): Call
-	utf-8-post-read-conversion at first.
-	(mule-utf-16[{le|be}], mule-utf-16{le|be}-with-signature): Include
-	CJK charsets in safe-charsets if utf-translate-cjk-mode is on.
+	(mule-utf-16-post-read-conversion):
+	Call utf-8-post-read-conversion at first.
+	(mule-utf-16[{le|be}], mule-utf-16{le|be}-with-signature):
+	Include CJK charsets in safe-charsets if utf-translate-cjk-mode is on.
 	Add post-read-conversion and pre-write-conversion.
 
-	* international/utf-8.el (utf-translate-cjk-charsets): New
-	variable.
+	* international/utf-8.el (utf-translate-cjk-charsets): New variable.
 	(utf-translate-cjk-unicode-range): New variable.
 	(utf-translate-cjk-load-tables): New function.
 	(utf-lookup-subst-table-for-decode): New function.
@@ -303,10 +344,10 @@
 	(ccl-untranslated-to-ucs): Handle 2-byte encoding.  Set r1 to the
 	length of encoding.  Don't return r0.
 	(utf-8-compose): New arg hash-table.  Handle 2-byte encoding.
-	(utf-8-post-read-conversion): Narrow to region properly.  If
-	utf-translate-cjk-mode is on, load tables if necessary.  Call
-	utf-8-compose with hash-table arg if necessary.  Call
-	XXX-compose-region instead of XXX-post-read-convesion.
+	(utf-8-post-read-conversion): Narrow to region properly.
+	If utf-translate-cjk-mode is on, load tables if necessary.
+	Call utf-8-compose with hash-table arg if necessary.
+	Call XXX-compose-region instead of XXX-post-read-convesion.
 	(utf-8-pre-write-conversion): New function.
 	(mule-utf-8): Include CJK charsets in safe-charsets if
 	utf-translate-cjk-mode is on.  Add pre-write-conversion.
@@ -314,8 +355,8 @@
 	* international/characters.el: Temporarily set
 	utf-translate-cjk-mode to nil.
 
-	* language/devan-util.el (devanagari-compose-region): Add
-	autoload cookie.
+	* language/devan-util.el (devanagari-compose-region):
+	Add autoload cookie.
 
 	* international/ccl.el (ccl-dump-call): Fix printing the
 	subroutine name.
@@ -325,13 +366,12 @@
 	* dired.el (dired-revert): If buffer is marked unmodified before
 	reverting, keep it marked unmodified.
 	Adapt to new conventions for commenting out code.
-	(dired-make-relative): Adapt to new conventions for commenting out
-	code.
+	(dired-make-relative): Adapt to new conventions for commenting out code.
 
 2004-06-10  Miles Bader  <miles@gnu.ai.mit.edu>
 
-	* eshell/esh-module.el (eshell-load-defgroups): Bind
-	`vc-handled-backends' to nil when opening files.
+	* eshell/esh-module.el (eshell-load-defgroups):
+	Bind `vc-handled-backends' to nil when opening files.
 
 2004-06-11  Juanma Barranquero  <lektu@terra.es>
 
@@ -414,15 +454,15 @@
 	or incorrect, autoloads.
 
 	* dired-aux.el (dired-kill-tree): Do not kill DIRNAME, even if it
-	does not end in a slash.  Add optional argument KILL-ROOT.  Update
-	docstring.
+	does not end in a slash.  Add optional argument KILL-ROOT.
+	Update docstring.
 	(dired-do-touch, dired-clean-directory, dired-run-shell-command)
 	(dired-query): Add autoloads.
 
 2004-06-08  Daniel Pfeiffer  <occitan@esperanto.org>
 
-	* progmodes/compile.el (compilation-set-window-height): Rearrange
-	the save-* functions because a buffer can have several current
+	* progmodes/compile.el (compilation-set-window-height):
+	Rearrange the save-* functions because a buffer can have several current
 	point in different windows.
 	(compilation-error-regexp-alist-alist): Recognize {standard input}
 	GNU messages (for gcc --pipe) and more kinds of Oracle messages.
@@ -462,8 +502,7 @@
 
 	* format.el (format-insert-annotations)
 	(format-annotate-location): Doc fixes.
-	(format-subtract-regions): Make arguments match their use in
-	docstring.
+	(format-subtract-regions): Make arguments match their use in docstring.
 
 	* simple.el (kill-region): Doc fix.
 
@@ -549,8 +588,7 @@
 	Handle `dired-subdir-switches'.
 	(dired-hide-subdir, dired-hide-all): Do not mark buffer modified.
 
-	* dired.el (dired-subdir-switches, dired-switches-alist):
-	New vars.
+	* dired.el (dired-subdir-switches, dired-switches-alist): New vars.
 	(dired-insert-old-subdirs): Do not repeatedly delete and reinsert
 	subdirs if -R switch is used for a subdir.
 	(dired-mode): Set `dired-switches-alist'.
@@ -583,7 +621,7 @@
 
 2004-06-04  Mario Lang  <mlang@delysid.org>
 
-	* battery.el (battery-linux-proc-acpi): mA was hardcored, but some
+	* battery.el (battery-linux-proc-acpi): `mA' was hardcored, but some
 	systems appear to use mW, make the code handle this.  Fix a
 	division-by-zero bug while at it, and handle kernels with
 	a slightly different layout in /proc/acpi.
@@ -593,7 +631,7 @@
 	* vc-svn.el (vc-svn-checkin): Use 'nconc' instead of 'list*',
 	because the latter is a CL-ism.  This fixes the bug reported by
 	Shawn Boyette <mdxi@collapsar.net> in
-        http://lists.gnu.org/archive/html/emacs-devel/2004-05/msg00442.html.
+	http://lists.gnu.org/archive/html/emacs-devel/2004-05/msg00442.html.
 
 2004-06-04  Miles Bader  <miles@gnu.org>
 
@@ -630,8 +668,8 @@
 
 	* subr.el (read-number): Use canonical format for default in prompt.
 
-	* minibuf-eldef.el (minibuffer-default-in-prompt-regexps): Add
-	regexp for " [...]" style defaults.
+	* minibuf-eldef.el (minibuffer-default-in-prompt-regexps):
+	Add regexp for " [...]" style defaults.
 
 2004-06-02  Romain Francoise  <romain@orebokech.com>
 
@@ -654,14 +692,28 @@
 	empty docstring.
 
 	* international/mule.el (register-char-codings): Make alias for
-	`ignore'.  Move docstring to obsolescence info and remove
-	redundancy.
+	`ignore'.  Move docstring to obsolescence info and remove redundancy.
 
 2004-06-02  Kim F. Storm  <storm@cua.dk>
 
 	* frame.el (blink-cursor-start): Turn cursor off initially so blink
 	starts after blink-cursor-delay rather than 2*blink-cursor-delay.
 
+2004-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* comint.el (comint-replace-by-expanded-history-before-point):
+	Obey `start' as the docstring says.
+	(comint-send-input, comint-snapshot-last-prompt, comint-output-filter)
+	(comint-update-fence): Prevent font-lock from running unnecessarily.
+	(comint-dynamic-list-completions): Use with-current-buffer.
+
+2004-06-01  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+	* textmodes/bibtex.el (bibtex-format-entry): Fix regexps.
+	(bibtex-parse-strings): Bugfix, use assoc instead of assoc-string.
+	(bibtex-entry-update): Handle alternatives and optional fields.
+	(bibtex-parse-entry): Bugfix, handle empty key.
+
 2004-05-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* vc-arch.el (vc-arch-state): Don't assume the file exists.
@@ -2746,26 +2798,6 @@
 
 2004-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-	* url/url-util.el (url-debug): Use with-current-buffer.
-
-	* url/url-nfs.el (url-nfs-file-attributes): Add id-format parameter.
-	(url-nfs-create-wrapper): Use new backquote syntax.
-
-	* url/url-https.el (url-https-file-attributes): Add id-format param.
-
-	* url/url-http.el (url-http-head-file-attributes)
-	(url-http-file-attributes): Add id-format parameter.
-
-	* url/url-handlers.el: Use new find-file-hook.
-	(url-file-attributes): Add id-format parameter.
-
-	* url/url-file.el (url-file-create-wrapper): Use new backquote syntax.
-	(url-file-file-attributes): Add id-format parameter.
-
-	* url/url-dav.el: Use with-current-buffer.
-	(url-dav-process-response): Fix regexps and spurious quote.
-	(url-dav-file-attributes): Add id-format param.
-
 	* diff-mode.el (diff-end-of-hunk): Be more careful with unified hunks.
 
 2004-04-16  Andre Spiegel  <spiegel@gnu.org>
@@ -2938,14 +2970,6 @@
 	* progmodes/compile.el (compile-goto-error): Select the buffer/window
 	corresponding to the event.
 
-	* url/url.el (url-retrieve): Use with-current-buffer.
-
-	* url/url-http.el (url-http-parse-headers, url-http-file-exists-p):
-	Remove unused var `version'.
-
-	* url/url-handlers.el (url-handler-mode): New minor mode.
-	(url-setup-file-name-handlers): Remove.
-
 2004-04-12  Joe Buehler  <jbuehler@hekiman.com>
 
 	* loadup.el: Add cygwin to system-type list, for unexec() support.
@@ -2962,9 +2986,6 @@
 
 	* help.el (describe-mode): Doc fix.
 
-	* url/url-cookie.el (url-cookie-handle-set-cookie): Replace calls
-	to obsolete `assoc-ignore-case' with calls to `assoc-string'.
-
 2004-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* progmodes/compile.el (compilation-mode-font-lock-keywords): Fix test
@@ -2984,42 +3005,6 @@
 
 2004-04-11  Dave Love  <fx@gnu.org>
 
-	* url/url-mailto.el (url-mailto):
-	* url/url-history.el (url-history-setup-save-timer):
-	* url/url-cookie.el (url-cookie-setup-save-timer): Avoid warnings.
-
-	* url/url-file.el (url-file-build-filename): Don't use
-	directory-sep-char.
-
-	* url/url-auth.el (url-register-auth-scheme): Fix `format' call.
-
-	* url/url-about.el (url-scheme-registry): Defvar.
-	(url-about): Use text/plain.
-
-	* url/url-vars.el (cl): Don't require.
-	(url): Add :version.
-	(url-bug-address): Use bug-gnu-emacs.
-
-	* url/url-util.el (url-hexify-string): Don't give multibyte error
-	for char <16.
-	(mail-header-extract): Autoload.
-
-	* url/url-parse.el: Doc fixes.
-
-	* url/url-ldap.el (ldap): Require.
-	(url-ldap): Fix `format' call.
-	(url-ldap-certificate-formatter): Avoid warning.
-
-	* url/url-https.el (url-https-create-secure-wrapper): Use modern
-	backquotes.
-
-	* url/url-dav.el (url-dav-rename-file): Fix args of `signal'.
-	(url-intersection): New.
-	(url-dav-supported-p): Use it.
-	(url-dav-save-resource): Declare url-http-response-status special.
-
-	* url/url-cache.el (url-util): Require.
-
 	* emacs-lisp/bytecomp.el (byte-compile-cond): Fix last change.
 
 	* progmodes/python.el: New file.
@@ -3066,9 +3051,6 @@
 
 	* emacs-lisp/bytecomp.el (byte-compile-version): Variable removed.
 	(byte-compile-insert-header): Don't use `byte-compile-version'.
-	* url/url-vars.el (url-version): Use the constant string "Emacs"
-	instead of calculating something from the RCS `State' keyword
-	[the latter is almost entirely useless anyway].
 	* forms.el (forms-version): Variable removed.
 	(forms-mode): Don't use `forms-version'.
 	* recentf.el (recentf-version): Variable removed.
@@ -3318,10 +3300,7 @@
 
 2004-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-	* url: Import the URL package from its repository.
-
-	* url/url-methods.el:
-	* url/url-parse.el: Don't require url-auto.
+	* url/: New dir.  Import the URL package from its repository.
 
 2004-04-03  Andreas Schwab  <schwab@suse.de>
 
--- a/lisp/emacs-lisp/pp.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/emacs-lisp/pp.el	Sat Jul 03 17:01:39 2004 +0000
@@ -54,6 +54,7 @@
 	  (buffer-string))
       (kill-buffer (current-buffer)))))
 
+;;;###autoload
 (defun pp-buffer ()
   "Prettify the current buffer with printed representation of a Lisp object."
   (goto-char (point-min))
--- a/lisp/font-lock.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/font-lock.el	Sat Jul 03 17:01:39 2004 +0000
@@ -1257,7 +1257,7 @@
 					font-lock-syntactic-keywords)))
   ;; Get down to business.
   (let ((case-fold-search font-lock-keywords-case-fold-search)
-	(keywords (cdr font-lock-syntactic-keywords))
+	(keywords (cddr font-lock-syntactic-keywords))
 	keyword matcher highlights)
     (while keywords
       ;; Find an occurrence of `matcher' from `start' to `end'.
--- a/lisp/gnus/ChangeLog	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/gnus/ChangeLog	Sat Jul 03 17:01:39 2004 +0000
@@ -1,3 +1,10 @@
+2004-06-29  Kim F. Storm  <storm@cua.dk>
+
+	* nntp.el (nntp-authinfo-file): Add :group 'nntp.
+
+	* nnimap.el (nnimap-authinfo-file, nnimap-prune-cache):
+	Add :group 'nnimap.
+
 2004-05-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* mm-view.el (mm-insert-inline): Make it work in read-only buffer.
--- a/lisp/gnus/nnimap.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/gnus/nnimap.el	Sat Jul 03 17:01:39 2004 +0000
@@ -271,11 +271,13 @@
 					  (string :format "Login: %v"))
 				    (cons :format "%v"
 					  (const :format "" "password")
-					  (string :format "Password: %v")))))))
+					  (string :format "Password: %v"))))))
+  :group 'nnimap)
 
 (defcustom nnimap-prune-cache t
   "If non-nil, nnimap check whether articles still exist on server before using data stored in NOV cache."
-  :type 'boolean)
+  :type 'boolean
+  :group 'nnimap)
 
 (defvar nnimap-request-list-method 'imap-mailbox-list
   "Method to use to request a list of all folders from the server.
--- a/lisp/gnus/nntp.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/gnus/nntp.el	Sat Jul 03 17:01:39 2004 +0000
@@ -174,7 +174,8 @@
 					  (string :format "Login: %v"))
 				    (cons :format "%v"
 					  (const :format "" "password")
-					  (string :format "Password: %v")))))))
+					  (string :format "Password: %v"))))))
+  :group 'nntp)
 
 
 
@@ -223,7 +224,7 @@
 (defvar nntp-async-timer nil)
 (defvar nntp-async-process-list nil)
 
-(defvar nntp-ssl-program 
+(defvar nntp-ssl-program
   "openssl s_client -quiet -ssl3 -connect %s:%p"
 "A string containing commands for SSL connections.
 Within a string, %s is replaced with the server address and %p with
@@ -928,10 +929,10 @@
 
 (defun nntp-open-ssl-stream (buffer)
   (let* ((process-connection-type nil)
-	 (proc (start-process "nntpd" buffer 
+	 (proc (start-process "nntpd" buffer
 			      shell-file-name
 			      shell-command-switch
-			      (format-spec nntp-ssl-program 
+			      (format-spec nntp-ssl-program
 					   (format-spec-make
 					    ?s nntp-address
 					    ?p nntp-port-number)))))
--- a/lisp/isearch.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/isearch.el	Sat Jul 03 17:01:39 2004 +0000
@@ -294,8 +294,10 @@
     (define-key map " " 'isearch-whitespace-chars)
     (define-key map [?\S-\ ] 'isearch-whitespace-chars)
 
-    (define-key map "\C-w" 'isearch-yank-word-or-char)
-    (define-key map "\C-y" 'isearch-yank-line)
+    (define-key map    "\C-w" 'isearch-yank-word-or-char)
+    (define-key map "\M-\C-w" 'isearch-del-char)
+    (define-key map "\M-\C-y" 'isearch-yank-char)
+    (define-key map    "\C-y" 'isearch-yank-line)
 
     ;; Define keys for regexp chars * ? |.
     ;; Nothing special for + because it matches at least once.
@@ -336,18 +338,27 @@
     (define-key map "\M-r" 'isearch-toggle-regexp)
     (define-key map "\M-e" 'isearch-edit-string)
 
+    (define-key map (kbd   "M-%") 'isearch-query-replace)
+    (define-key map (kbd "C-M-%") 'isearch-query-replace-regexp)
+
     map)
   "Keymap for `isearch-mode'.")
 
 (defvar minibuffer-local-isearch-map
   (let ((map (make-sparse-keymap)))
     (set-keymap-parent map minibuffer-local-map)
-    (define-key map "\r" 'isearch-nonincremental-exit-minibuffer)
-    (define-key map "\M-n" 'isearch-ring-advance-edit)
-    (define-key map "\M-p" 'isearch-ring-retreat-edit)
+    (define-key map "\r"    'isearch-nonincremental-exit-minibuffer)
+    (define-key map "\M-n"  'isearch-ring-advance-edit)
+    (define-key map [next]  'isearch-ring-advance-edit)
+    (define-key map [down]  'isearch-ring-advance-edit)
+    (define-key map "\M-p"  'isearch-ring-retreat-edit)
+    (define-key map [prior] 'isearch-ring-retreat-edit)
+    (define-key map [up]    'isearch-ring-retreat-edit)
     (define-key map "\M-\t" 'isearch-complete-edit)
-    (define-key map "\C-s" 'isearch-forward-exit-minibuffer)
-    (define-key map "\C-r" 'isearch-reverse-exit-minibuffer)
+    (define-key map "\C-s"  'isearch-forward-exit-minibuffer)
+    (define-key map "\C-r"  'isearch-reverse-exit-minibuffer)
+    (define-key map "\C-f"  'isearch-yank-char-in-minibuffer)
+    (define-key map [right] 'isearch-yank-char-in-minibuffer)
     map)
   "Keymap for editing isearch strings in the minibuffer.")
 
@@ -449,14 +460,14 @@
 The following non-printing keys are bound in `isearch-mode-map'.
 
 Type \\[isearch-delete-char] to cancel last input item from end of search string.
-Type \\[isearch-del-char] to cancel last character from end of search string.
 Type \\[isearch-exit] to exit, leaving point at location found.
 Type LFD (C-j) to match end of line.
 Type \\[isearch-repeat-forward] to search again forward,\
  \\[isearch-repeat-backward] to search again backward.
-Type \\[isearch-yank-char] to yank character from buffer onto end of search\
+Type \\[isearch-yank-word-or-char] to yank word from buffer onto end of search\
  string and search for it.
-Type \\[isearch-yank-word] to yank word from buffer onto end of search\
+Type \\[isearch-del-char] to delete character from end of search string.
+Type \\[isearch-yank-char] to yank char from buffer onto end of search\
  string and search for it.
 Type \\[isearch-yank-line] to yank rest of line onto end of search string\
  and search for it.
@@ -792,7 +803,7 @@
 \\[isearch-ring-retreat-edit] to replace the search string with the previous item in the search ring.
 \\[isearch-complete-edit] to complete the search string using the search ring.
 \\<isearch-mode-map>
-If first char entered is \\[isearch-yank-word], then do word search instead."
+If first char entered is \\[isearch-yank-word-or-char], then do word search instead."
 
   ;; This code is very hairy for several reasons, explained in the code.
   ;; Mainly, isearch-mode must be terminated while editing and then restarted.
@@ -1048,6 +1059,31 @@
   (sit-for 1)
   (isearch-update))
 
+(defun isearch-query-replace ()
+  "Start query-replace with string to replace from last search string."
+  (interactive)
+  (let ((query-replace-interactive 'initial)
+        (case-fold-search isearch-case-fold-search))
+    ;; Put search string into the right ring
+    (setq isearch-regexp nil)
+    (isearch-done)
+    (isearch-clean-overlays)
+    (and isearch-forward isearch-other-end (goto-char isearch-other-end))
+    (call-interactively 'query-replace)))
+
+(defun isearch-query-replace-regexp ()
+  "Start query-replace-regexp with string to replace from last search string."
+  (interactive)
+  (let ((query-replace-interactive 'initial)
+        (case-fold-search isearch-case-fold-search))
+    ;; Put search string into the right ring
+    (setq isearch-regexp t)
+    (isearch-done)
+    (isearch-clean-overlays)
+    (and isearch-forward isearch-other-end (goto-char isearch-other-end))
+    (call-interactively 'query-replace-regexp)))
+
+
 (defun isearch-delete-char ()
   "Discard last input item and move point back.
 If no previous match was done, just beep."
@@ -1057,15 +1093,17 @@
     (isearch-pop-state))
   (isearch-update))
 
-(defun isearch-del-char ()
-  "Discard last character and move point back.
-If there is no previous character, just beep."
-  (interactive)
-  (if (equal isearch-string "")
+(defun isearch-del-char (&optional arg)
+  "Delete character from end of search string and search again.
+If search string is empty, just beep."
+  (interactive "p")
+  (if (= 0 (length isearch-string))
       (ding)
-    (setq isearch-string (substring isearch-string 0 -1)
+    (setq isearch-string (substring isearch-string 0 (- (or arg 1)))
           isearch-message (mapconcat 'isearch-text-char-description
-                                     isearch-string "")))
+                                     isearch-string "")
+          ;; Don't move cursor in reverse search.
+          isearch-yank-flag t))
   (isearch-search-and-update))
 
 (defun isearch-yank-string (string)
@@ -1127,10 +1165,21 @@
 	  (goto-char isearch-other-end))
      (buffer-substring-no-properties (point) (funcall jumpform)))))
 
-(defun isearch-yank-char ()
+(defun isearch-yank-char-in-minibuffer (&optional arg)
+  "Pull next character from buffer into end of search string in minibuffer."
+  (interactive "p")
+  (if (eobp)
+      (insert
+       (save-excursion
+         (set-buffer (cadr (buffer-list)))
+         (buffer-substring-no-properties
+          (point) (progn (forward-char arg) (point)))))
+    (forward-char arg)))
+
+(defun isearch-yank-char (&optional arg)
   "Pull next character from buffer into search string."
-  (interactive)
-  (isearch-yank-internal (lambda () (forward-char 1) (point))))
+  (interactive "p")
+  (isearch-yank-internal (lambda () (forward-char arg) (point))))
 
 (defun isearch-yank-word-or-char ()
   "Pull next character or word from buffer into search string."
--- a/lisp/pcvs-defs.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/pcvs-defs.el	Sat Jul 03 17:01:39 2004 +0000
@@ -305,6 +305,7 @@
     ("d" "diff" .	cvs-mode-diff)
     ("b" "backup" .	cvs-mode-diff-backup)
     ("h" "head" .	cvs-mode-diff-head)
+    ("r" "repository" .	cvs-mode-diff-repository)
     ("y" "yesterday" .	cvs-mode-diff-yesterday)
     ("v" "vendor" .	cvs-mode-diff-vendor))
   "Keymap for diff-related operations in `cvs-mode'."
--- a/lisp/pcvs.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/pcvs.el	Sat Jul 03 17:01:39 2004 +0000
@@ -1565,6 +1565,12 @@
   (interactive (list (cvs-flags-query 'cvs-diff-flags "cvs diff flags")))
   (cvs-mode-diff-1 (cons "-rHEAD" flags)))
 
+(defun-cvs-mode (cvs-mode-diff-repository . SIMPLE) (flags)
+  "Diff the files for changes in the repository since last co/update/commit.
+See ``cvs-mode-diff'' for more info."
+  (interactive (list (cvs-flags-query 'cvs-diff-flags "cvs diff flags")))
+  (cvs-mode-diff-1 (cons "-rBASE" (cons "-rHEAD" flags))))
+
 (defun-cvs-mode (cvs-mode-diff-yesterday . SIMPLE) (flags)
   "Diff the selected files against yesterday's head of the current branch.
 See ``cvs-mode-diff'' for more info."
--- a/lisp/progmodes/ada-xref.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/progmodes/ada-xref.el	Sat Jul 03 17:01:39 2004 +0000
@@ -143,7 +143,8 @@
 
 (defcustom ada-tight-gvd-integration nil
   "*If non-nil, a new Emacs frame will be swallowed in GVD when debugging.
-If GVD is not the debugger used, nothing happens.")
+If GVD is not the debugger used, nothing happens."
+  :type 'boolean :group 'ada)
 
 (defcustom ada-xref-search-with-egrep t
   "*If non-nil, use egrep to find the possible declarations for an entity.
@@ -506,12 +507,12 @@
 			    (equal ada-prj-default-project-file
 				   (car x))
 			    ))))
-     
+
 	      ;; Parses all the known project files, and insert at
 	      ;; least the default one (in case
 	      ;; ada-xref-project-files is nil)
 	      (or ada-xref-project-files '(nil))))))
-      
+
     (easy-menu-add-item ada-mode-menu '() submenu)))
 
 
--- a/lisp/progmodes/gdb-ui.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/progmodes/gdb-ui.el	Sat Jul 03 17:01:39 2004 +0000
@@ -39,7 +39,7 @@
 ;; Kingdon and uses GDB's annotation interface. You don't need to know about
 ;; annotations to use this mode as a debugger, but if you are interested
 ;; developing the mode itself, then see the Annotations section in the GDB
-;; info manual. 
+;; info manual.
 ;;
 ;; GDB developers plan to make the annotation interface obsolete. A new
 ;; interface called GDB/MI (machine interface) has been designed to replace
@@ -70,7 +70,7 @@
 (defvar gdb-variables '()
   "A list of variables that are local to the GUD buffer.")
 (defvar gdb-server-prefix nil)
- 
+
 ;;;###autoload
 (defun gdba (command-line)
   "Run gdb on program FILE in buffer *gud-FILE*.
@@ -227,7 +227,7 @@
 	(if (string-equal expr (car var)) (throw 'already-watched nil)))
       (set-text-properties 0 (length expr) nil expr)
       (gdb-enqueue-input
-       (list 
+       (list
 	(if (eq gud-minor-mode 'gdba)
 	    (concat "server interpreter mi \"-var-create - * "  expr "\"\n")
 	  (concat"-var-create - * "  expr "\n"))
@@ -326,7 +326,7 @@
   (if (not (member 'gdb-var-update gdb-pending-triggers))
       (progn
 	(gdb-enqueue-input
-	 (list 
+	 (list
 	  (if (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba))
 	      "server interpreter mi \"-var-update *\"\n"
 	    "-var-update *\n")
@@ -362,7 +362,7 @@
 	       (varnum (cadr var)))
 	  (unless (string-match "\\." varnum)
 	    (gdb-enqueue-input
-	     (list 
+	     (list
 	      (if (with-current-buffer gud-comint-buffer
 		    (eq gud-minor-mode 'gdba))
 		  (concat "server interpreter mi \"-var-delete " varnum "\"\n")
@@ -486,7 +486,7 @@
 	  (set (make-local-variable 'gdb-buffer-type) key)
 	  (if (cdr (cdr rules))
 	      (funcall (car (cdr (cdr rules)))))
-	  (set (make-local-variable 'gud-minor-mode) 
+	  (set (make-local-variable 'gud-minor-mode)
 	       (with-current-buffer gud-comint-buffer gud-minor-mode))
 	  (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)
 	  new))))
@@ -1076,13 +1076,15 @@
   '((t
      :inherit fringe
      :foreground "red"))
-  "Face for enabled breakpoint icon in fringe.")
+  "Face for enabled breakpoint icon in fringe."
+  :group 'gud)
 
 (defface breakpoint-disabled-bitmap-face
   '((t
      :inherit fringe
      :foreground "grey60"))
-  "Face for disabled breakpoint icon in fringe.")
+  "Face for disabled breakpoint icon in fringe."
+  :group 'gud)
 
 
 ;;-put breakpoint icons in relevant margins (even those set in the GUD buffer)
@@ -1837,7 +1839,7 @@
 	    (save-current-buffer
 	      (setq left-margin-width 2)
 	      (if (get-buffer-window (current-buffer) 'visible)
-		  (set-window-margins 
+		  (set-window-margins
 		   (get-buffer-window (current-buffer) 'visible)
 		   left-margin-width right-margin-width))))
 	  (put-image
@@ -1864,7 +1866,7 @@
 	(save-current-buffer
 	  (setq left-margin-width 2)
 	  (if (get-buffer-window (current-buffer) 'visible)
-	      (set-window-margins 
+	      (set-window-margins
 	       (get-buffer-window (current-buffer) 'visible)
 	       left-margin-width right-margin-width))))
       (gdb-put-string (if enabled "B" "b") (1+ start)))))
@@ -1876,7 +1878,7 @@
   (when remove-margin
     (setq left-margin-width 0)
     (if (get-buffer-window (current-buffer) 'visible)
-	(set-window-margins 
+	(set-window-margins
 	 (get-buffer-window (current-buffer) 'visible)
 	 left-margin-width right-margin-width))))
 
--- a/lisp/replace.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/replace.el	Sat Jul 03 17:01:39 2004 +0000
@@ -38,8 +38,12 @@
 
 (defcustom query-replace-interactive nil
   "Non-nil means `query-replace' uses the last search string.
-That becomes the \"string to replace\"."
-  :type 'boolean
+That becomes the \"string to replace\".
+If value is `initial', the last search string is inserted into
+the minibuffer as an initial value for \"string to replace\"."
+  :type '(choice (const :tag "Off" nil)
+                 (const :tag "Initial content" initial)
+                 (other :tag "Use default value" t))
   :group 'matching)
 
 (defcustom query-replace-from-history-variable 'query-replace-history
@@ -70,16 +74,20 @@
   (unless noerror
     (barf-if-buffer-read-only))
   (let (from to)
-    (if query-replace-interactive
-	(setq from (car (if regexp-flag regexp-search-ring search-ring)))
+    (if (and query-replace-interactive
+             (not (eq query-replace-interactive 'initial)))
+        (setq from (car (if regexp-flag regexp-search-ring search-ring)))
       ;; The save-excursion here is in case the user marks and copies
       ;; a region in order to specify the minibuffer input.
       ;; That should not clobber the region for the query-replace itself.
       (save-excursion
-	(setq from (read-from-minibuffer (format "%s: " string)
-					 nil nil nil
-					 query-replace-from-history-variable
-					 nil t)))
+        (setq from (read-from-minibuffer
+                    (format "%s: " string)
+                    (if (eq query-replace-interactive 'initial)
+                        (car (if regexp-flag regexp-search-ring search-ring)))
+                    nil nil
+                    query-replace-from-history-variable
+                    nil t)))
       ;; Warn if user types \n or \t, but don't reject the input.
       (and regexp-flag
 	   (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from)
@@ -92,9 +100,10 @@
 	     (sit-for 2))))
 
     (save-excursion
-      (setq to (read-from-minibuffer (format "%s %s with: " string from)
-				     nil nil nil
-				     query-replace-to-history-variable from t)))
+      (setq to (read-from-minibuffer
+                (format "%s %s with: " string from)
+                nil nil nil
+                query-replace-to-history-variable from t)))
     (when (and regexp-flag
 	       (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\\\[,#]" to))
       (let (pos list char)
@@ -109,23 +118,18 @@
 		    ((eq char ?\,)
 		     (setq pos (read-from-string to))
 		     (push `(replace-quote ,(car pos)) list)
-		     (let ((end
-			    ;; Swallow a space after a symbol
-			    ;; if there is a space.
-			    (if (and (or (symbolp (car pos))
-					 ;; Swallow a space after 'foo
-					 ;; but not after (quote foo).
-					 (and (eq (car-safe (car pos)) 'quote)
-					      (= ?\( (aref to-string 0))))
-				     (equal " " (substring to-string (cdr pos)
-							   (1+ (cdr pos)))))
-				(1+ (cdr pos))
-			      (cdr pos))))
-		       (setq to (substring to end)))))
+		     (setq to (substring
+			       to (+ (cdr pos)
+				     ;; Swallow a space after a symbol
+				     ;; if there is a space.
+				     (if (string-match
+                                          "^[^])\"] "
+                                          (substring to (1- (cdr pos))))
+					 1 0))))))
 	      (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\\\[,#]" to)))
 	(setq to (nreverse (delete "" (cons to list)))))
       (replace-match-string-symbols to)
-      (setq to (cons 'replace-eval-replacement 
+      (setq to (cons 'replace-eval-replacement
 		     (if (> (length to) 1)
 			 (cons 'concat to)
 		       (car to)))))
@@ -1397,7 +1401,7 @@
 			((eq def 'act-and-exit)
 			 (or replaced
 			     (setq noedit
-				   (replace-match-maybe-edit 
+				   (replace-match-maybe-edit
 				    next-replacement nocasify literal
 				    noedit real-match-data)
 				   replace-count (1+ replace-count)))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/url/ChangeLog	Sat Jul 03 17:01:39 2004 +0000
@@ -0,0 +1,1124 @@
+2004-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* url-util.el (url-debug): Use with-current-buffer.
+
+	* url-nfs.el (url-nfs-file-attributes): Add id-format parameter.
+	(url-nfs-create-wrapper): Use new backquote syntax.
+
+	* url-https.el (url-https-file-attributes): Add id-format param.
+
+	* url-http.el (url-http-head-file-attributes)
+	(url-http-file-attributes): Add id-format parameter.
+
+	* url-handlers.el: Use new find-file-hook.
+	(url-file-attributes): Add id-format parameter.
+
+	* url-file.el (url-file-create-wrapper): Use new backquote syntax.
+	(url-file-file-attributes): Add id-format parameter.
+
+	* url-dav.el: Use with-current-buffer.
+	(url-dav-process-response): Fix regexps and spurious quote.
+	(url-dav-file-attributes): Add id-format param.
+
+2004-04-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* url.el (url-retrieve): Use with-current-buffer.
+
+	* url-http.el (url-http-parse-headers, url-http-file-exists-p):
+	Remove unused var `version'.
+
+	* url-handlers.el (url-handler-mode): New minor mode.
+	(url-setup-file-name-handlers): Remove.
+
+2004-04-12  John Paul Wallington  <jpw@gnu.org>
+
+	* url-cookie.el (url-cookie-handle-set-cookie): Replace calls
+	to obsolete `assoc-ignore-case' with calls to `assoc-string'.
+
+2004-04-11  Dave Love  <fx@gnu.org>
+
+	* url-mailto.el (url-mailto):
+	* url-history.el (url-history-setup-save-timer):
+	* url-cookie.el (url-cookie-setup-save-timer): Avoid warnings.
+
+	* url-file.el (url-file-build-filename): Don't use
+	directory-sep-char.
+
+	* url-auth.el (url-register-auth-scheme): Fix `format' call.
+
+	* url-about.el (url-scheme-registry): Defvar.
+	(url-about): Use text/plain.
+
+	* url-vars.el (cl): Don't require.
+	(url): Add :version.
+	(url-bug-address): Use bug-gnu-emacs.
+
+	* url-util.el (url-hexify-string): Don't give multibyte error
+	for char <16.
+	(mail-header-extract): Autoload.
+
+	* url-parse.el: Doc fixes.
+
+	* url-ldap.el (ldap): Require.
+	(url-ldap): Fix `format' call.
+	(url-ldap-certificate-formatter): Avoid warning.
+
+	* url-https.el (url-https-create-secure-wrapper): Use modern backquotes.
+
+	* url-dav.el (url-dav-rename-file): Fix args of `signal'.
+	(url-intersection): New.
+	(url-dav-supported-p): Use it.
+	(url-dav-save-resource): Declare url-http-response-status special.
+
+	* url-cache.el (url-util): Require.
+
+2004-04-10  Miles Bader  <miles@gnu.org>
+
+	RCS keyword removal (only non-comment changes are enumerated here):
+
+	* url-vars.el (url-version): Use the constant string "Emacs"
+	instead of calculating something from the RCS `State' keyword
+	[the latter is almost entirely useless anyway].
+
+2004-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* url-methods.el:
+	* url-parse.el: Don't require url-auto.
+
+2004-04-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* url: Imported the URL package from its own CVS repository into Emacs.
+
+===========================================================================
+===========================================================================
+	Copy of the ChangeLog file from URL's own CVS repository:
+===========================================================================
+===========================================================================
+
+2003-07-16  Dave Love  <fx@gnu.org>
+
+	* lisp/url.el (url-retrieve-synchronously): Revert last change.
+	Should be revisited.
+
+2003-06-26  Sam Steingold  <sds@gnu.org>
+
+	* lisp/url-handlers.el (url-handlers-create-wrapper): Do not call
+	method on invalid urls.
+
+2003-05-29  Dave Love  <fx@gnu.org>
+
+	* lisp/url.el (url-retrieve-synchronously): Use sleep-for, not
+	sit-for.  From monnier@gnu.org.
+
+2002-11-04  Walter C. Pelissero <walter@pelissero.org>
+
+	* lisp/url-methods.el (url-scheme-register-proxy): Make sure to convert
+	port numbers to integers when creating the URL objects for proxies.
+
+2002-10-29  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-http.el (url-http-parse-headers): When doing a
+	redirect, some broken software (sourceforge) sends a redirect to
+	'/', which is blatantly illegal (see section 14.30 of the HTTP/1.1
+	specification).  I wish we could deal with such lame software
+	appropriately (spank the authors), but this is the web, so we have
+	to kow-tow to the servers.
+
+2002-10-27  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-http.el (url-http-create-request): If we are talking to
+	the default port for a the selected protocol, do NOT send the port
+	in the HOST header.  This fixes the login page at sourceforge.
+
+2002-09-17  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-http.el (url-http-handle-cookies): New function to deal
+	with cookie headers.
+	(url-http-parse-headers): Call `url-http-handle-cookies' here so
+	that cookie additions and deletions get handled immediately.
+	This is so that sites that set cookies while doing redirects
+	(my.yahoo.com, outlook web access, etc) work.  This should also
+	fix sites that delete cookies on invalid access or other error
+	pages the user might not actually see.
+	(url-http-parse-headers): Silently convert non-HEAD and non-GET
+	methods to GET in redirects.  Too many web sites do this now, and
+	it is just likely to confuse users.
+
+2002-05-17  Dave Love  <fx@gnu.org>
+
+	* texi/url.txi: Start making it vaguely useful.
+
+	* texi/Makefile.in (install): Cope with Debian install-info.
+	From Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Großjohann).
+
+2002-04-22  Dave Love  <fx@gnu.org>
+
+	* lisp/url-misc.el (man): Autoload to avoid warning.
+	(url-man): Don't require man here.
+	(url-data): Generalize in line with the RFC.
+
+	* lisp/url-gw.el (url-open-stream): Remove obsolete `tcp' case.
+
+	* lisp/url-vars.el: Doc fixes.
+	(url-mime-charset-string): New function.
+	(url-mime-charset-string): Use it to set the variable.
+	(url-set-mime-charset-string): New function.
+	(set-language-environment-hook): Use it.
+	(url-vars-unload-hook): New function.
+
+	* lisp/url-cookie.el (url-header-comparison): Delete.
+	(url-cookie-handle-set-cookie): Use assoc-ignore-case to avoid assoc*.
+	(url-cookie-save-interval): Make value agree with doc.
+
+	* lisp/url.el: Doc fixes.
+	(url-mm-callback): Don't call mm-destroy-parts immediately for
+	external viewing -- set up a process sentinel.
+
+2002-02-02  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/Makefile.in (SOURCES): Remove mule-sysdp.el from the build rules.
+
+2001-12-12  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-vars.el (url-nonrelative-link): Patch from Stefan
+	Monnier to use ` instead of ^ to match the relative link.
+
+2001-12-10  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-dav.el (url-dav-file-attributes): Fix bad call to
+	plist-get (reversed args).
+
+	* lisp/url-file.el (url-file-build-filename): Make sure that we
+	have a parsed URL in this function.
+
+2002-01-22  Dave Love  <fx@gnu.org>
+
+	* lisp/url-cache.el (url-cache-file-writable-p): Doc fix.
+
+	* lisp/url-imap.el (url-imap): Maybe disable multibyte.
+	Bind coding-system-for-read.  Require mm-util.
+
+	* lisp/url.el (url-do-setup): Use (featurep 'xemacs).
+
+	* lisp/mule-sysdp.el: Removed (obsolete).
+
+2001-12-09  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-dav.el (url-dav-delete-something): Utility macro to
+	remove an arbitrary resource.
+	(url-dav-delete-directory): Use it.
+	(url-dav-delete-file): Ditto.
+	(url-dav-make-directory): New function.
+	(url-dav-rename-file): New function.
+	(url-dav-register-handler): New function to easily register a
+	WebDAV-specific file-name-handler operation.
+	(url-dav-file-name-all-completions, url-dav-file-name-completion):
+	New functions that allow file-name completion for WebDAV resources.
+
+2001-12-08  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-dav.el (url-dav-directory-files): New function to
+	mimic `directory-files' for WebDAV.
+	(url-dav-delete-directory): New function to mimic
+	`delete-directory' for WebDAV.
+
+2001-12-06  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-dav.el (url-dav-process-DAV:locktoken): Parse the
+	DAV:locktoken hrefs into a usable format.
+	(url-dav-process-response): Use an unwind-protect to make sure
+	that we clean up the buffer, even if there is a parsing error.
+	(url-dav-request): New function to act as the main entry point for
+	making DAV requests.  Takes care of building the XML document with
+	appropriate namespaces, depth, etc, and parses the results.
+	(url-dav-get-properties): Use new url-dav-request function.
+	This is now just a thin wrapper around that to use PROPFIND and set any
+	extra properties we are looking for.
+	(url-dav-unlock-resource): New function to release a lock given a
+	URL and a lock-token.
+	(url-dav-process-DAV:getlastmodified)
+	(url-dav-process-DAV:creationdate)
+	(url-dav-process-DAV:iscollection)
+	(url-dav-process-DAV:ishidden): Fix typos!  Its url-dav-*, not
+	url-dave-*!
+	(url-dav-active-locks): New function to get a list of all the
+	active locks for a resource.
+	(url-dav-save-resource): New function to actually save a resource
+	using the PUT method.  I can now successfully save files to an
+	HTTP server with some manual steps from a lisp-interaction buffer.
+
+	* lisp/url-http.el (url-http-wait-for-headers-change-function):
+	Special case the 204/205 response codes.  Some servers do not
+	send back a 0 content-length for these, and we would hang.
+	(url-http-parse-headers): Mark 204/205 response codes as
+	'successful' so that the callbacks get activated.
+	(url-http-options): Fix unbound variable usage.
+
+	* lisp/url-dav.el: Added full copyright information.
+	(url-dav-process-response): Make sure that we create a DAV:status
+	property when parsing a singleton response.
+	(url-dav-file-attributes): If the properties returned did not have
+	a succesful HTTP response code, then ignore them and use the
+	HEAD-based attributes.
+
+	* lisp/vc-dav.el: Added full copyright information.
+
+	* lisp/url-dav.el (url-dav-process-supportedlock-property):
+	Deal with text nodes in DAV:supportedlock nodes.
+	(url-dav-file-attributes-mode-string): This now gets the entire
+	property list instead of just the DAV:supportedlock node.
+	(url-dav-file-attributes): Make sure to pass the whole list in.
+	(url-dav-file-attributes-mode-string): Now properly sets do 'd' mode.
+	(url-dav-file-attributes-mode-string): Now uses the Apache mod_dav
+	'executable' bit to set the 'x' mode.  See `mod_dav's custom
+	properties' at http://www.webdav.org/mod_dav/ for more details.
+	(url-dav-find-parser): New function to find the proper parser for
+	a node-type.  Looks for
+	url-dav-process-XXX (url-dav-process-DAV:prop), otherwise falls
+	back to using url-dav-node-text.  Caches the results on the nodes
+	symbol name.
+	(url-dav-dispatch-node): Utility routine to call a nodes handler easily.
+	(url-dav-process-*): Rename most of the handlers and made them
+	use url-dav-dispatch-node where appropriate.
+	(url-dav-process-DAV:prop): Instead of using the dav-data-type
+	property to dispatch the node, now uses dav-dispatch-node so that
+	it is easy to add parsers for special nodes.
+	(url-dav-process-DAV:depth, url-dav-process-DAV:resourcetype)
+	(url-dav-process-DAV:locktype, url-dav-process-DAV:lockscope)
+	(url-dav-process-DAV:getcontentlength)
+	(url-dave-process-DAV:getlastmodified)
+	(url-dave-process-DAV:creationdate)
+	(url-dave-process-DAV:iscollection)
+	(url-dave-process-DAV:ishidden): Aliases for the generic
+	url-dav-process-foo-property routines.
+	(url-dav-process-DAV:activelock)
+	(url-dav-process-DAV:lockdiscovery): Can now correctly parse
+	DAV:lockdiscovery nodes, so that we can find out who has a
+	resource locked and properly parse the reponse to a LOCK request.
+	(url-dav-process-DAV:status): Now parses ou the numeric status
+	from the HTTP response line.
+	(url-dav-process-response): New function to handle all the
+	parsing of an XML response from WebDAV.  This handles all the
+	logic of checking the response content-type to make sure it is
+	XML, parses the tree, and interprets the tree.
+	(url-dav-process-response): Make sure that all responses look
+	like a DAV:multistatus response, even if we get a singleton
+	response back.  This will just make the upper layer logic simpler.
+	(url-dav-get-properties): New optional argument NAMESPACES that
+	specifies what namespaces to use in the XML request.
+	(url-dav-get-properties): Got rid of the D: namespace in
+	requests.  It doesn't save that much space.  Just use DAV:
+	(url-dav-lock-identifier): New variable that should hold a URI
+	pointing to contact information for the user.  This will be used
+	as the contents of the DAV:owner/DAV:href tag to identify the
+	owner of a LOCK when requesting it.  This will be shown to other
+	users when the DAV:lockdiscovery property is requested, so make
+	sure you are comfortable with it leaking to the outside world.
+	(url-dav-lock-resource): New function to LOCK a dav resource.
+
+2001-12-05  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-dav.el (url-dav-get-properties): New argument
+	ATTRIBUTES that allows you to ask for specific properties instead
+	of getting all properties via DAV:allprop.
+
+	* lisp/url-http.el (url-http-real-basic-auth-storage):
+	New variable for normal HTTP basic authentication.
+	(url-http-proxy-basic-auth-storage): New variable for HTTP proxy
+	basic authentication.
+	(url-http-handle-authentication): Follow new semantics for
+	url-basic-auth-storage.
+
+	* lisp/url-auth.el (url-basic-auth-storage): Change meaning of
+	this variable.  It is now a symbol pointing to where we really
+	want to store the authorization information.  This fixes proxy
+	auth and normal basic auth because of some local bindings that were
+	making it impossible to store the credentials in the global binding.
+	(url-basic-auth): Make sure we dereference url-basic-auth-storage
+	everywhere.
+
+	* lisp/url-util.el (url-debug): Add new types 'dav and
+	'retrieval to the customization list.
+
+	* lisp/url.el (url-retrieve-synchronously): Put in some debugging
+	statements.
+
+	* lisp/url-http.el (url-http-head-file-attributes): Rename old
+	url-http-file-attributes so that we can have a smarter one that
+	tries WebDAV first, then HEAD.
+	(url-http-file-attributes): New smart version that tries WebDAV first.
+	(url-http-options): New function that returns information gleaned
+	from an OPTIONS request for a URL.  Returns a property list
+	returning the methods supported for the resource, what DAV and
+	DASL levels are supported, p3p information, and whether
+	byte-ranges are supported or not.
+	(url-http-wait-for-headers-change-function): If we got a 0-byte
+	content-length, activate the callback immediately.
+	(url-http-wait-for-headers-change-function): For content-length
+	responses with actual body-data in the chunk we are handling, call
+	url-http-content-length-after-change-function with the remaining
+	data.  Otherwise we can deadlock if the headers and the entire
+	body exist arrive in one chunk.
+
+	* lisp/url-dav.el: New file to contain the WebDAV
+	(http://www.webdav.org/) implementation.
+	(url-dav-supported-p): Cheap way to figure out whether we will be
+	able to do DAV at all.  We rely on the XML parser expanding
+	namespaces for us, and currently you need a patched version of
+	xml.el to do this.  Patch sent to author for consideration.
+	(url-dav-file-attributes): Much more complete version of
+	`file-attributes' using the WebDAV PROPFIND method.  Now correctly
+	finds out whether something is a directory (a WebDAV collection),
+	the last modification time, and permissions (based on the
+	DAV:supportedlock information).
+	(url-dav-get-properties): Generic interface to get WebDAV
+	properties for a URL.  Can specify an optional `depth' parameter
+	to tell the web server how many directory (collection) levels to
+	recurse when retrieving the property lists.  Returns an assoc
+	list keyed off of the resource, the cdr of which is a property list.
+	(url-dav-datatype-attribute): We support the XML-Data note
+	(http://www.w3.org/TR/1998/NOTE-XML-data) to figure out what the
+	datatypes of attributes are.  Currently only date, dateTime, int,
+	number, float, boolean, and uri are supported.
+
+2001-12-04  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-handlers.el (file-name-absolute-p): New hooked
+	version.  If the filename matches our regexp, then it is always
+	absolute, so just return `t'.
+	(expand-file-name): New hooked version.  If the fragment is an
+	absolute file or URL, then expand it relative to '/'.
+	(url-handler-regexp): New regexp for specific schemes that we
+	want the file-name-handlers to work off of.
+	(url-setup-file-name-handlers): Use it when installing the handlers.
+
+	* lisp/url-http.el (url-http-find-free-connection): Better logging
+	about whether we are reusing an existing connection or not.
+
+	* lisp/url-methods.el (url-scheme-register-proxy): Fix bad call
+	to string-match instead of match-string (and with reversed
+	arguments even).
+
+	* lisp/url-http.el (url-http-debug): Change to now use the
+	generic url-debug function to do the actual logging.  Still a
+	separate function so that we can do our magic on the network
+	connection if the user quits while we are downloading.
+
+	* lisp/url-handlers.el (url-file-handler): Now logs the result of
+	the hooked or real call.
+
+	* lisp/url-util.el (url-debug): New function for generic debug logging.
+
+2001-11-28  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-imap.el (url-imap-open-host): Use backquote.
+	(url-imap): Now switches to 'login as the imap authenticator if
+	the URL provides a username and password.
+
+	* lisp/url-handlers.el (url-setup-file-name-handlers): Use cl &
+	push to replace some strange logic in here.
+	(url-run-real-handler): New function to run the real hooks in
+	case we get a false positive or an operation that we do not
+	support.  The old way disabled _ALL_ file-name-handlers when
+	we hit something we didn't understand - this disables JUST us.
+	(url-file-handler): Remove the logic about removing the leading
+	'/' off of the first argument... it may not be safe to always
+	assume that the first argument is the one we are acting on -
+	`default' is the second argument for expand-file-name for example.
+	(url-setup-file-name-handlers): Use url-nonrelative-link
+	directly.  This means that you must type in the URL directly
+	without prefixing it with a '/'.
+
+	(gnus-cache-articles-in-group "nnml+mail:comp.emacs-devel")
+
+	Ends up calling (expand-file-name "nnml+mail:comp.emacs-devel" ...)
+	which activates us (because 'nnml+mail' _is_ a valid scheme name
+	for a URI).  We get thoroughly confused and end up returning
+	`nil' when we shouldn't.
+
+2001-11-26  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-handlers.el (file-writable-p): Add NULL handler for
+	this so that visiting a URL directly will work.
+	(file-symlink-p): Ditto.
+	(url-insert-file-contents): If `visit' is non-nil then make sure
+	we set buffer-file-name.  After these changes you can visit
+	http://www.gnu.org/ directly from the minibuffer.
+	(url-insert-file-contents): When inserting the file contents,
+	use a save-excursion so that we behave just like the original.
+
+2001-11-25  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-util.el (url-hexify-string): Fix bad use of mapconcat.
+
+2001-11-24  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-about.el (url-about): New loader scheme to handle
+	about:foo URLs.  Automatically tries to find a `url-about-foo'
+	function to display the actual data.
+	(url-about-protocols): Implement about:protocols
+
+	* lisp/url-http.el (url-http): Make sure that we signal an error
+	when we cannot open a network connection for whatever reason.
+	Before, it would just silently clean up after itself and the user
+	got absolutely no indication that an error had occured.  If the
+	error should truly be ignored, the caller should do that for us.
+	(url-http-chunked-encoding-after-change-function): Doh!  Need to
+	user marker-position in some log messages now that
+	url-http-chunked-start is a marker.
+
+2001-11-22  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-https.el: Fixed definition of url-https - was using the
+	wrong signature.  Too much cut & paste.
+	(url-https-create-secure-wrapper): Fix so that url-https works
+	at all.  Was not taking a null `method' into account when calling
+	the wrapped function so url-https tried to call url-http-nil.  *sigh*
+
+	* lisp/url-http.el
+	(url-http-chunked-encoding-after-change-function): Add some
+	feedback when not debugging about what content-type and chunk # we
+	are reading.
+	(url-http-chunked-encoding-after-change-function): Use a marker
+	for url-http-chunked-start so that we can safely delete the
+	chunk-tokens instead of just marking them as invisible.
+	(url-http-chunked-encoding-after-change-function): Actually delete
+	the chunk-tokens.  Now that we are not run from 'real'
+	after-change functions, this is safe, and the right thing to do.
+	Otherwise the HTML parser still saw them and inferred all sorts of
+	bad things about the document (ie: nothing had a title!)
+
+2001-11-21  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-http.el (url-http-debug): Document this variable.
+	People other than I might want to use it.
+	(url-http-debug): Put some code in here to check quit-flag
+	directly.  When the chunked encoding went into a tight spin, your
+	Emacs would be wedged forever.  This short-circuits all the
+	after-change functions and signals an error.
+	(url-http-debug): If url-http-debug is non-nil and non-t, then log
+	the debug messages using `message' as well as sending them to the
+	buffer.
+	(url-http-chunked-encoding-after-change-function): Got rid of the
+	no-initial-crlf.  Had an epiphany and I can just infer this from
+	url-http-chunked-counter being 0.
+	(url-http-chunked-encoding-after-change-function): Move the debug
+	statement about reading chunk #foo into the loop so that each
+	chunk will have a log message associated with it.
+	(url-http-chunked-encoding-after-change-function): Make sure to
+	set read-next-chunk to nil when the regular expression match fails
+	to fire.  Otherwise we could loop forever.
+	(url-http-chunked-encoding-after-change-function): Tweak the
+	regular expression to be a little less greedy when looking for a chunk.
+	(url-http-wait-for-headers-change-function): Remove the last
+	argument when calling
+	url-http-chunked-encoding-after-change-function.  It is no longer
+	needed.  I should use my brain sometime.
+
+	* lisp/url-vars.el (and): Fix feature test for xemacs and
+	coding-system-list behaviour.
+
+	* lisp/url-http.el
+	(url-http-chunked-encoding-after-change-function): Add optional
+	no-initial-crlf flag that modifies the regular expression.
+	This is only set from url-http-wait-for-headers-change-function so that
+	the initial CRLF in the HTTP headers is not swallowed.
+	(url-http-chunked-encoding-after-change-function): Fix a few
+	off-by-one errors by using (match-end 0) instead of 1.
+	(url-http-chunked-encoding-after-change-function): Add a few
+	url-http-debug calls to help track down problems in the chunked
+	encoding.
+	(url-http-chunked-encoding-after-change-function): The chunk
+	reading in here is now in a while loop so that if Emacs feeds us a
+	chunk of data that happens to contain more than one 'chunk'
+	delimiter, we behave correctly.
+	(url-http-wait-for-headers-change-function): Make sure that we
+	pass no-initial-crlf to
+	url-http-chunked-encoding-after-change-function when passing
+	initial data to the decoder.
+	(url-http-generic-filter): url-http-debug statement so we can tell
+	when/where our after-change-functions are being called.
+
+2001-10-11  Dave Love  <fx@gnu.org>
+
+	* lisp/url-handlers.el: Doc fixes.
+	(string-match): Use (featurep 'xemacs).
+
+	* lisp/url-methods.el (url-scheme-get-property): Avoid `mapc'.
+
+	* lisp/url-proxy.el (url-find-proxy-for-url): Avoid `pop'.
+
+	* lisp/url-vars.el (url-running-xemacs): Delete.
+	(url-gateway-unplugged): New variable.
+
+	* lisp/url-gw.el (url-open-stream): Use url-gateway-unplugged.
+	Comment out OS/2 stuff.
+
+2001-10-05  Dave Love  <fx@gnu.org>
+
+	* lisp/url-mailto.el (url-mailto): Don't send auto-generated mail
+	without confirmation.
+
+2001-10-02  Dave Love  <fx@gnu.org>
+
+	* lisp/url-http.el (url-http-create-request): Check cache for
+	proxy-obj, if defined, rather than url.
+	(url-http): Use dolist, not mapc (runtime cl dependency).
+
+	* lisp/url-methods.el: Maybe require cl at runtime.
+	(url-scheme-register-proxy): Fix fetching from environment.
+	Don't concat a number.
+
+2001-10-01  Dave Love  <fx@gnu.org>
+
+	* lisp/url-parse.el: Use modern backquote syntax.
+
+	* lisp/url-vars.el (url-uncompressor-alist): Add bzip2.
+	(url-mail-command): Prefer compose-mail.
+	(tcp-binary-process-input-services): Comment out.
+	(url-working-buffer): New constant.
+
+	* lisp/url-util.el (url-extract-mime-headers): New function.
+
+	* lisp/url-mailto.el (url-mailto): Set source-url.  Don't add
+	User-Agent.
+
+2001-09-20  Dave Love  <fx@gnu.org>
+
+	* lisp/url-http.el (url-http-create-request): Don't concat a number.
+
+2001-06-05  Dave Love  <fx@gnu.org>
+
+	* lisp/url.el (url-do-setup): Doc fix.  Don't try to frob
+	tcp-binary-process-input-services.  Remove function wrapper for lambda.
+	(url-retrieve): Barf with sensible message if url-type is null.
+
+	* lisp/url-http.el (url-http): Don't try to set process
+	coding-system here -- done in url-gw.
+
+	* lisp/url-gw.el (url-gw-inhibit-code-conversion): Remove.
+	(url-open-stream): Bind coding-system-for{read,write} when setting
+	up the connexion.  Don't call url-gw-inhibit-code-conversion.
+
+2001-05-24  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url.el (url-retrieve-synchronously): Avoid accept-process-output
+	in url-retrieve-synchronously.
+
+2001-05-23  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url.el (url-retrieve-synchronously): Don't put a timeout on
+	accept-process-output.  This is evidently causing hangs in Emacs
+	21 when viewing complex pages with images or stylesheets.
+	www.yahoo.com is now viewable.
+
+	* lisp/url-gw.el (url-open-stream): Avoid using mule-sysdp
+	(mule-inhibit-code-conversion) and just have a local function that
+	does this minimal cruft.
+	(url-gw-inhibit-code-conversion): New function to turn off code
+	conversion in a process.
+
+2001-05-22  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url.el (url-retrieve-synchronously): Use lexical-let so
+	that we can allow multiple asynch retrievals to happen at once.
+	(url-retrieve-synchronously): Use a much smaller timeout when
+	doing the accept-process-output.  This gets rid of the long delays
+	if you are on a fast net connection and retrieve small documents
+	that finish asynchronously before the first accept-process-output
+	can be run.  All hail broadband and 100Mb in the house!
+	(url-retrieve-synchronously): Add documentation for this function.
+	(url-retrieve): Ditto.
+	(url-mm-url): Ditto.
+
+	* lisp/url-vars.el: Replaced `HTTP/1.0' with just `HTTP' in some
+	documentation strings.  Ok, so I'm anal.
+
+	* lisp/url-methods.el (url-scheme-methods): Add default methods
+	for file-directory-p and file-truename.
+
+2001-05-22  Dave Love  <fx@gnu.org>
+
+	* lisp/url-auth.el (url-warn): Autoload.
+
+	* lisp/url-proxy.el (url-warn): Autoload.
+
+	* lisp/url-nfs.el: Fix `file-truname' typo.
+
+	* lisp/url-news.el: Require cl when compiling.
+	(url-warn, gnus-group-read-ephemeral-group):  Autoload.
+	(url-nntp-default-port, url-news-default-port, url-nntp): Delete.
+	(url-news-fetch-newsgroup): Declare gnus-group-buffer special.
+
+	* lisp/url-util.el (mule-decode-string): Don't autoload.
+	(url-hexify-string): Just barf on multibyte characters.
+	(url-generate-unique-filename): New function.
+
+	* lisp/url-file.el (url-file): Use url-generate-unique-filename,
+	not mm-generate-unique-filename.
+
+	* lisp/url-http.el: Declare things special in various places.
+	(url-http-activate-callback): Don't set
+	url-http-real-after-change-function.
+
+2001-05-22  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-http.el (url-http-attempt-keepalives): New variable to
+	control whether we try to do keep-alives for our connections.
+	(url-http-version): New variable to control whether we advertise
+	ourselves as an HTTP/1.1 client or not.  This can be useful for
+	avoiding chunked encoding, and other 1.1 features we may not have
+	fully implemented yet.
+	(url-http-create-request): Honor the new variables.
+
+2001-05-21  Dave Love  <fx@gnu.org>
+
+	* lisp/url-vars.el (mm-mime-mule-charset-alist): Don't readjust it
+	in XEmacs.
+	(url-mime-charset-string): Don't reverse the list before sorting.
+
+2001-05-17  William M. Perry  <wmperry@gnu.org>
+
+	* lisp/url-http.el (url-http-generic-filter): Avoid using
+	after-change-functions natively.  There are just too many ways
+	that this screws up in Emacs 21.  Use a filter function on the
+	process instead, and call the hook on
+	url-http-after-change-function manually.  [Actually, it will work
+	in Emacs 21, but one problem that has been fixed in Emacs 21
+	exists in Emacs 20.  -- fx]
+
+	* lisp/url-vars.el (url-mime-charset-string): sort-coding-systems
+	does not exist on older versions of Emacs, or any version of
+	XEmacs.  Do not call it unless it is bound.
+
+2001-05-17  Dave Love  <fx@gnu.org>
+
+	* lisp/url-http.el (url-http-create-request): Fix non-GET requests.
+
+2001-05-16  Dave Love  <fx@gnu.org>
+
+	* lisp/url-vars.el: Doc fixes.  Require mm-util.
+	(url-mime-charset-string): New variable.
+
+	* lisp/url-http.el: Doc fixes.
+	(url-http-create-request): Rearrange how we assemble the request.
+	Avoid generating bogus requests with an empty real-fname.
+	(url-http-handle-authentication): Declare status and success special.
+	(url-http): Call mm-disable-multibyte.  Set process buffer's
+	coding systems to binary.
+
+	* lisp/url-misc.el (url-data): Call mm-disable-multibyte.
+
+	* lisp/url-file.el: Don't require mule-sysdp.  Fix `file-truname' typo.
+	(url-file-find-possibly-compressed-file): Doc fix.
+	(url-file): Bind coding-system-for-read.  Call mm-disable-multibyte.
+
+	* lisp/url-cache.el: Don't require mule-sysdp.
+	(url-store-in-cache): Avoid mule-write-region-no-coding-system.
+
+	* lisp/url.el: Don't require mule-sysdp.
+	(url-retrieve): Only set text properties if url is a string.
+
+2001-05-14  Dave Love  <fx@gnu.org>
+
+	* lisp/url-http.el (url-http-create-request):
+	Declare proxy-object, proxy-info special.
+	(url-http-handle-authentication): Declare success special.
+
+2001-05-12  Dave Love  <fx@gnu.org>
+
+	* lisp/url-http.el: Revert last change.
+
+2001-05-10  Dave Love  <fx@gnu.org>
+
+	* lisp/url-http.el (url-http-generic-after-change-function):
+	Make it permanent-local.
+
+2001-05-05  Dave Love  <fx@gnu.org>
+
+	* lisp/url-http.el: Autoload some functions.
+	(cl): Require when compiling.
+	(url-http-extra-headers): Defvar when compiling.
+	(url-http): Treat after-change-functions as a local hook.
+
+	* lisp/url-history.el (url-parse): Require.
+	(url-do-setup): Autoload.
+
+	* lisp/url-gw.el: Require url-vars.  Autoload some functions.
+
+	* lisp/url-file.el: Require mailcap.  Require cl when compiling.
+	Use (featurep 'xemacs).
+	(url-file-build-filename): Bind pos-index.
+	(url-file): Call url-find-file-dired, not url-dired-find-file.
+
+	* lisp/url-dired.el: Add copyright notice.  Autoload some functions.
+	(url-dired-minor-mode-map): Use (featurep 'xemacs).
+	(url-dired-find-file-mouse): Use mouse-set-point, not event-point.
+	(url-find-file-dired): Rename from one version of url-dired-find-file.
+
+	* lisp/url-cid.el: Don't require widget.  Require mm-decode
+	unconditionally.
+
+	* lisp/url-util.el: Autoload mule-decode-string,
+	timezone-parse-date, timezone-make-date-arpa-standard.
+	(url-unreserved-chars): Fix list per RFC 2396.
+	(url-hexify-string): Maybe string-make-unibyte.
+
+	* lisp/url-news.el: Require nntp.
+
+	* lisp/url-imap.el: Require cl when compiling.  Require nnimap
+	unconditionally.
+
+2001-05-04  Dave Love  <fx@gnu.org>
+
+	* lisp/url-handlers.el (url-file-local-copy): Use make-temp-file,
+	not non-existent mailcap-generate-unique-filename.
+
+	* lisp/url-privacy.el: Require url-vars.  Require cl when compiling.
+
+	* lisp/url-parse.el: Require url-vars.
+	Autoload url-scheme-get-property.
+
+	* lisp/url-nfs.el: Require cl when compiling.  Test for XEmacs
+	with featurep.
+
+	* lisp/url-mailto.el: Require cl when compiling.
+
+	* lisp/url-cookie.el (url-cookie-handle-set-cookie):
+	Call url-parse-args, not url-util-parse-args.
+
+	* lisp/url-cache.el (url-cache-expired): Remove bogus `return'.
+
+2001-04-09  Dave Love  <fx@gnu.org>
+
+	* lisp/mule-sysdp.el (mule-detect-coding-version)
+	(mule-code-convert-region, mule-inhibit-code-conversion)
+	(mule-write-region-no-coding-system, mule-encode-string)
+	(mule-decode-string, mule-truncate-string)
+	(mule-find-charset-region, mule-coding-system-name)
+	(mule-find-coding-system, mule-make-iso-character): Grok Mule 5.0.
+	[There must be a better way.]
+	(mule-coding-system-p, string-width): Use defalias.
+
+2001-01-03  Sam Steingold  <sds@gnu.org>
+
+	* lisp/url-http.el (url-http-wait-for-headers-change-function):
+	set `url-http-end-of-headers' to 0 for HTTP 0.9
+
+2001-01-02  Sam Steingold  <sds@gnu.org>
+
+	* lisp/url-auth.el (provide): `url-auth', not `urlauth'
+
+2000-12-22  Dave Love  <fx@gnu.org>
+
+	* lisp/url-history.el (url): Don't require (to avoid recursion).
+	(cl): Require when compiling.
+
+	* lisp/url-http.el (url-auth): Require.
+	(url-http-handle-authentication): Fix typo.
+
+	* lisp/url-cookie.el (url-cookie-setup-save-timer): Fix typo.
+
+2000-12-20  Dave Love  <fx@gnu.org>
+
+	* lisp/url.el: Require mm-decode, mm-view when compiling.
+	<not (fboundp 'puthash)>: Define puthash and
+	autoload other has functions rather than using cl-...hash.
+	(url-warn): Define.
+
+	* lisp/url-ns.el, lisp/url-methods.el, lisp/url-http.el:
+	Avoid cl-...hash functions.
+
+	* lisp/url-history.el: Avoid cl-...hash functions.
+	(url): Require.
+
+	* lisp/url-gw.el, lisp/url-cookie.el:  Require cl only when compiling.
+
+2000-10-03  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-util.el (url-get-url-at-point): Guard against 'url'
+	getting set to nil due to bad string matching.  Subsequent matches
+	would then choke because we passed string-match a nil.
+
+	* lisp/url-http.el (url-http-parse-headers): Need to make the
+	connection as 'free' when we get a 304 response (found in cache),
+	or when a keep-alive conneection timed out, it would re-parse the
+	headers and dispatch to the callback again.  Eek.
+
+2000-10-02  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-http.el (url-http-chunked-encoding-after-change-function):
+	implement chunked transfer-coding.
+	(url-http-create-request): We can now advertise ourselves as a 1.1
+	compliant browser!
+
+2000-07-28  Sam Steingold  <sds@gnu.org>
+
+	* lisp/url-methods.el (url-scheme-default-loader): `callback' and
+	`cbargs' are optional args (for calling from w3).
+	(url-scheme-register-proxy): Typos fixes: `url-match' replaced
+	with `string-match' and `protocol' with `scheme'.
+
+2000-07-18  Sam Steingold  <sds@gnu.org>
+
+	* lisp/url-handlers.el (require 'url): For url-retrieve-synchronously.
+	* lisp/url-history.el (url-history-save-interval): Avoid circularity.
+
+2000-07-10  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/mule-sysdp.el (mule-make-iso-character): If we are not in
+	mule, and the character requested is > 255, then return "~"
+	instead of letting whoever call us signal an error when they try
+	to insert the character.
+	(mule-make-iso-character): Also wrap the whole thing in a
+	condition case and return "~" on error, in case make-char bombs on us.
+
+	* lisp/url-cid.el (url-cid): Fix stupid mistake in the loader
+	for cid parts.
+
+	* lisp/url-util.el (url-display-percentage): New routine that uses
+	the progress bar under XEmacs if available.  Looks very sexy under
+	XEmacs/GTK hacked to use the GNOME statusbar.
+
+	* lisp/url-http.el
+	(url-http-content-length-after-change-function): Use new function
+	url-display-percentage instead of url-lazy-message.
+
+2000-01-27  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-file.el (url-file-build-filename): Work around for
+	differences in ange-ftp / efs handling of port numbers other than 21.
+
+1999-12-24  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-irc.el: Added pointer to draft specification for the
+	IRC URL so people don't think I'm crazy.
+
+	* configure.in: Checks to make sure that Gnus was found, since we
+	HAVE to have it now.  Removed conditional compilation of url-cid.el
+
+1999-12-16  Eric Marsden <emarsden@mail.dotcom.fr>
+
+	* lisp/url-util.el (url-get-url-at-point): Allow URLs wrapped in
+	() to have periods at the end of the chunk.
+
+1999-12-14  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-misc.el (url-man): Implement `man' URL types.
+	(url-info): Autoload.
+	(url-man): Ditto.
+	(url-rlogin): Ditto.
+	(url-telnet): Ditto.
+	(url-tn3270): Ditto.
+	(url-generic-emulator-loader): Ditto.
+
+	* lisp/url-https.el (url-https-create-secure-wrapper): New macro
+	to wrap arbitrary `http' methods with the appropriate magic to
+	turn SSL on.
+	(file-exists-p): Use it.
+	(file-readable-p): Use it.
+	(file-attributes): Use it.
+
+	* lisp/url-news.el (url-news-fetch-newsgroup): When building the
+	server spec for Gnus, make sure we set
+	nntp-open-connection-function directly, so that other news-related
+	functions above us can set it.
+	(url-snews): Implement `snews' URLs using `nntp-open-ssl-stream'.
+	(url-nntp): Autoload.
+	(url-snews): Ditto.
+	(url-news): Ditto.
+
+1999-12-12  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-http.el (url-http-parse-response): New function to
+	parse just the HTTP response code out of the buffer, without
+	taking any other actions.
+	(url-http-wait-for-headers-change-function): Use it here when we
+	know we have an HTTP/1.x response.
+	(url-http-wait-for-headers-change-function): Special case a
+	response code of '304' or there could be some delays waiting for
+	keep-alives to time out on cached documents with no known
+	content-length on the server.
+
+1999-12-11  William M. Perry  <wmperry@aventail.com>
+
+	* aclocal.m4 (AC_CHECK_CUSTOMLOADS): Don't use $(EMACS) in here -
+	the Makefile does that for us.  We just need to provide what files
+	to load/functions to run.
+
+	* lisp/url-imap.el (url-imap-open-host): Need to bind
+	nnimap-server-buffer or `nnimap-open-server' chokes trying to use
+	the current buffer as the IMAP server buffer, which fails miserably.
+
+1999-12-11  Simon Josefsson <jas@pdc.kth.se>
+
+	* lisp/url-imap.el: Initial (rough) implementation for IMAP urls.
+
+1999-12-11  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-file.el (url-file-asynch-callback): Make the checks for
+	ange-ftp vs. efs calling semantics consistent, so that if someone
+	has NEITHER of them loaded, everything should still work.
+
+	* lisp/url-handlers.el (url-copy-file): Autoload.
+	(url-file-local-copy): Ditto.
+	(url-insert-file-contents): Ditto.
+	(url-setup-file-name-handlers): Ditto.
+
+1999-12-10  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-http.el (mail-parse): Since we use functions from here,
+	we should require it, eh?
+
+1999-12-10 01:57:01  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+	* lisp/url-cookie.el (url-cookie-multiple-line): One line cookie
+	if nil.
+	(url-cookie-generate-header-lines): Use it.
+
+1999-12-06  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/mule-sysdp.el (mule-code-convert-region): Deal with Mule
+	4.1 gracefully
+
+	* lisp/url-news.el: Reimplemented news and nntp URL support.
+	No longer bothers to check for outdated Gnus versions, since this
+	will not work without them anyway.
+
+1999-12-05  Dave Love  <fx@gnu.org>
+
+	* lisp/url-methods.el, lisp/url-proxy.el, lisp/url-util.el,
+	lisp/url.el:
+	Require url-parse.
+
+1999-12-05  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-http.el (url-http-find-free-connection): Spit out a
+	message when we have to contact a host so the user always gets
+	at least some feedback.
+
+	* lisp/url-expand.el (url-expander-remove-relative-links): Moved and
+	renamed function.
+	(url-default-expander): Use it.
+
+	* lisp/url-file.el (url-file-asynch-callback): Deal with just efs-auto
+	as well as efs.
+	(url-file): Add default content-type of application/octet-stream if
+	none known.
+	(url-file): Correct bad call to url-host-is-local-p
+
+	* lisp/url-handlers.el (url-insert-file-contents): Emacs doesn't
+	like buffer-substring with nil arguments.
+	(url-copy-file): Use mm-destroy-parts instead of just killing
+	the buffer.  Use defined interfaces when available!
+	(url-insert-file-contents): Ditto.
+
+	* lisp/url-http.el (url-http-create-request): Lots of changes to
+	get proxying working.
+
+	* lisp/url-methods.el (url-scheme-register-proxy): New function to
+	find and register a proxy for a specific scheme.
+	(url-scheme-get-property): Use it when we load a URL scheme for
+	the first time.
+
+	* lisp/url-util.el (url-get-url-at-point): Re-integrated
+
+1999-12-04  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-file.el (url-file): Signal an error if
+	url-file-build-filename could not find the filename.
+
+1999-12-01  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url.el (url-retrieve): Use url-history-update-url instead
+	of manipulating the hash table directly.
+
+	* lisp/url-history.el (url-completion-function): New function to
+	use for reading a URL with completion.
+	(url-history-update-url): New function to hide the hashtable
+	implementation from people inserting things into the history.
+
+1999-11-30  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-proxy.el (url-proxy): Minor tweaks to get proxy support
+	working.
+
+	* lisp/url-parse.el (url-generic-parse-url): Fix bad call to
+	url-parse-args, which had changed the type of arguments it expects.
+
+	* lisp/url-handlers.el (url-insert-file-contents): Ditto.
+	(url-copy-file): Ditto.
+
+	* lisp/url.el (url-mm-callback): Use mm-destroy-parts instead of
+	just killing the buffer.  Use defined interfaces when available!
+
+	* aclocal.m4 (AC_EMACS_LISP): Correctly redirect things out to
+	AC_FD_CC so they show up in config.log
+	(AC_EMACS_CHECK_LIB): Duh, fixed stupid mistake that would make
+	this always return 't' instead of 'yes' on successfully finding
+	the library.
+
+	* lisp/url-http.el (url-http-parse-headers): Add some
+	DAV-specific error codes.
+
+	* lisp/url.el (url-retrieve): Allow pre-parsed URLs to be passed in.
+	(url-retrieve-synchronously): Duh, make this function actually
+	work again.  Numerous problems with it, including variable name
+	collisions - I love dynamically scoped lisps!
+
+	* lisp/url-nfs.el (url-nfs-create-wrapper): New function to create
+	wrappers onto the appropriate file-based URLs for file-name-handlers.
+
+	* lisp/url-ftp.el: Moved the FTP stuff into it's own file - it
+	might get messy with file-name-handlers and things.
+
+	* lisp/url-http.el (url-http-clean-headers): Fix problem when
+	using 'HEAD' requests.  Thou shalt not change the length of the
+	region during an after-change-function.
+
+	* lisp/url-methods.el (url-scheme-methods): New variable that
+	holds a list of the methods/variables we look for in a URL scheme.
+	(url-scheme-get-property): Use it.
+
+1999-11-29  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-http.el (url-http-file-attributes): Reimplement.
+	(url-http-file-exists-p): Ditto.
+
+	* lisp/url-nfs.el: Reimplemented the `nfs' URL scheme.
+
+	* lisp/url-file.el (url-file-create-wrapper): New macro to create
+	file-name-handler stubs for all the FTP/FILE stuff.
+
+	* lisp/url-handlers.el: New file to handle file-name-handler-alist
+	cruft.  Generic interface on top of functions that each URL
+	loader provides, if capable.
+
+1999-11-27  William M. Perry  <wmperry@aventail.com>
+
+	* lisp/url-https.el: Implemented HTTPS support.
+
+1999-11-26  William M. Perry  <wmperry@aventail.com>
+
+	* url-privacy.el (url-setup-privacy-info): Don't rely on
+	device-type being defined.  Not going to bother redistributing
+	devices.el for just one function.
+
+	* url-methods.el (url-scheme-get-property): Emacs does not have
+	the 3rd-argument to plist-get to specify the default.  *sigh*
+
+	* url-dired.el (add-minor-mode): Add definition for Emacs.
+
+	* url-http.el (url-http-generic-after-change-function):
+	New function, since Emacs does not allow you to change the
+	after-change-functions variable from within a function run by
+	said hook.  This just hands it off to the REAL function.
+	Side-effect is that this now works on Emacs at all. :)
+
+	* Initial checkin of rewritten URL library.
+
+Local variables:
+coding: utf-8
+End:
+
+;; arch-tag: ac117078-3091-4533-be93-098162ac2926
--- a/lisp/vc-arch.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/vc-arch.el	Sat Jul 03 17:01:39 2004 +0000
@@ -309,7 +309,8 @@
 (defcustom vc-arch-mode-line-rewrite
   '(("\\`.*--\\(.*--.*\\)--\\(v?\\).*-\\([0-9]+\\)\\'" . "\\2\\3[\\1]"))
   "Rewrite rules to shorten Arch's revision names on the mode-line."
-  :type '(repeat (cons regexp string)))
+  :type '(repeat (cons regexp string))
+  :group 'vc)
 
 (defun vc-arch-mode-line-string (file)
   "Return string for placement in modeline by `vc-mode-line' for FILE."
--- a/lisp/vc-rcs.el	Mon Jun 28 16:04:52 2004 +0000
+++ b/lisp/vc-rcs.el	Sat Jul 03 17:01:39 2004 +0000
@@ -198,10 +198,14 @@
 
 (defun vc-rcs-checkout-model (file)
   "RCS-specific version of `vc-checkout-model'."
-  (vc-rcs-consult-headers file)
-  (or (vc-file-getprop file 'vc-checkout-model)
-      (progn (vc-rcs-fetch-master-state file)
-	     (vc-file-getprop file 'vc-checkout-model))))
+  (let (result)
+    (when vc-consult-headers
+      (vc-file-setprop file 'vc-checkout-model nil)
+      (vc-rcs-consult-headers file)
+      (setq result (vc-file-getprop file 'vc-checkout-model)))
+    (or result
+        (progn (vc-rcs-fetch-master-state file)
+               (vc-file-getprop file 'vc-checkout-model)))))
 
 (defun vc-rcs-workfile-unchanged-p (file)
   "RCS-specific implementation of vc-workfile-unchanged-p."
--- a/lispref/ChangeLog	Mon Jun 28 16:04:52 2004 +0000
+++ b/lispref/ChangeLog	Sat Jul 03 17:01:39 2004 +0000
@@ -1,3 +1,8 @@
+2004-07-02  David Kastrup  <dak@gnu.org>
+
+	* searching.texi (Entire Match Data): Add explanation about new
+	match-data behavior when @var{integers} is non-nil.
+
 2004-06-24  Richard M. Stallman  <rms@gnu.org>
 
 	* commands.texi (Misc Events): Describe usr1-signal, usr2-signal event.
--- a/lispref/searching.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/lispref/searching.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -1459,8 +1459,11 @@
 All the elements are markers or @code{nil} if matching was done on a
 buffer and all are integers or @code{nil} if matching was done on a
 string with @code{string-match}.   If @var{integers} is
-non-@code{nil}, then all elements are integers or @code{nil}, even if
-matching was done on a buffer.  Also, @code{match-beginning} and
+non-@code{nil}, then the elements are integers or @code{nil}, even if
+matching was done on a buffer.  In that case, the buffer itself is
+appended as an additional element at the end of the list
+to facilitate complete restoration of the match data.  Also,
+@code{match-beginning} and
 @code{match-end} always return integers or @code{nil}.
 
 If @var{reuse} is non-@code{nil}, it should be a list.  In that case,
--- a/man/ChangeLog	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/ChangeLog	Sat Jul 03 17:01:39 2004 +0000
@@ -1,3 +1,21 @@
+2004-07-02  Juri Linkov  <juri@jurta.org>
+
+	* pcl-cvs.texi (Viewing differences): Add `d r'.
+
+2004-07-01  Juri Linkov  <juri@jurta.org>
+
+	* search.texi (Incremental Search): Add C-M-w, C-M-y, M-%, C-M-%, M-e.
+	(Regexp Search): Add M-r.
+
+2004-06-30  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* makefile.w32-in (EMACSSOURCES): Remove emacs-xtra.
+
+2004-06-29  Jesper Harder  <harder@ifa.au.dk>
+
+	* ses.texi, viper.texi, search.texi, flymake.texi, faq.texi:
+	* eshell.texi, ediff.texi, calendar.texi: Markup fixes.
+
 2004-06-25  Richard M. Stallman  <rms@gnu.org>
 
 	* search.texi (Regexp Replace): Rewrite description of \# \, and \?.
--- a/man/calendar.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/calendar.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -1332,7 +1332,7 @@
 minutes beforehand that that appointment is pending.  Emacs alerts you
 to the appointment by displaying a message in your chosen format, as
 specified by the variable @code{appt-display-format}.  If the value
-of @code{appt-audible} is non-nil, an audible reminder is also given.
+of @code{appt-audible} is non-@code{nil}, an audible reminder is also given.
 
 @findex appt-activate
   To enable appointment notification, call the function
--- a/man/ediff.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/ediff.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -1067,7 +1067,7 @@
 @vindex ediff-autostore-merges
 For group sessions created to merge files, Ediff can store all merges
 automatically in a directory.  The user is asked to specify such directory
-if the value of @code{ediff-autostore-merges} is non-nil.  If the value is
+if the value of @code{ediff-autostore-merges} is non-@code{nil}.  If the value is
 @code{nil}, nothing is done to the merge buffers---it will be the user's
 responsibility to save them.  If the value is @code{t}, the user will be
 asked where to save the merge buffers in all merge jobs, even those that do
@@ -2338,11 +2338,11 @@
 @item ediff-buffer-C
 In three-way comparisons, this is the third buffer being compared.
 In merging, this is the merge buffer.
-In two-way comparison, this variable is nil.
+In two-way comparison, this variable is @code{nil}.
 
 @item ediff-window-A
 The window displaying buffer A.  If buffer A is not visible, this variable
-is nil or it may be a dead window.
+is @code{nil} or it may be a dead window.
 
 @item ediff-window-B
 The window displaying buffer B.
@@ -2351,9 +2351,9 @@
 The window displaying buffer C, if any.
 
 @item ediff-control-frame
-A dedicated frame displaying the control buffer, if it exists.
-It is non-nil only if Ediff uses the multiframe display, i.e., when the
-control buffer is in its own frame.
+A dedicated frame displaying the control buffer, if it exists.  It is
+non-@code{nil} only if Ediff uses the multiframe display, i.e., when
+the control buffer is in its own frame.
 @end table
 
 @node Credits, Index, Customization, Top
--- a/man/eshell.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/eshell.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -846,7 +846,7 @@
 @item Error if a glob doesn't expand due to a predicate
 
 An error should be generated only if @code{eshell-error-if-no-glob} is
-non-nil.
+non-@code{nil}.
 
 @item @samp{(+ RET SPC TAB} does not cause @code{indent-according-to-mode} to occur
 
--- a/man/eudc.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/eudc.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -475,7 +475,7 @@
 the list is of the form @code{(@var{name} . @var{func})} where
 @var{name} is a lowercased string naming a directory attribute
 (translated according to @code{eudc-user-attribute-names-alist} if
-@code{eudc-use-raw-directory-names} is non-nil) and @var{func} a
+@code{eudc-use-raw-directory-names} is non-@code{nil}) and @var{func} a
 function that will be passed the corresponding attribute values for
 display.
 @end defvar
--- a/man/faq.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/faq.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -2367,7 +2367,7 @@
 
 Each menu title (e.g., @samp{File}, @samp{Edit}, @samp{Buffers})
 represents a local or global keymap.  Selecting a menu title with the
-mouse displays that keymap's non-nil contents in the form of a menu.
+mouse displays that keymap's non-@code{nil} contents in the form of a menu.
 
 So to add a menu option to an existing menu, all you have to do is add a
 new definition to the appropriate keymap.  Adding a @samp{Forward Word}
@@ -3173,7 +3173,7 @@
 feature.
 
 Emacs 18 allowed this feature by default; users could disable it by
-setting the variable @code{inhibit-local-variables} to a non-nil value.
+setting the variable @code{inhibit-local-variables} to a non-@code{nil} value.
 
 As of Emacs 19, Emacs has a list of local variables that create a
 security risk.  If a file tries to set one of them, it asks the user to
--- a/man/flymake.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/flymake.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -542,7 +542,7 @@
 
 Syntax check is considered possible if there's an entry in
 @code{flymake-allowed-file-name-masks} matching buffer's filename and
-its @code{init-function} returns non-nil value.
+its @code{init-function} returns non-@code{nil} value.
 
 Two syntax check modes are distinguished:
 
--- a/man/makefile.w32-in	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/makefile.w32-in	Sat Jul 03 17:01:39 2004 +0000
@@ -67,7 +67,6 @@
 
 EMACSSOURCES= \
 	$(srcdir)/emacs.texi \
-	$(srcdir)/emacs-xtra.texi \
 	$(srcdir)/doclicense.texi \
 	$(srcdir)/screen.texi \
 	$(srcdir)/commands.texi \
--- a/man/pcl-cvs.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/pcl-cvs.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -1025,11 +1025,15 @@
 @kindex =@r{--run @samp{cvs diff}}
 @kindex db@r{--diff against base version}
 @kindex dh@r{--diff against head of repository}
+@kindex dr@r{--diff between base and head of repository}
 @kindex dv@r{--diff against vendor branch}
+@kindex dy@r{--diff against yesterday's head}
 @findex cvs-mode-diff
 @findex cvs-mode-diff-backup
 @findex cvs-mode-diff-head
+@findex cvs-mode-diff-repository
 @findex cvs-mode-diff-vendor
+@findex cvs-mode-diff-yesterday
 @vindex cvs-invert-ignore-marks@r{ (variable)}
 
 @table @kbd
@@ -1053,6 +1057,13 @@
 revision in the repository (the most recent version on the current
 branch) (@code{cvs-mode-diff-head}).@refill
 
+@item d r
+Display a @samp{cvs diff} between the base revision of the selected
+files and the head revision in the repository.  This displays the
+changes anyone has committed to the repository since you last executed
+"checkout", "update" or "commit".
+(@code{cvs-mode-diff-repository}).@refill
+
 @item d v
 Display a @samp{cvs diff} between the selected files and the head
 revision of the vendor branch in the repository.
--- a/man/search.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/search.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -78,7 +78,7 @@
 @key{RET} is necessary only if the next command you want to type is a
 printing character, @key{DEL}, @key{RET}, or another character that is
 special within searches (@kbd{C-q}, @kbd{C-w}, @kbd{C-r}, @kbd{C-s},
-@kbd{C-y}, @kbd{M-y}, @kbd{M-r}, @kbd{M-s}, and some other
+@kbd{C-y}, @kbd{M-y}, @kbd{M-r}, @kbd{M-c}, @kbd{M-e}, and some other
 meta-characters).
 
   Sometimes you search for @samp{FOO} and find one, but not the one you
@@ -95,7 +95,9 @@
   To reuse earlier search strings, use the @dfn{search ring}.  The
 commands @kbd{M-p} and @kbd{M-n} move through the ring to pick a search
 string to reuse.  These commands leave the selected search ring element
-in the minibuffer, where you can edit it.  Type @kbd{C-s} or @kbd{C-r}
+in the minibuffer, where you can edit it.  To edit the current search
+string in the minibuffer without replacing it with items from the
+search ring, type @kbd{M-e}.  Type @kbd{C-s} or @kbd{C-r}
 to terminate editing the string and search for it.
 
   If your string is not found at all, the echo area says @samp{Failing
@@ -181,7 +183,7 @@
 backward search finds matches that are entirely before the starting
 point, just as a forward search finds matches that begin after it.
 
-  The characters @kbd{C-y} and @kbd{C-w} can be used in incremental
+  The characters @kbd{C-w} and @kbd{C-y} can be used in incremental
 search to grab text from the buffer into the search string.  This
 makes it convenient to search for another occurrence of text at point.
 @kbd{C-w} copies the character or word after point as part of the
@@ -195,6 +197,14 @@
 convert the text they copy to lower case if the search is currently
 not case-sensitive; this is so the search remains case-insensitive.
 
+  @kbd{C-M-w} and @kbd{C-M-y} modify the search string by only one
+character at a time: @kbd{C-M-w} deletes the last character from the
+search string and @kbd{C-M-y} copies the character after point to the
+end of the search string.  An alternative method to add the character
+after point into the search string is to enter the minibuffer by
+@kbd{M-e} and to type @kbd{C-f} at the end of the search string in the
+minibuffer.
+
   The character @kbd{M-y} copies text from the kill ring into the search
 string.  It uses the same text that @kbd{C-y} as a command would yank.
 @kbd{Mouse-2} in the echo area does the same.
@@ -205,6 +215,11 @@
 there.  In Transient Mark mode, incremental search sets the mark without
 activating it, and does so only if the mark is not already active.
 
+  @kbd{M-%} or @kbd{C-M-%} exits the incremental search and starts an
+interactive command @code{query-replace} or @code{query-replace-regexp}
+with the last search string inserted in the minibuffer as initial input
+for the string to replace.
+
 @cindex lazy search highlighting
 @vindex isearch-lazy-highlight
   When you pause for a little while during incremental search, it
@@ -231,18 +246,18 @@
 
   Vertical scrolling during incremental search can be enabled by
 setting the customizable variable @code{isearch-allow-scroll} to a
-non-nil value.
+non-@code{nil} value.
 
   You can then use the vertical scroll-bar or certain keyboard
 commands such as @kbd{@key{PRIOR}} (@code{scroll-down}),
 @kbd{@key{NEXT}} (@code{scroll-up}) and @kbd{C-l} (@code{recenter})
 within the search, thus letting you see more of the text near the
 current match.  You must run these commands via their key sequences to
-stay in the search - typing M-x @var{comand-name} will always
+stay in the search---typing M-x @var{comand-name} will always
 terminate a search.
 
   You can give prefix arguments to these commands in the usual way.
-The current match cannot be scrolled out of the window - this is
+The current match cannot be scrolled out of the window---this is
 intentional.
 
   Several other commands, such as @kbd{C-x 2}
@@ -371,14 +386,16 @@
 @kindex C-M-r
 @findex isearch-backward-regexp
   Incremental search for a regexp is done by typing @kbd{C-M-s}
-(@code{isearch-forward-regexp}), or by invoking @kbd{C-s} with a
-prefix argument (whose value does not matter).  This command reads a
+(@code{isearch-forward-regexp}), by invoking @kbd{C-s} with a
+prefix argument (whose value does not matter), or by typing @kbd{M-r}
+within a forward incremental search.  This command reads a
 search string incrementally just like @kbd{C-s}, but it treats the
 search string as a regexp rather than looking for an exact match
 against the text in the buffer.  Each time you add text to the search
 string, you make the regexp longer, and the new regexp is searched
 for.  To search backward for a regexp, use @kbd{C-M-r}
-(@code{isearch-backward-regexp}), or @kbd{C-r} with a prefix argument.
+(@code{isearch-backward-regexp}), @kbd{C-r} with a prefix argument,
+or @kbd{M-r} within a backward incremental search.
 
   All of the control characters that do special things within an
 ordinary incremental search have the same function in incremental regexp
@@ -847,7 +864,7 @@
 @vindex isearch-allow-scroll
 
 Scrolling, etc., during incremental search is enabled by setting the
-customizable variable @code{isearch-allow-scroll} to a non-nil value.
+customizable variable @code{isearch-allow-scroll} to a non-@code{nil} value.
 
 @c See Subject: Info file:  How do I get an itemized list without blank lines?
 @c Date: Sat, 12 Apr 2003 09:45:31 +0000  in gnu.emacs.help
@@ -893,7 +910,7 @@
 
 You should only thus configure commands which are ``safe'': i.e., they
 won't leave emacs in an inconsistent state when executed within a
-search - that is to say, the following things may be changed by a
+search---that is to say, the following things may be changed by a
 command only temporarily, and must be restored before the command
 finishes:
 
@@ -913,7 +930,7 @@
 window's size, or create or delete other windows and frames.
 
 Note that an attempt by a command to scroll the text
-@emph{horizontally} won't work, although it will do no harm - any such
+@emph{horizontally} won't work, although it will do no harm---any such
 scrolling will be overriden and nullified by the display code.
 
 @node Replace, Other Repeating Search, Configuring Scrolling, Search
@@ -925,7 +942,7 @@
 
   Global search-and-replace operations are not needed often in Emacs,
 but they are available.  In addition to the simple @kbd{M-x
-replace-string} command which is like that found in most editors,
+replace-string} command which replaces all occurrences,
 there is a @kbd{M-x query-replace} command which finds each occurrence
 of the pattern and asks you whether to replace it.
 
--- a/man/ses.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/ses.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -251,8 +251,8 @@
 (right-aligned) or list of one string (left-aligned).  While typing in
 a lambda, you can use @kbd{M-TAB} to complete the names of symbols.
 
-Each cell has a printer.  If nil, the column-printer for the cell's
-column is used.  If that is also nil, the default-printer for the
+Each cell has a printer.  If @code{nil}, the column-printer for the cell's
+column is used.  If that is also @code{nil}, the default-printer for the
 spreadsheet is used.
 
 @table @kbd
@@ -273,7 +273,7 @@
 
 The standard printers are suitable only for cells, not columns or
 default, because they format the value using the column-printer (or
-default-printer if nil) and then center the result:
+default-printer if @code{nil}) and then center the result:
 
 @table @code
 @item ses-center
@@ -296,7 +296,7 @@
 @node Clearing cells, Copy/cut/paste, Printer functions, The Basics
 @section Clearing cells
 
-These commands set both formula and printer to nil:
+These commands set both formula and printer to @code{nil}:
 
 @table @kbd
 @item DEL
@@ -331,7 +331,7 @@
 @item C-w
 @itemx [cut]
 @itemx [S-delete]
-The cut functions do not actually delete rows or columns - they copy
+The cut functions do not actually delete rows or columns---they copy
 and then clear (@code{ses-kill-override}).
 
 @item C-y
@@ -537,7 +537,7 @@
 
 @table @code
 @item (ses-delete-blanks &rest @var{args})
-Returns a list from which all blank cells (value is either nil or
+Returns a list from which all blank cells (value is either @code{nil} or
 '*skip*) have been deleted.
 
 @item (ses+ &rest @var{args})
@@ -561,10 +561,10 @@
 @end itemize
 
 If the result from the printer function is too wide for the cell and
-the following cell is nil, the result will spill over into the
+the following cell is @code{nil}, the result will spill over into the
 following cell.  Very wide results can spill over several cells.  If
 the result is too wide for the available space (up to the end of the
-row or the next non-nil cell), the result is truncated if the cell's
+row or the next non-@code{nil} cell), the result is truncated if the cell's
 value is a string, or replaced with hash marks otherwise.
 
 SES could get confused by printer results that contain newlines or
--- a/man/viper.texi	Mon Jun 28 16:04:52 2004 +0000
+++ b/man/viper.texi	Sat Jul 03 17:01:39 2004 +0000
@@ -1312,7 +1312,7 @@
 hit @kbd{C-x} followed by @kbd{2}, then the current window will be split
 into 2.  Except for novice users, @kbd{C-c} is also set to execute an Emacs
 command from the current major mode.  @key{ESC} will do the same, if you
-configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to nil
+configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to @code{nil}
 in @file{.viper}.  @xref{Customization}.  @kbd{C-\} in Insert, Replace, or Vi
 states will make Emacs think @kbd{Meta} has been hit.@refill
 @item \
@@ -1742,7 +1742,7 @@
 
 Setting this variable too high may slow down your typing.  Setting it too
 low may make it hard to type macros quickly enough.
-@item viper-translate-all-ESC-keysequences t on tty, nil on windowing display
+@item viper-translate-all-ESC-keysequences @code{t} on tty, @code{nil} on windowing display
 Normally, Viper lets Emacs translate only those ESC key sequences that are
 defined in the low-level key-translation-map or function-key-map, such as those
 emitted by the arrow and function keys. Other sequences, e.g., @kbd{\\e/}, are
@@ -1753,7 +1753,7 @@
 This permits you to use @kbd{ESC} as a meta key in insert mode. For instance,
 hitting @kbd{ESC x} fast would have the effect of typing @kbd{M-x}.
 If your dumb terminal is not so dumb and understands the meta key, then you
-probably will be better off setting this variable to nil. Try and see which
+probably will be better off setting this variable to @code{nil}. Try and see which
 way suits you best.
 @item viper-ex-style-motion t
 Set this to @code{nil}, if you want @kbd{l,h} to cross
@@ -1764,8 +1764,8 @@
 at the beginning of a line in Insert state, @key{X} and @key{x} to delete
 characters across lines in Vi command state, etc.
 @item viper-ESC-moves-cursor-back t
-It t, cursor moves back 1 character when switching from insert state to vi
-state.  If nil, the cursor stays where it was before the switch.
+It @code{t}, cursor moves back 1 character when switching from insert state to vi
+state.  If @code{nil}, the cursor stays where it was before the switch.
 @item viper-always t
 @code{t} means: leave it to Viper to decide when a buffer must be brought
 up in Vi state,
@@ -1873,17 +1873,17 @@
 insert state.
 @item viper-replace-region-end-delimiter "$"
 A string used to mark the end of replacement regions.  It is used only on
-TTYs or if @code{viper-use-replace-region-delimiters} is non-nil.
+TTYs or if @code{viper-use-replace-region-delimiters} is non-@code{nil}.
 @item viper-replace-region-start-delimiter  ""
 A string used to mark the beginning of replacement regions.  It is used
-only on TTYs or if @code{viper-use-replace-region-delimiters} is non-nil.
+only on TTYs or if @code{viper-use-replace-region-delimiters} is non-@code{nil}.
 @item viper-use-replace-region-delimiters
-If non-nil, Viper will always use @code{viper-replace-region-end-delimiter} and
+If non-@code{nil}, Viper will always use @code{viper-replace-region-end-delimiter} and
 @code{viper-replace-region-start-delimiter} to delimit replacement regions,
 even on color displays (where this is unnecessary).  By default, this
-variable is non-nil only on TTYs or monochrome displays.
+variable is non-@code{nil} only on TTYs or monochrome displays.
 @item viper-allow-multiline-replace-regions t
-If non-nil, multi-line text replacement regions, such as those produced by
+If non-@code{nil}, multi-line text replacement regions, such as those produced by
 commands @kbd{c55w}, @kbd{3C}, etc., will stay around until the user exits
 the replacement mode.  In this variable is set to @code{nil}, Viper will
 emulate the standard Vi behavior, which supports only intra-line
@@ -2390,7 +2390,7 @@
 
 To unbind the macros `//' and `///' for a major mode where you feel they
 are undesirable, execute @code{viper-set-emacs-state-searchstyle-macros} with a
-non-nil argument.  This can be done either interactively, by supplying a
+non-@code{nil} argument.  This can be done either interactively, by supplying a
 prefix argument, or by placing
 @example
 (viper-set-emacs-state-searchstyle-macros 'undefine)
@@ -3360,7 +3360,7 @@
 Find the next bracket/parenthesis/brace and go to its match.
 By default, Viper ignores brackets/parentheses/braces that occur inside
 parentheses.  You can change this by setting
-@code{viper-parse-sexp-ignore-comments} to nil in your @file{.viper} file.
+@code{viper-parse-sexp-ignore-comments} to @code{nil} in your @file{.viper} file.
 This option can also be toggled interactively if you quickly hit @kbd{%%%}.
 
 This latter feature is implemented as a vi-style keyboard macro.  If you
--- a/src/ChangeLog	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/ChangeLog	Sat Jul 03 17:01:39 2004 +0000
@@ -1,3 +1,68 @@
+2004-07-01  Kenichi Handa  <handa@m17n.org>
+
+	* w32select.c (Fw32_set_clipboard_data): Update `nbytes' correctly
+	after getting a new string by pre-write-conversion.
+
+2004-06-30  Stefan  <monnier@iro.umontreal.ca>
+
+	* xterm.c (x_detect_focus_change): Remove unused var `nr_events'.
+	(x_calc_absolute_position): Remove unused var `child'.
+
+	* xfaces.c (x_supports_face_attributes_p)
+	(Fdisplay_supports_face_attributes_p): YAILOM.
+	(tty_supports_face_attributes_p): Remove unused var `i'.
+
+	* syntax.c (skip_chars): Remove unused labels fwd_unibyte_ok and
+	back_unibyte_ok.
+
+	* search.c (match_limit, Fmatch_data, Fset_match_data): YAILOM.
+
+	* fontset.c (Fset_fontset_font): Remove unused vars `family' and `registry'.
+
+	* Makefile.in (${etc}DOC): Fix file name of make-docfile.
+
+2004-06-30  Andreas Schwab  <schwab@suse.de>
+
+	* image.c (CHECK_LIB_AVAILABLE): Add third parameter LIBRARIES.
+	(Finit_image_library): Pass LIBRARIES through to
+	CHECK_LIB_AVAILABLE.  Declare parameters.  Doc fix.
+	(lookup_image_type): Pass Qnil as second argument to
+	Finit_image_library.
+
+	* lisp.h: Declare Finit_image_library.
+
+2004-06-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+	* macterm.c (do_window_activate, do_window_deactivate): Remove.
+	(XTread_socket): Send mouse button events to the toolbox
+	dispatcher even when the mouse is grabbed.  Don't process window
+	activate events for non-Emacs windows.	Replace function calls to
+	do_window_activate and do_window_deactivate with their contents.
+	Reset mouse grabbing status when a window is deactivated.
+
+2004-06-29  Steven Tamm  <steventamm@mac.com>
+
+	* macterm.c (mac_get_emulated_btn)
+	(mac_event_to_emacs_modifiers): Fix emulated mouse button
+	support to correctly mask out modifiers.
+
+2004-06-29  David Kastrup  <dak@gnu.org>
+
+	* search.c (Fset_match_data): Allow buffer before end of list
+	which can happen if set-match-data is using a pre-consed list.
+
+2004-06-28  Steven Tamm  <steventamm@mac.com>
+
+	* macterm.c (XTread_socket): Correctly set the frame position
+	after the window is moved.
+
+2004-06-28  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* gtkutil.c (xg_get_image_for_pixmap): Call g_object_unref on
+	gpix and gmask just before return to avoid memory leak.
+	(xg_get_image_for_pixmap): Add workaround for monochrome displays
+	so insensitive and activated icons look ok.
+
 2004-06-27  Jason Rumney  <jasonr@gnu.org>
 
 	* w32fns.c (file_dialog_callback): Disable edit control if set
@@ -28,8 +93,7 @@
 	a buffer, add the buffer as last element to the match data.
 	(Fset_match_data): If an additional element of the match-data is a
 	buffer, restore it to last_thing_searched.
-	(save_search_regs): Save last_thing_searched as part of the match
-	data.
+	(save_search_regs): Save last_thing_searched as part of the match data.
 	(restore_match_data): Restore it again.
 
 2004-06-23  Luc Teirlinck  <teirllm@auburn.edu>
@@ -155,7 +219,7 @@
 2004-06-14  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* gtkutil.c (xg_get_image_for_pixmap): New function.
-	(xg_get_gdk_pixmap_and_mask): Removed.
+	(xg_get_gdk_pixmap_and_mask): Remove.
 	(update_frame_tool_bar): Call xg_get_image_for_pixmap instead of
 	xg_get_gdk_pixmap_and_mask.
 
@@ -176,8 +240,7 @@
 	list of possible filenames.
 	(init_xpm_functions, init_png_functions, init_jpeg_functions)
 	(init_tiff_functions, init_gif_functions): Use `w32_delayed_load'.
-	(CHECK_LIB_AVAILABLE): Call `define_image_library' with new
-	argument.
+	(CHECK_LIB_AVAILABLE): Call `define_image_library' with new argument.
 	(Finit_image_library): New function, extracted from `init_image'.
 	Try to initialize an image library on demand and cache whether we
 	were successful or not.
@@ -301,7 +364,7 @@
 	(merge_face_ref, face_at_buffer_position, face_at_string_position):
 	Use `merge_named_face'.
 	(merge_face_inheritance): Function removed.
-	(merge_face_ref): Renamed from `merge_face_vector_with_property'.
+	(merge_face_ref): Rename from `merge_face_vector_with_property'.
 	Add new `err_msgs' and `named_merge_points' args.  Return error
 	status.  Only print error messages if ERR_MSGS is true.  Don't try to
 	do :inherit attribute validation.
@@ -361,8 +424,8 @@
 
 	* xfaces.c (x_supports_face_attributes_p): Make this function
 	conditional on HAVE_WINDOW_SYSTEM.
-	(Fdisplay_supports_face_attributes_p) [HAVE_WINDOW_SYSTEM]: Don't
-	call x_supports_face_attributes_p if it was not compiled in.
+	(Fdisplay_supports_face_attributes_p) [HAVE_WINDOW_SYSTEM]:
+	Don't call x_supports_face_attributes_p if it was not compiled in.
 
 2004-06-04  Miles Bader  <miles@gnu.org>
 
@@ -393,6 +456,8 @@
 
 2004-06-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* eval.c (Fcondition_case): Fix usage.  Simplify.
+
 	* mem-limits.h (EXCEEDS_LISP_PTR) [USE_LSB_TAG]: Never true.
 
 2004-05-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
@@ -401,8 +466,7 @@
 	[MAC_OSX]: Don't include QuickTime/QuickTime.h.
 	[!MAC_OSX]: Don't include alloca.h, Windows.h, Gestalt.h, or
 	TextUtils.h.
-	(Fx_create_frame): Sync with xfns.c.  Initialize cursor
-	descriptors.
+	(Fx_create_frame): Sync with xfns.c.  Initialize cursor descriptors.
 	(Fx_display_mm_height, Fx_display_mm_width): Calculate length from
 	display height/width.
 	(compute_tip_xy, Vx_max_tooltip_size): Declare.
@@ -413,8 +477,7 @@
 
 	* macgui.h [!MAC_OSX]: Include Gestalt.h.
 	(Cursor, No_Cursor): New defines.
-	[!TARGET_API_MAC_CARBON] (SetPortWindowPort): New compatibility
-	macro.
+	[!TARGET_API_MAC_CARBON] (SetPortWindowPort): New compatibility macro.
 	[!TARGET_API_MAC_CARBON] (arrow_cursor): Declare.
 
 	* macmenu.c (mac_menu_show, mac_dialog): Use SetPortWindowPort.
@@ -442,11 +505,9 @@
 	(x_scroll_bar_handle_click): Set `(PORTION . WHOLE)' part in a
 	scroll-bar click event.
 	(mac_define_frame_cursor): Change the pointer shape.
-	(x_free_frame_resources): Reset tip_window to NULL when it is
-	disposed.
+	(x_free_frame_resources): Reset tip_window to NULL when it is disposed.
 	[!TARGET_API_MAC_CARBON] (arrow_cursor): New variable.
-	[!TARGET_API_MAC_CARBON] (do_init_managers): Initialize
-	arrow_cursor.
+	[!TARGET_API_MAC_CARBON] (do_init_managers): Initialize arrow_cursor.
 	(do_window_update): Don't do anything if the updated window is the
 	tooltip window.
 	(do_mouse_moved): Handle mouse movement events here (previously in
@@ -454,8 +515,8 @@
 	dpyinfo->mouse_face_hidden is set.
 	(do_os_event, do_events): Remove (now in XTread_socket).
 	(XTread_socket): Immediately return if interrupt_input_blocked.
-	Loop until all the events in the queue are processed.  Rearrange
-	codes for mouse grabbing.  Add tooltip support.  Include the
+	Loop until all the events in the queue are processed.
+	Rearrange codes for mouse grabbing.  Add tooltip support.  Include the
 	contents of do_os_event and do_events.  Remove mouse movement
 	handling (now in do_mouse_moved).  Add the case where
 	Vmouse_highlight has an integer value.
@@ -464,8 +525,8 @@
 	excess initializations.
 	(make_mac_terminal_frame): Previous initializations in
 	make_mac_frame are moved here.
-	(mac_initialize_display_info): Initialize
-	dpyinfo->mouse_face_overlay and dpyinfo->mouse_face_hidden.
+	(mac_initialize_display_info):
+	Initialize dpyinfo->mouse_face_overlay and dpyinfo->mouse_face_hidden.
 
 	* xdisp.c [MAC_OS] (No_Cursor): Remove variable.
 	(define_frame_cursor1): Don't treat HAVE_CARBON as a special case.
--- a/src/Makefile.in	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/Makefile.in	Sat Jul 03 17:01:39 2004 +0000
@@ -928,7 +928,7 @@
    for the first time, this prevents any variation between configurations
    in the contents of the DOC file.
    Likewise for ${SOME_MACHINE_LISP}.  */
-${etc}DOC: ${libsrc}make-docfile ${obj} ${shortlisp} ${SOME_MACHINE_LISP}
+${etc}DOC: ${libsrc}make-docfile${EXEEXT} ${obj} ${shortlisp} ${SOME_MACHINE_LISP}
 	-rm -f ${etc}DOC
 	${libsrc}make-docfile -d ${srcdir} ${SOME_MACHINE_OBJECTS} ${obj} > ${etc}DOC
 	${libsrc}make-docfile -a ${etc}DOC -d ${srcdir} ${SOME_MACHINE_LISP} ${shortlisp}
--- a/src/fontset.c	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/fontset.c	Sat Jul 03 17:01:39 2004 +0000
@@ -1,4 +1,5 @@
 /* Fontset handler.
+   Copyright (C) 2004  Free Software Foundation, Inc.
    Copyright (C) 1995, 1997, 2000 Electrotechnical Laboratory, JAPAN.
    Licensed to the Free Software Foundation.
 
--- a/src/gtkutil.c	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/gtkutil.c	Sat Jul 03 17:01:39 2004 +0000
@@ -248,8 +248,46 @@
 {
   GdkPixmap *gpix;
   GdkPixmap *gmask;
-  GdkDisplay *gdpy = gdk_x11_lookup_xdisplay (FRAME_X_DISPLAY (f));
-
+  GdkDisplay *gdpy;
+
+  /* If we are on a one bit display, let GTK do all the image handling.
+     This seems to be the only way to make insensitive and activated icons
+     look good.  */
+  if (x_screen_planes (f) == 1)
+    {
+      Lisp_Object specified_file = Qnil;
+      Lisp_Object tail;
+      extern Lisp_Object QCfile;
+
+      for (tail = XCDR (img->spec);
+	   NILP (specified_file) && CONSP (tail) && CONSP (XCDR (tail));
+	   tail = XCDR (XCDR (tail)))
+	if (EQ (XCAR (tail), QCfile))
+	  specified_file = XCAR (XCDR (tail));
+
+	if (STRINGP (specified_file))
+	  {
+
+	    Lisp_Object file = Qnil;
+	    struct gcpro gcpro1;
+	    GCPRO1 (file);
+
+	    file = x_find_image_file (specified_file);
+	    /* We already loaded the image once before calling this
+	       function, so this should not fail.  */
+	    xassert (STRINGP (file) != 0);
+
+	    if (! old_widget)
+	      old_widget = GTK_IMAGE (gtk_image_new_from_file (SDATA (file)));
+	    else
+	      gtk_image_set_from_file (old_widget, SDATA (file));
+
+	    UNGCPRO;
+	    return GTK_WIDGET (old_widget);
+	  }
+    }
+
+  gdpy = gdk_x11_lookup_xdisplay (FRAME_X_DISPLAY (f));
   gpix = gdk_pixmap_foreign_new_for_display (gdpy, img->pixmap);
   gmask = img->mask ? gdk_pixmap_foreign_new_for_display (gdpy, img->mask) : 0;
 
@@ -262,6 +300,12 @@
     }
   else
     {
+      /* This is a workaround to make icons look good on pseudo color
+         displays.  Apparently GTK expects the images to have an alpha
+         channel.  If they don't, insensitive and activated icons will
+         look bad.  This workaround does not work on monochrome displays,
+         and is not needed on true color/static color displays (i.e.
+         16 bits and higher).  */
       int x, y, width, height, rowstride, mask_rowstride;
       GdkPixbuf *icon_buf, *tmp_buf;
       guchar *pixels;
@@ -308,12 +352,9 @@
                 }
             }
 
-          g_object_unref (G_OBJECT (gmask));
           g_object_unref (G_OBJECT (mask_buf));
         }
 
-      g_object_unref (G_OBJECT (gpix));
-
       if (! old_widget)
         old_widget = GTK_IMAGE (gtk_image_new_from_pixbuf (icon_buf));
       else
@@ -322,6 +363,9 @@
       g_object_unref (G_OBJECT (icon_buf));
     }
 
+  g_object_unref (G_OBJECT (gpix));
+  if (gmask) g_object_unref (G_OBJECT (gmask));
+
   return GTK_WIDGET (old_widget);
 }
 
--- a/src/image.c	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/image.c	Sat Jul 03 17:01:39 2004 +0000
@@ -675,7 +675,7 @@
       success = Qt;
     }
 
-  CACHE_IMAGE_TYPE(*type->type, success);
+  CACHE_IMAGE_TYPE (*type->type, success);
   return success;
 }
 
@@ -690,7 +690,7 @@
   struct image_type *type;
 
   /* We must initialize the image-type if it hasn't been already.  */
-  if (NILP (Finit_image_library (symbol)))
+  if (NILP (Finit_image_library (symbol, Qnil)))
     return 0;			/* unimplemented */
 
   for (type = image_types; type; type = type->next)
@@ -7927,10 +7927,10 @@
 #ifdef HAVE_NTGUI
 /* Image types that rely on external libraries are loaded dynamically
    if the library is available.  */
-#define CHECK_LIB_AVAILABLE(image_type, init_lib_fn) \
+#define CHECK_LIB_AVAILABLE(image_type, init_lib_fn, libraries) \
   define_image_type (image_type, init_lib_fn (libraries))
 #else
-#define CHECK_LIB_AVAILABLE(image_type, init_lib_fn) \
+#define CHECK_LIB_AVAILABLE(image_type, init_lib_fn, libraries) \
   define_image_type (image_type, TRUE)
 #endif /* HAVE_NTGUI */
 
@@ -7940,8 +7940,9 @@
 
 Image types pbm and xbm are prebuilt; other types are loaded here.
 Libraries to load are specified in alist LIBRARIES (usually, the value
-of `image-library-alist', which see.  */)
+of `image-library-alist', which see).  */)
   (type, libraries)
+  Lisp_Object type, libraries;
 {
   Lisp_Object tested;
 
@@ -7952,36 +7953,36 @@
 
 #if defined (HAVE_XPM) || defined (MAC_OS)
   if (EQ (type, Qxpm))
-    return CHECK_LIB_AVAILABLE(&xpm_type, init_xpm_functions);
+    return CHECK_LIB_AVAILABLE (&xpm_type, init_xpm_functions, libraries);
 #endif
 
 #if defined (HAVE_JPEG) || defined (MAC_OS)
   if (EQ (type, Qjpeg))
-    return CHECK_LIB_AVAILABLE(&jpeg_type, init_jpeg_functions);
+    return CHECK_LIB_AVAILABLE (&jpeg_type, init_jpeg_functions, libraries);
 #endif
 
 #if defined (HAVE_TIFF) || defined (MAC_OS)
   if (EQ (type, Qtiff))
-    return CHECK_LIB_AVAILABLE(&tiff_type, init_tiff_functions);
+    return CHECK_LIB_AVAILABLE (&tiff_type, init_tiff_functions, libraries);
 #endif
 
 #if defined (HAVE_GIF) || defined (MAC_OS)
   if (EQ (type, Qgif))
-    return CHECK_LIB_AVAILABLE(&gif_type, init_gif_functions);
+    return CHECK_LIB_AVAILABLE (&gif_type, init_gif_functions, libraries);
 #endif
 
 #if defined (HAVE_PNG) || defined (MAC_OS)
   if (EQ (type, Qpng))
-    return CHECK_LIB_AVAILABLE(&png_type, init_png_functions);
+    return CHECK_LIB_AVAILABLE (&png_type, init_png_functions, libraries);
 #endif
 
 #ifdef HAVE_GHOSTSCRIPT
   if (EQ (type, Qpostscript))
-    return CHECK_LIB_AVAILABLE(&gs_type, init_gs_functions);
+    return CHECK_LIB_AVAILABLE (&gs_type, init_gs_functions, libraries);
 #endif
 
   /* If the type is not recognized, avoid testing it ever again.  */
-  CACHE_IMAGE_TYPE(type, Qnil);
+  CACHE_IMAGE_TYPE (type, Qnil);
   return Qnil;
 }
 
--- a/src/lisp.h	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/lisp.h	Sat Jul 03 17:01:39 2004 +0000
@@ -2332,6 +2332,7 @@
 extern void init_fringe_once P_ ((void));
 
 /* Defined in image.c */
+EXFUN (Finit_image_library, 2);
 extern void syms_of_image P_ ((void));
 extern void init_image P_ ((void));
 
--- a/src/macterm.c	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/macterm.c	Sat Jul 03 17:01:39 2004 +0000
@@ -7018,7 +7018,7 @@
   int result = 0;
   if (!NILP (Vmac_emulate_three_button_mouse)) {
     int cmdIs3 = !EQ (Vmac_emulate_three_button_mouse, Qreverse);
-    if (modifiers & controlKey)
+    if (modifiers & cmdKey)
       result = cmdIs3 ? 2 : 1;
     else if (modifiers & optionKey)
       result = cmdIs3 ? 1 : 2;
@@ -7038,7 +7038,7 @@
   if (!NILP (Vmac_emulate_three_button_mouse) &&
       GetEventClass(eventRef) == kEventClassMouse)
     {
-      mods &= ~(optionKey & cmdKey);
+      mods &= ~(optionKey | cmdKey);
     }
   return mac_to_emacs_modifiers (mods);
 }
@@ -7237,40 +7237,6 @@
 }
 
 static void
-do_window_activate (WindowPtr win)
-{
-  struct frame *f;
-
-  if (is_emacs_window (win))
-    {
-      f = mac_window_to_frame (win);
-
-      if (f)
-	{
-	  x_new_focus_frame (FRAME_MAC_DISPLAY_INFO (f), f);
-	  activate_scroll_bars (f);
-	}
-    }
-}
-
-static void
-do_window_deactivate (WindowPtr win)
-{
-  struct frame *f;
-
-  if (is_emacs_window (win))
-    {
-      f = mac_window_to_frame (win);
-
-      if (f == FRAME_MAC_DISPLAY_INFO (f)->x_focus_frame)
-	{
-	  x_new_focus_frame (FRAME_MAC_DISPLAY_INFO (f), 0);
-	  deactivate_scroll_bars (f);
-	}
-    }
-}
-
-static void
 do_app_resume ()
 {
   WindowPtr wp;
@@ -8084,6 +8050,25 @@
       if (!mac_convert_event_ref (eventRef, &er))
 	switch (GetEventClass (eventRef))
 	  {
+	  case kEventClassWindow:
+	    if (GetEventKind (eventRef) == kEventWindowBoundsChanged) 
+	      {
+		WindowPtr window_ptr;
+		GetEventParameter(eventRef, kEventParamDirectObject,
+				  typeWindowRef, NULL, sizeof(WindowPtr),
+				  NULL, &window_ptr);
+		f = mac_window_to_frame (window_ptr);
+		if (f && !f->async_iconified)
+		  {
+		    int x, y;
+		    
+		    x_real_positions (f, &x, &y);
+		    f->left_pos = x;
+		    f->top_pos = y;
+		  }
+		SendEventToEventTarget (eventRef, toolbox_dispatcher);
+	      }
+	    break;
 	  case kEventClassMouse:
 	    if (GetEventKind (eventRef) == kEventMouseWheelMoved)
 	      {
@@ -8135,6 +8120,14 @@
 	    SInt16 part_code;
 	    int tool_bar_p = 0;
 
+#if USE_CARBON_EVENTS
+	    /* This is needed to send mouse events like aqua window
+	       buttons to the correct handler.  */
+	    if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
+		!= eventNotHandledErr)
+	      break;
+#endif
+
 	    if (dpyinfo->grabbed && last_mouse_frame
 		&& FRAME_LIVE_P (last_mouse_frame))
 	      {
@@ -8150,16 +8143,9 @@
 		    window_ptr = FrontWindow ();
 		  }
 
-#if USE_CARBON_EVENTS
-		/* This is needed to send mouse events like aqua
-		   window buttons to the correct handler.  */
-		if (SendEventToEventTarget (eventRef, toolbox_dispatcher)
-		    != eventNotHandledErr)
-		  break;
-
 		if (!is_emacs_window (window_ptr))
 		  break;
-#endif
+
 		part_code = FindWindow (er.where, &window_ptr);
 	      }
 
@@ -8306,6 +8292,18 @@
 #else /* not TARGET_API_MAC_CARBON */
 		DragWindow (window_ptr, er.where, &qd.screenBits.bounds);
 #endif /* not TARGET_API_MAC_CARBON */
+		/* Update the frame parameters.  */
+		{
+		  struct frame *f = mac_window_to_frame (window_ptr);
+		  if (f && !f->async_iconified)
+		    {
+		      int x, y;
+		      
+		      x_real_positions (f, &x, &y);
+		      f->left_pos = x;
+		      f->top_pos = y;
+		    }
+		}
 		break;
 
 	      case inGoAway:
@@ -8393,24 +8391,38 @@
 		break;
 	      }
 
+	    if (!is_emacs_window (window_ptr))
+	      break;
+	    
+	    f = mac_window_to_frame (window_ptr);
+
 	    if ((er.modifiers & activeFlag) != 0)
 	      {
+		/* A window has been activated */
 		Point mouse_loc = er.where;
 
-		do_window_activate (window_ptr);
+		x_new_focus_frame (dpyinfo, f);
+		activate_scroll_bars (f);
 
 		SetPortWindowPort (window_ptr);
 		GlobalToLocal (&mouse_loc);
-		/* activateEvt counts as mouse movement,
+		/* Window-activated event counts as mouse movement,
 		   so update things that depend on mouse position.  */
 		note_mouse_movement (mac_window_to_frame (window_ptr),
 				     &mouse_loc);
 	      }
 	    else
 	      {
-		do_window_deactivate (window_ptr);
-
-		f = mac_window_to_frame (window_ptr);
+		/* A window has been deactivated */
+		dpyinfo->grabbed = 0;
+
+		if (f == dpyinfo->x_focus_frame)
+		  {
+		    x_new_focus_frame (dpyinfo, 0);
+		    deactivate_scroll_bars (f);
+		  }
+
+
 		if (f == dpyinfo->mouse_face_mouse_frame)
 		  {
 		    /* If we move outside the frame, then we're
--- a/src/search.c	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/search.c	Sat Jul 03 17:01:39 2004 +0000
@@ -1,5 +1,6 @@
 /* String search routines for GNU Emacs.
-   Copyright (C) 1985, 86,87,93,94,97,98, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1985, 86,87,93,94,97,98, 1999, 2004
+             Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -2628,7 +2629,7 @@
   CHECK_NUMBER (num);
   n = XINT (num);
   if (n < 0)
-    args_out_of_range (num, 0);
+    args_out_of_range (num, make_number (0));
   if (search_regs.num_regs <= 0)
     error ("No match data, because no search succeeded");
   if (n >= search_regs.num_regs
@@ -2728,10 +2729,9 @@
 	data[2 * i] = data [2 * i + 1] = Qnil;
     }
 
-  if (BUFFERP(last_thing_searched)
-      && ! NILP (integers))
+  if (BUFFERP (last_thing_searched) && !NILP (integers))
     {
-      XSETBUFFER(data[len], last_thing_searched);
+      data[len] = last_thing_searched;
       len++;
     }
 
@@ -2808,9 +2808,16 @@
 	search_regs.num_regs = length;
       }
 
-    for (i = 0; i < length; i++)
+    for (i = 0;; i++)
       {
 	marker = Fcar (list);
+	if (BUFFERP (marker))
+	  {
+	    last_thing_searched = marker;
+	    break;
+	  }
+	if (i >= length)
+	  break;
 	if (NILP (marker))
 	  {
 	    search_regs.start[i] = -1;
@@ -2847,10 +2854,6 @@
       search_regs.start[i] = -1;
   }
 
-  if (CONSP(list) && BUFFERP(XCAR(list))) {
-    XSETBUFFER(last_thing_searched, XCAR(list));
-  }
-
   return Qnil;
 }
 
--- a/src/syntax.c	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/syntax.c	Sat Jul 03 17:01:39 2004 +0000
@@ -1734,7 +1734,6 @@
 		  if (!fastmap[*p])
 		    break;
 
-		fwd_unibyte_ok:
 		  p++, pos++;
 		}
 	  }
@@ -1808,7 +1807,6 @@
 		  if (!fastmap[p[-1]])
 		    break;
 
-		back_unibyte_ok:
 		  p--, pos--;
 		}
 	  }
--- a/src/w32select.c	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/w32select.c	Sat Jul 03 17:01:39 2004 +0000
@@ -130,6 +130,8 @@
 
   BLOCK_INPUT;
 
+  /* Include the terminating NULL character in the source of
+     conversion.  */
   nbytes = SBYTES (string) + 1;
   src = SDATA (string);
   dst = src;
@@ -208,7 +210,9 @@
 	  {
 	    string = run_pre_post_conversion_on_str (string, &coding, 1);
 	    src = SDATA (string);
-	    nbytes = SBYTES (string);
+	    /* Include the terminating NULL character in the source of
+	       conversion.  */
+	    nbytes = SBYTES (string) + 1;
 	  }
 	coding.src_multibyte = 1;
 	coding.dst_multibyte = 0;
--- a/src/xfaces.c	Mon Jun 28 16:04:52 2004 +0000
+++ b/src/xfaces.c	Sat Jul 03 17:01:39 2004 +0000
@@ -5851,7 +5851,7 @@
       face = FACE_FROM_ID (f, lookup_face (f, merged_attrs, 0, 0));
 
       if (! face)
-	signal_error ("cannot make face", 0);
+	error ("cannot make face");
 
       /* If the font is the same, then not supported.  */
       if (face->font == def_face->font)
@@ -5886,7 +5886,7 @@
      Lisp_Object *attrs;
      struct face *def_face;
 {
-  int weight, i;
+  int weight;
   Lisp_Object val, fg, bg;
   XColor fg_tty_color, fg_std_color;
   XColor bg_tty_color, bg_std_color;
@@ -6108,7 +6108,7 @@
   if (def_face == NULL)
     {
       if (! realize_basic_faces (f))
-	signal_error ("Cannot realize default face", 0);
+	error ("Cannot realize default face");
       def_face = FACE_FROM_ID (f, DEFAULT_FACE_ID);
     }