(shr-insert-table): Also insert empty TDs.
[gnus] / lisp / gnus.el
index 3368103..531374b 100644 (file)
@@ -1,7 +1,8 @@
 ;;; gnus.el --- a newsreader for GNU Emacs
 
 ;;; gnus.el --- a newsreader for GNU Emacs
 
-;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997,
-;; 1998, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, 1998,
+;;   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
 
 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;;     Lars Magne Ingebrigtsen <larsi@gnus.org>
 
 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;;     Lars Magne Ingebrigtsen <larsi@gnus.org>
 
 ;; This file is part of GNU Emacs.
 
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
 
 ;;; Commentary:
 
 
 (eval '(run-hooks 'gnus-load-hook))
 
 
 (eval '(run-hooks 'gnus-load-hook))
 
+;; For Emacs < 22.2.
+(eval-and-compile
+  (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
+
 (eval-when-compile (require 'cl))
 (require 'wid-edit)
 (require 'mm-util)
 (require 'nnheader)
 
 (eval-when-compile (require 'cl))
 (require 'wid-edit)
 (require 'mm-util)
 (require 'nnheader)
 
+;; These are defined afterwards with gnus-define-group-parameter
+(defvar gnus-ham-process-destinations)
+(defvar gnus-parameter-ham-marks-alist)
+(defvar gnus-parameter-spam-marks-alist)
+(defvar gnus-spam-autodetect)
+(defvar gnus-spam-autodetect-methods)
+(defvar gnus-spam-newsgroup-contents)
+(defvar gnus-spam-process-destinations)
+(defvar gnus-spam-resend-to)
+(defvar gnus-ham-resend-to)
+(defvar gnus-spam-process-newsgroups)
+
+
 (defgroup gnus nil
   "The coffee-brewing, all singing, all dancing, kitchen sink newsreader."
   :group 'news
   :group 'mail)
 
 (defgroup gnus nil
   "The coffee-brewing, all singing, all dancing, kitchen sink newsreader."
   :group 'news
   :group 'mail)
 
+(defgroup gnus-start nil
+  "Starting your favorite newsreader."
+  :group 'gnus)
+
 (defgroup gnus-format nil
   "Dealing with formatting issues."
   :group 'gnus)
 (defgroup gnus-format nil
   "Dealing with formatting issues."
   :group 'gnus)
   "Article Registry."
   :group 'gnus)
 
   "Article Registry."
   :group 'gnus)
 
-(defgroup gnus-start nil
-  "Starting your favorite newsreader."
-  :group 'gnus)
-
 (defgroup gnus-start-server nil
   "Server options at startup."
   :group 'gnus-start)
 (defgroup gnus-start-server nil
   "Server options at startup."
   :group 'gnus-start)
@@ -268,12 +284,8 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Various Various")
   :group 'gnus)
 
   :link '(custom-manual "(gnus)Various Various")
   :group 'gnus)
 
-(defgroup gnus-mime nil
-  "Variables for controlling the Gnus MIME interface."
-  :group 'gnus)
-
 (defgroup gnus-exit nil
 (defgroup gnus-exit nil
-  "Exiting gnus."
+  "Exiting Gnus."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
@@ -282,7 +294,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "0.4"
+(defconst gnus-version-number "0.11"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "No Gnus v%s" gnus-version-number)
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "No Gnus v%s" gnus-version-number)
@@ -295,22 +307,19 @@ be set in `.emacs' instead."
   :group 'gnus-start
   :type 'boolean)
 
   :group 'gnus-start
   :type 'boolean)
 
-(defcustom gnus-play-startup-jingle nil
-  "If non-nil, play the Gnus jingle at startup."
-  :group 'gnus-start
-  :type 'boolean)
-
 (unless (fboundp 'gnus-group-remove-excess-properties)
   (defalias 'gnus-group-remove-excess-properties 'ignore))
 
 (unless (featurep 'gnus-xmas)
   (defalias 'gnus-make-overlay 'make-overlay)
   (defalias 'gnus-delete-overlay 'delete-overlay)
 (unless (fboundp 'gnus-group-remove-excess-properties)
   (defalias 'gnus-group-remove-excess-properties 'ignore))
 
 (unless (featurep 'gnus-xmas)
   (defalias 'gnus-make-overlay 'make-overlay)
   (defalias 'gnus-delete-overlay 'delete-overlay)
+  (defalias 'gnus-overlay-get 'overlay-get)
   (defalias 'gnus-overlay-put 'overlay-put)
   (defalias 'gnus-move-overlay 'move-overlay)
   (defalias 'gnus-overlay-buffer 'overlay-buffer)
   (defalias 'gnus-overlay-start 'overlay-start)
   (defalias 'gnus-overlay-end 'overlay-end)
   (defalias 'gnus-overlay-put 'overlay-put)
   (defalias 'gnus-move-overlay 'move-overlay)
   (defalias 'gnus-overlay-buffer 'overlay-buffer)
   (defalias 'gnus-overlay-start 'overlay-start)
   (defalias 'gnus-overlay-end 'overlay-end)
+  (defalias 'gnus-overlays-in 'overlays-in)
   (defalias 'gnus-extent-detached-p 'ignore)
   (defalias 'gnus-extent-start-open 'ignore)
   (defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
   (defalias 'gnus-extent-detached-p 'ignore)
   (defalias 'gnus-extent-start-open 'ignore)
   (defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
@@ -353,7 +362,7 @@ be set in `.emacs' instead."
 ;; We define these group faces here to avoid the display
 ;; update forced when creating new faces.
 
 ;; We define these group faces here to avoid the display
 ;; update forced when creating new faces.
 
-(defface gnus-group-news-1-face
+(defface gnus-group-news-1
   '((((class color)
       (background dark))
      (:foreground "PaleTurquoise" :bold t))
   '((((class color)
       (background dark))
      (:foreground "PaleTurquoise" :bold t))
@@ -364,8 +373,11 @@ be set in `.emacs' instead."
      ()))
   "Level 1 newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 1 newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-1-face 'face-alias 'gnus-group-news-1)
+(put 'gnus-group-news-1-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-1-empty-face
+(defface gnus-group-news-1-empty
   '((((class color)
       (background dark))
      (:foreground "PaleTurquoise"))
   '((((class color)
       (background dark))
      (:foreground "PaleTurquoise"))
@@ -376,8 +388,11 @@ be set in `.emacs' instead."
      ()))
   "Level 1 empty newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 1 empty newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-1-empty-face 'face-alias 'gnus-group-news-1-empty)
+(put 'gnus-group-news-1-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-2-face
+(defface gnus-group-news-2
   '((((class color)
       (background dark))
      (:foreground "turquoise" :bold t))
   '((((class color)
       (background dark))
      (:foreground "turquoise" :bold t))
@@ -388,8 +403,11 @@ be set in `.emacs' instead."
      ()))
   "Level 2 newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 2 newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-2-face 'face-alias 'gnus-group-news-2)
+(put 'gnus-group-news-2-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-2-empty-face
+(defface gnus-group-news-2-empty
   '((((class color)
       (background dark))
      (:foreground "turquoise"))
   '((((class color)
       (background dark))
      (:foreground "turquoise"))
@@ -400,8 +418,11 @@ be set in `.emacs' instead."
      ()))
   "Level 2 empty newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 2 empty newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-2-empty-face 'face-alias 'gnus-group-news-2-empty)
+(put 'gnus-group-news-2-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-3-face
+(defface gnus-group-news-3
   '((((class color)
       (background dark))
      (:bold t))
   '((((class color)
       (background dark))
      (:bold t))
@@ -412,8 +433,11 @@ be set in `.emacs' instead."
      ()))
   "Level 3 newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 3 newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-3-face 'face-alias 'gnus-group-news-3)
+(put 'gnus-group-news-3-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-3-empty-face
+(defface gnus-group-news-3-empty
   '((((class color)
       (background dark))
      ())
   '((((class color)
       (background dark))
      ())
@@ -424,8 +448,11 @@ be set in `.emacs' instead."
      ()))
   "Level 3 empty newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 3 empty newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-3-empty-face 'face-alias 'gnus-group-news-3-empty)
+(put 'gnus-group-news-3-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-4-face
+(defface gnus-group-news-4
   '((((class color)
       (background dark))
      (:bold t))
   '((((class color)
       (background dark))
      (:bold t))
@@ -436,8 +463,11 @@ be set in `.emacs' instead."
      ()))
   "Level 4 newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 4 newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-4-face 'face-alias 'gnus-group-news-4)
+(put 'gnus-group-news-4-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-4-empty-face
+(defface gnus-group-news-4-empty
   '((((class color)
       (background dark))
      ())
   '((((class color)
       (background dark))
      ())
@@ -448,8 +478,11 @@ be set in `.emacs' instead."
      ()))
   "Level 4 empty newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 4 empty newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-4-empty-face 'face-alias 'gnus-group-news-4-empty)
+(put 'gnus-group-news-4-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-5-face
+(defface gnus-group-news-5
   '((((class color)
       (background dark))
      (:bold t))
   '((((class color)
       (background dark))
      (:bold t))
@@ -460,8 +493,11 @@ be set in `.emacs' instead."
      ()))
   "Level 5 newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 5 newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-5-face 'face-alias 'gnus-group-news-5)
+(put 'gnus-group-news-5-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-5-empty-face
+(defface gnus-group-news-5-empty
   '((((class color)
       (background dark))
      ())
   '((((class color)
       (background dark))
      ())
@@ -472,8 +508,11 @@ be set in `.emacs' instead."
      ()))
   "Level 5 empty newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 5 empty newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-5-empty-face 'face-alias 'gnus-group-news-5-empty)
+(put 'gnus-group-news-5-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-6-face
+(defface gnus-group-news-6
   '((((class color)
       (background dark))
      (:bold t))
   '((((class color)
       (background dark))
      (:bold t))
