aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2003-12-29 08:28:35 +0000
committerKaroly Lorentey2003-12-29 08:28:35 +0000
commitb2af72d2f0da11c271cac6fc823053d0018068b2 (patch)
tree3eb8facc529c3360f7c85416cc93249fb9b6a337 /lisp
parent9f729af551e991e5f6d49f329674f6802450d70f (diff)
downloademacs-b2af72d2f0da11c271cac6fc823053d0018068b2.tar.gz
emacs-b2af72d2f0da11c271cac6fc823053d0018068b2.zip
Make sure secondary frames are deleted when emacsclient quits.
lisp/server.el (server-sentinel): Delete frame if alive. Fix delq invocation on server-frames. (server-process-filter, server-buffer-done): Fix delq invocation on server-frames. src/cm.c (cmputc): Abort on write error, see what happens. src/keyboard.c (read_avail_input): Do delete_tty on read errors. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-21
Diffstat (limited to 'lisp')
-rw-r--r--lisp/server.el16
1 files changed, 9 insertions, 7 deletions
diff --git a/lisp/server.el b/lisp/server.el
index d57739fbef4..401668138c4 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -185,7 +185,9 @@ are done with it in the server.")
185 ;; Remove PROC from the list of clients. 185 ;; Remove PROC from the list of clients.
186 (when client 186 (when client
187 (setq server-clients (delq client server-clients)) 187 (setq server-clients (delq client server-clients))
188 (setq server-frames (delq client server-frames)) 188 (let ((frame (assq (car client) server-frames)))
189 (setq server-frames (delq frame server-frames))
190 (when (frame-live-p (cadr frame)) (delete-frame (cadr frame))))
189 (dolist (buf (cdr client)) 191 (dolist (buf (cdr client))
190 (with-current-buffer buf 192 (with-current-buffer buf
191 ;; Remove PROC from the clients of each buffer. 193 ;; Remove PROC from the clients of each buffer.
@@ -378,9 +380,9 @@ PROC is the server process. Format of STRING is \"PATH PATH PATH... \\n\"."
378 (if (null (cdr client)) 380 (if (null (cdr client))
379 ;; This client is empty; get rid of it immediately. 381 ;; This client is empty; get rid of it immediately.
380 (progn 382 (progn
381 (let ((frame (cadr (assq (car client) server-frames)))) 383 (let ((frame (assq (car client) server-frames)))
382 ;; Close the client's frame. 384 (setq server-frames (delq frame server-frames))
383 (when frame (delete-frame frame))) 385 (when (frame-live-p (cadr frame)) (delete-frame (cadr frame))))
384 (delete-process proc) 386 (delete-process proc)
385 (server-log "Close empty client" proc)) 387 (server-log "Close empty client" proc))
386 ;; We visited some buffer for this client. 388 ;; We visited some buffer for this client.
@@ -467,9 +469,9 @@ FOR-KILLING if non-nil indicates that we are called from `kill-buffer'."
467 ;; If client now has no pending buffers, 469 ;; If client now has no pending buffers,
468 ;; tell it that it is done, and forget it entirely. 470 ;; tell it that it is done, and forget it entirely.
469 (unless (cdr client) 471 (unless (cdr client)
470 (let ((frame (cadr (assq (car client) server-frames)))) 472 (let ((frame (assq (car client) server-frames)))
471 ;; Close the client's frame. 473 (setq server-frames (delq frame server-frames))
472 (when frame (delete-frame frame))) 474 (when (frame-live-p (cadr frame)) (delete-frame (cadr frame))))
473 (delete-process (car client)) 475 (delete-process (car client))
474 (server-log "Close" (car client)) 476 (server-log "Close" (car client))
475 (setq server-clients (delq client server-clients)))) 477 (setq server-clients (delq client server-clients))))