(gnus-nocem-groups): Remove invalid NoCeM groups.
[gnus] / lisp / gnus.el
1 ;;; gnus.el --- a newsreader for GNU Emacs
2
3 ;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, 1998,
4 ;;   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
5 ;;   Free Software Foundation, Inc.
6
7 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
8 ;;      Lars Magne Ingebrigtsen <larsi@gnus.org>
9 ;; Keywords: news, mail
10
11 ;; This file is part of GNU Emacs.
12
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
14 ;; it under the terms of the GNU General Public License as published by
15 ;; the Free Software Foundation, either version 3 of the License, or
16 ;; (at your option) any later version.
17
18 ;; GNU Emacs is distributed in the hope that it will be useful,
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 ;; GNU General Public License for more details.
22
23 ;; You should have received a copy of the GNU General Public License
24 ;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
25
26 ;;; Commentary:
27
28 ;;; Code:
29
30 (eval '(run-hooks 'gnus-load-hook))
31
32 ;; For Emacs < 22.2.
33 (eval-and-compile
34   (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
35
36 (eval-when-compile (require 'cl))
37 (require 'wid-edit)
38 (require 'mm-util)
39 (require 'nnheader)
40
41 ;; These are defined afterwards with gnus-define-group-parameter
42 (defvar gnus-ham-process-destinations)
43 (defvar gnus-parameter-ham-marks-alist)
44 (defvar gnus-parameter-spam-marks-alist)
45 (defvar gnus-spam-autodetect)
46 (defvar gnus-spam-autodetect-methods)
47 (defvar gnus-spam-newsgroup-contents)
48 (defvar gnus-spam-process-destinations)
49 (defvar gnus-spam-resend-to)
50 (defvar gnus-ham-resend-to)
51 (defvar gnus-spam-process-newsgroups)
52
53
54 (defgroup gnus nil
55   "The coffee-brewing, all singing, all dancing, kitchen sink newsreader."
56   :group 'news
57   :group 'mail)
58
59 (defgroup gnus-start nil
60   "Starting your favorite newsreader."
61   :group 'gnus)
62
63 (defgroup gnus-format nil
64   "Dealing with formatting issues."
65   :group 'gnus)
66
67 (defgroup gnus-charset nil
68   "Group character set issues."
69   :link '(custom-manual "(gnus)Charsets")
70   :version "21.1"
71   :group 'gnus)
72
73 (defgroup gnus-cache nil
74   "Cache interface."
75   :link '(custom-manual "(gnus)Article Caching")
76   :group 'gnus)
77
78 (defgroup gnus-registry nil
79   "Article Registry."
80   :group 'gnus)
81
82 (defgroup gnus-start-server nil
83   "Server options at startup."
84   :group 'gnus-start)
85
86 ;; These belong to gnus-group.el.
87 (defgroup gnus-group nil
88   "Group buffers."
89   :link '(custom-manual "(gnus)Group Buffer")
90   :group 'gnus)
91
92 (defgroup gnus-group-foreign nil
93   "Foreign groups."
94   :link '(custom-manual "(gnus)Foreign Groups")
95   :group 'gnus-group)
96
97 (defgroup gnus-group-new nil
98   "Automatic subscription of new groups."
99   :group 'gnus-group)
100
101 (defgroup gnus-group-levels nil
102   "Group levels."
103   :link '(custom-manual "(gnus)Group Levels")
104   :group 'gnus-group)
105
106 (defgroup gnus-group-select nil
107   "Selecting a Group."
108   :link '(custom-manual "(gnus)Selecting a Group")
109   :group 'gnus-group)
110
111 (defgroup gnus-group-listing nil
112   "Showing slices of the group list."
113   :link '(custom-manual "(gnus)Listing Groups")
114   :group 'gnus-group)
115
116 (defgroup gnus-group-visual nil
117   "Sorting the group buffer."
118   :link '(custom-manual "(gnus)Group Buffer Format")
119   :group 'gnus-group
120   :group 'gnus-visual)
121
122 (defgroup gnus-group-various nil
123   "Various group options."
124   :link '(custom-manual "(gnus)Scanning New Messages")
125   :group 'gnus-group)
126
127 ;; These belong to gnus-sum.el.
128 (defgroup gnus-summary nil
129   "Summary buffers."
130   :link '(custom-manual "(gnus)Summary Buffer")
131   :group 'gnus)
132
133 (defgroup gnus-summary-exit nil
134   "Leaving summary buffers."
135   :link '(custom-manual "(gnus)Exiting the Summary Buffer")
136   :group 'gnus-summary)
137
138 (defgroup gnus-summary-marks nil
139   "Marks used in summary buffers."
140   :link '(custom-manual "(gnus)Marking Articles")
141   :group 'gnus-summary)
142
143 (defgroup gnus-thread nil
144   "Ordering articles according to replies."
145   :link '(custom-manual "(gnus)Threading")
146   :group 'gnus-summary)
147
148 (defgroup gnus-summary-format nil
149   "Formatting of the summary buffer."
150   :link '(custom-manual "(gnus)Summary Buffer Format")
151   :group 'gnus-summary)
152
153 (defgroup gnus-summary-choose nil
154   "Choosing Articles."
155   :link '(custom-manual "(gnus)Choosing Articles")
156   :group 'gnus-summary)
157
158 (defgroup gnus-summary-maneuvering nil
159   "Summary movement commands."
160   :link '(custom-manual "(gnus)Summary Maneuvering")
161   :group 'gnus-summary)
162
163 (defgroup gnus-picon nil
164   "Show pictures of people, domains, and newsgroups."
165   :group 'gnus-visual)
166
167 (defgroup gnus-summary-mail nil
168   "Mail group commands."
169   :link '(custom-manual "(gnus)Mail Group Commands")
170   :group 'gnus-summary)
171
172 (defgroup gnus-summary-sort nil
173   "Sorting the summary buffer."
174   :link '(custom-manual "(gnus)Sorting the Summary Buffer")
175   :group 'gnus-summary)
176
177 (defgroup gnus-summary-visual nil
178   "Highlighting and menus in the summary buffer."
179   :link '(custom-manual "(gnus)Summary Highlighting")
180   :group 'gnus-visual
181   :group 'gnus-summary)
182
183 (defgroup gnus-summary-various nil
184   "Various summary buffer options."
185   :link '(custom-manual "(gnus)Various Summary Stuff")
186   :group 'gnus-summary)
187
188 (defgroup gnus-summary-pick nil
189   "Pick mode in the summary buffer."
190   :link '(custom-manual "(gnus)Pick and Read")
191   :prefix "gnus-pick-"
192   :group 'gnus-summary)
193
194 (defgroup gnus-summary-tree nil
195   "Tree display of threads in the summary buffer."
196   :link '(custom-manual "(gnus)Tree Display")
197   :prefix "gnus-tree-"
198   :group 'gnus-summary)
199
200 ;; Belongs to gnus-uu.el
201 (defgroup gnus-extract-view nil
202   "Viewing extracted files."
203   :link '(custom-manual "(gnus)Viewing Files")
204   :group 'gnus-extract)
205
206 ;; Belongs to gnus-score.el
207 (defgroup gnus-score nil
208   "Score and kill file handling."
209   :group 'gnus)
210
211 (defgroup gnus-score-kill nil
212   "Kill files."
213   :group 'gnus-score)
214
215 (defgroup gnus-score-adapt nil
216   "Adaptive score files."
217   :group 'gnus-score)
218
219 (defgroup gnus-score-default nil
220   "Default values for score files."
221   :group 'gnus-score)
222
223 (defgroup gnus-score-expire nil
224   "Expiring score rules."
225   :group 'gnus-score)
226
227 (defgroup gnus-score-decay nil
228   "Decaying score rules."
229   :group 'gnus-score)
230
231 (defgroup gnus-score-files nil
232   "Score and kill file names."
233   :group 'gnus-score
234   :group 'gnus-files)
235
236 (defgroup gnus-score-various nil
237   "Various scoring and killing options."
238   :group 'gnus-score)
239
240 ;; Other
241 (defgroup gnus-visual nil
242   "Options controlling the visual fluff."
243   :group 'gnus
244   :group 'faces)
245
246 (defgroup gnus-agent nil
247   "Offline support for Gnus."
248   :group 'gnus)
249
250 (defgroup gnus-files nil
251   "Files used by Gnus."
252   :group 'gnus)
253
254 (defgroup gnus-dribble-file nil
255   "Auto save file."
256   :link '(custom-manual "(gnus)Auto Save")
257   :group 'gnus-files)
258
259 (defgroup gnus-newsrc nil
260   "Storing Gnus state."
261   :group 'gnus-files)
262
263 (defgroup gnus-server nil
264   "Options related to newsservers and other servers used by Gnus."
265   :group 'gnus)
266
267 (defgroup gnus-server-visual nil
268   "Highlighting and menus in the server buffer."
269   :group 'gnus-visual
270   :group 'gnus-server)
271
272 (defgroup gnus-message '((message custom-group))
273   "Composing replies and followups in Gnus."
274   :group 'gnus)
275
276 (defgroup gnus-meta nil
277   "Meta variables controlling major portions of Gnus.
278 In general, modifying these variables does not take affect until Gnus
279 is restarted, and sometimes reloaded."
280   :group 'gnus)
281
282 (defgroup gnus-various nil
283   "Other Gnus options."
284   :link '(custom-manual "(gnus)Various Various")
285   :group 'gnus)
286
287 (defgroup gnus-exit nil
288   "Exiting Gnus."
289   :link '(custom-manual "(gnus)Exiting Gnus")
290   :group 'gnus)
291
292 (defgroup gnus-fun nil
293   "Frivolous Gnus extensions."
294   :link '(custom-manual "(gnus)Exiting Gnus")
295   :group 'gnus)
296
297 (defconst gnus-version-number "0.11"
298   "Version number for this version of Gnus.")
299
300 (defconst gnus-version (format "No Gnus v%s" gnus-version-number)
301   "Version string for this version of Gnus.")
302
303 (defcustom gnus-inhibit-startup-message nil
304   "If non-nil, the startup message will not be displayed.
305 This variable is used before `.gnus.el' is loaded, so it should
306 be set in `.emacs' instead."
307   :group 'gnus-start
308   :type 'boolean)
309
310 (defcustom gnus-play-startup-jingle nil
311   "If non-nil, play the Gnus jingle at startup."
312   :group 'gnus-start
313   :type 'boolean)
314
315 (unless (fboundp 'gnus-group-remove-excess-properties)
316   (defalias 'gnus-group-remove-excess-properties 'ignore))
317
318 (unless (featurep 'gnus-xmas)
319   (defalias 'gnus-make-overlay 'make-overlay)
320   (defalias 'gnus-delete-overlay 'delete-overlay)
321   (defalias 'gnus-overlay-put 'overlay-put)
322   (defalias 'gnus-move-overlay 'move-overlay)
323   (defalias 'gnus-overlay-buffer 'overlay-buffer)
324   (defalias 'gnus-overlay-start 'overlay-start)
325   (defalias 'gnus-overlay-end 'overlay-end)
326   (defalias 'gnus-extent-detached-p 'ignore)
327   (defalias 'gnus-extent-start-open 'ignore)
328   (defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
329   (defalias 'gnus-character-to-event 'identity)
330   (defalias 'gnus-assq-delete-all 'assq-delete-all)
331   (defalias 'gnus-add-text-properties 'add-text-properties)
332   (defalias 'gnus-put-text-property 'put-text-property)
333   (defvar gnus-mode-line-image-cache t)
334   (if (fboundp 'find-image)
335       (defun gnus-mode-line-buffer-identification (line)
336         (let ((str (car-safe line))
337               (load-path (mm-image-load-path)))
338           (if (and (stringp str)
339                    (string-match "^Gnus:" str))
340               (progn (add-text-properties
341                       0 5
342                       (list 'display
343                             (if (eq t gnus-mode-line-image-cache)
344                                 (setq gnus-mode-line-image-cache
345                                       (find-image
346                                        '((:type xpm :file "gnus-pointer.xpm"
347                                                 :ascent center)
348                                          (:type xbm :file "gnus-pointer.xbm"
349                                                 :ascent center))))
350                               gnus-mode-line-image-cache)
351                             'help-echo (format
352                                         "This is %s, %s."
353                                         gnus-version (gnus-emacs-version)))
354                       str)
355                      (list str))
356             line)))
357     (defalias 'gnus-mode-line-buffer-identification 'identity))
358   (defalias 'gnus-characterp 'numberp)
359   (defalias 'gnus-deactivate-mark 'deactivate-mark)
360   (defalias 'gnus-window-edges 'window-edges)
361   (defalias 'gnus-key-press-event-p 'numberp)
362   ;;(defalias 'gnus-decode-rfc1522 'ignore)
363   )
364
365 ;; We define these group faces here to avoid the display
366 ;; update forced when creating new faces.
367
368 (defface gnus-group-news-1
369   '((((class color)
370       (background dark))
371      (:foreground "PaleTurquoise" :bold t))
372     (((class color)
373       (background light))
374      (:foreground "ForestGreen" :bold t))
375     (t
376      ()))
377   "Level 1 newsgroup face."
378   :group 'gnus-group)
379 ;; backward-compatibility alias
380 (put 'gnus-group-news-1-face 'face-alias 'gnus-group-news-1)
381
382 (defface gnus-group-news-1-empty
383   '((((class color)
384       (background dark))
385      (:foreground "PaleTurquoise"))
386     (((class color)
387       (background light))
388      (:foreground "ForestGreen"))
389     (t
390      ()))
391   "Level 1 empty newsgroup face."
392   :group 'gnus-group)
393 ;; backward-compatibility alias
394 (put 'gnus-group-news-1-empty-face 'face-alias 'gnus-group-news-1-empty)
395
396 (defface gnus-group-news-2
397   '((((class color)
398       (background dark))
399      (:foreground "turquoise" :bold t))
400     (((class color)
401       (background light))
402      (:foreground "CadetBlue4" :bold t))
403     (t
404      ()))
405   "Level 2 newsgroup face."
406   :group 'gnus-group)
407 ;; backward-compatibility alias
408 (put 'gnus-group-news-2-face 'face-alias 'gnus-group-news-2)
409
410 (defface gnus-group-news-2-empty
411   '((((class color)
412       (background dark))
413      (:foreground "turquoise"))
414     (((class color)
415       (background light))
416      (:foreground "CadetBlue4"))
417     (t
418      ()))
419   "Level 2 empty newsgroup face."
420   :group 'gnus-group)
421 ;; backward-compatibility alias
422 (put 'gnus-group-news-2-empty-face 'face-alias 'gnus-group-news-2-empty)
423
424 (defface gnus-group-news-3
425   '((((class color)
426       (background dark))
427      (:bold t))
428     (((class color)
429       (background light))
430      (:bold t))
431     (t
432      ()))
433   "Level 3 newsgroup face."
434   :group 'gnus-group)
435 ;; backward-compatibility alias
436 (put 'gnus-group-news-3-face 'face-alias 'gnus-group-news-3)
437
438 (defface gnus-group-news-3-empty
439   '((((class color)
440       (background dark))
441      ())
442     (((class color)
443       (background light))
444      ())
445     (t
446      ()))
447   "Level 3 empty newsgroup face."
448   :group 'gnus-group)
449 ;; backward-compatibility alias
450 (put 'gnus-group-news-3-empty-face 'face-alias 'gnus-group-news-3-empty)
451
452 (defface gnus-group-news-4
453   '((((class color)
454       (background dark))
455      (:bold t))
456     (((class color)
457       (background light))
458      (:bold t))
459     (t
460      ()))
461   "Level 4 newsgroup face."
462   :group 'gnus-group)
463 ;; backward-compatibility alias
464 (put 'gnus-group-news-4-face 'face-alias 'gnus-group-news-4)
465
466 (defface gnus-group-news-4-empty
467   '((((class color)
468       (background dark))
469      ())
470     (((class color)
471       (background light))
472      ())
473     (t
474      ()))
475   "Level 4 empty newsgroup face."
476   :group 'gnus-group)
477 ;; backward-compatibility alias
478 (put 'gnus-group-news-4-empty-face 'face-alias 'gnus-group-news-4-empty)
479
480 (defface gnus-group-news-5
481   '((((class color)
482       (background dark))
483      (:bold t))
484     (((class color)
485       (background light))
486      (:bold t))
487     (t
488      ()))
489   "Level 5 newsgroup face."
490   :group 'gnus-group)
491 ;; backward-compatibility alias
492 (put 'gnus-group-news-5-face 'face-alias 'gnus-group-news-5)
493
494 (defface gnus-group-news-5-empty
495   '((((class color)
496       (background dark))
497      ())
498     (((class color)
499       (background light))
500      ())
501     (t
502      ()))
503   "Level 5 empty newsgroup face."
504   :group 'gnus-group)
505 ;; backward-compatibility alias
506 (put 'gnus-group-news-5-empty-face 'face-alias 'gnus-group-news-5-empty)
507
508 (defface gnus-group-news-6
509   '((((class color)
510       (background dark))
511      (:bold t))
512     (((class color)
513       (background light))
514      (:bold t))
515     (t
516      ()))
517   "Level 6 newsgroup face."
518   :group 'gnus-group)
519 ;; backward-compatibility alias
520 (put 'gnus-group-news-6-face 'face-alias 'gnus-group-news-6)
521
522 (defface gnus-group-news-6-empty
523   '((((class color)
524       (background dark))
525      ())
526     (((class color)
527       (background light))
528      ())
529     (t
530      ()))
531   "Level 6 empty newsgroup face."
532   :group 'gnus-group)
533 ;; backward-compatibility alias
534 (put 'gnus-group-news-6-empty-face 'face-alias 'gnus-group-news-6-empty)
535
536 (defface gnus-group-news-low
537   '((((class color)
538       (background dark))
539      (:foreground "DarkTurquoise" :bold t))
540     (((class color)
541       (background light))
542      (:foreground "DarkGreen" :bold t))
543     (t
544      ()))
545   "Low level newsgroup face."
546   :group 'gnus-group)
547 ;; backward-compatibility alias
548 (put 'gnus-group-news-low-face 'face-alias 'gnus-group-news-low)
549
550 (defface gnus-group-news-low-empty
551   '((((class color)
552       (background dark))
553      (:foreground "DarkTurquoise"))
554     (((class color)
555       (background light))
556      (:foreground "DarkGreen"))
557     (t
558      ()))
559   "Low level empty newsgroup face."
560   :group 'gnus-group)
561 ;; backward-compatibility alias
562 (put 'gnus-group-news-low-empty-face 'face-alias 'gnus-group-news-low-empty)
563
564 (defface gnus-group-mail-1
565   '((((class color)
566       (background dark))
567      (:foreground "#e1ffe1" :bold t))
568     (((class color)
569       (background light))
570      (:foreground "DeepPink3" :bold t))
571     (t
572      (:bold t)))
573   "Level 1 mailgroup face."
574   :group 'gnus-group)
575 ;; backward-compatibility alias
576 (put 'gnus-group-mail-1-face 'face-alias 'gnus-group-mail-1)
577
578 (defface gnus-group-mail-1-empty
579   '((((class color)
580       (background dark))
581      (:foreground "#e1ffe1"))
582     (((class color)
583       (background light))
584      (:foreground "DeepPink3"))
585     (t
586      (:italic t :bold t)))
587   "Level 1 empty mailgroup face."
588   :group 'gnus-group)
589 ;; backward-compatibility alias
590 (put 'gnus-group-mail-1-empty-face 'face-alias 'gnus-group-mail-1-empty)
591
592 (defface gnus-group-mail-2
593   '((((class color)
594       (background dark))
595      (:foreground "DarkSeaGreen1" :bold t))
596     (((class color)
597       (background light))
598      (:foreground "HotPink3" :bold t))
599     (t
600      (:bold t)))
601   "Level 2 mailgroup face."
602   :group 'gnus-group)
603 ;; backward-compatibility alias
604 (put 'gnus-group-mail-2-face 'face-alias 'gnus-group-mail-2)
605
606 (defface gnus-group-mail-2-empty
607   '((((class color)
608       (background dark))
609      (:foreground "DarkSeaGreen1"))
610     (((class color)
611       (background light))
612      (:foreground "HotPink3"))
613     (t
614      (:bold t)))
615   "Level 2 empty mailgroup face."
616   :group 'gnus-group)
617 ;; backward-compatibility alias
618 (put 'gnus-group-mail-2-empty-face 'face-alias 'gnus-group-mail-2-empty)
619
620 (defface gnus-group-mail-3
621   '((((class color)
622       (background dark))
623      (:foreground "aquamarine1" :bold t))
624     (((class color)
625       (background light))
626      (:foreground "magenta4" :bold t))
627     (t
628      (:bold t)))
629   "Level 3 mailgroup face."
630   :group 'gnus-group)
631 ;; backward-compatibility alias
632 (put 'gnus-group-mail-3-face 'face-alias 'gnus-group-mail-3)
633
634 (defface gnus-group-mail-3-empty
635   '((((class color)
636       (background dark))
637      (:foreground "aquamarine1"))
638     (((class color)
639       (background light))
640      (:foreground "magenta4"))
641     (t
642      ()))
643   "Level 3 empty mailgroup face."
644   :group 'gnus-group)
645 ;; backward-compatibility alias
646 (put 'gnus-group-mail-3-empty-face 'face-alias 'gnus-group-mail-3-empty)
647
648 (defface gnus-group-mail-low
649   '((((class color)
650       (background dark))
651      (:foreground "aquamarine2" :bold t))
652     (((class color)
653       (background light))
654      (:foreground "DeepPink4" :bold t))
655     (t
656      (:bold t)))
657   "Low level mailgroup face."
658   :group 'gnus-group)
659 ;; backward-compatibility alias
660 (put 'gnus-group-mail-low-face 'face-alias 'gnus-group-mail-low)
661
662 (defface gnus-group-mail-low-empty
663   '((((class color)
664       (background dark))
665      (:foreground "aquamarine2"))
666     (((class color)
667       (background light))
668      (:foreground "DeepPink4"))
669     (t
670      (:bold t)))
671   "Low level empty mailgroup face."
672   :group 'gnus-group)
673 ;; backward-compatibility alias
674 (put 'gnus-group-mail-low-empty-face 'face-alias 'gnus-group-mail-low-empty)
675
676 ;; Summary mode faces.
677
678 (defface gnus-summary-selected '((t (:underline t)))
679   "Face used for selected articles."
680   :group 'gnus-summary)
681 ;; backward-compatibility alias
682 (put 'gnus-summary-selected-face 'face-alias 'gnus-summary-selected)
683
684 (defface gnus-summary-cancelled
685   '((((class color))
686      (:foreground "yellow" :background "black")))
687   "Face used for cancelled articles."
688   :group 'gnus-summary)
689 ;; backward-compatibility alias
690 (put 'gnus-summary-cancelled-face 'face-alias 'gnus-summary-cancelled)
691
692 (defface gnus-summary-high-ticked
693   '((((class color)
694       (background dark))
695      (:foreground "pink" :bold t))
696     (((class color)
697       (background light))
698      (:foreground "firebrick" :bold t))
699     (t
700      (:bold t)))
701   "Face used for high interest ticked articles."
702   :group 'gnus-summary)
703 ;; backward-compatibility alias
704 (put 'gnus-summary-high-ticked-face 'face-alias 'gnus-summary-high-ticked)
705
706 (defface gnus-summary-low-ticked
707   '((((class color)
708       (background dark))
709      (:foreground "pink" :italic t))
710     (((class color)
711       (background light))
712      (:foreground "firebrick" :italic t))
713     (t
714      (:italic t)))
715   "Face used for low interest ticked articles."
716   :group 'gnus-summary)
717 ;; backward-compatibility alias
718 (put 'gnus-summary-low-ticked-face 'face-alias 'gnus-summary-low-ticked)
719
720 (defface gnus-summary-normal-ticked
721   '((((class color)
722       (background dark))
723      (:foreground "pink"))
724     (((class color)
725       (background light))
726      (:foreground "firebrick"))
727     (t
728      ()))
729   "Face used for normal interest ticked articles."
730   :group 'gnus-summary)
731 ;; backward-compatibility alias
732 (put 'gnus-summary-normal-ticked-face 'face-alias 'gnus-summary-normal-ticked)
733
734 (defface gnus-summary-high-ancient
735   '((((class color)
736       (background dark))
737      (:foreground "SkyBlue" :bold t))
738     (((class color)
739       (background light))
740      (:foreground "RoyalBlue" :bold t))
741     (t
742      (:bold t)))
743   "Face used for high interest ancient articles."
744   :group 'gnus-summary)
745 ;; backward-compatibility alias
746 (put 'gnus-summary-high-ancient-face 'face-alias 'gnus-summary-high-ancient)
747
748 (defface gnus-summary-low-ancient
749   '((((class color)
750       (background dark))
751      (:foreground "SkyBlue" :italic t))
752     (((class color)
753       (background light))
754      (:foreground "RoyalBlue" :italic t))
755     (t
756      (:italic t)))
757   "Face used for low interest ancient articles."
758   :group 'gnus-summary)
759 ;; backward-compatibility alias
760 (put 'gnus-summary-low-ancient-face 'face-alias 'gnus-summary-low-ancient)
761
762 (defface gnus-summary-normal-ancient
763   '((((class color)
764       (background dark))
765      (:foreground "SkyBlue"))
766     (((class color)
767       (background light))
768      (:foreground "RoyalBlue"))
769     (t
770      ()))
771   "Face used for normal interest ancient articles."
772   :group 'gnus-summary)
773 ;; backward-compatibility alias
774 (put 'gnus-summary-normal-ancient-face 'face-alias 'gnus-summary-normal-ancient)
775
776 (defface gnus-summary-high-undownloaded
777    '((((class color)
778        (background light))
779       (:bold t :foreground "cyan4"))
780      (((class color) (background dark))
781       (:bold t :foreground "LightGray"))
782      (t (:inverse-video t :bold t)))
783   "Face used for high interest uncached articles."
784   :group 'gnus-summary)
785 ;; backward-compatibility alias
786 (put 'gnus-summary-high-undownloaded-face 'face-alias 'gnus-summary-high-undownloaded)
787
788 (defface gnus-summary-low-undownloaded
789    '((((class color)
790        (background light))
791       (:italic t :foreground "cyan4" :bold nil))
792      (((class color) (background dark))
793       (:italic t :foreground "LightGray" :bold nil))
794      (t (:inverse-video t :italic t)))
795   "Face used for low interest uncached articles."
796   :group 'gnus-summary)
797 ;; backward-compatibility alias
798 (put 'gnus-summary-low-undownloaded-face 'face-alias 'gnus-summary-low-undownloaded)
799
800 (defface gnus-summary-normal-undownloaded
801    '((((class color)
802        (background light))
803       (:foreground "cyan4" :bold nil))
804      (((class color) (background dark))
805       (:foreground "LightGray" :bold nil))
806      (t (:inverse-video t)))
807   "Face used for normal interest uncached articles."
808   :group 'gnus-summary)
809 ;; backward-compatibility alias
810 (put 'gnus-summary-normal-undownloaded-face 'face-alias 'gnus-summary-normal-undownloaded)
811
812 (defface gnus-summary-high-unread
813   '((t
814      (:bold t)))
815   "Face used for high interest unread articles."
816   :group 'gnus-summary)
817 ;; backward-compatibility alias
818 (put 'gnus-summary-high-unread-face 'face-alias 'gnus-summary-high-unread)
819
820 (defface gnus-summary-low-unread
821   '((t
822      (:italic t)))
823   "Face used for low interest unread articles."
824   :group 'gnus-summary)
825 ;; backward-compatibility alias
826 (put 'gnus-summary-low-unread-face 'face-alias 'gnus-summary-low-unread)
827
828 (defface gnus-summary-normal-unread
829   '((t
830      ()))
831   "Face used for normal interest unread articles."
832   :group 'gnus-summary)
833 ;; backward-compatibility alias
834 (put 'gnus-summary-normal-unread-face 'face-alias 'gnus-summary-normal-unread)
835
836 (defface gnus-summary-high-read
837   '((((class color)
838       (background dark))
839      (:foreground "PaleGreen"
840                   :bold t))
841     (((class color)
842       (background light))
843      (:foreground "DarkGreen"
844                   :bold t))
845     (t
846      (:bold t)))
847   "Face used for high interest read articles."
848   :group 'gnus-summary)
849 ;; backward-compatibility alias
850 (put 'gnus-summary-high-read-face 'face-alias 'gnus-summary-high-read)
851
852 (defface gnus-summary-low-read
853   '((((class color)
854       (background dark))
855      (:foreground "PaleGreen"
856                   :italic t))
857     (((class color)
858       (background light))
859      (:foreground "DarkGreen"
860                   :italic t))
861     (t
862      (:italic t)))
863   "Face used for low interest read articles."
864   :group 'gnus-summary)
865 ;; backward-compatibility alias
866 (put 'gnus-summary-low-read-face 'face-alias 'gnus-summary-low-read)
867
868 (defface gnus-summary-normal-read
869   '((((class color)
870       (background dark))
871      (:foreground "PaleGreen"))
872     (((class color)
873       (background light))
874      (:foreground "DarkGreen"))
875     (t
876      ()))
877   "Face used for normal interest read articles."
878   :group 'gnus-summary)
879 ;; backward-compatibility alias
880 (put 'gnus-summary-normal-read-face 'face-alias 'gnus-summary-normal-read)
881
882
883 ;;;
884 ;;; Gnus buffers
885 ;;;
886
887 (defvar gnus-buffers nil)
888
889 (defun gnus-get-buffer-create (name)
890   "Do the same as `get-buffer-create', but store the created buffer."
891   (or (get-buffer name)
892       (car (push (get-buffer-create name) gnus-buffers))))
893
894 (defun gnus-add-buffer ()
895   "Add the current buffer to the list of Gnus buffers."
896   (push (current-buffer) gnus-buffers))
897
898 (defmacro gnus-kill-buffer (buffer)
899   "Kill BUFFER and remove from the list of Gnus buffers."
900   `(let ((buf ,buffer))
901      (when (gnus-buffer-exists-p buf)
902        (setq gnus-buffers (delete (get-buffer buf) gnus-buffers))
903        (kill-buffer buf))))
904
905 (defun gnus-buffers ()
906   "Return a list of live Gnus buffers."
907   (while (and gnus-buffers
908               (not (buffer-name (car gnus-buffers))))
909     (pop gnus-buffers))
910   (let ((buffers gnus-buffers))
911     (while (cdr buffers)
912       (if (buffer-name (cadr buffers))
913           (pop buffers)
914         (setcdr buffers (cddr buffers)))))
915   gnus-buffers)
916
917 ;;; Splash screen.
918
919 (defvar gnus-group-buffer "*Group*")
920
921 (autoload 'gnus-play-jingle "gnus-audio")
922
923 (defface gnus-splash
924   '((((class color)
925       (background dark))
926      (:foreground "#cccccc"))
927     (((class color)
928       (background light))
929      (:foreground "#888888"))
930     (t
931      ()))
932   "Face for the splash screen."
933   :group 'gnus-start)
934 ;; backward-compatibility alias
935 (put 'gnus-splash-face 'face-alias 'gnus-splash)
936
937 (defun gnus-splash ()
938   (save-excursion
939     (switch-to-buffer (gnus-get-buffer-create gnus-group-buffer))
940     (let ((buffer-read-only nil))
941       (erase-buffer)
942       (unless gnus-inhibit-startup-message
943         (gnus-group-startup-message)
944         (sit-for 0)
945         (when gnus-play-startup-jingle
946           (gnus-play-jingle))))))
947
948 (defun gnus-indent-rigidly (start end arg)
949   "Indent rigidly using only spaces and no tabs."
950   (save-excursion
951     (save-restriction
952       (narrow-to-region start end)
953       (let ((tab-width 8))
954         (indent-rigidly start end arg)
955         ;; We translate tabs into spaces -- not everybody uses
956         ;; an 8-character tab.
957         (goto-char (point-min))
958         (while (search-forward "\t" nil t)
959           (replace-match "        " t t))))))
960
961 (defvar gnus-simple-splash nil)
962
963 ;;(format "%02x%02x%02x" 114 66 20) "724214"
964
965 (defvar gnus-logo-color-alist
966   '((flame "#cc3300" "#ff2200")
967     (pine "#c0cc93" "#f8ffb8")
968     (moss "#a1cc93" &qu