@@ -484,8 +523,11 @@ be set in `.emacs' instead."
      ()))
   "Level 6 newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 6 newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-6-face 'face-alias 'gnus-group-news-6)
+(put 'gnus-group-news-6-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-6-empty-face
+(defface gnus-group-news-6-empty
   '((((class color)
       (background dark))
      ())
   '((((class color)
       (background dark))
      ())
@@ -496,8 +538,11 @@ be set in `.emacs' instead."
      ()))
   "Level 6 empty newsgroup face."
   :group 'gnus-group)
      ()))
   "Level 6 empty newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-6-empty-face 'face-alias 'gnus-group-news-6-empty)
+(put 'gnus-group-news-6-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-low-face
+(defface gnus-group-news-low
   '((((class color)
       (background dark))
      (:foreground "DarkTurquoise" :bold t))
   '((((class color)
       (background dark))
      (:foreground "DarkTurquoise" :bold t))
@@ -508,8 +553,11 @@ be set in `.emacs' instead."
      ()))
   "Low level newsgroup face."
   :group 'gnus-group)
      ()))
   "Low level newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-low-face 'face-alias 'gnus-group-news-low)
+(put 'gnus-group-news-low-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-news-low-empty-face
+(defface gnus-group-news-low-empty
   '((((class color)
       (background dark))
      (:foreground "DarkTurquoise"))
   '((((class color)
       (background dark))
      (:foreground "DarkTurquoise"))
@@ -520,11 +568,14 @@ be set in `.emacs' instead."
      ()))
   "Low level empty newsgroup face."
   :group 'gnus-group)
      ()))
   "Low level empty newsgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-news-low-empty-face 'face-alias 'gnus-group-news-low-empty)
