changeset 101326:b837d61f9eba

(server-start): Allow server to shut down when no frames are available in daemon-mode.
author Chong Yidong <cyd@stupidchicken.com>
date Wed, 21 Jan 2009 20:33:17 +0000
parents 945f3656919f
children b0eef2ac5a59
files lisp/server.el
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/server.el	Wed Jan 21 20:28:27 2009 +0000
+++ b/lisp/server.el	Wed Jan 21 20:33:17 2009 +0000
@@ -465,10 +465,16 @@
 To force-start a server, do \\[server-force-delete] and then
 \\[server-start]."
   (interactive "P")
-  (when (or
-	 (not server-clients)
-	 (yes-or-no-p
-	  "The current server still has clients; delete them? "))
+  (when (or (not server-clients)
+	    ;; Ask the user before deleting existing clients---except
+	    ;; when we can't get user input, which may happen when
+	    ;; doing emacsclient --eval "(kill-emacs)" in daemon mode.
+	    (if (and (daemonp)
+		     (null (cdr (frame-list)))
+		     (eq (selected-frame) terminal-frame))
+		leave-dead
+	      (yes-or-no-p
+	       "The current server still has clients; delete them? ")))
     (let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir))
 	   (server-file (expand-file-name server-name server-dir)))
       (when server-process
@@ -979,7 +985,7 @@
 			     ;; We can't use the Emacs daemon's
 			     ;; terminal frame.
 			     (not (and (daemonp)
-				       (= (length (frame-list)) 1)
+				       (null (cdr (frame-list)))
 				       (eq (selected-frame)
 					   terminal-frame)))))
 		    (setq tty-name nil tty-type nil)