branch: elpa/vm
commit f5e571771867a7e06b0d23ee05b32d869aca5257
Author: Stefan Monnier <monn...@iro.umontreal.ca>
Commit: Stefan Monnier <monn...@iro.umontreal.ca>

    Use `with-current-buffer`; silences compiler warning
---
 contrib/vm-bogofilter.el |  3 +-
 contrib/vm-sumurg.el     | 16 +++++-----
 lisp/vcard.el            |  3 +-
 lisp/vm-avirtual.el      | 14 +++------
 lisp/vm-biff.el          |  3 +-
 lisp/vm-digest.el        | 27 ++++++-----------
 lisp/vm-edit.el          |  3 +-
 lisp/vm-folder.el        |  6 ++--
 lisp/vm-grepmail.el      |  6 ++--
 lisp/vm-imap.el          | 27 ++++++-----------
 lisp/vm-mark.el          |  9 +++---
 lisp/vm-menu.el          |  3 +-
 lisp/vm-message.el       |  3 +-
 lisp/vm-mime.el          | 79 ++++++++++++++++--------------------------------
 lisp/vm-minibuf.el       |  3 +-
 lisp/vm-motion.el        |  6 ++--
 lisp/vm-mouse.el         |  5 ++-
 lisp/vm-pcrisis.el       | 15 +++------
 lisp/vm-pgg.el           | 31 +++++++------------
 lisp/vm-pine.el          | 12 +++-----
 lisp/vm-pop.el           | 21 +++++--------
 lisp/vm-ps-print.el      |  3 +-
 lisp/vm-reply.el         |  3 +-
 lisp/vm-rfaddons.el      | 28 ++++++++---------
 lisp/vm-save.el          | 27 ++++++-----------
 lisp/vm-serial.el        |  9 ++----
 lisp/vm-summary.el       | 39 ++++++++----------------
 lisp/vm-undo.el          |  5 +--
 lisp/vm-vcard.el         |  6 ++--
 lisp/vm-virtual.el       | 11 +++----
 lisp/vm-w3m.el           |  8 ++---
 lisp/vm-window.el        | 12 +++-----
 lisp/vm.el               |  3 +-
 33 files changed, 157 insertions(+), 292 deletions(-)

diff --git a/contrib/vm-bogofilter.el b/contrib/vm-bogofilter.el
index bd8e885505..12d9a84e1d 100644
--- a/contrib/vm-bogofilter.el
+++ b/contrib/vm-bogofilter.el
@@ -338,8 +338,7 @@ vm-retrieved-spooled-mail-hook."
          (buffer (get-buffer-create "*Shell Command Output*"))
          )
           