+(put 'gnus-group-news-low-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-mail-1-face
+(defface gnus-group-mail-1
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "aquamarine1" :bold t))
+     (:foreground "#e1ffe1" :bold t))
     (((class color)
       (background light))
      (:foreground "DeepPink3" :bold t))
     (((class color)
       (background light))
      (:foreground "DeepPink3" :bold t))
@@ -532,11 +583,14 @@ be set in `.emacs' instead."
      (:bold t)))
   "Level 1 mailgroup face."
   :group 'gnus-group)
      (:bold t)))
   "Level 1 mailgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-mail-1-face 'face-alias 'gnus-group-mail-1)
+(put 'gnus-group-mail-1-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-mail-1-empty-face
+(defface gnus-group-mail-1-empty
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "aquamarine1"))
+     (:foreground "#e1ffe1"))
     (((class color)
       (background light))
      (:foreground "DeepPink3"))
     (((class color)
       (background light))
      (:foreground "DeepPink3"))
@@ -544,11 +598,14 @@ be set in `.emacs' instead."
      (:italic t :bold t)))
   "Level 1 empty mailgroup face."
   :group 'gnus-group)
      (:italic t :bold t)))
   "Level 1 empty mailgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-mail-1-empty-face 'face-alias 'gnus-group-mail-1-empty)
