diff options
| author | Karoly Lorentey | 2003-12-29 08:28:35 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2003-12-29 08:28:35 +0000 |
| commit | b2af72d2f0da11c271cac6fc823053d0018068b2 (patch) | |
| tree | 3eb8facc529c3360f7c85416cc93249fb9b6a337 /lisp | |
| parent | 9f729af551e991e5f6d49f329674f6802450d70f (diff) | |
| download | emacs-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.el | 16 |
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)))) |