From c2bef98549811f2146cd9cbd5b34ad125ba4ddfb Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sat, 1 Jul 1995 19:40:13 +0000 Subject: [PATCH] (talk-disconnect): Make it interactive. (talk-add-display): Ignore dead buffers and deleted frames. --- lisp/talk.el | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lisp/talk.el b/lisp/talk.el index a4d3d1cfd58..74ed9ba0bef 100644 --- a/lisp/talk.el +++ b/lisp/talk.el @@ -43,17 +43,19 @@ Each element has the form (DISPLAY FRAME BUFFER).") (talk-update-buffers)) (defun talk-add-display (display) - (or (assoc display talk-display-alist) - (let* ((name (concat "*talk-" display "*")) - (buffer (get-buffer-create name)) - (frame (make-frame-on-display display - (list (cons 'name name))))) - (setq talk-display-alist - (cons (list display frame buffer) - talk-display-alist))))) + (let* ((elt (assoc display talk-display-alist)) + (name (concat "*talk-" display "*")) + buffer frame) + (if (not (and elt (frame-live-p (setq frame (nth 1 elt))))) + (setq frame (make-frame-on-display display (list (cons 'name name))))) + (if (not (and elt (buffer-name (get-buffer (setq buffer (nth 2 elt)))))) + (setq buffer (get-buffer-create name))) + (setq talk-display-alist + (cons (list display frame buffer) (delq elt talk-display-alist))))) (defun talk-disconnect () "Disconnect this display from the Emacs talk group." + (interactive) (let* ((mydisp (cdr (assq 'display (frame-parameters (selected-frame))))) (elt (assoc mydisp talk-display-alist))) (delete-frame (nth 1 elt)) -- 2.39.2