+(put 'gnus-group-mail-1-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-mail-2-face
+(defface gnus-group-mail-2
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "aquamarine2" :bold t))
+     (:foreground "DarkSeaGreen1" :bold t))
     (((class color)
       (background light))
      (:foreground "HotPink3" :bold t))
     (((class color)
       (background light))
      (:foreground "HotPink3" :bold t))
@@ -556,11 +613,14 @@ be set in `.emacs' instead."
      (:bold t)))
   "Level 2 mailgroup face."
   :group 'gnus-group)
      (:bold t)))
   "Level 2 mailgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-mail-2-face 'face-alias 'gnus-group-mail-2)
+(put 'gnus-group-mail-2-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-mail-2-empty-face
+(defface gnus-group-mail-2-empty
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "aquamarine2"))
+     (:foreground "DarkSeaGreen1"))
     (((class color)
       (background light))
      (:foreground "HotPink3"))
     (((class color)
       (background light))
      (:foreground "HotPink3"))
@@ -568,11 +628,14 @@ be set in `.emacs' instead."
      (:bold t)))
   "Level 2 empty mailgroup face."
   :group 'gnus-group)
      (:bold t)))
   "Level 2 empty mailgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-mail-2-empty-face 'face-alias 'gnus-group-mail-2-empty)
+(put 'gnus-group-mail-2-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-mail-3-face
+(defface gnus-group-mail-3
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "aquamarine3" :bold t))
+     (:foreground "aquamarine1" :bold t))
     (((class color)
       (background light))
      (:foreground "magenta4" :bold t))
     (((class color)
       (background light))
      (:foreground "magenta4" :bold t))
@@ -580,11 +643,14 @@ be set in `.emacs' instead."
      (:bold t)))
   "Level 3 mailgroup face."
   :group 'gnus-group)
      (:bold t)))
   "Level 3 mailgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-mail-3-face 'face-alias 'gnus-group-mail-3)
+(put 'gnus-group-mail-3-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-mail-3-empty-face
+(defface gnus-group-mail-3-empty
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "aquamarine3"))
+     (:foreground "aquamarine1"))
     (((class color)
       (background light))
      (:foreground "magenta4"))
     (((class color)
       (background light))
      (:foreground "magenta4"))
@@ -592,11 +658,14 @@ be set in `.emacs' instead."
      ()))
   "Level 3 empty mailgroup face."
   :group 'gnus-group)
      ()))
   "Level 3 empty mailgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-mail-3-empty-face 'face-alias 'gnus-group-mail-3-empty)
+(put 'gnus-group-mail-3-empty-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-mail-low-face
+(defface gnus-group-mail-low
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "aquamarine4" :bold t))
+     (:foreground "aquamarine2" :bold t))
     (((class color)
       (background light))
      (:foreground "DeepPink4" :bold t))
     (((class color)
       (background light))
      (:foreground "DeepPink4" :bold t))
