Mercurial > emacs
annotate lisp/erc/erc-track.el @ 97366:d2c211c8ceda
(w32_list_system_processes, w32_system_process_attributes): Add prototypes.
(Qeuid, Qegid, Qcomm, Qstate, Qppid, Qpgrp, Qsess, Qttname)
(Qminflt, Qmajflt, Qcminflt, Qcmajflt, Qutime, Qstime, Qcutime)
(Qpri, Qnice, Qthcount, Qstart, Qvsize, Qrss, Qargs, Quser, Qgroup)
(Qetime, Qpcpu, Qpmem, Qtpgid, Qcstime): Add extern declarations.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 09 Aug 2008 17:53:30 +0000 |
parents | 2a734255bcc7 |
children | a9dc0e7c3f2b |
rev | line source |
---|---|
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1 ;;; erc-track.el --- Track modified channel buffers |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
2 |
76856 | 3 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, |
79706 | 4 ;; 2007, 2008 Free Software Foundation, Inc. |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
5 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
6 ;; Author: Mario Lang <mlang@delysid.org> |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
7 ;; Keywords: comm, faces |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
8 ;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcChannelTracking |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
9 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
10 ;; This file is part of GNU Emacs. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
11 |
94660
2a734255bcc7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92128
diff
changeset
|
12 ;; GNU Emacs is free software: you can redistribute it and/or modify |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
13 ;; it under the terms of the GNU General Public License as published by |
94660
2a734255bcc7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92128
diff
changeset
|
14 ;; the Free Software Foundation, either version 3 of the License, or |
2a734255bcc7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92128
diff
changeset
|
15 ;; (at your option) any later version. |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
16 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
17 ;; GNU Emacs is distributed in the hope that it will be useful, |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
20 ;; GNU General Public License for more details. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
21 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
22 ;; You should have received a copy of the GNU General Public License |
94660
2a734255bcc7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92128
diff
changeset
|
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
24 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
25 ;;; Commentary: |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
26 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
27 ;; Highlights keywords and pals (friends), and hides or highlights fools |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
28 ;; (using a dark color). Add to your ~/.emacs: |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
29 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
30 ;; (require 'erc-track) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
31 ;; (erc-track-mode 1) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
32 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
33 ;; Todo: |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
34 ;; * Add extensibility so that custom functions can track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
35 ;; custom modification types. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
36 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
37 (eval-when-compile (require 'cl)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
38 (require 'erc) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
39 (require 'erc-compat) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
40 (require 'erc-match) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
41 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
42 ;;; Code: |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
43 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
44 (defgroup erc-track nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
45 "Track active buffers and show activity in the modeline." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
46 :group 'erc) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
47 |
76856 | 48 (defcustom erc-track-enable-keybindings 'ask |
49 "Whether to enable the ERC track keybindings, namely: | |
50 `C-c C-SPC' and `C-c C-@', which both do the same thing. | |
51 | |
52 The default is to check to see whether these keys are used | |
53 already: if not, then enable the ERC track minor mode, which | |
54 provides these keys. Otherwise, do not touch the keys. | |
55 | |
56 This can alternatively be set to either t or nil, which indicate | |
57 respectively always to enable ERC track minor mode or never to | |
58 enable ERC track minor mode. | |
59 | |
60 The reason for using this default value is to both (1) adhere to | |
61 the Emacs development guidelines which say not to touch keys of | |
62 the form C-c C-<something> and also (2) to meet the expectations | |
63 of long-time ERC users, many of whom rely on these keybindings." | |
64 :group 'erc-track | |
65 :type '(choice (const :tag "Ask, if used already" ask) | |
66 (const :tag "Enable" t) | |
67 (const :tag "Disable" nil))) | |
68 | |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
69 (defcustom erc-track-visibility t |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
70 "Where do we look for buffers to determine their visibility? |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
71 The value of this variable determines, when a buffer is considered |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
72 visible or invisible. New messages in invisible buffers are tracked, |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
73 while switching to visible buffers when they are tracked removes them |
76856 | 74 from the list. See also `erc-track-when-inactive'. |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
75 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
76 Possible values are: |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
77 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
78 t - all frames |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
79 visible - all visible frames |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
80 nil - only the selected frame |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
81 selected-visible - only the selected frame if it is visible |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
82 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
83 Activity means that there was no user input in the last 10 seconds." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
84 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
85 :type '(choice (const :tag "All frames" t) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
86 (const :tag "All visible frames" visible) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
87 (const :tag "Only the selected frame" nil) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
88 (const :tag "Only the selected frame if it was active" |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
89 active))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
90 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
91 (defcustom erc-track-exclude nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
92 "A list targets (channel names or query targets) which should not be tracked." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
93 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
94 :type '(repeat string)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
95 |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
96 (defcustom erc-track-remove-disconnected-buffers nil |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
97 "*If true, remove buffers associated with a server that is |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
98 disconnected from `erc-modified-channels-alist'." |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
99 :group 'erc-track |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
100 :type 'boolean) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
101 |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
102 (defcustom erc-track-exclude-types '("NICK" "333" "353") |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
103 "*List of message types to be ignored. |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
104 This list could look like '(\"JOIN\" \"PART\"). |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
105 |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
106 By default, exclude changes of nicknames (NICK), display of who |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
107 set the channel topic (333), and listing of users on the current |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
108 channel (353)." |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
109 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
110 :type 'erc-message-type) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
111 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
112 (defcustom erc-track-exclude-server-buffer nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
113 "*If true, don't perform tracking on the server buffer; this is |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
114 useful for excluding all the things like MOTDs from the server and |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
115 other miscellaneous functions." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
116 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
117 :type 'boolean) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
118 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
119 (defcustom erc-track-shorten-start 1 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
120 "This number specifies the minimum number of characters a channel name in |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
121 the mode-line should be reduced to." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
122 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
123 :type 'number) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
124 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
125 (defcustom erc-track-shorten-cutoff 4 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
126 "All channel names longer than this value will be shortened." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
127 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
128 :type 'number) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
129 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
130 (defcustom erc-track-shorten-aggressively nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
131 "*If non-nil, channel names will be shortened more aggressively. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
132 Usually, names are not shortened if this will save only one character. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
133 Example: If there are two channels, #linux-de and #linux-fr, then |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
134 normally these will not be shortened. When shortening aggressively, |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
135 however, these will be shortened to #linux-d and #linux-f. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
136 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
137 If this variable is set to `max', then channel names will be shortened |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
138 to the max. Usually, shortened channel names will remain unique for a |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
139 given set of existing channels. When shortening to the max, the shortened |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
140 channel names will be unique for the set of active channels only. |
71883 | 141 Example: If there are two active channels #emacs and #vi, and two inactive |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
142 channels #electronica and #folk, then usually the active channels are |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
143 shortened to #em and #v. When shortening to the max, however, #emacs is |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
144 not compared to #electronica -- only to #vi, therefore it can be shortened |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
145 even more and the result is #e and #v. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
146 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
147 This setting is used by `erc-track-shorten-names'." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
148 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
149 :type '(choice (const :tag "No" nil) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
150 (const :tag "Yes" t) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
151 (const :tag "Max" max))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
152 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
153 (defcustom erc-track-shorten-function 'erc-track-shorten-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
154 "*This function will be used to reduce the channel names before display. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
155 It takes one argument, CHANNEL-NAMES which is a list of strings. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
156 It should return a list of strings of the same number of elements. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
157 If nil instead of a function, shortening is disabled." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
158 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
159 :type '(choice (const :tag "Disabled") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
160 function)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
161 |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
162 (defcustom erc-track-list-changed-hook nil |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
163 "Hook that is run whenever the contents of |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
164 `erc-modified-channels-alist' changes. |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
165 |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
166 This is useful for people that don't use the default mode-line |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
167 notification but instead use a separate mechanism to provide |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
168 notification of channel activity." |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
169 :group 'erc-track |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
170 :type 'hook) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
171 |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
172 (defcustom erc-track-use-faces t |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
173 "*Use faces in the mode-line. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
174 The faces used are the same as used for text in the buffers. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
175 \(e.g. `erc-pal-face' is used if a pal sent a message to that channel.)" |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
176 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
177 :type 'boolean) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
178 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
179 (defcustom erc-track-faces-priority-list |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
180 '(erc-error-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
181 (erc-nick-default-face erc-current-nick-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
182 erc-current-nick-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
183 erc-keyword-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
184 (erc-nick-default-face erc-pal-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
185 erc-pal-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
186 erc-nick-msg-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
187 erc-direct-msg-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
188 (erc-button erc-default-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
189 (erc-nick-default-face erc-dangerous-host-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
190 erc-dangerous-host-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
191 erc-nick-default-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
192 (erc-nick-default-face erc-default-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
193 erc-default-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
194 erc-action-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
195 (erc-nick-default-face erc-fool-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
196 erc-fool-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
197 erc-notice-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
198 erc-input-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
199 erc-prompt-face) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
200 "A list of faces used to highlight active buffer names in the modeline. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
201 If a message contains one of the faces in this list, the buffer name will |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
202 be highlighted using that face. The first matching face is used." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
203 :group 'erc-track |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
204 :type '(repeat (choice face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
205 (repeat :tag "Combination" face)))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
206 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
207 (defcustom erc-track-priority-faces-only nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
208 "Only track text highlighted with a priority face. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
209 If you would like to ignore changes in certain channels where there |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
210 are no faces corresponding to your `erc-track-faces-priority-list', set |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
211 this variable. You can set a list of channel name strings, so those |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
212 will be ignored while all other channels will be tracked as normal. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
213 Other options are 'all, to apply this to all channels or nil, to disable |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
214 this feature. |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
215 |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
216 Note: If you have a lot of faces listed in `erc-track-faces-priority-list', |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
217 setting this variable might not be very useful." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
218 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
219 :type '(choice (const nil) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
220 (repeat string) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
221 (const all))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
222 |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
223 (defcustom erc-track-faces-normal-list |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
224 '((erc-button erc-default-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
225 (erc-nick-default-face erc-dangerous-host-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
226 erc-dangerous-host-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
227 erc-nick-default-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
228 (erc-nick-default-face erc-default-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
229 erc-default-face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
230 erc-action-face) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
231 "A list of faces considered to be part of normal conversations. |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
232 This list is used to highlight active buffer names in the modeline. |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
233 |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
234 If a message contains one of the faces in this list, and the |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
235 previous modeline face for this buffer is also in this list, then |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
236 the buffer name will be highlighted using the face from the |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
237 message. This gives a rough indication that active conversations |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
238 are occurring in these channels. |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
239 |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
240 The effect may be disabled by setting this variable to nil." |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
241 :group 'erc-track |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
242 :type '(repeat (choice face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
243 (repeat :tag "Combination" face)))) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
244 |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
245 (defcustom erc-track-position-in-mode-line 'before-modes |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
246 "Where to show modified channel information in the mode-line. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
247 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
248 Setting this variable only has effects in GNU Emacs versions above 21.3. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
249 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
250 Choices are: |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
251 'before-modes - add to the beginning of `mode-line-modes', |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
252 'after-modes - add to the end of `mode-line-modes', |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
253 t - add to the end of `global-mode-string', |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
254 nil - don't add to mode line." |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
255 :group 'erc-track |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
256 :type '(choice (const :tag "Just before mode information" before-modes) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
257 (const :tag "Just after mode information" after-modes) |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
258 (const :tag "After all other information" t) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
259 (const :tag "Don't display in mode line" nil)) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
260 :set (lambda (sym val) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
261 (set sym val) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
262 (when (and (boundp 'erc-track-mode) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
263 erc-track-mode) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
264 (erc-track-remove-from-mode-line) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
265 (erc-track-add-to-mode-line val)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
266 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
267 (defun erc-modified-channels-object (strings) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
268 "Generate a new `erc-modified-channels-object' based on STRINGS. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
269 If STRINGS is nil, we initialize `erc-modified-channels-object' to |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
270 an appropriate initial value for this flavor of Emacs." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
271 (if strings |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
272 (if (featurep 'xemacs) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
273 (let ((e-m-c-s '("["))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
274 (push (cons (extent-at 0 (car strings)) (car strings)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
275 e-m-c-s) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
276 (dolist (string (cdr strings)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
277 (push "," e-m-c-s) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
278 (push (cons (extent-at 0 string) string) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
279 e-m-c-s)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
280 (push "] " e-m-c-s) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
281 (reverse e-m-c-s)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
282 (concat (if (eq erc-track-position-in-mode-line 'after-modes) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
283 "[" " [") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
284 (mapconcat 'identity (nreverse strings) ",") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
285 (if (eq erc-track-position-in-mode-line 'before-modes) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
286 "] " "]"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
287 (if (featurep 'xemacs) '() ""))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
288 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
289 (defvar erc-modified-channels-object (erc-modified-channels-object nil) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
290 "Internal object used for displaying modified channels in the mode line.") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
291 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
292 (put 'erc-modified-channels-object 'risky-local-variable t); allow properties |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
293 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
294 (defvar erc-modified-channels-alist nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
295 "An ALIST used for tracking channel modification activity. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
296 Each element looks like (BUFFER COUNT FACE) where BUFFER is a buffer |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
297 object of the channel the entry corresponds to, COUNT is a number |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
298 indicating how often activity was noticed, and FACE is the face to use |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
299 when displaying the buffer's name. See `erc-track-faces-priority-list', |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
300 and `erc-track-showcount'. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
301 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
302 Entries in this list should only happen for buffers where activity occurred |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
303 while the buffer was not visible.") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
304 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
305 (defcustom erc-track-showcount nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
306 "If non-nil, count of unseen messages will be shown for each channel." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
307 :type 'boolean |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
308 :group 'erc-track) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
309 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
310 (defcustom erc-track-showcount-string ":" |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
311 "The string to display between buffer name and the count in the mode line. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
312 The default is a colon, resulting in \"#emacs:9\"." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
313 :type 'string |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
314 :group 'erc-track) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
315 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
316 (defcustom erc-track-switch-from-erc t |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
317 "If non-nil, `erc-track-switch-buffer' will return to the last non-erc buffer |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
318 when there are no more active channels." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
319 :type 'boolean |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
320 :group 'erc-track) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
321 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
322 (defcustom erc-track-switch-direction 'oldest |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
323 "Direction `erc-track-switch-buffer' should switch. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
324 |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
325 importance - find buffer with the most important message |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
326 oldest - find oldest active buffer |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
327 newest - find newest active buffer |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
328 leastactive - find buffer with least unseen messages |
84636
ffc87ddd4025
Sync changes from upstream ERC
Michael Olson <mwolson@gnu.org>
parents:
84387
diff
changeset
|
329 mostactive - find buffer with most unseen messages. |
ffc87ddd4025
Sync changes from upstream ERC
Michael Olson <mwolson@gnu.org>
parents:
84387
diff
changeset
|
330 |
ffc87ddd4025
Sync changes from upstream ERC
Michael Olson <mwolson@gnu.org>
parents:
84387
diff
changeset
|
331 If set to 'importance, the importance is determined by position |
ffc87ddd4025
Sync changes from upstream ERC
Michael Olson <mwolson@gnu.org>
parents:
84387
diff
changeset
|
332 in `erc-track-faces-priority-list', where first is most |
ffc87ddd4025
Sync changes from upstream ERC
Michael Olson <mwolson@gnu.org>
parents:
84387
diff
changeset
|
333 important." |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
334 :group 'erc-track |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
335 :type '(choice (const importance) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
336 (const oldest) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
337 (const newest) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
338 (const leastactive) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
339 (const mostactive))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
340 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
341 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
342 (defun erc-track-remove-from-mode-line () |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
343 "Remove `erc-track-modified-channels' from the mode-line" |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
344 (when (boundp 'mode-line-modes) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
345 (setq mode-line-modes |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
346 (remove '(t erc-modified-channels-object) mode-line-modes))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
347 (when (consp global-mode-string) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
348 (setq global-mode-string |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
349 (delq 'erc-modified-channels-object global-mode-string)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
350 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
351 (defun erc-track-add-to-mode-line (position) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
352 "Add `erc-track-modified-channels' to POSITION in the mode-line. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
353 See `erc-track-position-in-mode-line' for possible values." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
354 ;; CVS Emacs has a new format string, and global-mode-string |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
355 ;; is very far to the right. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
356 (cond ((and (eq position 'before-modes) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
357 (boundp 'mode-line-modes)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
358 (add-to-list 'mode-line-modes |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
359 '(t erc-modified-channels-object))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
360 ((and (eq position 'after-modes) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
361 (boundp 'mode-line-modes)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
362 (add-to-list 'mode-line-modes |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
363 '(t erc-modified-channels-object) t)) |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
364 ((eq position t) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
365 (when (not global-mode-string) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
366 (setq global-mode-string '(""))) ; Padding for mode-line wart |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
367 (add-to-list 'global-mode-string |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
368 'erc-modified-channels-object |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
369 t)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
370 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
371 ;;; Shortening of names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
372 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
373 (defun erc-track-shorten-names (channel-names) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
374 "Call `erc-unique-channel-names' with the correct parameters. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
375 This function is a good value for `erc-track-shorten-function'. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
376 The list of all channels is returned by `erc-all-buffer-names'. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
377 CHANNEL-NAMES is the list of active channel names. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
378 Only channel names longer than `erc-track-shorten-cutoff' are |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
379 actually shortened, and they are only shortened to a minimum |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
380 of `erc-track-shorten-start' characters." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
381 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
382 (erc-all-buffer-names) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
383 channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
384 (lambda (s) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
385 (> (length s) erc-track-shorten-cutoff)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
386 erc-track-shorten-start)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
387 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
388 (defvar erc-default-recipients) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
389 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
390 (defun erc-all-buffer-names () |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
391 "Return all channel or query buffer names. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
392 Note that we cannot use `erc-channel-list' with a nil argument, |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
393 because that does not return query buffers." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
394 (save-excursion |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
395 (let (result) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
396 (dolist (buf (buffer-list)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
397 (set-buffer buf) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
398 (when (or (eq major-mode 'erc-mode) (eq major-mode 'erc-dcc-chat-mode)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
399 (setq result (cons (buffer-name) result)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
400 result))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
401 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
402 (defun erc-unique-channel-names (all active &optional predicate start) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
403 "Return a list of unique channel names. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
404 ALL is the list of all channel and query buffer names. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
405 ACTIVE is the list of active buffer names. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
406 PREDICATE is a predicate that should return non-nil if a name needs |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
407 no shortening. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
408 START is the minimum length of the name used." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
409 (if (eq 'max erc-track-shorten-aggressively) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
410 ;; Return the unique substrings of all active channels. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
411 (erc-unique-substrings active predicate start) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
412 ;; Otherwise, determine the unique substrings of all channels, and |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
413 ;; for every active channel, return the corresponding substring. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
414 ;; Given the names of the active channels, we now need to find the |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
415 ;; corresponding short name from the list of all substrings. To |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
416 ;; avoid problems when there are two channels and one is a |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
417 ;; substring of the other (notorious examples are #hurd and |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
418 ;; #hurd-bunny), every candidate gets the longest possible |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
419 ;; substring. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
420 (let ((all-substrings (sort |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
421 (erc-unique-substrings all predicate start) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
422 (lambda (a b) (> (length a) (length b))))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
423 result) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
424 (dolist (channel active) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
425 (let ((substrings all-substrings) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
426 candidate |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
427 winner) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
428 (while (and substrings (not winner)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
429 (setq candidate (car substrings) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
430 substrings (cdr substrings)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
431 (when (and (string= candidate |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
432 (substring channel |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
433 0 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
434 (min (length candidate) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
435 (length channel)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
436 (not (member candidate result))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
437 (setq winner candidate))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
438 (setq result (cons winner result)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
439 (nreverse result)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
440 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
441 (defun erc-unique-substrings (strings &optional predicate start) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
442 "Return a list of unique substrings of STRINGS." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
443 (if (or (not (numberp start)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
444 (< start 0)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
445 (setq start 2)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
446 (mapcar |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
447 (lambda (str) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
448 (let* ((others (delete str (copy-sequence strings))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
449 (maxlen (length str)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
450 (i (min start |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
451 (length str))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
452 candidate |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
453 done) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
454 (if (and (functionp predicate) (not (funcall predicate str))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
455 ;; do not shorten if a predicate exists and it returns nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
456 str |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
457 ;; Start with smallest substring candidate, ie. length 1. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
458 ;; Then check all the others and see whether any of them starts |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
459 ;; with the same substring. While there is such another |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
460 ;; element in the list, increase the length of the candidate. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
461 (while (not done) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
462 (if (> i maxlen) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
463 (setq done t) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
464 (setq candidate (substring str 0 i) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
465 done (not (erc-unique-substring-1 candidate others)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
466 (setq i (1+ i))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
467 (if (and (= (length candidate) (1- maxlen)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
468 (not erc-track-shorten-aggressively)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
469 str |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
470 candidate)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
471 strings)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
472 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
473 (defun erc-unique-substring-1 (candidate others) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
474 "Return non-nil when any string in OTHERS starts with CANDIDATE." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
475 (let (result other (maxlen (length candidate))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
476 (while (and others |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
477 (not result)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
478 (setq other (car others) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
479 others (cdr others)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
480 (when (and (>= (length other) maxlen) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
481 (string= candidate (substring other 0 maxlen))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
482 (setq result other))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
483 result)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
484 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
485 ;;; Test: |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
486 |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
487 (assert |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
488 (and |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
489 ;; verify examples from the doc strings |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
490 (equal (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
491 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
492 '("#emacs" "#vi" "#electronica" "#folk") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
493 '("#emacs" "#vi"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
494 '("#em" "#vi")) ; emacs is different from electronica |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
495 (equal (let ((erc-track-shorten-aggressively t)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
496 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
497 '("#emacs" "#vi" "#electronica" "#folk") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
498 '("#emacs" "#vi"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
499 '("#em" "#v")) ; vi is shortened by one letter |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
500 (equal (let ((erc-track-shorten-aggressively 'max)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
501 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
502 '("#emacs" "#vi" "#electronica" "#folk") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
503 '("#emacs" "#vi"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
504 '("#e" "#v")) ; emacs need not be different from electronica |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
505 (equal (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
506 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
507 '("#linux-de" "#linux-fr") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
508 '("#linux-de" "#linux-fr"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
509 '("#linux-de" "#linux-fr")) ; shortening by one letter is too aggressive |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
510 (equal (let ((erc-track-shorten-aggressively t)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
511 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
512 '("#linux-de" "#linux-fr") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
513 '("#linux-de" "#linux-fr"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
514 '("#linux-d" "#linux-f")); now we want to be aggressive |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
515 ;; specific problems |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
516 (equal (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
517 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
518 '("#dunnet" "#lisp" "#sawfish" "#fsf" "#guile" |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
519 "#testgnome" "#gnu" "#fsbot" "#hurd" "#hurd-bunny" |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
520 "#emacs") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
521 '("#hurd-bunny" "#hurd" "#sawfish" "#lisp"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
522 '("#hurd-" "#hurd" "#s" "#l")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
523 (equal (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
524 (erc-unique-substrings |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
525 '("#emacs" "#vi" "#electronica" "#folk"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
526 '("#em" "#vi" "#el" "#f")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
527 (equal (let ((erc-track-shorten-aggressively t)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
528 (erc-unique-substrings |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
529 '("#emacs" "#vi" "#electronica" "#folk"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
530 '("#em" "#v" "#el" "#f")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
531 (equal (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
532 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
533 '("#emacs" "#burse" "+linux.de" "#starwars" |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
534 "#bitlbee" "+burse" "#ratpoison") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
535 '("+linux.de" "#starwars" "#burse"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
536 '("+l" "#s" "#bu")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
537 (equal (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
538 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
539 '("fsbot" "#emacs" "deego") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
540 '("fsbot"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
541 '("fs")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
542 (equal (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
543 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
544 '("fsbot" "#emacs" "deego") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
545 '("fsbot") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
546 (lambda (s) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
547 (> (length s) 4)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
548 1)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
549 '("f")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
550 (equal (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
551 (erc-unique-channel-names |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
552 '("fsbot" "#emacs" "deego") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
553 '("fsbot") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
554 (lambda (s) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
555 (> (length s) 4)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
556 2)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
557 '("fs")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
558 (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
559 (equal (erc-unique-channel-names '("deego" "#hurd" "#hurd-bunny" "#emacs") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
560 '("#hurd" "#hurd-bunny")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
561 '("#hurd" "#hurd-"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
562 ;; general examples |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
563 (let ((erc-track-shorten-aggressively t)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
564 (and (equal (erc-unique-substring-1 "abc" '("ab" "abcd")) "abcd") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
565 (not (erc-unique-substring-1 "a" '("xyz" "xab"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
566 (equal (erc-unique-substrings '("abc" "xyz" "xab")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
567 '("ab" "xy" "xa")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
568 (equal (erc-unique-substrings '("abc" "abcdefg")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
569 '("abc" "abcd")))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
570 (let ((erc-track-shorten-aggressively nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
571 (and (equal (erc-unique-substring-1 "abc" '("ab" "abcd")) "abcd") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
572 (not (erc-unique-substring-1 "a" '("xyz" "xab"))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
573 (equal (erc-unique-substrings '("abc" "xyz" "xab")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
574 '("abc" "xyz" "xab")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
575 (equal (erc-unique-substrings '("abc" "abcdefg")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
576 '("abc" "abcd")))))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
577 |
76856 | 578 ;;; Minor mode |
579 | |
580 ;; Play nice with other IRC clients (and Emacs development rules) by | |
581 ;; making this a minor mode | |
582 | |
583 (defvar erc-track-minor-mode-map (make-sparse-keymap) | |
584 "Keymap for rcirc track minor mode.") | |
585 | |
586 (define-key erc-track-minor-mode-map (kbd "C-c C-@") 'erc-track-switch-buffer) | |
587 (define-key erc-track-minor-mode-map (kbd "C-c C-SPC") | |
588 'erc-track-switch-buffer) | |
589 | |
590 ;;;###autoload | |
591 (define-minor-mode erc-track-minor-mode | |
592 "Global minor mode for tracking ERC buffers and showing activity in the | |
593 mode line. | |
594 | |
595 This exists for the sole purpose of providing the C-c C-SPC and | |
596 C-c C-@ keybindings. Make sure that you have enabled the track | |
597 module, otherwise the keybindings will not do anything useful." | |
598 :init-value nil | |
599 :lighter "" | |
600 :keymap erc-track-minor-mode-map | |
601 :global t | |
602 :group 'erc-track) | |
603 | |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
604 (defun erc-track-minor-mode-maybe (&optional buffer) |
76856 | 605 "Enable `erc-track-minor-mode', depending on `erc-track-enable-keybindings'." |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
606 (when (and (not erc-track-minor-mode) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
607 ;; don't start the minor mode until we have an ERC |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
608 ;; process running, because we don't want to prompt the |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
609 ;; user while starting Emacs |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
610 (or (and (buffer-live-p buffer) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
611 (with-current-buffer buffer (eq major-mode 'erc-mode))) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
612 (erc-buffer-list))) |
76856 | 613 (cond ((eq erc-track-enable-keybindings 'ask) |
614 (let ((key (or (and (key-binding (kbd "C-c C-SPC")) "C-SPC") | |
615 (and (key-binding (kbd "C-c C-@")) "C-@")))) | |
616 (if key | |
617 (if (y-or-n-p | |
618 (concat "The C-c " key " binding is in use;" | |
619 " override it for tracking? ")) | |
620 (progn | |
621 (message (concat "Will change it; set" | |
622 " `erc-track-enable-keybindings'" | |
623 " to disable this message")) | |
624 (sleep-for 3) | |
625 (erc-track-minor-mode 1)) | |
626 (message (concat "Not changing it; set" | |
627 " `erc-track-enable-keybindings'" | |
628 " to disable this message")) | |
629 (sleep-for 3)) | |
630 (erc-track-minor-mode 1)))) | |
631 ((eq erc-track-enable-keybindings t) | |
632 (erc-track-minor-mode 1)) | |
633 (t nil)))) | |
634 | |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
635 ;;; Module |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
636 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
637 ;;;###autoload (autoload 'erc-track-mode "erc-track" nil t) |
76856 | 638 (define-erc-module track nil |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
639 "This mode tracks ERC channel buffers with activity." |
76856 | 640 ;; Enable: |
641 ((when (boundp 'erc-track-when-inactive) | |
642 (if erc-track-when-inactive | |
643 (progn | |
644 (if (featurep 'xemacs) | |
645 (defadvice switch-to-buffer (after erc-update-when-inactive | |
646 (&rest args) activate) | |
647 (erc-user-is-active)) | |
648 (add-hook 'window-configuration-change-hook 'erc-user-is-active)) | |
649 (add-hook 'erc-send-completed-hook 'erc-user-is-active) | |
650 (add-hook 'erc-server-001-functions 'erc-user-is-active)) | |
651 (erc-track-add-to-mode-line erc-track-position-in-mode-line) | |
652 (setq erc-modified-channels-object (erc-modified-channels-object nil)) | |
653 (erc-update-mode-line) | |
654 (if (featurep 'xemacs) | |
655 (defadvice switch-to-buffer (after erc-update (&rest args) activate) | |
656 (erc-modified-channels-update)) | |
657 (add-hook 'window-configuration-change-hook | |
658 'erc-modified-channels-update)) | |
659 (add-hook 'erc-insert-post-hook 'erc-track-modified-channels) | |
660 (add-hook 'erc-disconnected-hook 'erc-modified-channels-update)) | |
661 ;; enable the tracking keybindings | |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
662 (add-hook 'erc-connect-pre-hook 'erc-track-minor-mode-maybe) |
76856 | 663 (erc-track-minor-mode-maybe))) |
664 ;; Disable: | |
665 ((when (boundp 'erc-track-when-inactive) | |
666 (erc-track-remove-from-mode-line) | |
667 (if erc-track-when-inactive | |
668 (progn | |
669 (if (featurep 'xemacs) | |
670 (ad-disable-advice 'switch-to-buffer 'after | |
671 'erc-update-when-inactive) | |
672 (remove-hook 'window-configuration-change-hook | |
673 'erc-user-is-active)) | |
674 (remove-hook 'erc-send-completed-hook 'erc-user-is-active) | |
675 (remove-hook 'erc-server-001-functions 'erc-user-is-active) | |
676 (remove-hook 'erc-timer-hook 'erc-user-is-active)) | |
677 (if (featurep 'xemacs) | |
678 (ad-disable-advice 'switch-to-buffer 'after 'erc-update) | |
679 (remove-hook 'window-configuration-change-hook | |
680 'erc-modified-channels-update)) | |
681 (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update) | |
682 (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels)) | |
683 ;; disable the tracking keybindings | |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
684 (remove-hook 'erc-connect-pre-hook 'erc-track-minor-mode-maybe) |
76856 | 685 (when erc-track-minor-mode |
686 (erc-track-minor-mode -1))))) | |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
687 |
76856 | 688 (defcustom erc-track-when-inactive nil |
689 "Enable channel tracking even for visible buffers, if you are | |
690 inactive." | |
691 :group 'erc-track | |
692 :type 'boolean | |
693 :set (lambda (sym val) | |
694 (if erc-track-mode | |
695 (progn | |
696 (erc-track-disable) | |
697 (set sym val) | |
698 (erc-track-enable)) | |
699 (set sym val)))) | |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
700 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
701 ;;; Visibility |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
702 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
703 (defvar erc-buffer-activity nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
704 "Last time the user sent something.") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
705 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
706 (defvar erc-buffer-activity-timeout 10 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
707 "How many seconds of inactivity by the user |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
708 to consider when `erc-track-visibility' is set to |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
709 only consider active buffers visible.") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
710 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
711 (defun erc-user-is-active (&rest ignore) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
712 "Set `erc-buffer-activity'." |
86836 | 713 (when erc-server-connected |
714 (setq erc-buffer-activity (erc-current-time)) | |
715 (erc-track-modified-channels))) | |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
716 |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
717 (defun erc-track-get-buffer-window (buffer frame-param) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
718 (if (eq frame-param 'selected-visible) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
719 (if (eq (frame-visible-p (selected-frame)) t) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
720 (get-buffer-window buffer nil) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
721 nil) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
722 (get-buffer-window buffer frame-param))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
723 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
724 (defun erc-buffer-visible (buffer) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
725 "Return non-nil when the buffer is visible." |
76856 | 726 (if erc-track-when-inactive |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
727 (when erc-buffer-activity; could be nil |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
728 (and (erc-track-get-buffer-window buffer erc-track-visibility) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
729 (<= (erc-time-diff erc-buffer-activity (erc-current-time)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
730 erc-buffer-activity-timeout))) |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
731 (erc-track-get-buffer-window buffer erc-track-visibility))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
732 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
733 ;;; Tracking the channel modifications |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
734 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
735 (defvar erc-modified-channels-update-inside nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
736 "Variable to prevent running `erc-modified-channels-update' multiple |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
737 times. Without it, you cannot debug `erc-modified-channels-display', |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
738 because the debugger also cases changes to the window-configuration.") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
739 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
740 (defun erc-modified-channels-update (&rest args) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
741 "This function updates the information in `erc-modified-channels-alist' |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
742 according to buffer visibility. It calls |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
743 `erc-modified-channels-display' at the end. This should usually be |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
744 called via `window-configuration-change-hook'. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
745 ARGS are ignored." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
746 (interactive) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
747 (unless erc-modified-channels-update-inside |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
748 (let ((erc-modified-channels-update-inside t) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
749 (removed-channel nil)) |
85233
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
750 (mapc (lambda (elt) |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
751 (let ((buffer (car elt))) |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
752 (when (or (not (bufferp buffer)) |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
753 (not (buffer-live-p buffer)) |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
754 (erc-buffer-visible buffer) |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
755 (and erc-track-remove-disconnected-buffers |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
756 (not (with-current-buffer buffer |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
757 erc-server-connected)))) |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
758 (setq removed-channel t) |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
759 (erc-modified-channels-remove-buffer buffer)))) |
977fdc85afd3
(erc-modified-channels-update): Use mapc rather than mapcar.
Glenn Morris <rgm@gnu.org>
parents:
84636
diff
changeset
|
760 erc-modified-channels-alist) |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
761 (when removed-channel |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
762 (erc-modified-channels-display) |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
763 (force-mode-line-update t))))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
764 |
74093 | 765 (defvar erc-track-mouse-face (if (featurep 'xemacs) |
766 'modeline-mousable | |
767 'mode-line-highlight) | |
768 "The face to use when mouse is over channel names in the mode line.") | |
769 | |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
770 (defun erc-make-mode-line-buffer-name (string buffer &optional faces count) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
771 "Return STRING as a button that switches to BUFFER when clicked. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
772 If FACES are provided, color STRING with them." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
773 ;; We define a new sparse keymap every time, because 1. this data |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
774 ;; structure is very small, the alternative would require us to |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
775 ;; defvar a keymap, 2. the user is not interested in customizing it |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
776 ;; (really?), 3. the defun needs to switch to BUFFER, so we would |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
777 ;; need to save that value somewhere. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
778 (let ((map (make-sparse-keymap)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
779 (name (if erc-track-showcount |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
780 (concat string |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
781 erc-track-showcount-string |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
782 (int-to-string count)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
783 (copy-sequence string)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
784 (define-key map (vector 'mode-line 'mouse-2) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
785 `(lambda (e) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
786 (interactive "e") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
787 (save-selected-window |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
788 (select-window |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
789 (posn-window (event-start e))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
790 (switch-to-buffer ,buffer)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
791 (define-key map (vector 'mode-line 'mouse-3) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
792 `(lambda (e) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
793 (interactive "e") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
794 (save-selected-window |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
795 (select-window |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
796 (posn-window (event-start e))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
797 (switch-to-buffer-other-window ,buffer)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
798 (put-text-property 0 (length name) 'local-map map name) |
74093 | 799 (put-text-property |
800 0 (length name) | |
801 'help-echo (concat "mouse-2: switch to buffer, " | |
802 "mouse-3: switch to buffer in other window") | |
803 name) | |
804 (put-text-property 0 (length name) 'mouse-face erc-track-mouse-face name) | |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
805 (when (and faces erc-track-use-faces) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
806 (put-text-property 0 (length name) 'face faces name)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
807 name)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
808 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
809 (defun erc-modified-channels-display () |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
810 "Set `erc-modified-channels-object' |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
811 according to `erc-modified-channels-alist'. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
812 Use `erc-make-mode-line-buffer-name' to create buttons." |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
813 (cond ((or (eq 'mostactive erc-track-switch-direction) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
814 (eq 'leastactive erc-track-switch-direction)) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
815 (erc-track-sort-by-activest)) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
816 ((eq 'importance erc-track-switch-direction) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
817 (erc-track-sort-by-importance))) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
818 (run-hooks 'erc-track-list-changed-hook) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
819 (unless (eq erc-track-position-in-mode-line nil) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
820 (if (null erc-modified-channels-alist) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
821 (setq erc-modified-channels-object (erc-modified-channels-object nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
822 ;; erc-modified-channels-alist contains all the data we need. To |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
823 ;; better understand what is going on, we split things up into |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
824 ;; four lists: BUFFERS, COUNTS, SHORT-NAMES, and FACES. These |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
825 ;; four lists we use to create a new |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
826 ;; `erc-modified-channels-object' using |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
827 ;; `erc-make-mode-line-buffer-name'. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
828 (let* ((buffers (mapcar 'car erc-modified-channels-alist)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
829 (counts (mapcar 'cadr erc-modified-channels-alist)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
830 (faces (mapcar 'cddr erc-modified-channels-alist)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
831 (long-names (mapcar #'(lambda (buf) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
832 (or (buffer-name buf) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
833 "")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
834 buffers)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
835 (short-names (if (functionp erc-track-shorten-function) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
836 (funcall erc-track-shorten-function |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
837 long-names) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
838 long-names)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
839 strings) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
840 (while buffers |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
841 (when (car short-names) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
842 (setq strings (cons (erc-make-mode-line-buffer-name |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
843 (car short-names) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
844 (car buffers) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
845 (car faces) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
846 (car counts)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
847 strings))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
848 (setq short-names (cdr short-names) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
849 buffers (cdr buffers) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
850 counts (cdr counts) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
851 faces (cdr faces))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
852 (when (featurep 'xemacs) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
853 (erc-modified-channels-object nil)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
854 (setq erc-modified-channels-object |
92128 | 855 (erc-modified-channels-object strings)))))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
856 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
857 (defun erc-modified-channels-remove-buffer (buffer) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
858 "Remove BUFFER from `erc-modified-channels-alist'." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
859 (interactive "bBuffer: ") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
860 (setq erc-modified-channels-alist |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
861 (delete (assq buffer erc-modified-channels-alist) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
862 erc-modified-channels-alist)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
863 (when (interactive-p) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
864 (erc-modified-channels-display))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
865 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
866 (defun erc-track-find-face (faces) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
867 "Return the face to use in the modeline from the faces in FACES. |
92128 | 868 If `erc-track-faces-priority-list' is set, the one from FACES who |
869 is first in that list will be used. If nothing matches or if | |
870 `erc-track-faces-priority-list' is not set, the default mode-line | |
871 faces will be used. | |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
872 |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
873 If `erc-track-faces-normal-list' is non-nil, use it to produce a |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
874 blinking effect that indicates channel activity when the first |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
875 element in FACES and the highest-ranking face among the rest of |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
876 FACES are both members of `erc-track-faces-normal-list'. |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
877 |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
878 If one of the faces is a list, then it will be ranked according |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
879 to its highest-tanking face member. A list of faces including |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
880 that member will take priority over just the single member |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
881 element." |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
882 (let ((choice (catch 'face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
883 (dolist (candidate erc-track-faces-priority-list) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
884 (when (member candidate faces) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
885 (throw 'face candidate))))) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
886 (no-first (and erc-track-faces-normal-list |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
887 (catch 'face |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
888 (dolist (candidate erc-track-faces-priority-list) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
889 (when (member candidate (cdr faces)) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
890 (throw 'face candidate))))))) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
891 (cond ((null choice) |
92128 | 892 nil) |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
893 ((and (member choice erc-track-faces-normal-list) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
894 (member no-first erc-track-faces-normal-list)) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
895 no-first) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
896 (t |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
897 choice)))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
898 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
899 (defun erc-track-modified-channels () |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
900 "Hook function for `erc-insert-post-hook' to check if the current |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
901 buffer should be added to the modeline as a hidden, modified |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
902 channel. Assumes it will only be called when current-buffer |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
903 is in `erc-mode'." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
904 (let ((this-channel (or (erc-default-target) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
905 (buffer-name (current-buffer))))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
906 (if (and (not (erc-buffer-visible (current-buffer))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
907 (not (member this-channel erc-track-exclude)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
908 (not (and erc-track-exclude-server-buffer |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
909 (erc-server-buffer-p))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
910 (not (erc-message-type-member |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
911 (or (erc-find-parsed-property) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
912 (point-min)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
913 erc-track-exclude-types))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
914 ;; If the active buffer is not visible (not shown in a |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
915 ;; window), and not to be excluded, determine the kinds of |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
916 ;; faces used in the current message, and unless the user |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
917 ;; wants to ignore changes in certain channels where there |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
918 ;; are no faces corresponding to `erc-track-faces-priority-list', |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
919 ;; and the faces in the current message are found in said |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
920 ;; priority list, add the buffer to the erc-modified-channels-alist, |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
921 ;; if it is not already there. If the buffer is already on the list |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
922 ;; (in the car), change its face attribute (in the cddr) if |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
923 ;; necessary. See `erc-modified-channels-alist' for the |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
924 ;; exact data structure used. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
925 (let ((faces (erc-faces-in (buffer-string)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
926 (unless (and |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
927 (or (eq erc-track-priority-faces-only 'all) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
928 (member this-channel erc-track-priority-faces-only)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
929 (not (catch 'found |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
930 (dolist (f faces) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
931 (when (member f erc-track-faces-priority-list) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
932 (throw 'found t)))))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
933 (if (not (assq (current-buffer) erc-modified-channels-alist)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
934 ;; Add buffer, faces and counts |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
935 (setq erc-modified-channels-alist |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
936 (cons (cons (current-buffer) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
937 (cons 1 (erc-track-find-face faces))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
938 erc-modified-channels-alist)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
939 ;; Else modify the face for the buffer, if necessary. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
940 (when faces |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
941 (let* ((cell (assq (current-buffer) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
942 erc-modified-channels-alist)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
943 (old-face (cddr cell)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
944 (new-face (erc-track-find-face |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
945 (if old-face |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
946 (cons old-face faces) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
947 faces)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
948 (setcdr cell (cons (1+ (cadr cell)) new-face))))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
949 ;; And display it |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
950 (erc-modified-channels-display))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
951 ;; Else if the active buffer is the current buffer, remove it |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
952 ;; from our list. |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
953 (when (and (or (erc-buffer-visible (current-buffer)) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
954 (and this-channel |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
955 (member this-channel erc-track-exclude))) |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
956 (assq (current-buffer) erc-modified-channels-alist)) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
957 ;; Remove it from mode-line if buffer is visible or |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
958 ;; channel was added to erc-track-exclude recently. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
959 (erc-modified-channels-remove-buffer (current-buffer)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
960 (erc-modified-channels-display))))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
961 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
962 (defun erc-faces-in (str) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
963 "Return a list of all faces used in STR." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
964 (let ((i 0) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
965 (m (length str)) |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
966 (faces (erc-list (get-text-property 0 'face str))) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
967 cur) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
968 (while (and (setq i (next-single-property-change i 'face str m)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
969 (not (= i m))) |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
970 (when (setq cur (get-text-property i 'face str)) |
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
971 (add-to-list 'faces cur))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
972 faces)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
973 |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
974 (assert |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
975 (let ((str "is bold")) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
976 (put-text-property 3 (length str) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
977 'face '(bold erc-current-nick-face) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
978 str) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
979 (erc-faces-in str))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
980 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
981 ;;; Buffer switching |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
982 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
983 (defvar erc-track-last-non-erc-buffer nil |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
984 "Stores the name of the last buffer you were in before activating |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
985 `erc-track-switch-buffers'") |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
986 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
987 (defun erc-track-sort-by-activest () |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
988 "Sort erc-modified-channels-alist by activity. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
989 That means the number of unseen messages in a channel." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
990 (setq erc-modified-channels-alist |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
991 (sort erc-modified-channels-alist |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
992 (lambda (a b) (> (nth 1 a) (nth 1 b)))))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
993 |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
994 (defun erc-track-face-priority (face) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
995 "Return a number indicating the priority of FACE in |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
996 `erc-track-faces-priority-list'. Lower number means higher |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
997 priority. |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
998 |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
999 If face is not in `erc-track-faces-priority-list', it will have a |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1000 higher number than any other face in that list." |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1001 (let ((count 0)) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1002 (catch 'done |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1003 (dolist (item erc-track-faces-priority-list) |
87952
b8f89dd3680d
ERC: Sync version 5.3, release candidate 1.
Michael Olson <mwolson@gnu.org>
parents:
87649
diff
changeset
|
1004 (if (equal item face) |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1005 (throw 'done t) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1006 (setq count (1+ count))))) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1007 count)) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1008 |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1009 (defun erc-track-sort-by-importance () |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1010 "Sort erc-modified-channels-alist by importance. |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1011 That means the position of the face in `erc-track-faces-priority-list'." |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1012 (setq erc-modified-channels-alist |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1013 (sort erc-modified-channels-alist |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1014 (lambda (a b) (< (erc-track-face-priority (cddr a)) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1015 (erc-track-face-priority (cddr b))))))) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1016 |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1017 (defun erc-track-get-active-buffer (arg) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1018 "Return the buffer name of ARG in `erc-modified-channels-alist'. |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1019 Negative arguments index in the opposite direction. This direction is |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1020 relative to `erc-track-switch-direction'" |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1021 (let ((dir erc-track-switch-direction) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1022 offset) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1023 (when (< arg 0) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1024 (setq dir (case dir |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1025 (oldest 'newest) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1026 (newest 'oldest) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1027 (mostactive 'leastactive) |
84387
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1028 (leastactive 'mostactive) |
4ee03308c9b6
Sync ERC 5.3 (devel) from upstream
Michael Olson <mwolson@gnu.org>
parents:
78219
diff
changeset
|
1029 (importance 'oldest))) |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1030 (setq arg (- arg))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1031 (setq offset (case dir |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1032 ((oldest leastactive) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1033 (- (length erc-modified-channels-alist) arg)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1034 (t (1- arg)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1035 ;; normalise out of range user input |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1036 (cond ((>= offset (length erc-modified-channels-alist)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1037 (setq offset (1- (length erc-modified-channels-alist)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1038 ((< offset 0) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1039 (setq offset 0))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1040 (car (nth offset erc-modified-channels-alist)))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1041 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1042 (defun erc-track-switch-buffer (arg) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1043 "Switch to the next active ERC buffer, or if there are no active buffers, |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1044 switch back to the last non-ERC buffer visited. Next is defined by |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1045 `erc-track-switch-direction', a negative argument will reverse this." |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1046 (interactive "p") |
76856 | 1047 (if (not erc-track-mode) |
1048 (message (concat "Enable the ERC track module if you want to use the" | |
1049 " tracking minor mode")) | |
68451
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1050 (cond (erc-modified-channels-alist |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1051 ;; if we're not in erc-mode, set this buffer to return to |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1052 (unless (eq major-mode 'erc-mode) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1053 (setq erc-track-last-non-erc-buffer (current-buffer))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1054 ;; and jump to the next active channel |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1055 (switch-to-buffer (erc-track-get-active-buffer arg))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1056 ;; if no active channels, switch back to what we were doing before |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1057 ((and erc-track-last-non-erc-buffer |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1058 erc-track-switch-from-erc |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1059 (buffer-live-p erc-track-last-non-erc-buffer)) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1060 (switch-to-buffer erc-track-last-non-erc-buffer))))) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1061 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1062 (provide 'erc-track) |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1063 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1064 ;;; erc-track.el ends here |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1065 ;; |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1066 ;; Local Variables: |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1067 ;; indent-tabs-mode: t |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1068 ;; tab-width: 8 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1069 ;; End: |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1070 |
fc745b05e928
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-22
Miles Bader <miles@gnu.org>
parents:
diff
changeset
|
1071 ;; arch-tag: 11b439f5-e5d7-4c6c-bb3f-eda98f9b0ac1 |