aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/talk.el18
1 files 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).")
43 (talk-update-buffers)) 43 (talk-update-buffers))
44 44
45(defun talk-add-display (display) 45(defun talk-add-display (display)
46 (or (assoc display talk-display-alist) 46 (let* ((elt (assoc display talk-display-alist))
47 (let* ((name (concat "*talk-" display "*")) 47 (name (concat "*talk-" display "*"))
48 (buffer (get-buffer-create name)) 48 buffer frame)
49 (frame (make-frame-on-display display 49 (if (not (and elt (frame-live-p (setq frame (nth 1 elt)))))
50 (list (cons 'name name))))) 50 (setq frame (make-frame-on-display display (list (cons 'name name)))))
51 (setq talk-display-alist 51 (if (not (and elt (buffer-name (get-buffer (setq buffer (nth 2 elt))))))
52 (cons (list display frame buffer) 52 (setq buffer (get-buffer-create name)))
53 talk-display-alist))))) 53 (setq talk-display-alist
54 (cons (list display frame buffer) (delq elt talk-display-alist)))))
54 55
55(defun talk-disconnect () 56(defun talk-disconnect ()
56 "Disconnect this display from the Emacs talk group." 57 "Disconnect this display from the Emacs talk group."
58 (interactive)
57 (let* ((mydisp (cdr (assq 'display (frame-parameters (selected-frame))))) 59 (let* ((mydisp (cdr (assq 'display (frame-parameters (selected-frame)))))
58 (elt (assoc mydisp talk-display-alist))) 60 (elt (assoc mydisp talk-display-alist)))
59 (delete-frame (nth 1 elt)) 61 (delete-frame (nth 1 elt))