-      (save-excursion
-       (set-buffer buffer)
+      (with-current-buffer buffer
        (erase-buffer))
       (set-buffer (vm-buffer-of message))
       (save-restriction
diff --git a/contrib/vm-sumurg.el b/contrib/vm-sumurg.el
index 054f23cd87..00f76a0da3 100644
--- a/contrib/vm-sumurg.el
+++ b/contrib/vm-sumurg.el
@@ -284,8 +284,7 @@
                      ;; to avoid indefinite build-up
                      (unintern (concat (vm-su-message-id m) label) 
                              vm-sumurg-timer-obarray)
-                     (save-excursion
-                       (set-buffer (vm-buffer-of (vm-real-message-of m)))
+                     (with-current-buffer (vm-buffer-of (vm-real-message-of m))
                        (unintern label vm-label-obarray))
                      (save-excursion (vm-sumurg-set-urgency level nil 1 m))
                      )
@@ -302,8 +301,8 @@
                        ;; copy it to the other buffer
                        ;; we expect always to be in the summary
                        ;; buffer here, but just in case...
-                       (save-excursion
-                         (set-buffer (or vm-mail-buffer vm-summary-buffer))
+                       (with-current-buffer
+                           (or vm-mail-buffer vm-summary-buffer)
                          (setq vm-sumurg-timer-obarray o))))
                    (intern (concat (vm-su-message-id m) label) 
                            vm-sumurg-timer-obarray)
@@ -491,8 +490,7 @@
          (aref vm-sumurg-facearray
                (vm-sumurg-level-of (car vm-message-pointer))))
     (if vm-presentation-buffer
-       (save-excursion
-         (set-buffer vm-presentation-buffer)
+       (with-current-buffer vm-presentation-buffer
          (set-extent-face vm-ml-sumurg-extent 
                           (aref vm-sumurg-facearray 
                                 (vm-sumurg-level-of 
@@ -704,9 +702,9 @@ happens later.)"
        (mapcar (lambda (label)
                  (when (string-match "^\\*+[-0-9:t]+$" label)
                    (vm-add-or-delete-message-labels label count nil)
-                   (save-excursion
-                     (set-buffer (vm-buffer-of (vm-real-message-of 
-                        (car vm-message-pointer))))
+                   (with-current-buffer
+                       (vm-buffer-of (vm-real-message-of 
+                                      (car vm-message-pointer)))
                      (unintern label vm-label-obarray))))
                (vm-labels-of (car vm-message-pointer)))
       (if date 
diff --git a/lisp/vcard.el b/lisp/vcard.el
index fe58cf1109..681d8c07ef 100644
--- a/lisp/vcard.el
+++ b/lisp/vcard.el
@@ -202,8 +202,7 @@ would be returned."
   (let ((vcard nil)
         (buf (generate-new-buffer " *vcard parser work*")))
     (unwind-protect
-        (save-excursion
-          (set-buffer buf)
+        (with-current-buffer buf
           ;; Make sure last line is newline-terminated.
           ;; An extra trailing newline is harmless.
           (insert raw "\n")
diff --git a/lisp/vm-avirtual.el b/lisp/vm-avirtual.el
index 509f8a5c51..d17647ae1e 100644
--- a/lisp/vm-avirtual.el
+++ b/lisp/vm-avirtual.el
@@ -654,8 +654,7 @@ If VIRTUAL is true we check the current message and not the 
real one."
   (if msg
       (if virtual
           (apply 'vm-vs-or msg selector)
-        (save-excursion
-          (set-buffer (vm-buffer-of (vm-real-message-of msg)))
+        (with-current-buffer (vm-buffer-of (vm-real-message-of msg))
           (apply 'vm-vs-or msg selector)))
     (if (eq major-mode 'mail-mode)
         (apply 'vm-mail-vs-or selector))))
@@ -679,9 +678,8 @@ format:
           (vm-virtual-check-diagnostics (or vm-virtual-check-diagnostics
                                             diagnostics)))
       (with-output-to-temp-buffer "*VM virtual-folder-check*"
-       (save-excursion
-         (set-buffer "*VM virtual-folder-check*")
-         (toggle-truncate-lines t))
+        (with-current-buffer "*VM virtual-folder-check*"
+          (toggle-truncate-lines t))
         (princ (format "Checking %S on <%s> from %s\n\n" selector
                        (vm-su-subject msg) (vm-su-from msg)))
         (princ (format "\nThe virtual folder selector `%s' is %s\n"
@@ -1090,8 +1088,7 @@ This is not yet the whole story!                    USR, 
2013-01-18"
   (save-excursion
     (vm-select-folder-buffer-and-validate 0 (vm-interactive-p))
     ;; remove old descriptions
-    (save-excursion
-      (set-buffer vm-summary-buffer)
+    (with-current-buffer vm-summary-buffer
       (goto-char (point-min))
       (let ((buffer-read-only nil)
             (s (point-min))
@@ -1110,8 +1107,7 @@ This is not yet the whole story!                    USR, 
2013-01-18"
               f (cdr (assoc m vm-sort-compare-auto-folder-cache)))
         (when (not (equal oldf f))
           (setq m (vm-su-start-of m))
-          (save-excursion
-            (set-buffer (marker-buffer m))
+          (with-current-buffer (marker-buffer m)
             (let ((buffer-read-only nil))
               (goto-char m)
               (insert (format "%s\n" (or f "no default folder")))
diff --git a/lisp/vm-biff.el b/lisp/vm-biff.el
index 39558533c7..98743cf4bb 100644
--- a/lisp/vm-biff.el
+++ b/lisp/vm-biff.el
@@ -257,8 +257,7 @@ folder selectors work."
 
 (defun  vm-biff-find-folder-window (msg)
   (let ((buf (vm-buffer-of msg)))
-    (save-excursion
-      (set-buffer buf)
+    (with-current-buffer buf
       (or (vm-biff-get-buffer-window buf)
           (and vm-presentation-buffer
                (vm-biff-get-buffer-window  vm-presentation-buffer))
diff --git a/lisp/vm-digest.el b/lisp/vm-digest.el
index 2fd1afdf5c..e54f250ec3 100644
--- a/lisp/vm-digest.el
+++ b/lisp/vm-digest.el
@@ -63,12 +63,10 @@ to find out how KEEP-LIST and DISCARD-REGEXP are used."
       (narrow-to-region (point) (point))
       (insert "------- start of forwarded message -------\n")
       (setq source-buffer (vm-buffer-of m))
-      (save-excursion
-       (set-buffer source-buffer)
+      (with-current-buffer source-buffer
        (save-restriction
          (widen)
-         (save-excursion
-           (set-buffer target-buffer)
+         (with-current-buffer target-buffer
            (let ((beg (point)))
              ;; (insert-buffer-substring 
              ;;  source-buffer (vm-headers-of m) (vm-text-end-of m))
@@ -335,12 +333,10 @@ to find out how KEEP-LIST and DISCARD-REGEXP are used."
            (insert "---------------\n")
            (setq m (vm-real-message-of (car mlist))
                  source-buffer (vm-buffer-of m))
-           (save-excursion
-             (set-buffer source-buffer)
+           (with-current-buffer source-buffer
              (save-restriction
                (widen)
-               (save-excursion
-                 (set-buffer target-buffer)
+               (with-current-buffer target-buffer
                  (let ((beg (point)))
                    (insert-buffer-substring source-buffer (vm-headers-of m)
                                             (vm-text-end-of m))
@@ -430,12 +426,10 @@ to find out how KEEP-LIST and DISCARD-REGEXP are used."
            (insert "---------------\n\n")
            (setq m (vm-real-message-of (car mlist))
                  source-buffer (vm-buffer-of m))
-           (save-excursion
-             (set-buffer source-buffer)
+           (with-current-buffer source-buffer
              (save-restriction
                (widen)
-               (save-excursion
-                 (set-buffer target-buffer)
+               (with-current-buffer target-buffer
                  (let ((beg (point)))
                    (insert-buffer-substring source-buffer (vm-headers-of m)
                                             (vm-text-end-of m))
@@ -674,8 +668,7 @@ burst."
        (when vm-delete-after-bursting
             ;; if start folder was virtual, we're now in the wrong
             ;; buffer.  switch back.
-            (save-excursion
-              (set-buffer start-buffer)
+            (with-current-buffer start-buffer
               ;; don't move message pointer when deleting the message
               (let ((vm-move-after-deleting nil))
                 (vm-delete-message 1))))
@@ -788,8 +781,7 @@ burst."
            (vm-inform 5 "Bursting %s digest... done" digest-type)
             (and vm-delete-after-bursting
                 (yes-or-no-p (format "Delete message %s? " (vm-number-of m)))
-                (save-excursion
-                  (set-buffer start-buffer)
+                (with-current-buffer start-buffer
                   ;; don't move message pointer when deleting the message
                   (let ((vm-move-after-deleting nil))
                     (vm-delete-message 1))))
@@ -814,8 +806,7 @@ burst."
 M should be the message struct of a real message.
 Returns either \"rfc934\", \"rfc1153\" or \"mime\"."
   (catch 'return-value
-    (save-excursion
-      (set-buffer (vm-buffer-of m))
+    (with-current-buffer (vm-buffer-of m)
       (let ((layout (vm-mm-layout m)))
        (if (and (vectorp layout)
                 (or (vm-mime-layout-contains-type
diff --git a/lisp/vm-edit.el b/lisp/vm-edit.el
index 5d2233f6ac..def542575f 100644
--- a/lisp/vm-edit.el
+++ b/lisp/vm-edit.el
@@ -272,8 +272,7 @@ thread have their cached data discarded."
       (if (not (buffer-modified-p))
          (vm-inform 5 "No change.")
        (widen)
-       (save-excursion
-         (set-buffer (vm-buffer-of (vm-real-message-of (car mp))))
+       (with-current-buffer (vm-buffer-of (vm-real-message-of (car mp)))
          (if (not (memq (vm-real-message-of (car mp)) vm-message-list))
              (error "The original copy of this message has been expunged."))
          (save-restriction
diff --git a/lisp/vm-folder.el b/lisp/vm-folder.el
index f23292bc85..5d887daac8 100644
--- a/lisp/vm-folder.el
+++ b/lisp/vm-folder.el
@@ -4168,8 +4168,7 @@ Same as \\[vm-recover-folder]."
               (find-file-noselect crash-box)))
        (if (eq (current-buffer) crash-buf)
           (error "folder is the same file as crash box, cannot continue"))
-       (save-excursion
-        (set-buffer crash-buf)
+       (with-current-buffer crash-buf
         (setq crash-folder-type (vm-get-folder-type))
         (if (and crash-folder-type vm-check-folder-types)
             (cond ((eq crash-folder-type 'unknown)
@@ -5428,8 +5427,7 @@ during retrieval.
 Gives an error if unable to retrieve message."
   (if (not (eq (vm-message-access-method-of mm) 'imap))
       (message "External messages currently available only for imap folders.")
-    (save-excursion
-      (set-buffer (vm-buffer-of mm))
+    (with-current-buffer (vm-buffer-of mm)
       (save-restriction
        (widen)
        (narrow-to-region (marker-position (vm-headers-of mm)) 
diff --git a/lisp/vm-grepmail.el b/lisp/vm-grepmail.el
index ce0c0d2a37..8762ff59e1 100644
--- a/lisp/vm-grepmail.el
+++ b/lisp/vm-grepmail.el
@@ -168,8 +168,7 @@ FOLDERS should be a list of files/directories to search in."
     (vm-display (current-buffer) nil nil '(reading-message))
     (vm-display (current-buffer) t nil '(vm-next-message reading-message))
 
-    (save-excursion
-      (set-buffer process-buffer)
+    (with-current-buffer process-buffer
       (setq default-directory (expand-file-name vm-folder-directory))
       (erase-buffer)
       (switch-to-buffer process-buffer)
@@ -246,8 +245,7 @@ FOLDERS should be a list of files/directories to search in."
 MESSAGE-BUFFER is the buffer of the message.
 START the start position in the process output buffer.
 END the end position in the process output buffer."
-  (save-excursion
-    (set-buffer vm-grepmail-folder-buffer)
+  (with-current-buffer vm-grepmail-folder-buffer
     (let ((buffer-read-only nil))
       (save-restriction
        (widen)
diff --git a/lisp/vm-imap.el b/lisp/vm-imap.el
index a2be767c61..de1d053392 100644
--- a/lisp/vm-imap.el
+++ b/lisp/vm-imap.el
@@ -610,8 +610,7 @@ from which mail is to be moved and DESTINATION is the VM 
folder."
                                      :purpose "movemail"))
          (or process (throw 'end-of-session nil))
          (setq process-buffer (process-buffer process))
-         (save-excursion               ; = save-current-buffer?
-           (set-buffer process-buffer)
+         (with-current-buffer process-buffer
            ;;--------------------------------
            (vm-buffer-type:enter 'process)
            ;;--------------------------------
@@ -1226,8 +1225,7 @@ Returns the process or nil if the session could not be 
created."
 
     (unwind-protect
        (catch 'end-of-session
-         (save-excursion               ; = save-current-buffer?
-           (set-buffer imap-buffer)
+         (with-current-buffer imap-buffer
            ;;----------------------------
            (vm-buffer-type:enter 'process)
            ;;----------------------------
@@ -1489,8 +1487,7 @@ as well."
   (when (and process (memq (process-status process) '(open run))
             (buffer-live-p (process-buffer process)))
     (unwind-protect
-       (save-excursion                 ; = save-current-buffer?
-         (set-buffer imap-buffer)
+       (with-current-buffer imap-buffer
          ;;----------------------------
          (vm-buffer-type:enter 'process)
          ;;----------------------------
@@ -3084,8 +3081,7 @@ server should be issued by UID, not message sequence 
number."
       (setq flags- (append (cdr copied-flags) flags-))
 
       (unwind-protect
-         (save-excursion               ; = save-current-buffer?
-           (set-buffer (process-buffer process))
+         (with-current-buffer (process-buffer process)
            ;;----------------------------------
            (vm-buffer-type:enter 'process)
            ;;----------------------------------
@@ -3167,8 +3163,7 @@ MAILBOX."
       ;;-------------------
       )
     (unwind-protect
-       (save-excursion                 ; = save-current-buffer?
-         (set-buffer (process-buffer process))
+       (with-current-buffer (process-buffer process)
          ;;----------------------------
          (vm-buffer-type:enter 'process)
          ;;----------------------------
@@ -3556,8 +3551,7 @@ headers-only form."
                     (mapcar (function cdr) retrieve-list)))
        (unwind-protect
           (condition-case error-data
-              (save-excursion          ; = save-current-buffer?
-                (set-buffer (process-buffer process))
+              (with-current-buffer (process-buffer process)
                 ;;----------------------------
                 (vm-buffer-type:enter 'process)
                 ;;----------------------------
@@ -3698,8 +3692,7 @@ headers-only form."
              (setq d-list (vm-imap-bunch-messages
                            (nreverse (mapcar (function cdr) m-list))))
              (setq expunge-count 0)    ; number of messages expunged
-             (save-excursion           ; = save-current-buffer?
-               (set-buffer (process-buffer process))
+             (with-current-buffer (process-buffer process)
                ;;---------------------------
                (vm-buffer-type:set 'process)
                ;;---------------------------
@@ -3881,8 +3874,7 @@ otherwise.
              (error "Message has an invalid UID"))
            (setq imap-buffer (process-buffer process))
            (unwind-protect
-               (save-excursion         ; = save-current-buffer?
-                 (set-buffer imap-buffer)
+               (with-current-buffer imap-buffer
                  ;;----------------------------------
                  (vm-buffer-type:enter 'process)
                  (vm-imap-session-type:assert-active)
@@ -4235,8 +4227,7 @@ IMAP mailbox spec."
        sep p r response need-ok)
     (vm-imap-check-connection process)
     (unwind-protect
-       (save-excursion                 ; = save-current-buffer?
-         (set-buffer (process-buffer process))
+       (with-current-buffer (process-buffer process)
          ;;----------------------------------
          (vm-buffer-type:enter 'process)
          (vm-imap-session-type:assert-active)
diff --git a/lisp/vm-mark.el b/lisp/vm-mark.el
index fee509cef6..149f125a3c 100644
--- a/lisp/vm-mark.el
+++ b/lisp/vm-mark.el
@@ -200,11 +200,10 @@ previous N-1 messages."
     (setq selector (intern (concat "vm-vs-" (symbol-name selector))))
     (while mlist
       (if (if virtual
-             (save-excursion
-               (set-buffer
-                (vm-buffer-of
-                 (vm-real-message-of
-                  (car mlist))))
+             (with-current-buffer
+                 (vm-buffer-of
+                  (vm-real-message-of
+                   (car mlist)))
                (apply selector (vm-real-message-of (car mlist)) arglist))
            (apply selector (car mlist) arglist))
          (progn
diff --git a/lisp/vm-menu.el b/lisp/vm-menu.el
index ed8148465c..749c4a8ede 100644
--- a/lisp/vm-menu.el
+++ b/lisp/vm-menu.el
@@ -820,8 +820,7 @@ set to the command name so that window configuration will 
be done."
 
 (defun vm-menu--global-menubar ()
   (if (featurep 'xemacs)
-      (save-excursion
-        (set-buffer (get-buffer-create "*scratch*"))
+      (with-current-buffer (get-buffer-create "*scratch*")
         current-menubar)
     (lookup-key (current-global-map) [menu-bar])))
 
diff --git a/lisp/vm-message.el b/lisp/vm-message.el
index ab29cdd5c5..882d70ff2f 100644
--- a/lisp/vm-message.el
+++ b/lisp/vm-message.el
@@ -727,8 +727,7 @@ works in all VM buffers."
     mvec ))
 
 (defun vm-find-and-set-text-of (m)
-  (save-excursion
-    (set-buffer (vm-buffer-of m))
+  (with-current-buffer (vm-buffer-of m)
     (save-restriction
       (widen)
       (goto-char (vm-headers-of m))
diff --git a/lisp/vm-mime.el b/lisp/vm-mime.el
index 7fd17d8555..2e07ea54bf 100644
--- a/lisp/vm-mime.el
+++ b/lisp/vm-mime.el
@@ -430,8 +430,7 @@ freshly parsing the message contents."
       (progn (setq m (vm-real-message-of m))
             (vm-set-mime-encoded-header-flag-of
              m
-             (save-excursion
-               (set-buffer (vm-buffer-of m))
+             (with-current-buffer (vm-buffer-of m)
                (save-excursion
                  (save-restriction
                    (widen)
@@ -517,8 +516,7 @@ same effect."
                              coding-system foo))
          (setq start (point-min) end (point-max))
          (setq retval (buffer-size))
-         (save-excursion
-           (set-buffer b)
+         (with-current-buffer b
            (goto-char b-start)
            (insert-buffer-substring work-buffer start end)
            (delete-region (point) (+ (point) oldsize))
@@ -548,8 +546,7 @@ same effect."
                              coding-system foo))
          (and (not (featurep 'xemacs)) (set-buffer-multibyte t)) ; is this 
safe?
          (setq start (point-min) end (point-max))
-         (save-excursion
-           (set-buffer b)
+         (with-current-buffer b
            (goto-char b-start)
            (delete-region (point) (+ (point) oldsize))
            (insert-buffer-substring work-buffer start end)
@@ -675,8 +672,7 @@ out includes base-64, quoted-printable, uuencode and CRLF 
conversion."
                        ((= counter 0) t)))
                 (t (skip-chars-forward non-data-chars end)))))
            (and crlf
-                (save-excursion
-                  (set-buffer work-buffer)
+                (with-current-buffer work-buffer
                   (vm-mime-crlf-to-lf-region (point-min) (point-max))))
            (goto-char start)
            (insert-buffer-substring work-buffer)
@@ -729,8 +725,7 @@ out includes base-64, quoted-printable, uuencode and CRLF 
conversion."
                  (if (not (eq status t))
                      (vm-mime-error "base64-encode failed: %s" (cdr status)))
                  (if B-encoding
-                     (save-excursion
-                       (set-buffer work-buffer)
+                     (with-current-buffer work-buffer
                        ;; if we're B encoding, strip out the line breaks
                        (goto-char (point-min))
                        (while (search-forward "\n" nil t)
@@ -821,8 +816,7 @@ out includes base-64, quoted-printable, uuencode and CRLF 
conversion."
                     (setq copy-point (point))
                     (goto-char stop-point))
                    (t (setq copy-point stop-point)))
-             (save-excursion
-               (set-buffer work-buffer)
+             (with-current-buffer work-buffer
                (insert-buffer-substring buf inputpos copy-point))
              (cond ((= (point) end) t)
                    ((looking-at "\n")
@@ -891,14 +885,12 @@ out includes base-64, quoted-printable, uuencode and CRLF 
conversion."
                (if (not (eq status t))
                    (vm-mime-error "qp-encode failed: %s" (cdr status)))
                (if quote-from
-                   (save-excursion
-                     (set-buffer work-buffer)
+                   (with-current-buffer work-buffer
                      (goto-char (point-min))
                      (while (re-search-forward "^From " nil t)
                        (replace-match "=46rom " t t))))
                (if Q-encoding
-                   (save-excursion
-                     (set-buffer work-buffer)
+                   (with-current-buffer work-buffer
                      ;; strip out the line breaks
                      (goto-char (point-min))
                      (while (search-forward "=\n" nil t)
@@ -1563,8 +1555,7 @@ shorter pieces, rebuild it from them."
 a string denoting the folder name."
   (let ((pres-buf (vm-generate-new-multibyte-buffer 
                   (concat name " Presentation"))))
-    (save-excursion
-      (set-buffer pres-buf)
+    (with-current-buffer pres-buf
       (buffer-disable-undo (current-buffer))
       (setq mode-name "VM Presentation"
            major-mode 'vm-presentation-mode
@@ -1618,8 +1609,7 @@ source of the message."
     (when (fboundp 'remove-specifier)
       (remove-specifier (face-foreground 'default) pres-buf)
       (remove-specifier (face-background 'default) pres-buf))
-    (save-excursion
-      (set-buffer (vm-buffer-of real-m))
+    (with-current-buffer (vm-buffer-of real-m)
       (save-restriction
        (widen)
        ;; must reference this now so that headers will be in
@@ -1866,8 +1856,7 @@ message body from the file into the current buffer.
 For example, 'X-VM-Storage: (file \"message-11\")' will fetch 
 the actual message from the file \"message-11\"."
   (goto-char (match-end 0))
-  (save-excursion
-    (set-buffer (marker-buffer (vm-text-of mm)))
+  (with-current-buffer (marker-buffer (vm-text-of mm))
     (let ((buffer-read-only nil)
          (inhibit-read-only t)
          (buffer-undo-list t)
@@ -3659,8 +3648,7 @@ button that this LAYOUT comes from."
                                 vm-wget-program "-q" "-O" "-" url)
                              (error nil)))
                       t
-                    (save-excursion
-                      (set-buffer buffer)
+                    (with-current-buffer buffer
                       (erase-buffer)
                       nil )))
                  ((if (and (memq 'w3m vm-url-retrieval-methods)
@@ -3670,8 +3658,7 @@ button that this LAYOUT comes from."
                                 vm-w3m-program "-dump_source" url)
                              (error nil)))
                       t
-                    (save-excursion
-                      (set-buffer buffer)
+                    (with-current-buffer buffer
                       (erase-buffer)
                       nil )))
                  ((if (and (memq 'fetch vm-url-retrieval-methods)
@@ -3681,8 +3668,7 @@ button that this LAYOUT comes from."
                                 vm-fetch-program "-o" "-" url)
                              (error nil)))
                       t
-                    (save-excursion
-                      (set-buffer buffer)
+                    (with-current-buffer buffer
                       (erase-buffer)
                       nil )))
                  ((if (and (memq 'curl vm-url-retrieval-methods)
@@ -3692,8 +3678,7 @@ button that this LAYOUT comes from."
                                 vm-curl-program url)
                              (error nil)))
                       t
-                    (save-excursion
-                      (set-buffer buffer)
+                    (with-current-buffer buffer
                       (erase-buffer)
                       nil )))
                  ((if (and (memq 'lynx vm-url-retrieval-methods)
@@ -3703,13 +3688,10 @@ button that this LAYOUT comes from."
                                 vm-lynx-program "-source" url)
                              (error nil)))
                       t
-                    (save-excursion
-                      (set-buffer buffer)
+                    (with-current-buffer buffer
                       (erase-buffer)
                       nil )))))
-    (save-excursion
-      (set-buffer buffer)
-      (not (zerop (buffer-size))))))
+    (not (zerop (buffer-size buffer)))))
 
 (defun vm-mime-internalize-local-external-bodies (layout)
   "Given a LAYOUT representing a message/external-body object, convert
@@ -3775,8 +3757,7 @@ it to an internal object by retrieving the body.       
USR, 2011-03-28"
       (if (null id)
          (vm-mime-error
           "message/partial message missing id parameter"))
-      (save-excursion
-       (set-buffer (marker-buffer (vm-mm-layout-body-start layout)))
+      (with-current-buffer (marker-buffer (vm-mm-layout-body-start layout))
        (save-excursion
          (save-restriction
            (widen)
@@ -3970,8 +3951,7 @@ describing the image type.                             
USR, 2011-03-25"
                     (vm-set-extent-property e 'vm-mime-layout layout)
                     (vm-set-extent-property e 'vm-mime-disposable t)
                     (vm-set-extent-property e 'keymap keymap)
-                    (save-excursion
-                      (set-buffer (process-buffer process))
+                    (with-current-buffer (process-buffer process)
                       (set (make-local-variable 'vm-image-list) image-list)
                       (set (make-local-variable 'vm-image-type) image-type)
                       (set (make-local-variable 'vm-image-type-name)
@@ -4089,8 +4069,7 @@ describing the image type.                            
USR, 2011-03-25"
                     (overlay-put o 'vm-mime-disposable t)
                     (if vm-use-menus
                         (overlay-put o 'vm-image vm-menu-fsfemacs-image-menu))
-                    (save-excursion
-                      (set-buffer (process-buffer process))
+                    (with-current-buffer (process-buffer process)
                       (set (make-local-variable 'vm-image-list) image-list)
                       (set (make-local-variable 'vm-image-type) image-type)
                       (set (make-local-variable 'vm-image-type-name)
@@ -4238,8 +4217,7 @@ describing the image type.                            
USR, 2011-03-25"
       (and work-buffer (kill-buffer work-buffer)))))
 
 (defun vm-process-sentinel-display-image-strips (process what-happened)
-  (save-excursion
-    (set-buffer (process-buffer process))
+  (with-current-buffer (process-buffer process)
     (cond ((and (boundp 'vm-extent-list)
                (boundp 'vm-image-list))
           (let ((strips vm-image-list)
@@ -4287,8 +4265,7 @@ describing the image type.                            
USR, 2011-03-25"
 
 (defun vm-display-image-strips-on-overlay-regions (strips overlays image-type)
   (let (prop value omodified)
-    (save-excursion
-      (set-buffer (overlay-buffer (car vm-overlay-list)))
+    (with-current-buffer (overlay-buffer (car vm-overlay-list))
       (setq omodified (buffer-modified-p))
       (save-restriction
        (widen)
@@ -4319,8 +4296,7 @@ describing the image type.                            
USR, 2011-03-25"
       (setq which-strips (cons (string-to-number (match-string 1 output))
                               which-strips)
            i (match-end 0)))
-    (save-excursion
-      (set-buffer (process-buffer process))
+    (with-current-buffer (process-buffer process)
       (cond ((and (boundp 'vm-extent-list)
                  (boundp 'vm-image-list))
             (let ((strips vm-image-list)
@@ -4373,8 +4349,7 @@ describing the image type.                            
USR, 2011-03-25"
 (defun vm-display-some-image-strips-on-overlay-regions
   (strips overlays image-type which-strips)
   (let (sss ooo prop value omodified)
-    (save-excursion
-      (set-buffer (overlay-buffer (car vm-overlay-list)))
+    (with-current-buffer (overlay-buffer (car vm-overlay-list))
       (setq omodified (buffer-modified-p))
       (save-restriction
        (widen)
@@ -8162,10 +8137,8 @@ the first sub part of a multipart/alternative is a 
text/plain part."
        (when (and nuke-html
                   (member "multipart/alternative" parent-types)
                   (vm-mime-types-match "text/html" this-type))
-         (save-excursion
-           (set-buffer (vm-buffer-of m))
-           (let ((inhibit-read-only t)
-                 (buffer-read-only nil))
+         (with-current-buffer (vm-buffer-of m)
+           (let ((buffer-read-only nil))
              (save-restriction
               (widen)
               (if (vm-mm-layout-is-converted layout)
diff --git a/lisp/vm-minibuf.el b/lisp/vm-minibuf.el
index 941759ed44..5f9ca2a95a 100644
--- a/lisp/vm-minibuf.el
+++ b/lisp/vm-minibuf.el
@@ -176,8 +176,7 @@ to the calling program."
 (defun vm-minibuffer-show-completions (list)
   "Display LIST in a multi-column listing in the \" *Completions*\" buffer.
 LIST should be a list of strings."
-  (save-excursion
-    (set-buffer (get-buffer-create " *Completions*"))
+  (with-current-buffer (get-buffer-create " *Completions*")
     (setq buffer-read-only nil)
     (use-local-map (make-sparse-keymap))
     ;; ignore vm-mutable-* here.  the user shouldn't mind
diff --git a/lisp/vm-motion.el b/lisp/vm-motion.el
index 81ca29dbcb..95db09c254 100644
--- a/lisp/vm-motion.el
+++ b/lisp/vm-motion.el
@@ -530,8 +530,7 @@ If a new message is selected then return t, otherwise nil. 
USR, 2010-03-08"
   (and vm-follow-summary-cursor (eq major-mode 'vm-summary-mode)
        (let ((point (point))
             message-pointer message-list mp)
-        (save-excursion
-          (set-buffer vm-mail-buffer)
+        (with-current-buffer vm-mail-buffer
           (setq message-pointer vm-message-pointer
                 message-list vm-message-list))
         (cond ((or (null message-pointer)
@@ -576,8 +575,7 @@ If a new message is selected then return t, otherwise nil. 
USR, 2010-03-08"
                            (+ (vm-su-start-of (car mp)) 3) 'invisible))
                  (setq mp (cdr mp)))
                (if (not (eq mp message-pointer))
-                   (save-excursion
-                     (set-buffer vm-mail-buffer)
+                   (with-current-buffer vm-mail-buffer
                      ;; presentation disabled to avoid message
                      ;; loading. USR, 2010-09-30
                      (vm-record-and-change-message-pointer
diff --git a/lisp/vm-mouse.el b/lisp/vm-mouse.el
index ec27d6ae82..e3f824c2d5 100644
--- a/lisp/vm-mouse.el
+++ b/lisp/vm-mouse.el
@@ -120,7 +120,7 @@ Mouse'."
   "Use mouse button 3 to see a menu of options.")
 
 (defun vm-mouse-get-mouse-track-string (event)
-  (save-excursion
+  (save-current-buffer
     ;; go to where the event occurred
     (cond ((featurep 'xemacs)
           (set-buffer (window-buffer (event-window event)))
@@ -594,8 +594,7 @@ HISTORY argument is ignored."
 (defvar vm-mouse-read-string-should-delete-frame)
 
 (defun vm-mouse-read-string (prompt completion-list &optional multi-word)
-  (save-excursion
-    (set-buffer (vm-make-work-buffer " *Choices*"))
+  (with-current-buffer (vm-make-work-buffer " *Choices*")
     (use-local-map (make-sparse-keymap))
     (setq buffer-read-only t)
     (make-local-variable 'vm-mouse-read-string-prompt)
diff --git a/lisp/vm-pcrisis.el b/lisp/vm-pcrisis.el
index 8a0a3638fe..cc042a9700 100644
--- a/lisp/vm-pcrisis.el
+++ b/lisp/vm-pcrisis.el
@@ -925,8 +925,7 @@ parameter POS means insert the pre-signature at position 
POS if
         (setq vmpc-auto-profiles (reverse vmpc-auto-profiles)))
     (when (and (file-exists-p vmpc-auto-profiles-file) ;
                (file-readable-p vmpc-auto-profiles-file))
-      (save-excursion
-       (set-buffer (get-buffer-create "*pcrisis-temp*"))
+      (with-current-buffer (get-buffer-create "*pcrisis-temp*")
        (buffer-disable-undo (current-buffer))
        (erase-buffer)
        (insert-file-contents vmpc-auto-profiles-file)
@@ -942,8 +941,7 @@ parameter POS means insert the pre-signature at position 
POS if
         ;; if file is not writable, signal an error:
         (error "Error: P-Crisis could not write to file %s"
                vmpc-auto-profiles-file))
-    (save-excursion
-      (set-buffer (get-buffer-create "*pcrisis-temp*"))
+    (with-current-buffer (get-buffer-create "*pcrisis-temp*")
       (buffer-disable-undo (current-buffer))
       (erase-buffer)
       (goto-char (point-min))
@@ -1075,8 +1073,7 @@ If no email address in found in STR, returns nil."
 whitespace." 
   (let (result
         (not-separators (concat "^" separators)))
-    (save-excursion
-      (set-buffer (get-buffer-create " *split*"))
+    (with-current-buffer (get-buffer-create " *split*")
       (erase-buffer)
       (insert string)
       (goto-char (point-min))
@@ -1474,8 +1471,7 @@ buffer to which to write diagnostic output."
       (let ((form (cons 'progn (cdr form)))
            (results (eval (cons 'progn (cdr form)))))
        (when verbose
-         (save-excursion
-           (set-buffer verbose)
+         (with-current-buffer verbose
            (insert (format "Action form is:\n%S\nResults are:\n%S\n"
                            form results))))))))
 
@@ -1524,8 +1520,7 @@ recursion nor concurrent calls."
   ;; BUGME why is the global value resurrected after making the variable
   ;; buffer local?  Is this related to defadvice?  I have no idea what is
   ;; going on here!  Thus we clear it afterwards now!
-  (save-excursion
-    (set-buffer (get-buffer-create " *vmpc-cleanup*"))
+  (with-current-buffer (get-buffer-create " *vmpc-cleanup*")
     (vmpc-init-vars)
     (setq vmpc-current-buffer nil)))
 
diff --git a/lisp/vm-pgg.el b/lisp/vm-pgg.el
index ab5f0b7d9e..4676e12775 100644
--- a/lisp/vm-pgg.el
+++ b/lisp/vm-pgg.el
@@ -490,12 +490,10 @@ If STATES is nil, clear it."
       (setq vm-pgg-state-message (car vm-message-pointer))
       (setq vm-pgg-state nil)
       (when vm-presentation-buffer
-        (save-excursion
-          (set-buffer vm-presentation-buffer)
+        (with-current-buffer vm-presentation-buffer
           (setq vm-pgg-state nil)))
       (when vm-summary-buffer
-        (save-excursion
-          (set-buffer vm-summary-buffer)
+        (with-current-buffer vm-summary-buffer
           (setq vm-pgg-state nil))))
     ;; add prefix
     (if (and states (not vm-pgg-state))
@@ -511,12 +509,10 @@ If STATES is nil, clear it."
     ;; propagate state
     (setq states vm-pgg-state)
     (when vm-presentation-buffer
-      (save-excursion
-        (set-buffer vm-presentation-buffer)
+      (with-current-buffer vm-presentation-buffer
         (setq vm-pgg-state states)))
     (when vm-summary-buffer
-      (save-excursion
-        (set-buffer vm-summary-buffer)
+      (with-current-buffer vm-summary-buffer
         (setq vm-pgg-state states)))))
 
 (defvar vm-pgg-cleartext-begin-regexp
@@ -857,8 +853,7 @@ cleanup here after verification and decoding took place."
               :layout layout)))
           (t
            ;; decode the message now
-           (save-excursion
-             (set-buffer (vm-buffer-of (vm-mm-layout-message message)))
+           (with-current-buffer (vm-buffer-of (vm-mm-layout-message message))
              (save-restriction
                (widen)
                (setq status (pgg-decrypt-region (vm-mm-layout-body-start 
message)
@@ -868,16 +863,14 @@ cleanup here after verification and decoding took place."
                  (vm-pgg-state-set 'error)
                  (insert-buffer-substring pgg-errors-buffer)
                  (put-text-property start (point) 'face 'vm-pgg-error))
-             (save-excursion
-               (set-buffer pgg-output-buffer)
+             (with-current-buffer pgg-output-buffer
                (vm-pgg-crlf-cleanup (point-min) (point-max))
                (setq message (vm-mime-parse-entity-safe 
                              nil :passing-message-only t)))
              (if message
                  (vm-decode-mime-layout message)
                (insert-buffer-substring pgg-output-buffer))
-             (setq status (save-excursion
-                            (set-buffer pgg-errors-buffer)
+             (setq status (with-current-buffer pgg-errors-buffer
                             (goto-char (point-min))
                             ;; TODO: care for BADSIG
                             (when (re-search-forward "GOODSIG [^\n\r]+" 
(point-max) t)
@@ -1021,8 +1014,8 @@ cleanup here after verification and decoding took place."
     ;; verify
     (unless (pgg-snarf-keys)
       (error "Snarfing failed"))
-    (save-excursion
-      (set-buffer (if (not (featurep 'xemacs)) pgg-errors-buffer 
pgg-output-buffer))
+    (with-current-buffer
+        (if (not (featurep 'xemacs)) pgg-errors-buffer pgg-output-buffer)
       (message (buffer-substring (point-min) (point-max))))))
 
 ;;; ###autoload
@@ -1036,8 +1029,7 @@ cleanup here after verification and decoding took place."
          (description (concat "public key of " pgg-default-user-id))
          (buffer (get-buffer-create (concat " *" description "*")))
          start)
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (erase-buffer)
       (setq start (point))
       (pgg-insert-key)
@@ -1084,8 +1076,7 @@ seed and thus creates the same boundery when called twice 
in a short period."
   (let ((composition-buffer (current-buffer))
         (undo-list-backup buffer-undo-list)
         (work-buffer (get-buffer-create " *VM-PGG-WORK*")))
-    (save-excursion
-      (set-buffer work-buffer)
+    (with-current-buffer work-buffer
       (buffer-disable-undo)
       (erase-buffer)
       (insert-buffer-substring composition-buffer)
diff --git a/lisp/vm-pine.el b/lisp/vm-pine.el
index 19e739bf68..be44165e5f 100644
--- a/lisp/vm-pine.el
+++ b/lisp/vm-pine.el
@@ -428,8 +428,7 @@ creation). If DRAFT is non-nil, then do not delete the 
draft message."
       (goto-char (point-max))
       (if presentation-buffer
           ;; when using presentation buffer we have to
-          (save-excursion
-            (set-buffer presentation-buffer)
+          (with-current-buffer presentation-buffer
             (goto-char (point-min))
             (search-forward-regexp "\n\n")
             (setq tstart (match-end 0)
@@ -634,8 +633,7 @@ Optional argument DONT-KILL is positive, then do not kill 
source message."
     (setq folder-buffer (vm-get-file-buffer folder))
     (if folder-buffer
         ;; o.k. the folder is already opened
-        (save-excursion
-          (set-buffer folder-buffer)
+        (with-current-buffer folder-buffer
           (vm-error-if-folder-read-only)
           (let ((buffer-read-only nil))
             (save-restriction
@@ -745,8 +743,7 @@ Drafts in other folders are not recognized!"
       ;; postponed message in postponed folder
       (when (and (not action) (setq buffer (vm-get-file-buffer ppfolder)))
         (if (and (get-buffer-window-list buffer nil 0))
-            (when (save-excursion
-                    (set-buffer buffer)
+            (when (with-current-buffer buffer
                     (not (vm-deleted-flag (car vm-message-pointer))))
               (message "Please select a draft!")
               (select-window (car (get-buffer-window-list buffer nil 0)))
@@ -1049,8 +1046,7 @@ This function is a slightly changed version of 
`vm-auto-select-folder'."
                              (result))
                         ;; Set up a buffer that matches our cached
                         ;; match data.
-                        (save-excursion
-                          (set-buffer buf)
+                        (with-current-buffer buf
                           (if (not (featurep 'xemacs))
                               (set-buffer-multibyte nil)) ; for empty buffer
                           (widen)
diff --git a/lisp/vm-pop.el b/lisp/vm-pop.el
index f432e8b368..f6dd546214 100644
--- a/lisp/vm-pop.el
+++ b/lisp/vm-pop.el
@@ -153,8 +153,7 @@ a POP server, find its cache file on the file system"
          (setq process (vm-pop-make-session source vm-pop-ok-to-ask))
          (or process (throw 'done nil))
          (setq process-buffer (process-buffer process))
-         (save-excursion
-           (set-buffer process-buffer)
+         (with-current-buffer process-buffer
            ;; find out how many messages are in the box.
            (vm-pop-send-command process "STAT")
            (setq response (vm-pop-read-stat-response process)
@@ -506,8 +505,7 @@ Returns the process or nil if the session could not be 
created."
           (vm-make-trace-buffer-name session-name host)))
     (unwind-protect
        (catch 'end-of-session
-         (save-excursion               ; = save-current-buffer? 
-           (set-buffer pop-buffer)
+         (with-current-buffer pop-buffer
            (setq vm-folder-type (or folder-type vm-default-folder-type))
            (buffer-disable-undo pop-buffer)
            (make-local-variable 'vm-pop-read-point)
@@ -679,8 +677,7 @@ is non-nil, the process buffer is retained, otherwise it is
 killed as well."
   (if (and process (memq (process-status process) '(open run))
           (buffer-live-p (process-buffer process)))
-      (save-excursion
-       (set-buffer (process-buffer process))
+      (with-current-buffer (process-buffer process)
        (vm-pop-send-command process "QUIT")
        ;; Previously we did not read the QUIT response because of
        ;; TCP shutdown problems (under Windows?) that made it
@@ -977,8 +974,7 @@ popdrop
                          (let ((attrs (file-attributes target)))
                            (or (null attrs) (equal 0 (nth 7 attrs)))))
                         ((bufferp target)
-                         (save-excursion
-                           (set-buffer target)
+                         (with-current-buffer target
                            (zerop (buffer-size))))))
              (let ((opoint (point)))
                (vm-convert-folder-header nil vm-folder-type)
@@ -1003,8 +999,7 @@ popdrop
              (selective-display nil))
          (write-region start end target t 0))
       (let ((b (current-buffer)))
-       (save-excursion
-         (set-buffer target)
+       (with-current-buffer target
          (let ((buffer-read-only nil))
            (insert-buffer-substring b start end)))))
     (delete-region start end)
@@ -1047,8 +1042,7 @@ popdrop
 (defun vm-pop-get-uidl-data ()
   (let ((there (make-vector 67 0))
        (process (vm-folder-pop-process)))
-    (save-excursion
-      (set-buffer (process-buffer process))
+    (with-current-buffer (process-buffer process)
       (vm-pop-send-command process "UIDL")
       (let ((start vm-pop-read-point)
            n uidl)
@@ -1178,8 +1172,7 @@ LOCAL-EXPUNGE-LIST: A list of message descriptors for 
messages in the
             (widen)
             (goto-char (point-max))
             (condition-case error-data
-                (save-excursion
-                  (set-buffer (process-buffer process))
+                (with-current-buffer (process-buffer process)
                   (setq statblob (vm-pop-start-status-timer))
                   (vm-set-pop-stat-x-box statblob safe-popdrop)
                   (vm-set-pop-stat-x-maxmsg statblob
diff --git a/lisp/vm-ps-print.el b/lisp/vm-ps-print.el
index e636c65e34..c782687560 100644
--- a/lisp/vm-ps-print.el
+++ b/lisp/vm-ps-print.el
@@ -387,8 +387,7 @@ for customization of the output."
 If EACH it t, then replace `vm-print-message' by
 'vm-ps-print-each-message', otherwise by `vm-ps-print-message'."
   (let ((tmpbuf (get-buffer-create "*vm-ps-print*")))
-    (save-excursion
-      (set-buffer tmpbuf)
+    (with-current-buffer tmpbuf
       (erase-buffer)
       (insert (format "(setq %s '%S)" (symbol-name menu) (symbol-value menu)))
       (if (re-search-backward "vm-\\(ps-\\)?print-\\(each-\\)?message"
diff --git a/lisp/vm-reply.el b/lisp/vm-reply.el
index 30dd73da3c..804589bca3 100644
--- a/lisp/vm-reply.el
+++ b/lisp/vm-reply.el
@@ -860,8 +860,7 @@ as replied to, forwarded, etc, if appropriate."
        (let (list)
          (setq list (vm-mime-fragment-composition vm-mime-max-message-size))
          (while list
-           (save-excursion
-             (set-buffer (car list))
+           (with-current-buffer (car list)
              (vm-mail-send)
              (kill-buffer (car list)))
            (setq list (cdr list)))
diff --git a/lisp/vm-rfaddons.el b/lisp/vm-rfaddons.el
index 3db400d546..f3cd0ca5a6 100644
--- a/lisp/vm-rfaddons.el
+++ b/lisp/vm-rfaddons.el
@@ -786,19 +786,18 @@ See the variable `vm-handle-return-receipt-mode' for 
customization. (Rob F)"
           "Your mail has been received on %s."
           (current-time-string)))
         (save-restriction
-          (save-excursion
-          (set-buffer (vm-buffer-of msg))
-          (widen)
-          (setq message
-              (buffer-substring
-               (vm-vheaders-of msg)
-               (let ((tp (+ vm-handle-return-receipt-peek
-                            (marker-position
-                             (vm-text-of msg))))
-                     (ep (marker-position
-                          (vm-end-of msg))))
-                 (if (< tp ep) tp ep))
-               ))))
+          (with-current-buffer (vm-buffer-of msg)
+            (widen)
+            (setq message
+                  (buffer-substring
+                   (vm-vheaders-of msg)
+                   (let ((tp (+ vm-handle-return-receipt-peek
+                                (marker-position
+                                 (vm-text-of msg))))
+                         (ep (marker-position
+                              (vm-end-of msg))))
+                     (if (< tp ep) tp ep))
+                   ))))
         (insert 
"\n-----------------------------------------------------------------------------\n"
                 message)
         (if (re-search-backward "^\\s-+.*" (point-min) t)
@@ -1913,8 +1912,7 @@ calls. (Rob F)"
             (error
              (message (cadr err))
              (if (and (get-buffer n)
-                      (< 0 (length (save-excursion
-                                    (set-buffer (get-buffer n))
+                      (< 0 (length (with-current-buffer (get-buffer n)
                                     (buffer-substring (point-min) 
(point-max))))))
                 (pop-to-buffer n))))
          (if stream (delete-process stream))
diff --git a/lisp/vm-save.el b/lisp/vm-save.el
index fe6cba47a9..bb0a7a690e 100644
--- a/lisp/vm-save.el
+++ b/lisp/vm-save.el
@@ -77,8 +77,7 @@ specified, use `vm-auto-folder-alist'."
                               (result))
                          ;; Set up a buffer that matches our cached
                          ;; match data.
-                         (save-excursion
-                           (set-buffer buf)
+                         (with-current-buffer buf
                            (if (not (featurep 'xemacs))
                                (set-buffer-multibyte nil)) ; for empty buffer
                            (widen)
@@ -426,8 +425,7 @@ The saved messages are flagged as `filed'."
                       (vm-write-string
                        folder (vm-trailing-message-separator target-type))))
                 ;; write to folder-buffer
-                (save-excursion
-                  (set-buffer folder-buffer)
+                (with-current-buffer folder-buffer
                   ;; if the buffer is a live VM folder
                   ;; honor vm-folder-read-only.
                   (when vm-folder-read-only
@@ -581,8 +579,7 @@ This command should NOT be used to save message to mail 
folders; use
                    (vm-text-of m) (vm-text-end-of m) file t 'quiet)
                 (let ((start (vm-text-of m))
                       (end (vm-text-end-of m)))
-                  (save-excursion
-                    (set-buffer file-buffer)
+                  (with-current-buffer file-buffer
                     (save-excursion
                       (let (buffer-read-only)
                         (save-restriction
@@ -608,7 +605,7 @@ This command should NOT be used to save message to mail 
folders; use
 
 (defun vm-switch-to-command-output-buffer (command buffer discard-output)
   "Eventually switch to the output buffer of the command."
-  (let ((output-bytes (save-excursion (set-buffer buffer) (buffer-size))))
+  (let ((output-bytes (with-current-buffer buffer (buffer-size))))
     (if (zerop output-bytes)
        (vm-inform 5 "Command '%s' produced no output." command)
       (if discard-output
@@ -663,8 +660,7 @@ Output, if any, is displayed.  The message is not altered."
        ;; vm-select-operable-messages for marks and threads.
        (mlist (vm-select-operable-messages 1 (vm-interactive-p) "Pipe")))
     (vm-retrieve-operable-messages 1 mlist :fail t)
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (erase-buffer))
     (while mlist
       (setq m (vm-real-message-of (car mlist)))
@@ -689,8 +685,7 @@ Output, if any, is displayed.  The message is not altered."
   "Run a shell command with contents from the current message as input.
 This function is like `vm-pipe-message-to-command', but will not display the
 output of the command, but return it as a string."
-  (save-excursion 
-    (set-buffer (vm-pipe-message-to-command command prefix-arg t))
+  (with-current-buffer (vm-pipe-message-to-command command prefix-arg t)
     (buffer-substring-no-properties (point-min) (point-max))))
 
 ;;;###autoload
@@ -779,9 +774,7 @@ arguments after the command finished."
        (mlist (vm-select-operable-messages 1 (vm-interactive-p) "Pipe"))
        m process)
     (vm-retrieve-operable-messages 1 mlist :fail t)
-    (save-excursion
-      (set-buffer buffer)
-      (erase-buffer))
+    (with-current-buffer buffer      (erase-buffer))
     (setq process (start-process command buffer 
                                 (or shell-file-name "sh")
                                 shell-command-switch command))
@@ -838,8 +831,7 @@ output of the command, but return it as a string."
      (vm-select-folder-buffer)
      (list (read-string "Pipe to command: " vm-last-pipe-command)
           current-prefix-arg))))
-  (save-excursion 
-    (set-buffer (vm-pipe-messages-to-command command prefix-arg t))
+  (with-current-buffer (vm-pipe-messages-to-command command prefix-arg t)
     (buffer-substring-no-properties (point-min) (point-max))))
 
 ;;;###autoload
@@ -894,8 +886,7 @@ Output, if any, is displayed.  The message is not altered."
         (mlist (vm-select-operable-messages count (vm-interactive-p) "Print")))
     (vm-retrieve-operable-messages count mlist :fail t)
 
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (erase-buffer))
     (while mlist
       (setq m (vm-real-message-of (car mlist)))
diff --git a/lisp/vm-serial.el b/lisp/vm-serial.el
index da3c81b29a..3ae44948e3 100644
--- a/lisp/vm-serial.el
+++ b/lisp/vm-serial.el
@@ -763,8 +763,7 @@ a warning."
 (defvar vm-serial-send-mail-exit nil)
 
 (defun vm-serial-send-mail-increment (variable)
-  (save-excursion
-    (set-buffer vm-serial-source-buffer)
+  (with-current-buffer vm-serial-source-buffer
     (eval (list 'vm-increment variable))))
 
 
@@ -821,8 +820,7 @@ questions will bother you!"
                 vm-serial-killed-cnt 0)))
 
     ;; mail-extract-address-components isn't good at all! Fix it!
-    (save-excursion
-      (set-buffer work-buffer)
+    (with-current-buffer work-buffer
       (setq major-mode 'mail-mode))
     
     (while (and (not work) vm-serial-send-mail-jobs)
@@ -831,8 +829,7 @@ questions will bother you!"
                           (concat (car to) " <" (cadr to) ">")
                         (cadr to)))
       (copy-to-buffer work-buffer (point-min) (point-max))
-      (save-excursion
-        (set-buffer work-buffer)
+      (with-current-buffer work-buffer
         (goto-char (point-min))
         (vm-mail-mode-remove-header "To:")
         (mail-position-on-field "To")
diff --git a/lisp/vm-summary.el b/lisp/vm-summary.el
index 40126f59d8..43bf800fd3 100644
--- a/lisp/vm-summary.el
+++ b/lisp/vm-summary.el
@@ -180,8 +180,7 @@ mandatory."
        (setq vm-summary-buffer
              (or (get-buffer summary-buffer-name)
                  (vm-generate-new-multibyte-buffer summary-buffer-name)))
-       (save-excursion
-         (set-buffer vm-summary-buffer)
+       (with-current-buffer vm-summary-buffer
          (abbrev-mode 0)
          (auto-fill-mode 0)
          ;; Experimental code to use buffer-face-mode to change font
@@ -232,8 +231,7 @@ the messages in the current folder."
                                 (vm-mouse-support-possible-p))
                            vm-summary-enable-faces)))
     ;; (setq mp m-list)
-    (save-excursion
-      (set-buffer vm-summary-buffer)
+    (with-current-buffer vm-summary-buffer
       (setq line-move-ignore-invisible vm-summary-show-threads)
       (let ((buffer-read-only nil)
            (modified (buffer-modified-p))
@@ -513,9 +511,8 @@ buffer by a regenerated summary line."
                      (vm-mouse-support-possible-p))
                 vm-summary-enable-faces))
            summary)
-       (save-excursion
+       (with-current-buffer (marker-buffer (vm-su-start-of m))
          (setq summary (vm-su-summary m))
-         (set-buffer (marker-buffer (vm-su-start-of m)))
          (let ((buffer-read-only nil)
                s e i
                (selected nil)
@@ -1074,8 +1071,7 @@ of multiple header lines which might match 
HEADER-NAME-REGEXP.
   (let ((contents nil)
        (regexp (concat "^\\(" header-name-regexp "\\)")))
     (setq message (vm-real-message-of message))
-    (save-excursion
-      (set-buffer (vm-buffer-of (vm-real-message-of message)))
+    (with-current-buffer (vm-buffer-of (vm-real-message-of message))
       (save-restriction
        (widen)
        (goto-char (vm-headers-of message))
@@ -1353,8 +1349,7 @@ field in the summary.                                     
USR, 2012-10-13"
   (if (not (memq (vm-message-type-of message)
                 '(BellFrom_ From_ From_-with-Content-Length)))
       nil
-    (save-excursion
-      (set-buffer (vm-buffer-of (vm-real-message-of message)))
+    (with-current-buffer (vm-buffer-of (vm-real-message-of message))
       (save-excursion
        (save-restriction
          (widen)
@@ -1498,8 +1493,7 @@ cached-data-vector."
 (defun vm-run-user-summary-function (function message)
   ;; (condition-case nil
   (let ((m (vm-real-message-of message)))
-    (save-excursion
-      (set-buffer (vm-buffer-of m))
+    (with-current-buffer (vm-buffer-of m)
       (save-restriction
        (widen)
        (save-excursion
@@ -1593,8 +1587,7 @@ The result is a mime-encoded string, but this is not 
certain.
   (if (not (memq (vm-message-type-of message)
                 '(From_ BellFrom_ From_-with-Content-Length)))
       nil
-    (save-excursion
-      (set-buffer (vm-buffer-of message))
+    (with-current-buffer (vm-buffer-of message)
       (save-excursion
        (save-restriction
          (widen)
@@ -1834,8 +1827,7 @@ if necessary.  The result is a mime-decoded string with 
text properties.
             (and id (car (vm-parse id "[^<]*\\(<[^>]+>\\)"))))
           ;; try running md5 on the message body to produce an ID
           ;; better than nothing.
-          (save-excursion
-            (set-buffer (vm-buffer-of (vm-real-message-of m)))
+          (with-current-buffer (vm-buffer-of (vm-real-message-of m))
             (save-restriction
               (widen)
               (condition-case nil
@@ -1854,8 +1846,7 @@ entry (`vm-line-count-of') or recalculating it if 
necessary.  USR 2010-05-13"
   (or (vm-line-count-of m)
       (vm-set-line-count-of
        m
-       (save-excursion
-        (set-buffer (vm-buffer-of (vm-real-message-of m)))
+       (with-current-buffer (vm-buffer-of (vm-real-message-of m))
         (save-restriction
           (widen)
           (int-to-string
@@ -2306,8 +2297,7 @@ Call this function if you made changes to 
`vm-summary-format'."
                      (vm-mouse-support-possible-p))
                 vm-summary-enable-faces))
            summary)
-       (save-excursion
-         (set-buffer (marker-buffer (vm-fs-start-of fs)))
+       (with-current-buffer (marker-buffer (vm-fs-start-of fs))
          (let ((buffer-read-only nil))
            (unwind-protect
                (save-excursion
@@ -2377,8 +2367,7 @@ Call this function if you made changes to 
`vm-summary-format'."
          (do-mouse-track (or (and vm-mouse-track-summary
                                   (vm-mouse-support-possible-p))
                              vm-summary-enable-faces)))
-      (save-excursion
-       (set-buffer vm-folders-summary-buffer)
+      (with-current-buffer vm-folders-summary-buffer
        (erase-buffer)
        (let ((buffer-read-only nil))
          (if (null vm-folders-summary-database)
@@ -2465,8 +2454,7 @@ Call this function if you made changes to 
`vm-summary-format'."
 (defun vm-do-needed-folders-summary-update ()
   (if (null vm-folders-summary-buffer)
       nil
-    (save-excursion
-      (set-buffer vm-folders-summary-buffer)
+    (with-current-buffer vm-folders-summary-buffer
       (if (or (eq vm-modification-counter vm-flushed-modification-counter)
              (null vm-folders-summary-hash))
          nil
@@ -2493,8 +2481,7 @@ Call this function if you made changes to 
`vm-summary-format'."
       (vm-set-fs-modflag-of fs t)
       (vm-check-for-killed-summary)
       (if vm-folders-summary-buffer
-         (save-excursion
-           (set-buffer vm-folders-summary-buffer)
+         (with-current-buffer vm-folders-summary-buffer
            (vm-increment vm-modification-counter))))
     (if dont-descend
        nil
diff --git a/lisp/vm-undo.el b/lisp/vm-undo.el
index 370d15f10a..5b7f901819 100644
--- a/lisp/vm-undo.el
+++ b/lisp/vm-undo.el
@@ -589,10 +589,7 @@ changed attributes are stuffed into the folder.        USR 
2010-04-06"
     (cond
      ((and (not vm-folder-read-only)
           (or (not (vm-virtual-messages-of m))
-              (not (save-excursion
-                     (set-buffer
-                      (vm-buffer-of
-                        (vm-real-message-of m)))
+              (not (with-current-buffer (vm-buffer-of (vm-real-message-of m))
                      vm-folder-read-only))))
       (dolist (v-m (cons (vm-real-message-of m) (vm-virtual-messages-of m)))
        (if (eq (vm-attributes-of m) (vm-attributes-of v-m))
diff --git a/lisp/vm-vcard.el b/lisp/vm-vcard.el
index 895b3f0933..bbfab4137a 100644
--- a/lisp/vm-vcard.el
+++ b/lisp/vm-vcard.el
@@ -65,8 +65,7 @@
   (let* ((beg (vm-mm-layout-body-start layout))
          (end (vm-mm-layout-body-end layout))
          (buf (if (markerp beg) (marker-buffer beg) (current-buffer)))
-         (raw (vm-vcard-decode (save-excursion
-                                 (set-buffer buf)
+         (raw (vm-vcard-decode (with-current-buffer buf
                                  (save-restriction
                                    (widen)
                                    (buffer-substring beg end)))
@@ -79,8 +78,7 @@
 
 (defun vm-vcard-decode (string layout)
   (let ((buf (generate-new-buffer " *vcard decoding*")))
-    (save-excursion
-      (set-buffer buf)
+    (with-current-buffer buf
       (insert string)
       (vm-mime-transfer-decode-region layout (point-min) (point-max))
       (setq string (buffer-substring (point-min) (point-max))))
diff --git a/lisp/vm-virtual.el b/lisp/vm-virtual.el
index 767e24dbdb..2e73ad4d29 100644
--- a/lisp/vm-virtual.el
+++ b/lisp/vm-virtual.el
@@ -215,9 +215,8 @@ all the real folder buffers involved."
                                    (vm-real-message-of m))
                                   message-set)))
                         (if virtual
-                            (save-excursion
-                              (set-buffer
-                               (vm-buffer-of (vm-real-message-of m)))
+                            (with-current-buffer
+                               (vm-buffer-of (vm-real-message-of m))
                               (apply 'vm-vs-or m selectors))
                           (apply 'vm-vs-or m selectors)))
                (when (and vm-virtual-debug
@@ -981,8 +980,7 @@ any) for this selector to detect the occurrences in the 
text."
            vm-spam-words-file
            (file-readable-p vm-spam-words-file)
            (not (get-file-buffer vm-spam-words-file)))
-      (save-excursion
-        (set-buffer (find-file-noselect vm-spam-words-file))
+      (with-current-buffer (find-file-noselect vm-spam-words-file)
         (goto-char (point-min))
         (while (re-search-forward "^\\s-*\\([^#;].*\\)\\s-*$" (point-max) t)
           (setq vm-spam-words (cons (match-string 1) vm-spam-words)))
@@ -1366,8 +1364,7 @@ folder buffer (which should be the virtual folder in 
which M occurs)."
        (buffer-read-only nil)
        (modified (buffer-modified-p)))
     (unwind-protect
-       (save-excursion
-         (set-buffer (vm-buffer-of real-m))
+       (with-current-buffer (vm-buffer-of real-m)
          (save-restriction
            (widen)
            ;; must reference this now so that headers will be in
diff --git a/lisp/vm-w3m.el b/lisp/vm-w3m.el
index 9807ff8ed2..f972fa8302 100644
--- a/lisp/vm-w3m.el
+++ b/lisp/vm-w3m.el
@@ -128,9 +128,7 @@ by the minor-mode-keymap for emacs-w3m text, as determined 
by
 
 (defun vm-w3m-cid-retrieve (url &rest args)
   "Insert a content of URL."
-  (let ((message (save-excursion
-                   (set-buffer w3m-current-buffer)
-                   (car vm-message-pointer)))
+  (let ((message (with-current-buffer w3m-current-buffer                   
(car vm-message-pointer)))
         part
         type)
     (setq part (vm-mime-cid-retrieve url message))
@@ -189,8 +187,8 @@ If the prefix arg is given, all images are considered to be 
safe."
                      ((eq major-mode 'vm-mode)
                       vm-presentation-buffer))))
     (if (buffer-live-p buffer)
-       (save-excursion
-         (set-buffer buffer)
+       (with-current-buffer buffer
          (w3m-safe-toggle-inline-images arg)))))
 
+(provide 'vm-w3m)
 ;;; vm-w3m.el ends here
diff --git a/lisp/vm-window.el b/lisp/vm-window.el
index db43d67354..4edb543503 100644
--- a/lisp/vm-window.el
+++ b/lisp/vm-window.el
@@ -100,8 +100,7 @@
      (cond ((and buffer display)
            (if (and vm-display-buffer-hook
                     (null (vm-get-visible-buffer-window buffer)))
-               (progn (save-excursion
-                        (set-buffer buffer)
+               (progn (with-current-buffer buffer
                         (run-hooks 'vm-display-buffer-hook))
                       (switch-to-buffer buffer))
              (if (not (and (memq this-command commands)
@@ -111,8 +110,7 @@
           ((and buffer (not display))
            (if (and vm-undisplay-buffer-hook
                     (vm-get-visible-buffer-window buffer))
-               (progn (save-excursion
-                        (set-buffer buffer)
+               (progn (with-current-buffer buffer
                         (run-hooks 'vm-undisplay-buffer-hook)))
              (if (not (and (memq this-command commands)
                            (apply 'vm-set-window-configuration configs)))
@@ -240,8 +238,7 @@
                                              (if (and (stringp x)
                                                       (get-buffer x)
                                                       (zerop
-                                                       (save-excursion
-                                                         (set-buffer x)
+                                                       (with-current-buffer x
                                                          (buffer-size))))
                                                  nonexistent
                                                x )))))
@@ -311,8 +308,7 @@ window configurations."
     (vm-inform 5 "%s configuration recorded" tag)))
 
 (defun vm-buffer-to-label (buf)
-  (save-excursion
-    (set-buffer buf)
+  (with-current-buffer buf
     (cond ((eq major-mode 'vm-summary-mode)
           'summary)
          ((eq major-mode 'vm-folders-summary-mode)
diff --git a/lisp/vm.el b/lisp/vm.el
index 2e045f73c8..fa5036f69c 100644
--- a/lisp/vm.el
+++ b/lisp/vm.el
@@ -1267,8 +1267,7 @@ summary buffer to select a folder."
        (setq vm-folders-summary-buffer
              (or (get-buffer summary-buffer-name)
                  (vm-generate-new-multibyte-buffer summary-buffer-name)))
-       (save-excursion
-         (set-buffer vm-folders-summary-buffer)
+       (with-current-buffer vm-folders-summary-buffer
          (abbrev-mode 0)
          (auto-fill-mode 0)
          (vm-fsfemacs-nonmule-display-8bit-chars)

Reply via email to