changeset 12461:578abe49e2d3

(talk-disconnect): Make it interactive. (talk-add-display): Ignore dead buffers and deleted frames.
author Richard M. Stallman <rms@gnu.org>
date Sat, 01 Jul 1995 19:40:13 +0000
parents 1e12a802df2b
children 5b4022385032
files lisp/talk.el
diffstat 1 files changed, 10 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/talk.el	Sat Jul 01 19:21:49 1995 +0000
+++ b/lisp/talk.el	Sat Jul 01 19:40:13 1995 +0000
@@ -43,17 +43,19 @@
   (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))