diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2010-10-31 23:35:06 -0400 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2010-10-31 23:35:06 -0400 |
commit | 381d186f82544c7c34478badef209f52feacd80f (patch) | |
tree | f42f58a5fdedb529a0aa650c9c455346a1f5abe3 | |
parent | 98cfec0d6935f25a54852caaa33112ea1ca4634b (diff) | |
download | emacs-381d186f82544c7c34478badef209f52feacd80f.tar.gz |
Prevent server-mode from issuing a prompt in kill-emacs-hook.
* server.el (server-start): New arg INHIBIT-PROMPT prevents asking
user for confirmation.
(server-force-stop): Use it.
(server-start): Use server-force-stop for kill-emacs-hook, to
avoid user interaction while killing Emacs.
-rw-r--r-- | lisp/ChangeLog | 8 | ||||
-rw-r--r-- | lisp/server.el | 28 |
2 files changed, 27 insertions, 9 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d2a1713ed27..bc43863e6b4 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2010-11-01 Chong Yidong <cyd@stupidchicken.com> + + * server.el (server-start): New arg INHIBIT-PROMPT prevents asking + user for confirmation. + (server-force-stop): Use it. + (server-start): Use server-force-stop for kill-emacs-hook, to + avoid user interaction while killing Emacs. + 2010-10-31 Stefan Monnier <monnier@iro.umontreal.ca> * vc/log-edit.el (log-edit-rewrite-fixes): New var. diff --git a/lisp/server.el b/lisp/server.el index 265b422e957..17d6743a0f7 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -485,7 +485,7 @@ See variable `server-auth-dir' for details." (error "The directory `%s' is unsafe" dir))))) ;;;###autoload -(defun server-start (&optional leave-dead) +(defun server-start (&optional leave-dead inhibit-prompt) "Allow this Emacs process to be a server for client processes. This starts a server communications subprocess through which client \"editors\" can send your editing commands to this Emacs @@ -495,7 +495,10 @@ Emacs distribution as your standard \"editor\". Optional argument LEAVE-DEAD (interactively, a prefix arg) means just kill any existing server communications subprocess. -If a server is already running, the server is not started. +If a server is already running, restart it. If clients are +running, ask the user for confirmation first, unless optional +argument INHIBIT-PROMPT is non-nil. + To force-start a server, do \\[server-force-delete] and then \\[server-start]." (interactive "P") @@ -503,12 +506,14 @@ To force-start a server, do \\[server-force-delete] and then ;; 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? "))) + (cond + ((and (daemonp) + (null (cdr (frame-list))) + (eq (selected-frame) terminal-frame)) + leave-dead) + (inhibit-prompt t) + (t (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 @@ -545,7 +550,7 @@ server or call `M-x server-force-delete' to forcibly disconnect it.") (add-hook 'delete-frame-functions 'server-handle-delete-frame) (add-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function) (add-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function) - (add-hook 'kill-emacs-hook (lambda () (server-mode -1))) ;Cleanup upon exit. + (add-hook 'kill-emacs-hook 'server-force-stop) ;Cleanup upon exit. (setq server-process (apply #'make-network-process :name server-name @@ -586,6 +591,11 @@ server or call `M-x server-force-delete' to forcibly disconnect it.") " " (int-to-string (emacs-pid)) "\n" auth-key))))))))) +(defun server-force-stop () + "Kill all connections to the current server. +This function is meant to be called from `kill-emacs-hook'." + (server-start nil t)) + ;;;###autoload (defun server-force-delete (&optional name) "Unconditionally delete connection file for server NAME. |