@@ -604,11 +673,14 @@ be set in `.emacs' instead."
      (:bold t)))
   "Low level mailgroup face."
   :group 'gnus-group)
      (:bold t)))
   "Low level mailgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-mail-low-face 'face-alias 'gnus-group-mail-low)
+(put 'gnus-group-mail-low-face 'obsolete-face "22.1")
 
 
-(defface gnus-group-mail-low-empty-face
+(defface gnus-group-mail-low-empty
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "aquamarine4"))
+     (:foreground "aquamarine2"))
     (((class color)
       (background light))
      (:foreground "DeepPink4"))
     (((class color)
       (background light))
      (:foreground "DeepPink4"))
@@ -616,21 +688,29 @@ be set in `.emacs' instead."
      (:bold t)))
   "Low level empty mailgroup face."
   :group 'gnus-group)
      (:bold t)))
   "Low level empty mailgroup face."
   :group 'gnus-group)
+;; backward-compatibility alias
+(put 'gnus-group-mail-low-empty-face 'face-alias 'gnus-group-mail-low-empty)
+(put 'gnus-group-mail-low-empty-face 'obsolete-face "22.1")
 
 ;; Summary mode faces.
 
 
 ;; Summary mode faces.
 
-(defface gnus-summary-selected-face '((t
-                                      (:underline t)))
+(defface gnus-summary-selected '((t (:underline t)))
   "Face used for selected articles."
   :group 'gnus-summary)
   "Face used for selected articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-selected-face 'face-alias 'gnus-summary-selected)
+(put 'gnus-summary-selected-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-cancelled-face
+(defface gnus-summary-cancelled
   '((((class color))
      (:foreground "yellow" :background "black")))
   "Face used for cancelled articles."
   :group 'gnus-summary)
   '((((class color))
      (:foreground "yellow" :background "black")))
   "Face used for cancelled articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-cancelled-face 'face-alias 'gnus-summary-cancelled)
+(put 'gnus-summary-cancelled-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-high-ticked-face
+(defface gnus-summary-high-ticked
   '((((class color)
       (background dark))
      (:foreground "pink" :bold t))
   '((((class color)
       (background dark))
      (:foreground "pink" :bold t))
@@ -641,8 +721,11 @@ be set in `.emacs' instead."
      (:bold t)))
   "Face used for high interest ticked articles."
   :group 'gnus-summary)
      (:bold t)))
   "Face used for high interest ticked articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-high-ticked-face 'face-alias 'gnus-summary-high-ticked)
+(put 'gnus-summary-high-ticked-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-low-ticked-face
+(defface gnus-summary-low-ticked
   '((((class color)
       (background dark))
      (:foreground "pink" :italic t))
   '((((class color)
       (background dark))
      (:foreground "pink" :italic t))
@@ -653,8 +736,11 @@ be set in `.emacs' instead."
      (:italic t)))
   "Face used for low interest ticked articles."
   :group 'gnus-summary)
      (:italic t)))
   "Face used for low interest ticked articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-low-ticked-face 'face-alias 'gnus-summary-low-ticked)
+(put 'gnus-summary-low-ticked-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-normal-ticked-face
+(defface gnus-summary-normal-ticked
   '((((class color)
       (background dark))
      (:foreground "pink"))
   '((((class color)
       (background dark))
      (:foreground "pink"))
@@ -665,8 +751,11 @@ be set in `.emacs' instead."
      ()))
   "Face used for normal interest ticked articles."
   :group 'gnus-summary)
      ()))
   "Face used for normal interest ticked articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-normal-ticked-face 'face-alias 'gnus-summary-normal-ticked)
+(put 'gnus-summary-normal-ticked-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-high-ancient-face
+(defface gnus-summary-high-ancient
   '((((class color)
       (background dark))
      (:foreground "SkyBlue" :bold t))
   '((((class color)
       (background dark))
      (:foreground "SkyBlue" :bold t))
@@ -677,8 +766,11 @@ be set in `.emacs' instead."
      (:bold t)))
   "Face used for high interest ancient articles."
   :group 'gnus-summary)
      (:bold t)))
   "Face used for high interest ancient articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-high-ancient-face 'face-alias 'gnus-summary-high-ancient)
