diff options
| -rw-r--r-- | lisp/talk.el | 18 |
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)) |