Mercurial > emacs
comparison lisp/server.el @ 83109:1707638677c9
Fix one more case of the previous error.
lisp/server.el (server-delete-client): Added noframe parameter.
(server-handle-delete-frame): Use it.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-149
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Mon, 19 Apr 2004 14:21:37 +0000 |
parents | c7a76f7d323c |
children | 7652900ea029 |
comparison
equal
deleted
inserted
replaced
83108:c7a76f7d323c | 83109:1707638677c9 |
---|---|
205 New clients have no properties." | 205 New clients have no properties." |
206 (unless (server-client proc) | 206 (unless (server-client proc) |
207 (setq server-clients (cons (cons proc nil) | 207 (setq server-clients (cons (cons proc nil) |
208 server-clients)))) | 208 server-clients)))) |
209 | 209 |
210 (defun server-delete-client (client) | 210 (defun server-delete-client (client &optional noframe) |
211 "Delete CLIENT, including its buffers, displays and frames." | 211 "Delete CLIENT, including its buffers, displays and frames. |
212 If NOFRAME is non-nil, let the frames live. (To be used from | |
213 `delete-frame-functions'." | |
212 ;; Force a new lookup of client (prevents infinite recursion). | 214 ;; Force a new lookup of client (prevents infinite recursion). |
213 (setq client (server-client | 215 (setq client (server-client |
214 (if (listp client) (car client) client))) | 216 (if (listp client) (car client) client))) |
215 (let ((proc (car client)) | 217 (let ((proc (car client)) |
216 (buffers (server-client-get client 'buffers))) | 218 (buffers (server-client-get client 'buffers))) |
233 (let ((tty (server-client-get client 'tty))) | 235 (let ((tty (server-client-get client 'tty))) |
234 (when (and tty (server-tty-live-p tty)) | 236 (when (and tty (server-tty-live-p tty)) |
235 (delete-tty tty))) | 237 (delete-tty tty))) |
236 | 238 |
237 ;; Delete the client's frames. | 239 ;; Delete the client's frames. |
238 (dolist (frame (frame-list)) | 240 (unless noframe |
239 (if (and (frame-live-p frame) | 241 (dolist (frame (frame-list)) |
240 (equal (car client) (frame-parameter frame 'client))) | 242 (if (and (frame-live-p frame) |
241 (delete-frame frame))) | 243 (equal (car client) (frame-parameter frame 'client))) |
244 (delete-frame frame)))) | |
242 | 245 |
243 ;; Delete the client's process. | 246 ;; Delete the client's process. |
244 (if (eq (process-status (car client)) 'open) | 247 (if (eq (process-status (car client)) 'open) |
245 (delete-process (car client))) | 248 (delete-process (car client))) |
246 | 249 |
283 (let ((proc (frame-parameter frame 'client))) | 286 (let ((proc (frame-parameter frame 'client))) |
284 (when (and proc (window-system frame)) | 287 (when (and proc (window-system frame)) |
285 ;; (Closing a terminal frame must not trigger a delete; | 288 ;; (Closing a terminal frame must not trigger a delete; |
286 ;; we must wait for delete-tty-after-functions.) | 289 ;; we must wait for delete-tty-after-functions.) |
287 (server-log (format "server-handle-delete-frame, frame %s" frame) proc) | 290 (server-log (format "server-handle-delete-frame, frame %s" frame) proc) |
288 (server-delete-client proc)))) | 291 (server-delete-client proc 'noframe)))) ; Let delete-frame delete the frame later. |
289 | 292 |
290 (defun server-handle-suspend-tty (tty) | 293 (defun server-handle-suspend-tty (tty) |
291 "Notify the emacsclient process to suspend itself when its tty device is suspended." | 294 "Notify the emacsclient process to suspend itself when its tty device is suspended." |
292 (dolist (proc (server-clients-with 'tty tty)) | 295 (dolist (proc (server-clients-with 'tty tty)) |
293 (server-log (format "server-handle-suspend-tty, tty %s" tty) proc) | 296 (server-log (format "server-handle-suspend-tty, tty %s" tty) proc) |