+(put 'gnus-summary-high-ancient-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-low-ancient-face
+(defface gnus-summary-low-ancient
   '((((class color)
       (background dark))
      (:foreground "SkyBlue" :italic t))
   '((((class color)
       (background dark))
      (:foreground "SkyBlue" :italic t))
@@ -689,8 +781,11 @@ be set in `.emacs' instead."
      (:italic t)))
   "Face used for low interest ancient articles."
   :group 'gnus-summary)
      (:italic t)))
   "Face used for low interest ancient articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-low-ancient-face 'face-alias 'gnus-summary-low-ancient)
+(put 'gnus-summary-low-ancient-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-normal-ancient-face
+(defface gnus-summary-normal-ancient
   '((((class color)
       (background dark))
      (:foreground "SkyBlue"))
   '((((class color)
       (background dark))
      (:foreground "SkyBlue"))
@@ -701,8 +796,11 @@ be set in `.emacs' instead."
      ()))
   "Face used for normal interest ancient articles."
   :group 'gnus-summary)
      ()))
   "Face used for normal interest ancient articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-normal-ancient-face 'face-alias 'gnus-summary-normal-ancient)
+(put 'gnus-summary-normal-ancient-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-high-undownloaded-face
+(defface gnus-summary-high-undownloaded
    '((((class color)
        (background light))
       (:bold t :foreground "cyan4"))
    '((((class color)
        (background light))
       (:bold t :foreground "cyan4"))
@@ -711,8 +809,11 @@ be set in `.emacs' instead."
      (t (:inverse-video t :bold t)))
   "Face used for high interest uncached articles."
   :group 'gnus-summary)
      (t (:inverse-video t :bold t)))
   "Face used for high interest uncached articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-high-undownloaded-face 'face-alias 'gnus-summary-high-undownloaded)
+(put 'gnus-summary-high-undownloaded-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-low-undownloaded-face
+(defface gnus-summary-low-undownloaded
    '((((class color)
        (background light))
       (:italic t :foreground "cyan4" :bold nil))
    '((((class color)
        (background light))
       (:italic t :foreground "cyan4" :bold nil))
@@ -721,8 +822,11 @@ be set in `.emacs' instead."
      (t (:inverse-video t :italic t)))
   "Face used for low interest uncached articles."
   :group 'gnus-summary)
      (t (:inverse-video t :italic t)))
   "Face used for low interest uncached articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-low-undownloaded-face 'face-alias 'gnus-summary-low-undownloaded)
+(put 'gnus-summary-low-undownloaded-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-normal-undownloaded-face
+(defface gnus-summary-normal-undownloaded
    '((((class color)
        (background light))
       (:foreground "cyan4" :bold nil))
    '((((class color)
        (background light))
       (:foreground "cyan4" :bold nil))
