mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-16 17:24:23 +00:00
files.el: avoid asking whether to kill Emacs multiple times
* lisp/files.el (save-buffers-kill-emacs): If `confirm-kill-emacs' is set, but user has just been asked whether they really want to kill Emacs (for example with a ‘Modified buffers exist; exit anyway?’ prompt) , do not ask them for another confirmation.
This commit is contained in:
parent
c9d238316c
commit
5a971bd302
2 changed files with 41 additions and 29 deletions
|
|
@ -1,3 +1,10 @@
|
|||
2015-01-30 Michal Nazarewicz <mina86@mina86.com>
|
||||
|
||||
* lisp/files.el (save-buffers-kill-emacs): If `confirm-kill-emacs'
|
||||
is set, but user has just been asked whether they really want to
|
||||
kill Emacs (for example with a ‘Modified buffers exist; exit
|
||||
anyway?’ prompt), do not ask them for another confirmation.
|
||||
|
||||
2015-01-29 Jay Belanger <jay.p.belanger@gmail.com>
|
||||
|
||||
* lisp/calc/calc-units.el (calc-convert-exact-units): New function.
|
||||
|
|
|
|||
|
|
@ -6590,35 +6590,40 @@ Runs the members of `kill-emacs-query-functions' in turn and stops
|
|||
if any returns nil. If `confirm-kill-emacs' is non-nil, calls it."
|
||||
(interactive "P")
|
||||
(save-some-buffers arg t)
|
||||
(and (or (not (memq t (mapcar (function
|
||||
(lambda (buf) (and (buffer-file-name buf)
|
||||
(buffer-modified-p buf))))
|
||||
(buffer-list))))
|
||||
(yes-or-no-p "Modified buffers exist; exit anyway? "))
|
||||
(or (not (fboundp 'process-list))
|
||||
;; process-list is not defined on MSDOS.
|
||||
(let ((processes (process-list))
|
||||
active)
|
||||
(while processes
|
||||
(and (memq (process-status (car processes)) '(run stop open listen))
|
||||
(process-query-on-exit-flag (car processes))
|
||||
(setq active t))
|
||||
(setq processes (cdr processes)))
|
||||
(or (not active)
|
||||
(with-current-buffer-window
|
||||
(get-buffer-create "*Process List*") nil
|
||||
#'(lambda (window _value)
|
||||
(with-selected-window window
|
||||
(unwind-protect
|
||||
(yes-or-no-p "Active processes exist; kill them and exit anyway? ")
|
||||
(when (window-live-p window)
|
||||
(quit-restore-window window 'kill)))))
|
||||
(list-processes t)))))
|
||||
;; Query the user for other things, perhaps.
|
||||
(run-hook-with-args-until-failure 'kill-emacs-query-functions)
|
||||
(or (null confirm-kill-emacs)
|
||||
(funcall confirm-kill-emacs "Really exit Emacs? "))
|
||||
(kill-emacs)))
|
||||
(let ((confirm confirm-kill-emacs))
|
||||
(and
|
||||
(or (not (memq t (mapcar (function
|
||||
(lambda (buf) (and (buffer-file-name buf)
|
||||
(buffer-modified-p buf))))
|
||||
(buffer-list))))
|
||||
(progn (setq confirm nil)
|
||||
(yes-or-no-p "Modified buffers exist; exit anyway? ")))
|
||||
(or (not (fboundp 'process-list))
|
||||
;; process-list is not defined on MSDOS.
|
||||
(let ((processes (process-list))
|
||||
active)
|
||||
(while processes
|
||||
(and (memq (process-status (car processes)) '(run stop open listen))
|
||||
(process-query-on-exit-flag (car processes))
|
||||
(setq active t))
|
||||
(setq processes (cdr processes)))
|
||||
(or (not active)
|
||||
(with-current-buffer-window
|
||||
(get-buffer-create "*Process List*") nil
|
||||
#'(lambda (window _value)
|
||||
(with-selected-window window
|
||||
(unwind-protect
|
||||
(progn
|
||||
(setq confirm nil)
|
||||
(yes-or-no-p "Active processes exist; kill them and exit anyway? "))
|
||||
(when (window-live-p window)
|
||||
(quit-restore-window window 'kill)))))
|
||||
(list-processes t)))))
|
||||
;; Query the user for other things, perhaps.
|
||||
(run-hook-with-args-until-failure 'kill-emacs-query-functions)
|
||||
(or (null confirm)
|
||||
(funcall confirm "Really exit Emacs? "))
|
||||
(kill-emacs))))
|
||||
|
||||
(defun save-buffers-kill-terminal (&optional arg)
|
||||
"Offer to save each buffer, then kill the current connection.
|
||||
|
|
|
|||
Loading…
Reference in a new issue