changeset 105829:328150f0cf76

* url-util.el (url-insert-entities-in-string): * url-nfs.el (url-nfs-unescape): * url-ldap.el (url-ldap): * url-imap.el (url-imap): * url-cid.el (url-cid-gnus, url-cid): Use with-current-buffer. * erc.el (erc-display-line-1, erc-process-away): * erc-truncate.el (erc-truncate-buffer-to-size): Use with-current-buffer. * term/ns-win.el (ns-scroll-bar-move, ns-face-at-pos): * play/mpuz.el (mpuz-create-buffer): * play/landmark.el (lm-prompt-for-move, lm-print-wts, lm-print-smell) (lm-print-y,s,noise, lm-print-w0, lm-init): * play/gomoku.el (gomoku-prompt-for-move): * play/fortune.el (fortune-in-buffer): * play/dissociate.el (dissociated-press): * play/decipher.el (decipher-adjacency-list, decipher-display-regexp) (decipher-analyze-buffer, decipher-stats-buffer,decipher-stats-buffer): * mail/supercite.el (sc-eref-show): * mail/smtpmail.el (smtpmail-send-it): * mail/rmailsum.el (rmail-summary-next-labeled-message) (rmail-summary-previous-labeled-message, rmail-summary-wipe) (rmail-summary-undelete-many, rmail-summary-rmail-update) (rmail-summary-goto-msg, rmail-summary-expunge) (rmail-summary-get-new-mail, rmail-summary-search-backward) (rmail-summary-add-label, rmail-summary-output-menu) (rmail-summary-output-body): * mail/rfc822.el (rfc822-addresses): * mail/reporter.el (reporter-dump-variable, reporter-dump-state): * mail/mailpost.el (post-mail-send-it): * mail/hashcash.el (hashcash-generate-payment): * mail/feedmail.el (feedmail-run-the-queue) (feedmail-queue-send-edit-prompt-help-first) (feedmail-send-it-immediately, feedmail-give-it-to-buffer-eater) (feedmail-deduce-address-list): * eshell/esh-ext.el (eshell-remote-command): * eshell/em-unix.el (eshell-occur-mode-mouse-goto): * emulation/viper-util.el (viper-glob-unix-files, viper-save-setting) (viper-wildcard-to-regexp, viper-glob-mswindows-files) (viper-save-string-in-file, viper-valid-marker): * emulation/viper-keym.el (viper-toggle-key): * emulation/viper-ex.el (ex-expand-filsyms, viper-get-ex-file) (ex-edit, ex-global, ex-mark, ex-next-related-buffer, ex-quit) (ex-get-inline-cmd-args, ex-tag, ex-command, ex-compile): * emulation/viper-cmd.el (viper-exec-form-in-vi) (viper-exec-form-in-emacs, viper-brac-function): * emulation/viper.el (viper-delocalize-var): * emulation/vip.el (vip-mode, vip-get-ex-token, vip-ex, vip-get-ex-pat) (vip-get-ex-command, vip-get-ex-opt-gc, vip-get-ex-buffer) (vip-get-ex-count, vip-get-ex-file, ex-edit, ex-global, ex-mark) (ex-map, ex-unmap, ex-quit, ex-read, ex-tag, ex-command): * emulation/vi.el (vi-switch-mode, vi-ex-cmd): * emulation/edt.el (edt-electric-helpify): * emulation/cua-rect.el (cua--rectangle-aux-replace): * emulation/cua-gmrk.el (cua--insert-at-global-mark) (cua--delete-at-global-mark, cua--copy-rectangle-to-global-mark) (cua-indent-to-global-mark-column): * calendar/diary-lib.el (calendar-mark-1): * calendar/cal-hebrew.el (calendar-hebrew-mark-date-pattern): Use with-current-buffer. * emulation/viper.el (viper-delocalize-var): Use dolist.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 03 Nov 2009 02:04:29 +0000
parents 3d8945f5688d
children 378d4ce3aada
files lisp/ChangeLog lisp/calendar/cal-hebrew.el lisp/calendar/diary-lib.el lisp/emulation/cua-gmrk.el lisp/emulation/cua-rect.el lisp/emulation/edt.el lisp/emulation/vi.el lisp/emulation/vip.el lisp/emulation/viper-cmd.el lisp/emulation/viper-ex.el lisp/emulation/viper-keym.el lisp/emulation/viper-util.el lisp/emulation/viper.el lisp/erc/ChangeLog lisp/erc/erc-truncate.el lisp/erc/erc.el lisp/eshell/em-unix.el lisp/eshell/esh-ext.el lisp/mail/feedmail.el lisp/mail/hashcash.el lisp/mail/mailpost.el lisp/mail/reporter.el lisp/mail/rfc822.el lisp/mail/rmailsum.el lisp/mail/smtpmail.el lisp/mail/supercite.el lisp/play/decipher.el lisp/play/dissociate.el lisp/play/fortune.el lisp/play/gomoku.el lisp/play/landmark.el lisp/play/mpuz.el lisp/term/ns-win.el lisp/url/ChangeLog lisp/url/url-cid.el lisp/url/url-imap.el lisp/url/url-ldap.el lisp/url/url-nfs.el lisp/url/url-util.el
diffstat 39 files changed, 324 insertions(+), 364 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/ChangeLog	Tue Nov 03 02:04:29 2009 +0000
@@ -1,3 +1,58 @@
+2009-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* term/ns-win.el (ns-scroll-bar-move, ns-face-at-pos):
+	* play/mpuz.el (mpuz-create-buffer):
+	* play/landmark.el (lm-prompt-for-move, lm-print-wts, lm-print-smell)
+	(lm-print-y,s,noise, lm-print-w0, lm-init):
+	* play/gomoku.el (gomoku-prompt-for-move):
+	* play/fortune.el (fortune-in-buffer):
+	* play/dissociate.el (dissociated-press):
+	* play/decipher.el (decipher-adjacency-list, decipher-display-regexp)
+	(decipher-analyze-buffer, decipher-stats-buffer,decipher-stats-buffer):
+	* mail/supercite.el (sc-eref-show):
+	* mail/smtpmail.el (smtpmail-send-it):
+	* mail/rmailsum.el (rmail-summary-next-labeled-message)
+	(rmail-summary-previous-labeled-message, rmail-summary-wipe)
+	(rmail-summary-undelete-many, rmail-summary-rmail-update)
+	(rmail-summary-goto-msg, rmail-summary-expunge)
+	(rmail-summary-get-new-mail, rmail-summary-search-backward)
+	(rmail-summary-add-label, rmail-summary-output-menu)
+	(rmail-summary-output-body):
+	* mail/rfc822.el (rfc822-addresses):
+	* mail/reporter.el (reporter-dump-variable, reporter-dump-state):
+	* mail/mailpost.el (post-mail-send-it):
+	* mail/hashcash.el (hashcash-generate-payment):
+	* mail/feedmail.el (feedmail-run-the-queue)
+	(feedmail-queue-send-edit-prompt-help-first)
+	(feedmail-send-it-immediately, feedmail-give-it-to-buffer-eater)
+	(feedmail-deduce-address-list):
+	* eshell/esh-ext.el (eshell-remote-command):
+	* eshell/em-unix.el (eshell-occur-mode-mouse-goto):
+	* emulation/viper-util.el (viper-glob-unix-files, viper-save-setting)
+	(viper-wildcard-to-regexp, viper-glob-mswindows-files)
+	(viper-save-string-in-file, viper-valid-marker):
+	* emulation/viper-keym.el (viper-toggle-key):
+	* emulation/viper-ex.el (ex-expand-filsyms, viper-get-ex-file)
+	(ex-edit, ex-global, ex-mark, ex-next-related-buffer, ex-quit)
+	(ex-get-inline-cmd-args, ex-tag, ex-command, ex-compile):
+	* emulation/viper-cmd.el (viper-exec-form-in-vi)
+	(viper-exec-form-in-emacs, viper-brac-function):
+	* emulation/viper.el (viper-delocalize-var):
+	* emulation/vip.el (vip-mode, vip-get-ex-token, vip-ex, vip-get-ex-pat)
+	(vip-get-ex-command, vip-get-ex-opt-gc, vip-get-ex-buffer)
+	(vip-get-ex-count, vip-get-ex-file, ex-edit, ex-global, ex-mark)
+	(ex-map, ex-unmap, ex-quit, ex-read, ex-tag, ex-command):
+	* emulation/vi.el (vi-switch-mode, vi-ex-cmd):
+	* emulation/edt.el (edt-electric-helpify):
+	* emulation/cua-rect.el (cua--rectangle-aux-replace):
+	* emulation/cua-gmrk.el (cua--insert-at-global-mark)
+	(cua--delete-at-global-mark, cua--copy-rectangle-to-global-mark)
+	(cua-indent-to-global-mark-column):
+	* calendar/diary-lib.el (calendar-mark-1):
+	* calendar/cal-hebrew.el (calendar-hebrew-mark-date-pattern):
+	Use with-current-buffer.
+	* emulation/viper.el (viper-delocalize-var): Use dolist.
+
 2009-11-03  Chong Yidong  <cyd@stupidchicken.com>
 
 	* comint.el (comint-replace-by-expanded-history-before-point):