@@ -731,26 +835,38 @@ be set in `.emacs' instead."
      (t (:inverse-video t)))
   "Face used for normal interest uncached articles."
   :group 'gnus-summary)
      (t (:inverse-video t)))
   "Face used for normal interest uncached articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-normal-undownloaded-face 'face-alias 'gnus-summary-normal-undownloaded)
+(put 'gnus-summary-normal-undownloaded-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-high-unread-face
+(defface gnus-summary-high-unread
   '((t
      (:bold t)))
   "Face used for high interest unread articles."
   :group 'gnus-summary)
   '((t
      (:bold t)))
   "Face used for high interest unread articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-high-unread-face 'face-alias 'gnus-summary-high-unread)
+(put 'gnus-summary-high-unread-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-low-unread-face
+(defface gnus-summary-low-unread
   '((t
      (:italic t)))
   "Face used for low interest unread articles."
   :group 'gnus-summary)
   '((t
      (:italic t)))
   "Face used for low interest unread articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-low-unread-face 'face-alias 'gnus-summary-low-unread)
+(put 'gnus-summary-low-unread-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-normal-unread-face
+(defface gnus-summary-normal-unread
   '((t
      ()))
   "Face used for normal interest unread articles."
   :group 'gnus-summary)
   '((t
      ()))
   "Face used for normal interest unread articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-normal-unread-face 'face-alias 'gnus-summary-normal-unread)
+(put 'gnus-summary-normal-unread-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-high-read-face
+(defface gnus-summary-high-read
   '((((class color)
       (background dark))
      (:foreground "PaleGreen"
   '((((class color)
       (background dark))
      (:foreground "PaleGreen"
@@ -763,8 +879,11 @@ be set in `.emacs' instead."
      (:bold t)))
   "Face used for high interest read articles."
   :group 'gnus-summary)
      (:bold t)))
   "Face used for high interest read articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-high-read-face 'face-alias 'gnus-summary-high-read)
+(put 'gnus-summary-high-read-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-low-read-face
+(defface gnus-summary-low-read
   '((((class color)
       (background dark))
      (:foreground "PaleGreen"
   '((((class color)
       (background dark))
      (:foreground "PaleGreen"
@@ -777,8 +896,11 @@ be set in `.emacs' instead."
      (:italic t)))
   "Face used for low interest read articles."
   :group 'gnus-summary)
      (:italic t)))
   "Face used for low interest read articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-low-read-face 'face-alias 'gnus-summary-low-read)
+(put 'gnus-summary-low-read-face 'obsolete-face "22.1")
 
 
-(defface gnus-summary-normal-read-face
+(defface gnus-summary-normal-read
   '((((class color)
       (background dark))
      (:foreground "PaleGreen"))
   '((((class color)
       (background dark))
      (:foreground "PaleGreen"))
@@ -789,6 +911,9 @@ be set in `.emacs' instead."
      ()))
   "Face used for normal interest read articles."
   :group 'gnus-summary)
      ()))
   "Face used for normal interest read articles."
   :group 'gnus-summary)
