# HG changeset patch # User Richard M. Stallman # Date 804627613 0 # Node ID 578abe49e2d32ab04b52270b39489cb8fdab1faa # Parent 1e12a802df2bbdfa92e174af5bc6c6276e82540d (talk-disconnect): Make it interactive. (talk-add-display): Ignore dead buffers and deleted frames. diff -r 1e12a802df2b -r 578abe49e2d3 lisp/talk.el --- 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))