From: Philipp Stephani <p.stephani2@gmail.com>
To: Emacs developers <emacs-devel@gnu.org>
Subject: New customization option for killing processes without asking
Date: Tue, 27 Sep 2016 18:53:40 +0000 [thread overview]
Message-ID: <CAArVCkRJ+Go8sh5ChDDhzG_yqx_6xN8W=Aj3gTOmKt7x5Or6MA@mail.gmail.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 340 bytes --]
Hi,
there seem to be sufficiently many people annoyed by the "Active processes
exist; kill them and exit anyway" prompt (see e.g.
http://stackoverflow.com/q/2706527/178761) that I created a new
customization option to make prompting optional. I've attached a patch,
which I can push to master unless there are complaints.
Thanks,
Philipp
[-- Attachment #1.2: Type: text/html, Size: 484 bytes --]
[-- Attachment #2: 0001-Make-querying-to-kill-processes-customizable.txt --]
[-- Type: text/plain, Size: 3398 bytes --]
From b7adb3930de7cc422b2beee61cb20285a3916571 Mon Sep 17 00:00:00 2001
From: Philipp Stephani <phst@google.com>
Date: Tue, 27 Sep 2016 20:47:23 +0200
Subject: [PATCH] Make querying to kill processes customizable
Introduce a new customization option, `confirm-kill-processes', that
users can set to nil if they don't want Emacs to nag them about killing
processes.
* lisp/files.el (confirm-kill-processes): New customization option.
(save-buffers-kill-emacs): Use customization option.
* test/lisp/files-tests.el
(files-test--save-buffers-kill-emacs--confirm-kill-processes): Add
test for new customization option.
---
lisp/files.el | 14 +++++++++++++-
test/lisp/files-tests.el | 19 +++++++++++++++++++
2 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/lisp/files.el b/lisp/files.el
index 4bd708d..f481b99 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -6757,11 +6757,22 @@ confirm-kill-emacs
:group 'convenience
:version "21.1")
+(defcustom confirm-kill-processes t
+ "Non-nil if Emacs should confirm killing processes on exit.
+If this variable is nil, the value of
+`process-query-on-exit-flag' is ignored. Otherwise, if there are
+processes with a non-nil `process-query-on-exit-flag', Emacs will
+prompt the user before killing them."
+ :type 'boolean
+ :group 'convenience
+ :version "26.1")
+
(defun save-buffers-kill-emacs (&optional arg)
"Offer to save each buffer, then kill this Emacs process.
With prefix ARG, silently save all file-visiting buffers without asking.
If there are active processes where `process-query-on-exit-flag'
-returns non-nil, asks whether processes should be killed.
+returns non-nil and `confirm-kill-processes' is non-nil,
+asks whether processes should be killed.
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")
@@ -6776,6 +6787,7 @@ save-buffers-kill-emacs
(yes-or-no-p "Modified buffers exist; exit anyway? ")))
(or (not (fboundp 'process-list))
;; process-list is not defined on MSDOS.
+ (not confirm-kill-processes)
(let ((processes (process-list))
active)
(while processes
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index 479848a..581c8bf 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -197,5 +197,24 @@ files-test-bug-18141-file
(setenv "FOO" foo-env)
(setenv "BAR" bar-env))))
+(ert-deftest files-test--save-buffers-kill-emacs--confirm-kill-processes ()
+ "Test that `save-buffers-kill-emacs' honors
+`confirm-kill-processes'."
+ (cl-letf* ((yes-or-no-p-prompts nil)
+ ((symbol-function #'yes-or-no-p)
+ (lambda (prompt)
+ (push prompt yes-or-no-p-prompts)
+ nil))
+ (kill-emacs-args nil)
+ ((symbol-function #'kill-emacs)
+ (lambda (&optional arg) (push arg kill-emacs-args)))
+ (process (make-process :name "sleep"
+ :command '("/bin/sleep" "1000")))
+ (confirm-kill-processes nil))
+ (save-buffers-kill-emacs)
+ (kill-process process)
+ (should-not yes-or-no-p-prompts)
+ (should (equal kill-emacs-args '(nil)))))
+
(provide 'files-tests)
;;; files-tests.el ends here
--
2.10.0
next reply other threads:[~2016-09-27 18:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-27 18:53 Philipp Stephani [this message]
2016-09-27 19:17 ` New customization option for killing processes without asking Eli Zaretskii
2016-09-28 11:41 ` Philipp Stephani
2016-10-01 8:00 ` Eli Zaretskii
2016-10-01 12:26 ` Philipp Stephani
2016-09-27 19:49 ` Clément Pit--Claudel
2016-10-21 2:07 ` Daniel Colascione
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAArVCkRJ+Go8sh5ChDDhzG_yqx_6xN8W=Aj3gTOmKt7x5Or6MA@mail.gmail.com' \
--to=p.stephani2@gmail.com \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.