+;; backward-compatibility alias
+(put 'gnus-summary-normal-read-face 'face-alias 'gnus-summary-normal-read)
+(put 'gnus-summary-normal-read-face 'obsolete-face "22.1")
 
 
 ;;;
 
 
 ;;;
@@ -829,20 +954,20 @@ be set in `.emacs' instead."
 
 (defvar gnus-group-buffer "*Group*")
 
 
 (defvar gnus-group-buffer "*Group*")
 
-(eval-and-compile
-  (autoload 'gnus-play-jingle "gnus-audio"))
-
-(defface gnus-splash-face
+(defface gnus-splash
   '((((class color)
       (background dark))
   '((((class color)
       (background dark))
-     (:foreground "#888888"))
+     (:foreground "#cccccc"))
     (((class color)
       (background light))
      (:foreground "#888888"))
     (t
      ()))
   "Face for the splash screen."
     (((class color)
       (background light))
      (:foreground "#888888"))
     (t
      ()))
   "Face for the splash screen."
-  :group 'gnus)
+  :group 'gnus-start)
+;; backward-compatibility alias
+(put 'gnus-splash-face 'face-alias 'gnus-splash)
+(put 'gnus-splash-face 'obsolete-face "22.1")
 
 (defun gnus-splash ()
   (save-excursion
 
 (defun gnus-splash ()
   (save-excursion
@@ -851,9 +976,7 @@ be set in `.emacs' instead."
       (erase-buffer)
       (unless gnus-inhibit-startup-message
        (gnus-group-startup-message)
       (erase-buffer)
       (unless gnus-inhibit-startup-message
        (gnus-group-startup-message)
-       (sit-for 0)
-       (when gnus-play-startup-jingle
-         (gnus-play-jingle))))))
+       (sit-for 0)))))
 
 (defun gnus-indent-rigidly (start end arg)
   "Indent rigidly using only spaces and no tabs."
 
 (defun gnus-indent-rigidly (start end arg)
   "Indent rigidly using only spaces and no tabs."
@@ -903,6 +1026,8 @@ be set in `.emacs' instead."
   (cdr (assq gnus-logo-color-style gnus-logo-color-alist))
   "Colors used for the Gnus logo.")
 
   (cdr (assq gnus-logo-color-style gnus-logo-color-alist))
   "Colors used for the Gnus logo.")
 
+(declare-function image-size "image.c" (spec &optional pixels frame))
+
 (defun gnus-group-startup-message (&optional x y)
   "Insert startup message in current buffer."
   ;; Insert the message.
 (defun gnus-group-startup-message (&optional x y)
   "Insert startup message in current buffer."
   ;; Insert the message.
@@ -911,7 +1036,17 @@ be set in `.emacs' instead."
    ((and
      (fboundp 'find-image)
      (display-graphic-p)
    ((and
      (fboundp 'find-image)
      (display-graphic-p)
+     ;; Make sure the library defining `image-load-path' is loaded
+     ;; (`find-image' is autoloaded) (and discard the result).  Else, we may
+     ;; get "defvar ignored because image-load-path is let-bound" when calling
+     ;; `find-image' below.
+     (or (find-image '(nil (:type xpm :file "gnus.xpm"))) t)
      (let* ((data-directory (nnheader-find-etc-directory "images/gnus"))
      (let* ((data-directory (nnheader-find-etc-directory "images/gnus"))
+           (image-load-path (cond (data-directory
+                                   (list data-directory))
+                                  ((boundp 'image-load-path)
+                                   (symbol-value 'image-load-path))
+                                  (t load-path)))
            (image (find-image
                    `((:type xpm :file "gnus.xpm"
                             :color-symbols
            (image (find-image
                    `((:type xpm :file "gnus.xpm"
                             :color-symbols
@@ -919,13 +1054,15 @@ be set in `.emacs' instead."
                              ("shadow" . ,(cadr gnus-logo-colors))
                              ("oort" . "#eeeeee")
                              ("background" . ,(face-background 'default))))
                              ("shadow" . ,(cadr gnus-logo-colors))
                              ("oort" . "#eeeeee")
                              ("background" . ,(face-background 'default))))
+                     (:type svg :file "gnus.svg")
+                     (:type png :file "gnus.png")
                      (:type pbm :file "gnus.pbm"
                             ;; Account for the pbm's blackground.
                      (:type pbm :file "gnus.pbm"
                             ;; Account for the pbm's blackground.
-                            :background ,(face-foreground 'gnus-splash-face)
+                            :background ,(face-foreground 'gnus-splash)
                             :foreground ,(face-background 'default))
                      (:type xbm :file "gnus.xbm"
                             ;; Account for the xbm's blackground.
                             :foreground ,(face-background 'default))
                      (:type xbm :file "gnus.xbm"
                             ;; Account for the xbm's blackground.
-                            :background ,(face-foreground 'gnus-splash-face)
+                            :background ,(face-foreground 'gnus-splash)
                             :foreground ,(face-background 'default))))))
        (when image
         (let ((size (image-size image)))
                             :foreground ,(face-background 'default))))))
        (when image
         (let ((size (image-size image)))
@@ -939,23 +1076,23 @@ be set in `.emacs' instead."
    (t
     (insert
      (format "              %s
    (t
     (insert
      (format "              %s
-          _    ___ _             _
-          _ ___ __ ___  __    _ ___
-          __   _     ___    __  ___
-              _           ___     _
-             _  _ __             _
-             ___   __            _
-                   __           _
-                    _      _   _
-                   _      _    _
-                      _  _    _
-                  __  ___
-                 _   _ _     _
-                _   _
-              _    _
-             _    _
-            _
-          __
+         _    ___ _             _
+         _ ___ __ ___  __    _ ___
+         __   _     ___    __  ___
+             _           ___     _
+            _  _ __             _
+            ___   __            _