annotate lisp/talk.el @ 68498:528aecb860cf

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-30 Creator: Michael Olson <mwolson@gnu.org> Merge from erc--main--0 2006-01-30 Michael Olson <mwolson@gnu.org> * erc-stamp.el (erc-timestamp-right-align-by-pixel): New option that determines whether to use pixel values to align right timestamps. The default is not to do so, since it only works with Emacs22 on X, and even then some people have trouble. (erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
author Miles Bader <miles@gnu.org>
date Tue, 31 Jan 2006 00:24:36 +0000
parents 41bb365f41c4
children 3bd95f4f2941 532e0a9335a9 2d92f5c9d6ae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
1 ;;; talk.el --- allow several users to talk to each other through Emacs
11684
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1995, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12461
diff changeset
4
45078
829beb9a6a4b Follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38414
diff changeset
5 ;; Maintainer: FSF
11684
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Keywords: comm, frames
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12461
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
22 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
23 ;; Boston, MA 02110-1301, USA.
11684
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12461
diff changeset
27 ;; This is a multi-user talk package that runs in Emacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 12461
diff changeset
28 ;; Use talk-connect to bring a new person into the conversation.
11684
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;;; Code:
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 (defvar talk-display-alist nil
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 "Alist of displays on which Emacs talk is now running.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 Each element has the form (DISPLAY FRAME BUFFER).")
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;;;###autoload
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 (defun talk-connect (display)
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 "Connect to display DISPLAY for the Emacs talk group."
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 (interactive "sTalk to display: ")
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; Make sure we have an entry for the current display.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 (let ((mydisp (cdr (assq 'display (frame-parameters (selected-frame))))))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 (talk-add-display mydisp))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; Make sure we have an entry for the specified display.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 (talk-add-display display)
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; Add the new buffers to all talk frames.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 (talk-update-buffers))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 (defun talk-add-display (display)
12461
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
49 (let* ((elt (assoc display talk-display-alist))
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
50 (name (concat "*talk-" display "*"))
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
51 buffer frame)
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
52 (if (not (and elt (frame-live-p (setq frame (nth 1 elt)))))
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
53 (setq frame (make-frame-on-display display (list (cons 'name name)))))
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
54 (if (not (and elt (buffer-name (get-buffer (setq buffer (nth 2 elt))))))
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
55 (setq buffer (get-buffer-create name)))
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
56 (setq talk-display-alist
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
57 (cons (list display frame buffer) (delq elt talk-display-alist)))))
11684
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 (defun talk-disconnect ()
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 "Disconnect this display from the Emacs talk group."
12461
578abe49e2d3 (talk-disconnect): Make it interactive.
Richard M. Stallman <rms@gnu.org>
parents: 11684
diff changeset
61 (interactive)
11684
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 (let* ((mydisp (cdr (assq 'display (frame-parameters (selected-frame)))))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 (elt (assoc mydisp talk-display-alist)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 (delete-frame (nth 1 elt))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 (kill-buffer (nth 2 elt))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 (setq talk-display-alist (delq elt talk-display-alist))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 (talk-update-buffers)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 (defun talk-update-buffers ()
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 "Update all the talk frames so that each shows all the talk buffers."
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 (let ((tail talk-display-alist))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 (while tail
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 (let ((frame (nth 1 (car tail)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 (this-buffer (nth 2 (car tail)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 (buffers
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 (mapcar (function (lambda (elt) (nth 2 elt)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 talk-display-alist)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;; Put this display's own talk buffer
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;; at the front of the list.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 (setq buffers (cons this-buffer (delq this-buffer buffers)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 (talk-split-up-frame frame buffers))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 (setq tail (cdr tail)))))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 (defun talk-split-up-frame (frame buffers)
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 "Split FRAME into equal-sized windows displaying the buffers in BUFFERS.
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 Select the first of these windows, displaying the first of the buffers."
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 (let ((lines-per-buffer (/ (frame-height frame) (length buffers)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 (old-frame (selected-frame)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 (unwind-protect
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 (progn
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 (select-frame frame)
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 (select-window (frame-first-window frame))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 (delete-other-windows)
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 (while (progn
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 (switch-to-buffer (car buffers))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 (setq buffers (cdr buffers)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 (split-window-vertically lines-per-buffer)
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 (other-window 1))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 (select-window (frame-first-window frame)))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 (select-frame old-frame))))
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
102 (provide 'talk)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
103
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 45078
diff changeset
104 ;;; arch-tag: 7ab0ad88-1788-4886-a44c-ae685e6f8a1a
11684
b59ad1e42981 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 ;;; talk.el ends here