XEmacs 21.4.4 "Artificial Intelligence".
[chise/xemacs-chise.git.1] / lisp / files.el
index 8aee89c..d987bcb 100644 (file)
@@ -2424,38 +2424,43 @@ Optional second argument EXITING means ask about certain non-file buffers
 ;; XEmacs - do not use queried flag
 (defun save-some-buffers-1 (arg exiting switch-buffer)
   (let* ((switched nil)
+        (last-buffer nil)
         (files-done
          (map-y-or-n-p
           (lambda (buffer)
-            (and (buffer-modified-p buffer)
-                 (not (buffer-base-buffer buffer))
-                 ;; XEmacs addition:
-                 (not (symbol-value-in-buffer 'save-buffers-skip buffer))
-                 (or
-                  (buffer-file-name buffer)
-                  (and exiting
-                       (progn
-                         (set-buffer buffer)
-                         (and buffer-offer-save (> (buffer-size) 0)))))
-                 (if arg
-                     t
-                   ;; #### We should provide a per-buffer means to
-                   ;; disable the switching.  For instance, you might
-                   ;; want to turn it off for buffers the contents of
-                   ;; which is meaningless to humans, such as
-                   ;; `.newsrc.eld'.
-                   (when switch-buffer
-                     (unless (one-window-p)
-                       (delete-other-windows))
-                     (setq switched t)
-                     ;; #### Consider using `display-buffer' here for 21.1!
-                     ;;(display-buffer buffer nil (selected-frame)))
-                     (switch-to-buffer buffer t))
-                   (if (buffer-file-name buffer)
-                       (format "Save file %s? "
-                               (buffer-file-name buffer))
-                     (format "Save buffer %s? "
-                             (buffer-name buffer))))))
+            (prog1
+                (and (buffer-modified-p buffer)
+                     (not (buffer-base-buffer buffer))
+                     ;; XEmacs addition:
+                     (not (symbol-value-in-buffer 'save-buffers-skip buffer))
+                     (or
+                      (buffer-file-name buffer)
+                      (and exiting
+                           (progn
+                             (set-buffer buffer)
+                             (and buffer-offer-save (> (buffer-size) 0)))))
+                     (if arg
+                         t
+                       ;; #### We should provide a per-buffer means to
+                       ;; disable the switching.  For instance, you might
+                       ;; want to turn it off for buffers the contents of
+                       ;; which is meaningless to humans, such as
+                       ;; `.newsrc.eld'.
+                       (when (and switch-buffer
+                                  ;; map-y-or-n-p is displaying help
+                                  (not (eq last-buffer buffer)))
+                         (unless (one-window-p)
+                           (delete-other-windows))
+                         (setq switched t)
+                         ;; #### Consider using `display-buffer' here for 21.1!
+                         ;;(display-buffer buffer nil (selected-frame)))
+                         (switch-to-buffer buffer t))
+                       (if (buffer-file-name buffer)
+                           (format "Save file %s? "
+                                   (buffer-file-name buffer))
+                         (format "Save buffer %s? "
+                                 (buffer-name buffer)))))
+              (setq last-buffer buffer)))
           (lambda (buffer)
             (set-buffer buffer)
             (condition-case ()