@@ -27,8 +82,8 @@
 	* textmodes/sgml-mode.el (sgml-mode-facemenu-add-face-function):
 	Support face colors.
 
-	* textmodes/tex-mode.el (tex-facemenu-add-face-function): New
-	function.  Support face colors (Bug#1168).
+	* textmodes/tex-mode.el (tex-facemenu-add-face-function):
+	New function.  Support face colors (Bug#1168).
 	(tex-common-initialization): Use it.
 
 	* facemenu.el (facemenu-enable-faces-p): Enable facemenu if the
--- a/lisp/calendar/cal-hebrew.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/calendar/cal-hebrew.el	Tue Nov 03 02:04:29 2009 +0000
@@ -646,8 +646,7 @@
 passed to `calendar-mark-visible-date' as MARK."
   ;; FIXME not the same as the Bahai and Islamic cases, so can't use
   ;; calendar-mark-1.
-  (save-excursion
-    (set-buffer calendar-buffer)
+  (with-current-buffer calendar-buffer
     (if (and (not (zerop month)) (not (zerop day)))
         (if (not (zerop year))
             ;; Fully specified Hebrew date.
--- a/lisp/calendar/diary-lib.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/calendar/diary-lib.el	Tue Nov 03 02:04:29 2009 +0000
@@ -1506,8 +1506,7 @@
 The function FROMABS converts absolute dates to the appropriate date system.
 The function TOABS carries out the inverse operation.  Optional argument
 COLOR is passed to `calendar-mark-visible-date' as MARK."
-  (save-excursion
-    (set-buffer calendar-buffer)
+  (with-current-buffer calendar-buffer
     (if (and (not (zerop month)) (not (zerop day)))
         (if (not (zerop year))
             ;; Fully specified date.
--- a/lisp/emulation/cua-gmrk.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/cua-gmrk.el	Tue Nov 03 02:04:29 2009 +0000
@@ -110,8 +110,7 @@
 
 (defun cua--insert-at-global-mark (str &optional msg)
   ;; Insert string at global marker and move marker
-  (save-excursion
-    (set-buffer (marker-buffer cua--global-mark-marker))
+  (with-current-buffer (marker-buffer cua--global-mark-marker)
     (goto-char (marker-position cua--global-mark-marker))
     (insert-for-yank str)
     (cua--activate-global-mark))
@@ -123,8 +122,7 @@
 
 (defun cua--delete-at-global-mark (arg &optional msg)
   ;; Delete chars at global marker
-  (save-excursion
-    (set-buffer (marker-buffer cua--global-mark-marker))
+  (with-current-buffer (marker-buffer cua--global-mark-marker)
     (goto-char (marker-position cua--global-mark-marker))
     (delete-char arg))
   (if msg
@@ -190,8 +188,7 @@
   (if (cua--global-mark-active)
       (let ((src-buf (current-buffer))
 	    (text (cua--extract-rectangle)))
-	(save-excursion
-	  (set-buffer (marker-buffer cua--global-mark-marker))
+	(with-current-buffer (marker-buffer cua--global-mark-marker)
 	  (goto-char (marker-position cua--global-mark-marker))
 	  (if as-text
 	      (while text
@@ -309,8 +306,7 @@
   (interactive "*")
   (if (cua--global-mark-active)
       (let (col)
-	(save-excursion
-	  (set-buffer (marker-buffer cua--global-mark-marker))
+	(with-current-buffer (marker-buffer cua--global-mark-marker)
 	  (goto-char (marker-position cua--global-mark-marker))
 	  (setq col (current-column)))
 	(if cua--rectangle
--- a/lisp/emulation/cua-rect.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/cua-rect.el	Tue Nov 03 02:04:29 2009 +0000
@@ -1198,8 +1198,7 @@
 	     (- (cua--rectangle-right) (cua--rectangle-left) -1)))
         (r (or setup-fct (cua--extract-rectangle)))
         y z (tr 0))
-    (save-excursion
-      (set-buffer auxbuf)
+    (with-current-buffer auxbuf
       (erase-buffer)
       (if setup-fct
           (funcall setup-fct)
--- a/lisp/emulation/edt.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/edt.el	Tue Nov 03 02:04:29 2009 +0000
@@ -2657,8 +2657,7 @@
                 (progn
                   (message "%s..." (capitalize (symbol-name fun)))
                   (and b
-                       (save-excursion
-                         (set-buffer b)
+                       (with-current-buffer b
                          (set-buffer-modified-p t)))
                   (fset 'help-print-return-message 'ignore)
                   (call-interactively fun)
@@ -2669,8 +2668,7 @@
                            (not (buffer-modified-p b)))))
               (fset 'help-print-return-message p)
               (and b (buffer-name b)
-                   (save-excursion
-                     (set-buffer b)
+                   (with-current-buffer b
                      (set-buffer-modified-p m))))))
         (with-electric-help 'delete-other-windows name t))))
 
--- a/lisp/emulation/vi.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/vi.el	Tue Nov 03 02:04:29 2009 +0000
@@ -79,8 +79,7 @@
     (if (null mode-cmd)
 	(with-output-to-temp-buffer "*Help*"
 	  (princ (substitute-command-keys "Possible major modes to switch to: \\{vi-tilde-map}"))
-	  (save-excursion
-	    (set-buffer standard-output)
+	  (with-current-buffer standard-output
 	    (help-mode)))
       (setq prefix-arg arg)		; prefix arg will be passed down
       (command-execute mode-cmd nil)	; may need to save mode-line-format etc
@@ -499,8 +498,7 @@
 ;;  (cond ((string-match "s"))))
   (with-output-to-temp-buffer "*Help*"
     (princ (documentation 'vi-ex-cmd))
-    (save-excursion
-      (set-buffer standard-output)
+    (with-current-buffer standard-output
       (help-mode))))
 
 (defun vi-undefined ()
--- a/lisp/emulation/vip.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/vip.el	Tue Nov 03 02:04:29 2009 +0000
@@ -419,10 +419,9 @@
 	(goto-char (point-min))
 	(if (y-or-n-p "Inhibit VIP startup message? ")
 	    (progn
-	      (save-excursion
-		(set-buffer
-		 (find-file-noselect
-		  (substitute-in-file-name vip-startup-file)))
+	      (with-current-buffer 
+                  (find-file-noselect
+                   (substitute-in-file-name vip-startup-file))
 		(goto-char (point-max))
 		(insert "\n(setq vip-inhibit-startup-message t)\n")
 		(save-buffer)
@@ -2158,8 +2157,7 @@
 (defun vip-get-ex-token ()
   "get an ex-token which is either an address or a command.
 a token has type \(command, address, end-mark\) and value."
-  (save-window-excursion
-    (set-buffer " *ex-working-space*")
+  (with-current-buffer " *ex-working-space*"
     (skip-chars-forward " \t")
     (cond ((looking-at "[k#]")
 	   (setq ex-token-type "command")
@@ -2262,8 +2260,7 @@
 	    ex-g-variant nil))
   (let ((com-str (or string (vip-read-string ":")))
 	(address nil) (cont t) (dot (point)))
-    (save-window-excursion
-      (set-buffer (get-buffer-create " *ex-working-space*"))
+    (with-current-buffer (get-buffer-create " *ex-working-space*")
       (delete-region (point-min) (point-max))
       (insert com-str "\n")
       (goto-char (point-min)))
@@ -2282,8 +2279,7 @@
 		    (setq cont nil))
 		   (t
 		    (vip-execute-ex-command)
-		    (save-window-excursion
-		      (set-buffer " *ex-working-space*")
+		    (with-current-buffer " *ex-working-space*"
 		      (skip-chars-forward " \t")
 		      (cond ((looking-at "|")
 			     (forward-char 1))
@@ -2307,8 +2303,7 @@
 
 (defun vip-get-ex-pat ()
   "get a regular expression and set ex-variant if found"
-  (save-window-excursion
-    (set-buffer " *ex-working-space*")
+  (with-current-buffer " *ex-working-space*"
     (skip-chars-forward " \t")
     (if (looking-at "!")
 	(progn
@@ -2334,8 +2329,7 @@
 
 (defun vip-get-ex-command ()
   "get an ex command"
-  (save-window-excursion
-    (set-buffer " *ex-working-space*")
+  (with-current-buffer " *ex-working-space*"
     (if (looking-at "/") (forward-char 1))
     (skip-chars-forward " \t")
     (cond ((looking-at "[a-z]")
@@ -2349,8 +2343,7 @@
 
 (defun vip-get-ex-opt-gc ()
   "get an ex option g or c"
-  (save-window-excursion
-    (set-buffer " *ex-working-space*")
+  (with-current-buffer " *ex-working-space*"
     (if (looking-at "/") (forward-char 1))
     (skip-chars-forward " \t")
     (cond ((looking-at "g")
@@ -2458,8 +2451,7 @@
   (setq ex-buffer nil)
   (setq ex-count nil)
   (setq ex-flag nil)
-  (save-window-excursion
-    (set-buffer " *ex-working-space*")
+  (with-current-buffer " *ex-working-space*"
     (skip-chars-forward " \t")
     (if (looking-at "[a-zA-Z]")
 	(progn
@@ -2483,8 +2475,7 @@
   (setq ex-variant nil
 	ex-count nil
 	ex-flag nil)
-  (save-window-excursion
-    (set-buffer " *ex-working-space*")
+  (with-current-buffer " *ex-working-space*"
     (skip-chars-forward " \t")
     (if (looking-at "!")
 	(progn
@@ -2510,8 +2501,7 @@
 	ex-variant nil
 	ex-append nil
 	ex-offset nil)
-  (save-window-excursion
-    (set-buffer " *ex-working-space*")
+  (with-current-buffer " *ex-working-space*"
     (skip-chars-forward " \t")
     (if (looking-at "!")
 	(progn
@@ -2680,8 +2670,7 @@
   (goto-char (point-min))
   (if ex-offset
       (progn
-	(save-window-excursion
-	  (set-buffer " *ex-working-space*")
+	(with-current-buffer " *ex-working-space*"
 	  (delete-region (point-min) (point-max))
 	  (insert ex-offset "\n")
 	  (goto-char (point-min)))
@@ -2733,19 +2722,18 @@
 	  (if (bobp) (setq cont nil)
 	    (forward-line -1)
 	    (end-of-line)))))
-  (save-window-excursion
-    (set-buffer " *ex-working-space*")
-    (setq com-str (buffer-substring (1+ (point)) (1- (point-max)))))
-  (while marks
-    (goto-char (car marks))
-    ; report progress of execution on a slow machine.
-    ;(message "Executing global command...")
-    ;(if (zerop (% mark-count 10))
-	;(message "Executing global command...%d" mark-count))
-    (vip-ex com-str)
-    (setq mark-count (1- mark-count))
-    (setq marks (cdr marks)))))
-  ;(message "Executing global command...done")))
+    (with-current-buffer " *ex-working-space*"
+      (setq com-str (buffer-substring (1+ (point)) (1- (point-max)))))
+    (while marks
+      (goto-char (car marks))
+      ;; report progress of execution on a slow machine.
+      ;;(message "Executing global command...")
+      ;;(if (zerop (% mark-count 10))
+      ;;    (message "Executing global command...%d" mark-count))
+      (vip-ex com-str)
+      (setq mark-count (1- mark-count))
+      (setq marks (cdr marks)))))
+;;(message "Executing global command...done")))
 
 (defun ex-line (com)
   "ex line commands.  COM is join, shift-right or shift-left."
@@ -2801,8 +2789,7 @@
     (if (null ex-addresses)
 	(setq ex-addresses
 	      (cons (point) nil)))
-    (save-window-excursion
-      (set-buffer " *ex-working-space*")
+    (with-current-buffer " *ex-working-space*"
       (skip-chars-forward " \t")
       (if (looking-at "[a-z]")
 	  (progn
@@ -2821,8 +2808,7 @@
 (defun ex-map ()
   "ex map"
   (let (char string)
-    (save-window-excursion
-      (set-buffer " *ex-working-space*")
+    (with-current-buffer " *ex-working-space*"
       (skip-chars-forward " \t")
       (setq char (char-to-string (following-char)))
       (forward-char 1)
@@ -2847,8 +2833,7 @@
 (defun ex-unmap ()
   "ex unmap"
   (let (char)
-    (save-window-excursion
-      (set-buffer " *ex-working-space*")
+    (with-current-buffer " *ex-working-space*"
       (skip-chars-forward " \t")
       (setq char (char-to-string (following-char)))
       (forward-char 1)
@@ -2870,8 +2855,7 @@
 (defun ex-quit ()
   "ex quit"
   (let (char)
-    (save-window-excursion
-      (set-buffer " *ex-working-space*")
+    (with-current-buffer " *ex-working-space*"
       (skip-chars-forward " \t")
       (setq char (following-char)))
     (if (= char ?!) (kill-emacs t) (save-buffers-kill-emacs))))
@@ -2883,8 +2867,7 @@
     (goto-char point)
     (if (not (= point 0)) (with-no-warnings (next-line 1)))
     (beginning-of-line)
-    (save-window-excursion
-      (set-buffer " *ex-working-space*")
+    (with-current-buffer " *ex-working-space*"
       (skip-chars-forward " \t")
       (if (looking-at "!")
 	  (progn
@@ -2981,8 +2964,7 @@
 (defun ex-tag ()
   "ex tag"
   (let (tag)
-    (save-window-excursion
-      (set-buffer " *ex-working-space*")
+    (with-current-buffer " *ex-working-space*"
       (skip-chars-forward " \t")
       (set-mark (point))
       (skip-chars-forward "^ |\t\n")
@@ -3045,8 +3027,7 @@
 (defun ex-command ()
   "execute shell command"
   (let (command)
-    (save-window-excursion
-      (set-buffer " *ex-working-space*")
+    (with-current-buffer " *ex-working-space*"
       (skip-chars-forward " \t")
       (set-mark (point))
       (end-of-line)
--- a/lisp/emulation/viper-cmd.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/viper-cmd.el	Tue Nov 03 02:04:29 2009 +0000
@@ -903,8 +903,7 @@
        (signal 'quit nil)))
 
     (if (not (equal buff (current-buffer))) ; cmd switched buffer
-	(save-excursion
-	  (set-buffer buff)
+	(with-current-buffer buff
 	  (viper-set-mode-vars-for viper-current-state)))
     (viper-set-mode-vars-for viper-current-state)
     result))
@@ -917,8 +916,7 @@
     (viper-set-mode-vars-for 'emacs-state)
     (setq result (eval form))
     (if (not (equal buff (current-buffer))) ; cmd switched buffer
-	(save-excursion
-	  (set-buffer buff)
+	(with-current-buffer buff
 	  (viper-set-mode-vars-for viper-current-state)))
     (viper-set-mode-vars-for viper-current-state)
     result))
@@ -4697,8 +4695,7 @@
 	     (with-output-to-temp-buffer " *viper-info*"
 	       (if (and buf pos)
 		   (progn
-		     (save-excursion
-		       (set-buffer buf)
+		     (with-current-buffer buf
 		       (setq line-no (1+ (count-lines (point-min) val)))
 		       (goto-char pos)
 		       (beginning-of-line)
--- a/lisp/emulation/viper-ex.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/viper-ex.el	Tue Nov 03 02:04:29 2009 +0000
@@ -946,16 +946,14 @@
 ;; Expand \% and \# in ex command
 (defun ex-expand-filsyms (cmd buf)
   (let (cf pf ret)
-    (save-excursion
-      (set-buffer buf)
+    (with-current-buffer buf
       (setq cf buffer-file-name)
       (setq pf (ex-next nil t))) ; this finds alternative file name
     (if (and (null cf) (string-match "[^\\]%\\|\\`%" cmd))
 	(error "No current file to substitute for `%%'"))
     (if (and (null pf) (string-match "[^\\]#\\|\\`#" cmd))
 	(error "No alternate file to substitute for `#'"))
-    (save-excursion
-      (set-buffer (get-buffer-create viper-ex-tmp-buf-name))
+    (with-current-buffer (get-buffer-create viper-ex-tmp-buf-name)
       (erase-buffer)
       (insert cmd)
       (goto-char (point-min))
@@ -984,9 +982,8 @@
 	  ex-cmdfile nil
 	  ex-cmdfile-args "")
     (save-excursion
-      (save-window-excursion
-	(setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-	(set-buffer viper-ex-work-buf)
+      (with-current-buffer (setq viper-ex-work-buf
+                                 (get-buffer-create viper-ex-work-buf-name))
 	(skip-chars-forward " \t")
 	(if (looking-at "!")
 	    (if (and (not (viper-looking-back "[ \t]"))
@@ -1289,9 +1286,8 @@
     (switch-to-buffer file))
   (if ex-offset
       (progn
-	(save-window-excursion
-	  (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-	  (set-buffer viper-ex-work-buf)
+	(with-current-buffer (setq viper-ex-work-buf
+                                   (get-buffer-create viper-ex-work-buf-name))
 	  (delete-region (point-min) (point-max))
 	  (insert ex-offset "\n")
 	  (goto-char (point-min)))
@@ -1372,9 +1368,8 @@
 	  (if (bobp) (setq cont nil)
 	    (forward-line -1)
 	    (end-of-line)))))
-    (save-window-excursion
-      (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-      (set-buffer viper-ex-work-buf)
+    (with-current-buffer (setq viper-ex-work-buf
+                               (get-buffer-create viper-ex-work-buf-name))
       ;; com-str is the command string, i.e., g/pattern/ or v/pattern'
       (setq com-str (buffer-substring (1+ (point)) (1- (point-max)))))
     (while ex-g-marks
@@ -1453,18 +1448,17 @@
 	    (setq char (string-to-char name))
 	  (error "`%s': Spurious text \"%s\" after mark name"
 		 name (substring name 1)))
-    (save-window-excursion
-      (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-      (set-buffer viper-ex-work-buf)
-      (skip-chars-forward " \t")
-      (if (looking-at "[a-z]")
-	  (progn
-	    (setq char (following-char))
-	    (forward-char 1)
-	    (skip-chars-forward " \t")
-	    (if (not (looking-at "[\n|]"))
-		(error "`%s': %s" ex-token viper-SpuriousText)))
-	(error "`%s' requires a following letter" ex-token))))
+      (with-current-buffer (setq viper-ex-work-buf
+                                 (get-buffer-create viper-ex-work-buf-name))
+        (skip-chars-forward " \t")
+        (if (looking-at "[a-z]")
+            (progn
+              (setq char (following-char))
+              (forward-char 1)
+              (skip-chars-forward " \t")
+              (if (not (looking-at "[\n|]"))
+                  (error "`%s': %s" ex-token viper-SpuriousText)))
+          (error "`%s' requires a following letter" ex-token))))
     (save-excursion
       (goto-char (car ex-addresses))
       (point-to-register (viper-int-to-char (1+ (- char ?a)))))))
@@ -1560,8 +1554,7 @@
 	      (select-window wind)))
 	(save-window-excursion (select-window wind) (sit-for 1)))
 
-      (save-excursion
-	(set-buffer buf)
+      (with-current-buffer buf
 	(setq viper-related-files-and-buffers-ring old-ring))
 
       (setq viper-local-search-start-marker (point-marker))
@@ -1588,9 +1581,8 @@
 ;; Ex quit command
 (defun ex-quit ()
   ;; skip "!", if it is q!.  In Viper q!, w!, etc., behave as q, w, etc.
-  (save-excursion
-    (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-    (set-buffer viper-ex-work-buf)
+  (with-current-buffer (setq viper-ex-work-buf
+                             (get-buffer-create viper-ex-work-buf-name))
     (if (looking-at "!") (forward-char 1)))
   (if (< viper-expert-level 3)
       (save-buffers-kill-emacs)
@@ -1837,9 +1829,8 @@
 ;; Optional 3d arg is a string that should replace ' ' to prevent its
 ;; special meaning
 (defun ex-get-inline-cmd-args (regex-forw &optional chars-back replace-str)
-  (save-excursion
-    (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-    (set-buffer viper-ex-work-buf)
+  (with-current-buffer (setq viper-ex-work-buf
+                             (get-buffer-create viper-ex-work-buf-name))
     (goto-char (point-min))
     (re-search-forward regex-forw nil t)
     (let ((beg (point))
@@ -1987,9 +1978,8 @@
 ;; Ex tag command
 (defun ex-tag ()
   (let (tag)
-    (save-window-excursion
-      (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-      (set-buffer viper-ex-work-buf)
+    (with-current-buffer (setq viper-ex-work-buf
+                               (get-buffer-create viper-ex-work-buf-name))
       (skip-chars-forward " \t")
       (set-mark (point))
       (skip-chars-forward "^ |\t\n")
@@ -2148,9 +2138,8 @@
 ;; Execute shell command
 (defun ex-command ()
   (let (command)
-    (save-window-excursion
-      (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-      (set-buffer viper-ex-work-buf)
+    (with-current-buffer (setq viper-ex-work-buf
+                               (get-buffer-create viper-ex-work-buf-name))
       (skip-chars-forward " \t")
       (setq command (buffer-substring (point) (point-max)))
       (end-of-line))
@@ -2178,9 +2167,8 @@
 If no args are given, then it runs the last compile command.
 Type 'mak ' (including the space) to run make with no args."
   (let (args)
-    (save-window-excursion
-      (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
-      (set-buffer viper-ex-work-buf)
+    (with-current-buffer (setq viper-ex-work-buf
+                               (get-buffer-create viper-ex-work-buf-name))
       (setq args (buffer-substring (point) (point-max)))
       (end-of-line))
     ;; Remove the newline that may (will?) be at the end of the args
--- a/lisp/emulation/viper-keym.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/viper-keym.el	Tue Nov 03 02:04:29 2009 +0000
@@ -165,8 +165,7 @@
 			    [(control ?z)])))
 	   (mapc
 	    (lambda (buf)
-	      (save-excursion
-		(set-buffer buf)
+	      (with-current-buffer buf
 		(when (and (boundp 'viper-insert-basic-map)
 			   (keymapp viper-insert-basic-map))
 		  (when old-value
--- a/lisp/emulation/viper-util.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/viper-util.el	Tue Nov 03 02:04:29 2009 +0000
@@ -409,8 +409,7 @@
 	(command (cond (viper-ms-style-os-p (format "\"ls -1 -d %s\"" filespec))
 		       (t (format "ls -1 -d %s" filespec))))
 	status)
-    (save-excursion
-      (set-buffer (get-buffer-create viper-ex-tmp-buf-name))
+    (with-current-buffer (get-buffer-create viper-ex-tmp-buf-name)
       (erase-buffer)
       (setq status
 	    (if gshell-options
@@ -467,8 +466,7 @@
 
 ;; convert MS-DOS wildcards to regexp
 (defun viper-wildcard-to-regexp (wcard)
-  (save-excursion
-    (set-buffer (get-buffer-create viper-ex-tmp-buf-name))
+  (with-current-buffer (get-buffer-create viper-ex-tmp-buf-name)
     (erase-buffer)
     (insert wcard)
     (goto-char (point-min))
@@ -488,8 +486,7 @@
 (defun viper-glob-mswindows-files (filespec)
   (let ((case-fold-search t)
 	tmp tmp2)
-    (save-excursion
-      (set-buffer (get-buffer-create viper-ex-tmp-buf-name))
+    (with-current-buffer (get-buffer-create viper-ex-tmp-buf-name)
       (erase-buffer)
       (insert filespec)
       (goto-char (point-min))
@@ -654,8 +651,7 @@
 	 (buf (find-file-noselect (substitute-in-file-name custom-file)))
 	)
     (message "%s" (or message ""))
-    (save-excursion
-      (set-buffer buf)
+    (with-current-buffer buf
       (goto-char (point-min))
       (if (re-search-forward regexp nil t)
 	  (let ((reg-end (1- (match-end 0))))
@@ -678,8 +674,7 @@
 ;; match this pattern.
 (defun viper-save-string-in-file (string custom-file &optional pattern)
   (let ((buf (find-file-noselect (substitute-in-file-name custom-file))))
-    (save-excursion
-      (set-buffer buf)
+    (with-current-buffer buf
       (let (buffer-read-only)
 	(goto-char (point-min))
 	(if pattern (delete-matching-lines pattern))
@@ -889,8 +884,7 @@
   (if (and (markerp marker) (marker-buffer marker))
       (let ((buf (marker-buffer marker))
 	    (pos (marker-position marker)))
-	(save-excursion
-	  (set-buffer buf)
+	(with-current-buffer buf
 	  (and (<= pos (point-max)) (<= (point-min) pos))))))
 
 (defsubst viper-mark-marker ()
--- a/lisp/emulation/viper.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/emulation/viper.el	Tue Nov 03 02:04:29 2009 +0000
@@ -647,10 +647,9 @@
 ;; Remove local value in all existing buffers
 ;; This doesn't delocalize vars (which would have been desirable)
 (defun viper-delocalize-var (symbol)
-  (mapcar (lambda (buf) (save-excursion
-			  (set-buffer buf)
-			  (kill-local-variable symbol)))
-	  (buffer-list)))
+  (dolist (buf (buffer-list))
+    (with-current-buffer buf
+      (kill-local-variable symbol))))
 
 
 (defun viper-go-away ()
--- a/lisp/erc/ChangeLog	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/erc/ChangeLog	Tue Nov 03 02:04:29 2009 +0000
@@ -1,3 +1,9 @@
+2009-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* erc.el (erc-display-line-1, erc-process-away):
+	* erc-truncate.el (erc-truncate-buffer-to-size):
+	Use with-current-buffer.
+
 2009-10-24  Glenn Morris  <rgm@gnu.org>
 
 	* erc-dcc.el (pcomplete-erc-all-nicks):
--- a/lisp/erc/erc-truncate.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/erc/erc-truncate.el	Tue Nov 03 02:04:29 2009 +0000
@@ -66,8 +66,7 @@
     (unless (get-buffer buffer)
       (error "erc-truncate-buffer-to-size: %S is not a buffer" buffer)))
   (when (> (buffer-size buffer) (+ size 512))
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       ;; Note that when erc-insert-post-hook runs, the buffer is
       ;; narrowed to the new message.  So do this delicate widening.
       ;; I am not sure, I think this was not recommended behavior in
--- a/lisp/erc/erc.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/erc/erc.el	Tue Nov 03 02:04:29 2009 +0000
@@ -2358,8 +2358,7 @@
 Afterwards, `erc-insert-modify' and `erc-insert-post-hook' get called.
 If STRING is nil, the function does nothing."
   (when string
-    (save-excursion
-      (set-buffer (or buffer (process-buffer erc-server-process)))
+    (with-current-buffer (or buffer (process-buffer erc-server-process))
       (let ((insert-position (or (marker-position erc-insert-marker)
 				 (point-max))))
 	(let ((string string) ;; FIXME! Can this be removed?
@@ -4513,8 +4512,7 @@
 	    ;; away must be set to NIL BEFORE sending anything to prevent
 	    ;; an infinite recursion
 	    (setq erc-away nil)
-	    (save-excursion
-	      (set-buffer (erc-active-buffer))
+	    (with-current-buffer (erc-active-buffer)
 	      (when erc-public-away-p
 		(erc-send-action
 		 (erc-default-target)
--- a/lisp/eshell/em-unix.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/eshell/em-unix.el	Tue Nov 03 02:04:29 2009 +0000
@@ -667,8 +667,7 @@
   "In Occur mode, go to the occurrence whose line you click on."
   (interactive "e")
   (let (pos)
-    (save-excursion
-      (set-buffer (window-buffer (posn-window (event-end event))))
+    (with-current-buffer (window-buffer (posn-window (event-end event)))
       (save-excursion
 	(goto-char (posn-point (event-end event)))
 	(setq pos (occur-mode-find-occurrence))))
--- a/lisp/eshell/esh-ext.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/eshell/esh-ext.el	Tue Nov 03 02:04:29 2009 +0000
@@ -194,10 +194,8 @@
 			 (mapconcat 'shell-quote-argument
 				    (append (list command) args) " ")
 			 outbuf errbuf))
-	  (eshell-print (save-excursion (set-buffer outbuf)
-					(buffer-string)))
-	  (eshell-error (save-excursion (set-buffer errbuf)
-					(buffer-string))))
+	  (eshell-print (with-current-buffer outbuf (buffer-string)))
+	  (eshell-error (with-current-buffer errbuf (buffer-string))))
       (eshell-close-handles exitcode 'nil)
       (kill-buffer outbuf)
       (kill-buffer errbuf))))
--- a/lisp/mail/feedmail.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/mail/feedmail.el	Tue Nov 03 02:04:29 2009 +0000
@@ -1628,8 +1628,7 @@
 		      (if (and already-buffer (not (file-exists-p maybe-file)))
 			  ;; we have gotten rid of the file associated with the
 			  ;; buffer, so update the buffer's notion of that
-			  (save-excursion
-			    (set-buffer already-buffer)
+			  (with-current-buffer already-buffer
 			    (setq buffer-file-name nil)))))
 		(error (setq messages-skipped (1+ messages-skipped))))
 	      (kill-buffer blobby-buffer)
@@ -1801,7 +1800,8 @@
 ")
     (and (stringp feedmail-prompt-before-queue-help-supplement)
 	 (princ feedmail-prompt-before-queue-help-supplement))
-    (save-excursion (set-buffer standard-output) (if (fboundp 'help-mode) (help-mode)))))
+    (with-current-buffer standard-output
+      (if (fboundp 'help-mode) (help-mode)))))
 
 (defun feedmail-look-at-queue-directory (queue-directory)
   "Find out some things about a queue directory.
@@ -1970,7 +1970,7 @@
 	 (mail-header-separator mail-header-separator)
 	 )
     (unwind-protect
-	(save-excursion
+	(save-current-buffer
 	  (set-buffer feedmail-error-buffer) (erase-buffer)
 	  (set-buffer feedmail-prepped-text-buffer) (erase-buffer)
 
@@ -2075,18 +2075,17 @@
 		  (if (and (not feedmail-queue-runner-is-active) (setq also-file (buffer-file-name feedmail-raw-text-buffer)))
 		      (progn		; if a file but not running the queue, offer to delete it
 			(setq also-file (expand-file-name also-file))
-			(if (or feedmail-queue-auto-file-nuke
-				(y-or-n-p (format "FQM: Delete message file %s? " also-file)))
-			    (save-excursion
-			      ;; if we delete the affiliated file, get rid
-			      ;; of the file name association and make sure we
-			      ;; don't annoy people with a prompt on exit
-			      (delete-file also-file)
-			      (set-buffer feedmail-raw-text-buffer)
-			      (setq buffer-offer-save nil)
-			      (setq buffer-file-name nil)
-			      )
-			  )))
+			(when (or feedmail-queue-auto-file-nuke
+                                  (y-or-n-p
+                                   (format "FQM: Delete message file %s? "
+                                           also-file)))
+                          ;; if we delete the affiliated file, get rid
+                          ;; of the file name association and make sure we
+                          ;; don't annoy people with a prompt on exit
+                          (delete-file also-file)
+                          (with-current-buffer feedmail-raw-text-buffer
+                            (setq buffer-offer-save nil)
+                            (setq buffer-file-name nil)))))
 		  (goto-char (point-min))
 		  ;; re-insert and handle any Fcc fields (and, optionally, any Bcc).
 		  (if fcc (letf (((default-value 'buffer-file-type)
@@ -2197,18 +2196,19 @@
 	(mapcar
 	 '(lambda (feedmail-spray-this-address)
 	    (let ((spray-buffer (get-buffer-create " *FQM Outgoing Email Spray*")))
-	      (save-excursion
-		(set-buffer spray-buffer)
+	      (with-current-buffer spray-buffer
 		(erase-buffer)
 		;; not life's most efficient methodology, but spraying isn't
 		;; an every-5-minutes event either
 		(insert-buffer-substring feedmail-prepped-text-buffer)
-		;; There's a good case to me made that each separate transmission of
-		;; a message in the spray should have a distinct Message-Id:.  There
-		;; is also a less compelling argument in the other direction.  I think
-		;; they technically should have distinct Message-Id:s, but I doubt that
-		;; anyone cares, practically.  If someone complains about it, I'll add
-		;; it.
+		;; There's a good case to me made that each separate
+		;; transmission of a message in the spray should
+		;; have a distinct Message-Id:.  There is also a less
+		;; compelling argument in the other direction.
+		;; I think they technically should have distinct
+		;; Message-Id:s, but I doubt that anyone cares,
+		;; practically.  If someone complains about it, I'll
+		;; add it.
 		(feedmail-fiddle-list-of-spray-fiddle-plexes feedmail-spray-address-fiddle-plex-list)
 		;; this (let ) is just in case some buffer eater
 		;; is cheating and using the global variable name instead
@@ -2593,8 +2593,8 @@
 	(this-line)
 	(this-line-end))
     (unwind-protect
-	(save-excursion
-	  (set-buffer (get-buffer-create " *FQM scratch*")) (erase-buffer)
+	(with-current-buffer (get-buffer-create " *FQM scratch*")
+          (erase-buffer)
 	  (insert-buffer-substring message-buffer header-start header-end)
 	  (goto-char (point-min))
 	  (let ((case-fold-search t))
--- a/lisp/mail/hashcash.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/mail/hashcash.el	Tue Nov 03 02:04:29 2009 +0000
@@ -161,8 +161,7 @@
   "Generate a hashcash payment by finding a VAL-bit collison on STR."
   (if (and (> val 0)
 	   hashcash-path)
-      (save-excursion
-	(set-buffer (get-buffer-create " *hashcash*"))
+      (with-current-buffer (get-buffer-create " *hashcash*")
 	(erase-buffer)
 	(apply 'call-process hashcash-path nil t nil
 	       "-m" "-q" "-b" (number-to-string val) str
--- a/lisp/mail/mailpost.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/mail/mailpost.el	Tue Nov 03 02:04:29 2009 +0000
@@ -36,8 +36,7 @@
 	delimline
 	(mailbuf (current-buffer)))
     (unwind-protect
-	(save-excursion
-	  (set-buffer tembuf)
+	(with-current-buffer tembuf
 	  (erase-buffer)
 	  (insert-buffer-substring mailbuf)
 	  (goto-char (point-max))
@@ -73,8 +72,7 @@
 	    (if (re-search-forward "^Subject:[ \t]*\n" delimline t)
 		(replace-match ""))
 	    (if mail-interactive
-		(save-excursion
-		  (set-buffer errbuf)
+		(with-current-buffer errbuf
 		  (erase-buffer))))
 	  (let ((m (default-file-modes)))
 	    (unwind-protect
@@ -91,8 +89,7 @@
 			 (if mail-interactive '("-watch") '("-nowatch"))
 			 (list temfile)))
 	  (if mail-interactive
-	      (save-excursion
-		(set-buffer errbuf)
+	      (with-current-buffer errbuf
 		(goto-char (point-min))
 		(while (re-search-forward "\n\n* *" nil t)
 		  (replace-match "; "))
--- a/lisp/mail/reporter.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/mail/reporter.el	Tue Nov 03 02:04:29 2009 +0000
@@ -174,8 +174,7 @@
 MAILBUF is the mail buffer being composed."
   (reporter-update-status)
   (condition-case nil
-      (let ((val (save-excursion
-		   (set-buffer reporter-eval-buffer)
+      (let ((val (with-current-buffer reporter-eval-buffer
 		   (symbol-value varsym)))
 	    (sym (symbol-name varsym))
 	    (print-escape-newlines t)
@@ -201,8 +200,7 @@
 		(reporter-beautify-list maxwidth compact-p))))
 	(insert "\n"))
     (void-variable
-     (save-excursion
-       (set-buffer mailbuf)
+     (with-current-buffer mailbuf
        (mail-position-on-field "X-Reporter-Void-Vars-Found")
        (end-of-line)
        (insert (symbol-name varsym) " ")))
@@ -247,8 +245,7 @@
       (condition-case fault
 	  (let ((mailbuf (current-buffer))
 		(elbuf (get-buffer-create " *tmp-reporter-buffer*")))
-	    (save-excursion
-	      (set-buffer elbuf)
+	    (with-current-buffer elbuf
 	      (emacs-lisp-mode)
 	      (erase-buffer)
 	      (insert "(setq\n")
--- a/lisp/mail/rfc822.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/mail/rfc822.el	Tue Nov 03 02:04:29 2009 +0000
@@ -278,44 +278,44 @@
       (list (substring header-text (match-beginning 1) (match-end 1)))
     (let ((buf (generate-new-buffer " rfc822")))
       (unwind-protect
-	(save-excursion
-	  (set-buffer buf)
-	  (make-local-variable 'case-fold-search)
-	  (setq case-fold-search nil)	;For speed(?)
-	  (insert header-text)
-	  ;; unfold continuation lines
-	  (goto-char (point-min))
+          (with-current-buffer buf
+            (make-local-variable 'case-fold-search)
+            (setq case-fold-search nil)	;For speed(?)
+            (insert header-text)
+            ;; unfold continuation lines
+            (goto-char (point-min))
 
-	  (while (re-search-forward "\\([^\\]\\(\\\\\\\\\\)*\\)\n[ \t]" nil t)
-	    (replace-match "\\1 " t))
+            (while (re-search-forward "\\([^\\]\\(\\\\\\\\\\)*\\)\n[ \t]"
+                                      nil t)
+              (replace-match "\\1 " t))
 
-	  (goto-char (point-min))
-	  (let ((list ())
-		tem
-		;; This is for rfc822-bad-address.  Give it a non-nil
-		;; initial value to prevent rfc822-bad-address from
-		;; raising a wrong-type-argument error
-		(rfc822-address-start (point)))
-	    (catch 'address ; this is for rfc822-bad-address
-	      (rfc822-nuke-whitespace)
-	      (while (not (eobp))
-		(setq rfc822-address-start (point))
-		(setq tem
-		      (cond ((rfc822-looking-at ?\,)
-			     nil)
-			    ((looking-at "[][\000-\037@;:\\.>)]")
-			     (forward-char)
-			     (rfc822-bad-address
-			       (format "Strange character \\%c found"
-				       (preceding-char))))
-			    (t
-			     (rfc822-addresses-1 t))))
-		(cond ((null tem))
-		      ((stringp tem)
-		       (setq list (cons tem list)))
-		      (t
-		       (setq list (nconc (nreverse tem) list)))))
-	      (nreverse list))))
+            (goto-char (point-min))
+            (let ((list ())
+                  tem
+                  ;; This is for rfc822-bad-address.  Give it a non-nil
+                  ;; initial value to prevent rfc822-bad-address from
+                  ;; raising a wrong-type-argument error
+                  (rfc822-address-start (point)))
+              (catch 'address         ; this is for rfc822-bad-address
+                (rfc822-nuke-whitespace)
+                (while (not (eobp))
+                  (setq rfc822-address-start (point))
+                  (setq tem
+                        (cond ((rfc822-looking-at ?\,)
+                               nil)
+                              ((looking-at "[][\000-\037@;:\\.>)]")
+                               (forward-char)
+                               (rfc822-bad-address
+                                (format "Strange character \\%c found"
+                                        (preceding-char))))
+                              (t
+                               (rfc822-addresses-1 t))))
+                  (cond ((null tem))
+                        ((stringp tem)
+                         (setq list (cons tem list)))
+                        (t
+                         (setq list (nconc (nreverse tem) list)))))
+                (nreverse list))))
 	(and buf (kill-buffer buf))))))
 
 (provide 'rfc822)
--- a/lisp/mail/rmailsum.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/mail/rmailsum.el	Tue Nov 03 02:04:29 2009 +0000
@@ -643,8 +643,7 @@
 With prefix argument N moves forward N messages with these labels."
   (interactive "p\nsMove to next msg with labels: ")
   (let (msg)
-    (save-excursion
-      (set-buffer rmail-buffer)
+    (with-current-buffer rmail-buffer
       (rmail-next-labeled-message n labels)
       (setq msg rmail-current-message))
     (rmail-summary-goto-msg msg)))
@@ -654,8 +653,7 @@
 With prefix argument N moves backward N messages with these labels."
   (interactive "p\nsMove to previous msg with labels: ")
   (let (msg)
-    (save-excursion
-      (set-buffer rmail-buffer)
+    (with-current-buffer rmail-buffer
       (rmail-previous-labeled-message n labels)
       (setq msg rmail-current-message))
     (rmail-summary-goto-msg msg)))
@@ -809,8 +807,7 @@
 (defun rmail-summary-undelete-many (&optional n)
   "Undelete all deleted msgs, optional prefix arg N means undelete N prev msgs."
   (interactive "P")
-  (save-excursion
-    (set-buffer rmail-buffer)
+  (with-current-buffer rmail-buffer
     (let* ((init-msg (if n rmail-current-message rmail-total-messages))
 	   (rmail-current-message init-msg)
 	   (n (or n rmail-total-messages))
@@ -967,8 +964,7 @@
 			(rmail-show-message msg-num t))
 		    (select-window owin))
 		(if (buffer-name rmail-buffer)
-		    (save-excursion
-		      (set-buffer rmail-buffer)
+		    (with-current-buffer rmail-buffer
 		      (rmail-show-message msg-num t))))))
 	(rmail-summary-update-highlight nil)))))
 
@@ -1206,7 +1202,7 @@
 	 (curmsg (string-to-number
 		  (buffer-substring (point)
 				    (min (point-max) (+ 6 (point))))))
-	 (total (save-excursion (set-buffer buf) rmail-total-messages)))
+	 (total (with-current-buffer buf rmail-total-messages)))
     ;; If message number N was specified, find that message's line
     ;; or set message-not-found.
     ;; If N wasn't specified or that message can't be found.
@@ -1368,7 +1364,7 @@
 (defun rmail-summary-wipe ()
   "Kill and wipe away Rmail summary, remaining within Rmail."
   (interactive)
-  (save-excursion (set-buffer rmail-buffer) (setq rmail-summary-buffer nil))
+  (with-current-buffer rmail-buffer (setq rmail-summary-buffer nil))
   (let ((local-rmail-buffer rmail-buffer))
     (kill-buffer (current-buffer))
     ;; Delete window if not only one.
@@ -1380,8 +1376,7 @@
 (defun rmail-summary-expunge ()
   "Actually erase all deleted messages and recompute summary headers."
   (interactive)
-  (save-excursion
-    (set-buffer rmail-buffer)
+  (with-current-buffer rmail-buffer
     (when (rmail-expunge-confirmed)
       (rmail-only-expunge)))
   (rmail-update-summary))
@@ -1405,8 +1400,7 @@
    (list (if current-prefix-arg
 	     (read-file-name "Get new mail from file: "))))
   (let (msg)
-    (save-excursion
-      (set-buffer rmail-buffer)
+    (with-current-buffer rmail-buffer
       (rmail-get-new-mail file-name)
       ;; Get the proper new message number.
       (setq msg rmail-current-message))
@@ -1493,12 +1487,8 @@
 	    (prefix-numeric-value current-prefix-arg))))
   ;; Don't use save-excursion because that prevents point from moving
   ;; properly in the summary buffer.
-  (let ((buffer (current-buffer)))
-    (unwind-protect
-	(progn
-	  (set-buffer rmail-buffer)
-	  (rmail-search regexp (- n)))
-      (set-buffer buffer))))
+  (with-current-buffer rmail-buffer
+    (rmail-search regexp (- n))))
 
 (defun rmail-summary-search (regexp &optional n)
   "Show message containing next match for REGEXP.
@@ -1556,21 +1546,17 @@
 (defun rmail-summary-add-label (label)
   "Add LABEL to labels associated with current Rmail message.
 Completion is performed over known labels when reading."
-  (interactive (list (save-excursion
-		       (set-buffer rmail-buffer)
+  (interactive (list (with-current-buffer rmail-buffer
 		       (rmail-read-label "Add label"))))
-  (save-excursion
-    (set-buffer rmail-buffer)
+  (with-current-buffer rmail-buffer
     (rmail-add-label label)))
 
 (defun rmail-summary-kill-label (label)
   "Remove LABEL from labels associated with current Rmail message.
 Completion is performed over known labels when reading."
-  (interactive (list (save-excursion
-		       (set-buffer rmail-buffer)
+  (interactive (list (with-current-buffer rmail-buffer
 		       (rmail-read-label "Kill label"))))
-  (save-excursion
-    (set-buffer rmail-buffer)
+  (with-current-buffer rmail-buffer
     (rmail-set-label label nil)))
 
 ;;;; *** Rmail Summary Mailing Commands ***
@@ -1737,8 +1723,7 @@
 The variables `rmail-secondary-file-directory' and
 `rmail-secondary-file-regexp' control which files are offered in the menu."
   (interactive)
-  (save-excursion
-    (set-buffer rmail-buffer)
+  (with-current-buffer rmail-buffer
     (let ((rmail-delete-after-output nil))
       (call-interactively 'rmail-output-menu)))
   (if rmail-delete-after-output
@@ -1767,8 +1752,7 @@
   "Write this message body to the file FILE-NAME.
 FILE-NAME defaults, interactively, from the Subject field of the message."
   (interactive)
-  (save-excursion
-    (set-buffer rmail-buffer)
+  (with-current-buffer rmail-buffer
     (let ((rmail-delete-after-output nil))
       (if file-name
 	  (rmail-output-body-to-file file-name)
--- a/lisp/mail/smtpmail.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/mail/smtpmail.el	Tue Nov 03 02:04:29 2009 +0000
@@ -242,8 +242,7 @@
 	     (let ((sendmail-coding-system smtpmail-code-conv-from))
 	       (select-message-coding-system)))))
     (unwind-protect
-	(save-excursion
-	  (set-buffer tembuf)
+	(with-current-buffer tembuf
 	  (erase-buffer)
 	  ;; Use the same `buffer-file-coding-system' as in the mail
 	  ;; buffer, otherwise any `write-region' invocations (e.g., in
--- a/lisp/mail/supercite.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/mail/supercite.el	Tue Nov 03 02:04:29 2009 +0000
@@ -1669,23 +1669,22 @@
 	    (if sc-electric-circular-p
 		0
 	      (progn (error msg "follow") (1- last))))))
-    (save-excursion
-     (set-buffer sc-electric-bufname)
-     (let ((buffer-read-only nil))
-       (erase-buffer)
-       (goto-char (point-min))
-       (sc-eref-insert-selected)
-       ;; now shrink the window to just contain the electric reference
-       ;; header.
-       (let ((hdrlines (count-lines (point-min) (point-max)))
-	     (winlines (1- (window-height))))
-	 (if (/= hdrlines winlines)
-	     (if (> hdrlines winlines)
-		 ;; we have to enlarge the window
-		 (enlarge-window (- hdrlines winlines))
-	       ;; we have to shrink the window
-	       (shrink-window (- winlines (max hdrlines
-					       window-min-height))))))))))
+    (with-current-buffer sc-electric-bufname
+      (let ((inhibit-read-only t))
+        (erase-buffer)
+        (goto-char (point-min))
+        (sc-eref-insert-selected)
+        ;; now shrink the window to just contain the electric reference
+        ;; header.
+        (let ((hdrlines (count-lines (point-min) (point-max)))
+              (winlines (1- (window-height))))
+          (if (/= hdrlines winlines)
+              (if (> hdrlines winlines)
+                  ;; we have to enlarge the window
+                  (enlarge-window (- hdrlines winlines))
+                ;; we have to shrink the window
+                (shrink-window (- winlines (max hdrlines
+                                                window-min-height))))))))))
 
 (defun sc-eref-next ()
   "Display next reference in other buffer."
--- a/lisp/play/decipher.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/play/decipher.el	Tue Nov 03 02:04:29 2009 +0000
@@ -681,8 +681,7 @@
   (interactive (list (upcase (following-char))))
   (decipher-analyze)
   (let (start end)
-    (save-excursion
-      (set-buffer (decipher-stats-buffer))
+    (with-current-buffer (decipher-stats-buffer)
       (goto-char (point-min))
       (or (re-search-forward (format "^%c: " cipher-char) nil t)
           (error "Character `%c' is not used in ciphertext" cipher-char))
@@ -730,8 +729,7 @@
 END-REGEXP matches the line after that which ends the display.
 The ending line is included in the display unless it is blank."
   (let (start end)
-    (save-excursion
-      (set-buffer (decipher-stats-buffer))
+    (with-current-buffer (decipher-stats-buffer)
       (goto-char (point-min))
       (re-search-forward start-regexp)
       (beginning-of-line)
@@ -926,9 +924,8 @@
                                                   (aref decipher--after  i)))
                     freq-list)
               total-chars (+ total-chars (aref decipher--freqs i)))))
-    (save-excursion
-      ;; Switch to statistics buffer, creating it if necessary:
-      (set-buffer (decipher-stats-buffer t))
+    ;; Switch to statistics buffer, creating it if necessary:
+    (with-current-buffer (decipher-stats-buffer t)
       ;; This can't happen, but it never hurts to double-check:
       (or (eq major-mode 'decipher-stats-mode)
           (error "Buffer %s is not in Decipher-Stats mode" (buffer-name)))
@@ -1024,8 +1021,7 @@
    ;; See if decipher-stats-buffer exists:
    ((and (bufferp decipher-stats-buffer)
          (buffer-name decipher-stats-buffer))
-    (or (save-excursion
-          (set-buffer decipher-stats-buffer)
+    (or (with-current-buffer decipher-stats-buffer
           (eq major-mode 'decipher-stats-mode))
         (error "Buffer %s is not in Decipher-Stats mode"
                (buffer-name decipher-stats-buffer)))
@@ -1041,8 +1037,7 @@
                 ;; We just lost track of the statistics buffer:
                 (get-buffer stats-name)
               (generate-new-buffer stats-name))))
-    (save-excursion
-      (set-buffer decipher-stats-buffer)
+    (with-current-buffer decipher-stats-buffer
       (decipher-stats-mode))
     decipher-stats-buffer)
    ;; Give up:
@@ -1052,22 +1047,21 @@
 
 (provide 'decipher)
 
-;;;(defun decipher-show-undo-list ()
-;;;  "Display the undo list (for debugging purposes)."
-;;;  (interactive)
-;;;  (with-output-to-temp-buffer "*Decipher Undo*"
-;;;    (let ((undo-list decipher-undo-list)
-;;;          undo-rec undo-map)
-;;;      (save-excursion
-;;;        (set-buffer "*Decipher Undo*")
-;;;        (while (setq undo-rec (pop undo-list))
-;;;          (or (consp (car undo-rec))
-;;;              (setq undo-rec (list undo-rec)))
-;;;          (insert ?\()
-;;;          (while (setq undo-map (pop undo-rec))
-;;;            (insert (cdr undo-map) (car undo-map) ?\ ))
-;;;          (delete-backward-char 1)
-;;;          (insert ")\n"))))))
+;;(defun decipher-show-undo-list ()
+;;  "Display the undo list (for debugging purposes)."
+;;  (interactive)
+;;  (with-output-to-temp-buffer "*Decipher Undo*"
+;;    (let ((undo-list decipher-undo-list)
+;;          undo-rec undo-map)
+;;      (with-current-buffer "*Decipher Undo*"
+;;        (while (setq undo-rec (pop undo-list))
+;;          (or (consp (car undo-rec))
+;;              (setq undo-rec (list undo-rec)))
+;;          (insert ?\()
+;;          (while (setq undo-map (pop undo-rec))
+;;            (insert (cdr undo-map) (car undo-map) ?\ ))
+;;          (delete-backward-char 1)
+;;          (insert ")\n"))))))
 
 ;; arch-tag: 8f094d88-ffe1-4f99-afe3-a5e81dd939d9
 ;;; decipher.el ends here
--- a/lisp/play/dissociate.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/play/dissociate.el	Tue Nov 03 02:04:29 2009 +0000
@@ -62,8 +62,7 @@
 		   (setq last-query-point (point-max))
 		   t))))
       (let (start end)
-	(save-excursion
-	 (set-buffer inbuf)
+	(with-current-buffer inbuf
 	 (setq start (point))
 	 (if (eq move-function 'forward-char)
 	     (progn
@@ -81,8 +80,7 @@
 	   (end-of-line)
 	   (and (> (current-column) fill-column)
 		(do-auto-fill)))))
-      (save-excursion
-       (set-buffer inbuf)
+      (with-current-buffer inbuf
        (if (eobp)
 	   (goto-char (point-min))
 	 (let ((overlap
--- a/lisp/play/fortune.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/play/fortune.el	Tue Nov 03 02:04:29 2009 +0000
@@ -293,8 +293,7 @@
 	(fort-file (expand-file-name
 		    (substitute-in-file-name
 		     (or file fortune-file)))))
-    (save-excursion
-      (set-buffer fortune-buffer)
+    (with-current-buffer fortune-buffer
       (toggle-read-only 0)
       (erase-buffer)
 
--- a/lisp/play/gomoku.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/play/gomoku.el	Tue Nov 03 02:04:29 2009 +0000
@@ -939,6 +939,7 @@
 	       "Your move?"))
   ;; This may seem silly, but if one omits the following line (or a similar
   ;; one), the cursor may very well go to some place where POINT is not.
+  ;; FIXME: this can't be right!!  --Stef
   (save-excursion (set-buffer (other-buffer))))
 
 (defun gomoku-prompt-for-other-game ()
--- a/lisp/play/landmark.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/play/landmark.el	Tue Nov 03 02:04:29 2009 +0000
@@ -827,6 +827,7 @@
 	       "Your move?"))
   ;; This may seem silly, but if one omits the following line (or a similar
   ;; one), the cursor may very well go to some place where POINT is not.
+  ;; FIXME: this can't be right!!  --Stef
   (save-excursion (set-buffer (other-buffer))))
 
 (defun lm-prompt-for-other-game ()
@@ -1178,15 +1179,13 @@
 
 (defun lm-print-wts ()
   (interactive)
-  (save-excursion
-    (set-buffer "*lm-wts*")
+  (with-current-buffer "*lm-wts*"
     (insert "==============================\n")
     (mapc 'lm-print-wts-int lm-directions)))
 
 (defun lm-print-moves (moves)
   (interactive)
-  (save-excursion
-    (set-buffer "*lm-moves*")
+  (with-current-buffer "*lm-moves*"
     (insert (format "%S\n" moves))))
 
 
@@ -1200,8 +1199,7 @@
 
 (defun lm-print-y,s,noise ()
   (interactive)
-  (save-excursion
-    (set-buffer "*lm-y,s,noise*")
+  (with-current-buffer "*lm-y,s,noise*"
     (insert "==============================\n")
     (mapc 'lm-print-y,s,noise-int lm-directions)))
 
@@ -1212,8 +1210,7 @@
 
 (defun lm-print-smell ()
   (interactive)
-  (save-excursion
-    (set-buffer "*lm-smell*")
+  (with-current-buffer "*lm-smell*"
     (insert "==============================\n")
     (insert (format "tree: %S \n" (get 'z 't)))
     (mapc 'lm-print-smell-int lm-directions)))
@@ -1225,14 +1222,12 @@
 
 (defun lm-print-w0 ()
   (interactive)
-  (save-excursion
-    (set-buffer "*lm-w0*")
+  (with-current-buffer "*lm-w0*"
     (insert "==============================\n")
     (mapc 'lm-print-w0-int lm-directions)))
 
 (defun lm-blackbox ()
-  (save-excursion
-    (set-buffer "*lm-blackbox*")
+  (with-current-buffer "*lm-blackbox*"
     (insert "==============================\n")
     (insert "I smell: ")
     (mapc (lambda (direction)
@@ -1556,35 +1551,32 @@
   (lm-plot-landmarks)
 
   (if lm-debug
-      (progn
-	(save-excursion
-	  (set-buffer (get-buffer-create "*lm-w0*"))
-    (erase-buffer)
-    (set-buffer (get-buffer-create "*lm-moves*"))
-    (set-buffer (get-buffer-create "*lm-wts*"))
-    (erase-buffer)
-    (set-buffer (get-buffer-create "*lm-y,s,noise*"))
-    (erase-buffer)
-    (set-buffer (get-buffer-create "*lm-smell*"))
-    (erase-buffer)
-    (set-buffer (get-buffer-create "*lm-blackbox*"))
-    (erase-buffer)
-    (set-buffer (get-buffer-create "*lm-distance*"))
-    (erase-buffer))))
+      (save-current-buffer
+        (set-buffer (get-buffer-create "*lm-w0*"))
+        (erase-buffer)
+        (set-buffer (get-buffer-create "*lm-moves*"))
+        (set-buffer (get-buffer-create "*lm-wts*"))
+        (erase-buffer)
+        (set-buffer (get-buffer-create "*lm-y,s,noise*"))
+        (erase-buffer)
+        (set-buffer (get-buffer-create "*lm-smell*"))
+        (erase-buffer)
+        (set-buffer (get-buffer-create "*lm-blackbox*"))
+        (erase-buffer)
+        (set-buffer (get-buffer-create "*lm-distance*"))
+        (erase-buffer)))
 
 
   (lm-set-landmark-signal-strengths)
 
-  (mapc (lambda (direction)
-	     (put direction 'y_t 0.0))
-	  lm-directions)
+  (dolist (direction lm-directions)
+    (put direction 'y_t 0.0))
 
   (if (not save-weights)
       (progn
 	(mapc 'lm-fix-weights-for lm-directions)
-	(mapc (lambda (direction)
-		   (put direction 'w0 lm-initial-w0))
-	lm-directions))
+	(dolist (direction lm-directions)
+          (put direction 'w0 lm-initial-w0)))
     (message "Weights preserved for this run."))
 
   (if auto-start
--- a/lisp/play/mpuz.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/play/mpuz.el	Tue Nov 03 02:04:29 2009 +0000
@@ -298,8 +298,7 @@
   (let ((buf (get-buffer-create "*Mult Puzzle*"))
 	(face '(face mpuz-text))
 	buffer-read-only)
-    (save-excursion
-      (set-buffer buf)
+    (with-current-buffer buf
       (erase-buffer)
       (insert mpuz-framework)
       (set-text-properties 13 42 face)
--- a/lisp/term/ns-win.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/term/ns-win.el	Tue Nov 03 02:04:29 2009 +0000
@@ -1085,8 +1085,7 @@
   (let* ((pos (event-end event))
          (window (nth 0 pos))
          (scale (nth 2 pos)))
-    (save-excursion
-      (set-buffer (window-buffer window))
+    (with-current-buffer (window-buffer window)
       (cond
        ((eq (car scale) (cdr scale))
 	(goto-char (point-max)))
@@ -1169,8 +1168,7 @@
      ((eq window-pos 'vertical-line)
       'default)
      ((consp window-pos)
-      (save-excursion
-        (set-buffer buffer)
+      (with-current-buffer buffer
         (let ((p (car (compute-motion (window-start window)
                                       (cons (nth 0 edges) (nth 1 edges))
                                       (window-end window)
--- a/lisp/url/ChangeLog	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/url/ChangeLog	Tue Nov 03 02:04:29 2009 +0000
@@ -1,3 +1,11 @@
+2009-11-03  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* url-util.el (url-insert-entities-in-string):
+	* url-nfs.el (url-nfs-unescape):
+	* url-ldap.el (url-ldap):
+	* url-imap.el (url-imap):
+	* url-cid.el (url-cid-gnus, url-cid): Use with-current-buffer.
+
 2009-10-01  Glenn Morris  <rgm@gnu.org>
 
 	* url-http.el (url-dav-file-attributes): Fix declaration.
--- a/lisp/url/url-cid.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/url/url-cid.el	Tue Nov 03 02:04:29 2009 +0000
@@ -35,8 +35,7 @@
     (setq part (mm-get-content-id cid))
     (if (not part)
 	(message "Unknown CID encountered: %s" cid)
-      (setq data (save-excursion
-		   (set-buffer (mm-handle-buffer part))
+      (setq data (with-current-buffer (mm-handle-buffer part)
 		   (buffer-string))
 	    content-type (mm-handle-type part)
 	    encoding (symbol-name (mm-handle-encoding part)))
@@ -55,8 +54,7 @@
   (cond
    ((fboundp 'mm-get-content-id)
     ;; Using Pterodactyl Gnus or later
-    (save-excursion
-      (set-buffer (generate-new-buffer " *url-cid*"))
+    (with-current-buffer (generate-new-buffer " *url-cid*")
       (url-cid-gnus (url-filename url))))
    (t
     (message "Unable to handle CID URL: %s" url))))
--- a/lisp/url/url-imap.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/url/url-imap.el	Tue Nov 03 02:04:29 2009 +0000
@@ -52,8 +52,7 @@
 (defun url-imap (url)
   (unless (vectorp url)
     (signal 'wrong-type-error (list "Need a pre-parsed URL." url)))
-  (save-excursion
-    (set-buffer (generate-new-buffer " *url-imap*"))
+  (with-current-buffer (generate-new-buffer " *url-imap*")
     (mm-disable-multibyte)
     (let* ((host (url-host url))
 	   (port (url-port url))
--- a/lisp/url/url-ldap.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/url/url-ldap.el	Tue Nov 03 02:04:29 2009 +0000
@@ -121,8 +121,7 @@
       (setq url (url-generic-parse-url (url-unhex-string url)))
     (if (not (vectorp url))
         (error "Argument is not a valid URL")))
-  (save-excursion
-    (set-buffer (generate-new-buffer " *url-ldap*"))
+  (with-current-buffer (generate-new-buffer " *url-ldap*")
     (setq url-current-object url)
     (insert "Content-type: text/html\r\n\r\n")
     (if (not (fboundp 'ldap-search-internal))
--- a/lisp/url/url-nfs.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/url/url-nfs.el	Tue Nov 03 02:04:29 2009 +0000
@@ -42,8 +42,7 @@
 Each can be used any number of times.")
 
 (defun url-nfs-unescape (format host port user pass file)
-  (save-excursion
-    (set-buffer (get-buffer-create " *nfs-parse*"))
+  (with-current-buffer (get-buffer-create " *nfs-parse*")
     (erase-buffer)
     (insert format)
     (goto-char (point-min))
--- a/lisp/url/url-util.el	Tue Nov 03 00:39:10 2009 +0000
+++ b/lisp/url/url-util.el	Tue Nov 03 02:04:29 2009 +0000
@@ -140,8 +140,7 @@
     >  ==>  &gt;
     \"  ==>  &quot;"
   (if (string-match "[&<>\"]" string)
-      (save-excursion
-	(set-buffer (get-buffer-create " *entity*"))
+      (with-current-buffer (get-buffer-create " *entity*")
 	(erase-buffer)
 	(buffer-disable-undo (current-buffer))
 	(insert string)