[PATCH] test: make (kill-emacs) from emacsclient work with emacs 23.(1|2)

Tomi Ollila tomi.ollila at iki.fi
Fri Jan 13 00:17:28 PST 2012


emacsclient --eval '(kill-emacs)' makes emacs versions 23.1
and 23.2 ask user input from running emacs. Redefining
yes-or-no-p function when kill-emacs is executed for these
emacs versions in test-lib.el avoids this test problem.
---
Thanks Austin for your comments. Including 'activate' into defadvice
made it possible to use if (well, without progn...) instead of when
which makes this also marginally faster (as we're not byte-compiling
this).

 test/test-lib.el |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/test/test-lib.el b/test/test-lib.el
index 3b817c3..59c5868 100644
--- a/test/test-lib.el
+++ b/test/test-lib.el
@@ -26,6 +26,13 @@
 ;; `read' call.
 (setq read-file-name-function (lambda (&rest _) (read)))
 
+;; Work around a bug in emacs 23.1 and emacs 23.2 which prevents
+;; noninteractive (kill-emacs) from emacsclient.
+(if (and (= emacs-major-version 23) (< emacs-minor-version 3))
+  (defadvice kill-emacs (before disable-yes-or-no-p activate)
+    "Disable yes-or-no-p before executing kill-emacs"
+    (defun yes-or-no-p (prompt) t)))
+
 (defun notmuch-test-wait ()
   "Wait for process completion."
   (while (get-buffer-process (current-buffer))
-- 
1.7.7.3



More information about the notmuch mailing list