comparison lisp/files.el @ 95806:2e2ae1dd33cc

* emacs-lisp/map-ynp.el (map-y-or-n-p): Add support for other-window-scroll. * files.el (save-some-buffers-action-alist): Only use recursive-edit if the user enabled recursive-minibuffers.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Wed, 11 Jun 2008 01:47:48 +0000
parents ffc05d56ac32
children b76b9628d74f
comparison
equal deleted inserted replaced
95805:dc8b6f0d85e8 95806:2e2ae1dd33cc
4161 ;; return always nil, so that save-buffers-kill-emacs will not move 4161 ;; return always nil, so that save-buffers-kill-emacs will not move
4162 ;; over to the next unsaved buffer when calling `d'. 4162 ;; over to the next unsaved buffer when calling `d'.
4163 nil) 4163 nil)
4164 4164
4165 (defvar save-some-buffers-action-alist 4165 (defvar save-some-buffers-action-alist
4166 '((?\C-r 4166 `((?\C-r
4167 (lambda (buf) 4167 ,(lambda (buf)
4168 (view-buffer buf 4168 (if (not enable-recursive-minibuffers)
4169 (lambda (ignore) 4169 (progn (display-buffer buf)
4170 (exit-recursive-edit))) 4170 (setq other-window-scroll-buffer buf))
4171 (recursive-edit) 4171 (view-buffer buf (lambda (_) (exit-recursive-edit)))
4172 ;; Return nil to ask about BUF again. 4172 (recursive-edit))
4173 nil) 4173 ;; Return nil to ask about BUF again.
4174 nil)
4174 "view this buffer") 4175 "view this buffer")
4175 (?d (lambda (buf) 4176 (?d ,(lambda (buf)
4176 (save-window-excursion 4177 (if (null buffer-file-name)
4177 (diff-buffer-with-file buf)) 4178 (message "Not applicable: no file")
4178 (view-buffer (get-buffer-create "*Diff*") 4179 (save-window-excursion (diff-buffer-with-file buf))
4179 (lambda (ignore) (exit-recursive-edit))) 4180 (if (not enable-recursive-minibuffers)
4180 (recursive-edit) 4181 (progn (display-buffer (get-buffer-create "*Diff*"))
4181 nil) 4182 (setq other-window-scroll-buffer "*Diff*"))
4183 (view-buffer (get-buffer-create "*Diff*")
4184 (lambda (_) (exit-recursive-edit)))
4185 (recursive-edit)))
4186 ;; Return nil to ask about BUF again.
4187 nil)
4182 "view changes in this buffer")) 4188 "view changes in this buffer"))
4183 "ACTION-ALIST argument used in call to `map-y-or-n-p'.") 4189 "ACTION-ALIST argument used in call to `map-y-or-n-p'.")
4184 4190
4185 (defvar buffer-save-without-query nil 4191 (defvar buffer-save-without-query nil
4186 "Non-nil means `save-some-buffers' should save this buffer without asking.") 4192 "Non-nil means `save-some-buffers' should save this buffer without asking.")
4214 (save-buffer)))) 4220 (save-buffer))))
4215 ;; Ask about those buffers that merit it, 4221 ;; Ask about those buffers that merit it,
4216 ;; and record the number thus saved. 4222 ;; and record the number thus saved.
4217 (setq files-done 4223 (setq files-done
4218 (map-y-or-n-p 4224 (map-y-or-n-p
4219 (function 4225 (lambda (buffer)
4220 (lambda (buffer) 4226 (and (buffer-modified-p buffer)
4221 (and (buffer-modified-p buffer) 4227 (not (buffer-base-buffer buffer))
4222 (not (buffer-base-buffer buffer)) 4228 (or
4223 (or 4229 (buffer-file-name buffer)
4224 (buffer-file-name buffer) 4230 (and pred
4225 (and pred 4231 (progn
4226 (progn 4232 (set-buffer buffer)
4227 (set-buffer buffer) 4233 (and buffer-offer-save (> (buffer-size) 0)))))
4228 (and buffer-offer-save (> (buffer-size) 0))))) 4234 (or (not (functionp pred))
4229 (or (not (functionp pred)) 4235 (with-current-buffer buffer (funcall pred)))
4230 (with-current-buffer buffer (funcall pred))) 4236 (if arg
4231 (if arg 4237 t
4232 t 4238 (setq queried t)
4233 (setq queried t) 4239 (if (buffer-file-name buffer)
4234 (if (buffer-file-name buffer) 4240 (format "Save file %s? "
4235 (format "Save file %s? " 4241 (buffer-file-name buffer))
4236 (buffer-file-name buffer)) 4242 (format "Save buffer %s? "
4237 (format "Save buffer %s? " 4243 (buffer-name buffer))))))
4238 (buffer-name buffer))))))) 4244 (lambda (buffer)
4239 (function 4245 (with-current-buffer buffer
4240 (lambda (buffer) 4246 (save-buffer)))
4241 (set-buffer buffer) 4247 (buffer-list)
4242 (save-buffer)))
4243 (buffer-list)
4244 '("buffer" "buffers" "save") 4248 '("buffer" "buffers" "save")
4245 save-some-buffers-action-alist)) 4249 save-some-buffers-action-alist))
4246 ;; Maybe to save abbrevs, and record whether 4250 ;; Maybe to save abbrevs, and record whether
4247 ;; we either saved them or asked to. 4251 ;; we either saved them or asked to.
4248 (and save-abbrevs abbrevs-changed 4252 (and save-abbrevs abbrevs-changed