(eval-when-compile (require 'cl))
(require 'wid-edit)
(require 'mm-util)
+(require 'nnheader)
;; Make sure it was the right mm-util.
(unless (fboundp 'mm-guess-mime-charset)
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.08"
+(defconst gnus-version-number "0.13"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Oort Gnus v%s" gnus-version-number)
()))
"Face used for normal interest ancient articles.")
-(defface gnus-summary-high-uncached-face
+(defface gnus-summary-high-undownloaded-face
'((((class color)
(background light))
(:bold t :foreground "cyan4" :bold nil))
(t (:inverse-video t :bold t)))
"Face used for high interest uncached articles.")
-(defface gnus-summary-low-uncached-face
+(defface gnus-summary-low-undownloaded-face
'((((class color)
(background light))
(:italic t :foreground "cyan4" :bold nil))
(t (:inverse-video t :italic t)))
"Face used for low interest uncached articles.")
-(defface gnus-summary-normal-uncached-face
+(defface gnus-summary-normal-undownloaded-face
'((((class color)
(background light))
(:foreground "cyan4" :bold nil))
((and
(fboundp 'find-image)
(display-graphic-p)
- (let ((image (find-image
- `((:type xpm :file "gnus.xpm"
- :color-symbols
- (("thing" . ,(car gnus-logo-colors))
- ("shadow" . ,(cadr gnus-logo-colors))
- ("background" . ,(face-background 'default))))
- (:type pbm :file "gnus.pbm"
- ;; Account for the pbm's blackground.
- :background ,(face-foreground 'gnus-splash-face)
- :foreground ,(face-background 'default))
- (:type xbm :file "gnus.xbm"
- ;; Account for the xbm's blackground.
- :background ,(face-foreground 'gnus-splash-face)
- :foreground ,(face-background 'default))))))
+ (let* ((data-directory (nnheader-find-etc-directory "gnus"))
+ (image (find-image
+ `((:type xpm :file "gnus.xpm"
+ :color-symbols
+ (("thing" . ,(car gnus-logo-colors))
+ ("shadow" . ,(cadr gnus-logo-colors))
+ ("oort" . "#eeeeee")
+ ("background" . ,(face-background 'default))))
+ (:type pbm :file "gnus.pbm"
+ ;; Account for the pbm's blackground.
+ :background ,(face-foreground 'gnus-splash-face)
+ :foreground ,(face-background 'default))
+ (:type xbm :file "gnus.xbm"
+ ;; Account for the xbm's blackground.
+ :background ,(face-foreground 'gnus-splash-face)
+ :foreground ,(face-background 'default))))))
(when image
(let ((size (image-size image)))
(insert-char ?\n (max 0 (round (- (window-height)
"The ifile summary exit spam processor.
Only applicable to spam groups.")
+(defvar gnus-group-spam-exit-processor-stat "stat"
+ "The spam-stat summary exit spam processor.
+Only applicable to spam groups.")
+
(defvar gnus-group-spam-exit-processor-bogofilter "bogofilter"
"The Bogofilter summary exit spam processor.
Only applicable to spam groups.")
"The Blacklist summary exit spam processor.
Only applicable to spam groups.")
+(defvar gnus-group-ham-exit-processor-ifile "ifile-ham"
+ "The ifile summary exit ham processor.
+Only applicable to non-spam (unclassified and ham) groups.")
+
+(defvar gnus-group-ham-exit-processor-stat "stat-ham"
+ "The spam-stat summary exit ham processor.
+Only applicable to non-spam (unclassified and ham) groups.")
+
(defvar gnus-group-ham-exit-processor-whitelist "whitelist"
"The whitelist summary exit ham processor.
Only applicable to non-spam (unclassified and ham) groups.")
(list :tag "Spam Summary Exit Processor Choices"
(set
(variable-item gnus-group-spam-exit-processor-ifile)
+ (variable-item gnus-group-spam-exit-processor-stat)
(variable-item gnus-group-spam-exit-processor-bogofilter)
(variable-item gnus-group-spam-exit-processor-blacklist)
+ (variable-item gnus-group-ham-exit-processor-ifile)
+ (variable-item gnus-group-ham-exit-processor-stat)
(variable-item gnus-group-ham-exit-processor-whitelist)
(variable-item gnus-group-ham-exit-processor-BBDB))))
:function-document
(regexp :tag "Group Regexp")
(set :tag "Spam/Ham Summary Exit Processor"
(variable-item gnus-group-spam-exit-processor-ifile)
+ (variable-item gnus-group-spam-exit-processor-stat)
(variable-item gnus-group-spam-exit-processor-bogofilter)
(variable-item gnus-group-spam-exit-processor-blacklist)
+ (variable-item gnus-group-ham-exit-processor-ifile)
+ (variable-item gnus-group-ham-exit-processor-stat)
(variable-item gnus-group-ham-exit-processor-whitelist)
(variable-item gnus-group-ham-exit-processor-BBDB))))
:parameter-document
group or `nil' for explicit expiration. This only makes sense for
mail groups."
:variable-group spam
- :variable-type '(repeat :tag "Spam-processed articles destination"
- (list
- (regexp :tag "Group Regexp")
- (choice :tag "Destination for spam-processed articles at summary exit"
- (string :tag "Move to a group")
- (other :tag "Expire" nil))))
+ :variable-type '(repeat
+ :tag "Spam-processed articles destination"
+ (list
+ (regexp :tag "Group Regexp")
+ (choice
+ :tag "Destination for spam-processed articles at summary exit"
+ (string :tag "Move to a group")
+ (other :tag "Expire" nil))))
:parameter-document
"Where spam-processed articles will go at summary exit.")
+(gnus-define-group-parameter
+ ham-process-destination
+ :parameter-type '(choice
+ :tag "Destination for ham articles at summary exit from a spam group"
+ (string :tag "Move to a group")
+ (other :tag "Do nothing" nil))
+ :function-document
+ "Where ham articles will go at summary exit from a spam group."
+ :variable gnus-ham-process-destinations
+ :variable-default nil
+ :variable-document
+ "*Groups in which to explicitly send ham articles to
+another group, or do nothing (the default). If non-nil, this should
+be a list of group name regexps that should match all groups in which
+to do ham article moving, associated with the destination
+group or `nil' for explicit ignoring. This only makes sense for
+mail groups, and only works in spam groups."
+ :variable-group spam
+ :variable-type '(repeat
+ :tag "Ham articles destination"
+ (list
+ (regexp :tag "Group Regexp")
+ (choice
+ :tag "Destination for ham articles at summary exit from spam group"
+ (string :tag "Move to a group")
+ (other :tag "Expire" nil))))
+ :parameter-document
+ "Where ham articles will go at summary exit from a spam group.")
+
(defcustom gnus-group-uncollapsed-levels 1
"Number of group name elements to leave alone when making a short group name."
:group 'gnus-group-visual
gnus-newsrc-alist gnus-server-alist
gnus-killed-list gnus-zombie-list
gnus-topic-topology gnus-topic-alist
- gnus-format-specs gnus-agent-covered-methods)
+ gnus-agent-covered-methods gnus-format-specs)
"Gnus variables saved in the quick startup file.")
(defvar gnus-newsrc-alist nil
("gnus-demon" :interactive t
gnus-demon-init gnus-demon-cancel)
("gnus-fun" gnus-convert-gray-x-face-to-xpm gnus-display-x-face-in-from
- gnus-convert-image-to-gray-x-face)
+ gnus-convert-image-to-gray-x-face gnus-convert-face-to-png
+ gnus-face-from-file)
("gnus-salt" gnus-highlight-selected-tree gnus-possibly-generate-tree
gnus-tree-open gnus-tree-close gnus-carpal-setup-buffer)
("gnus-nocem" gnus-nocem-scan-groups gnus-nocem-close
You should call this in the `gnus-group-buffer' buffer.
The function `gnus-group-find-parameter' will do that for you."
;; The speed trick: No cons'ing and quit early.
- (or (let ((params (funcall gnus-group-get-parameter-function group)))
- ;; Start easy, check the "real" group parameters.
- (gnus-group-parameter-value params symbol allow-list))
+ (let* ((params (funcall gnus-group-get-parameter-function group))
+ ;; Start easy, check the "real" group parameters.
+ (simple-results
+ (gnus-group-parameter-value params symbol allow-list t)))
+ (if simple-results
+ ;; Found results; return them.
+ (car simple-results)
;; We didn't found it there, try `gnus-parameters'.
(let ((result nil)
(head nil)
;; Exit the loop early.
(setq tail nil))))
;; Done.
- result)))
+ result))))
(defun gnus-group-find-parameter (group &optional symbol allow-list)
"Return the group parameters for GROUP.
(gnus-group-parameter-value params symbol allow-list)
params)))
-(defun gnus-group-parameter-value (params symbol &optional allow-list)
+(defun gnus-group-parameter-value (params symbol &optional
+ allow-list present-p)
"Return the value of SYMBOL in group PARAMS."
;; We only wish to return group parameters (dotted lists) and
;; not local variables, which may have the same names.
(eq (car elem) symbol)
(or allow-list
(atom (cdr elem))))
- (throw 'found (cdr elem))))))))
+ (throw 'found (if present-p (list (cdr elem))
+ (cdr elem)))))))))
(defun gnus-group-add-parameter (group param)
"Add parameter PARAM to GROUP."