]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't prompt when killing an Emacs client if it's the last client
authorJim Porter <jporterbugs@gmail.com>
Sun, 9 Oct 2022 22:53:27 +0000 (15:53 -0700)
committerJim Porter <jporterbugs@gmail.com>
Mon, 10 Oct 2022 22:09:21 +0000 (15:09 -0700)
* lisp/server.el (server-kill-emacs-query-function): Ignore the
current client (if any) when checking for live clients (bug#58404).

lisp/server.el

index 3caa335c4eb0e66cf029691c51969493de3dfdb9..90d97c1538e404b7c78756bc81772dc4daa4c0d6 100644 (file)
@@ -1589,14 +1589,19 @@ specifically for the clients and did not exist before their request for it."
     (server-buffer-done (current-buffer))))
 
 (defun server-kill-emacs-query-function ()
-  "Ask before exiting Emacs if it has live clients.
+  "Ask before exiting Emacs if it has other live clients.
 A \"live client\" is a client with at least one live buffer
-associated with it."
-  (or (not (seq-some (lambda (proc)
-                       (seq-some #'buffer-live-p
-                                 (process-get proc 'buffers)))
-                     server-clients))
-      (yes-or-no-p "This Emacs session has clients; exit anyway? ")))
+associated with it.  These clients were (probably) started by
+external processes that are waiting for some buffers to be
+edited.  If there are any other clients, we don't want to fail
+their waiting processes, so ask the user to be sure."
+  (let ((this-client (frame-parameter nil 'client)))
+    (or (not (seq-some (lambda (proc)
+                         (unless (eq proc this-client)
+                           (seq-some #'buffer-live-p
+                                     (process-get proc 'buffers))))
+                       server-clients))
+        (yes-or-no-p "This Emacs session has other clients; exit anyway? "))))
 
 (defun server-kill-buffer ()
   "Remove the current buffer from its clients' buffer list.