(doc . "\
The coffee-brewing, all singing, all dancing, kitchen sink newsreader.")
(type . group)
- (data ((tag . "Visual")
- (doc . "\
+ (data
+ ((tag . "Visual")
+ (doc . "\
GNUS can be made colorful and fun or grey and dull as you wish.")
- (type . group)
- (data ((tag . "Visual")
- (doc . "Enable visual features.
+ (type . group)
+ (data
+ ((tag . "Visual")
+ (doc . "Enable visual features.
If `visual' is disabled, there will be no menus and few faces. Most of
the visual customization options below will be ignored. GNUS will use
less space and be faster as a result.")
- (default .
- (summary-highlight group-highlight
- article-highlight
- summary-menu group-menu article-menu
- tree-highlight menu highlight
- browse-menu server-menu
- page-marker tree-menu binary-menu pick-menu
- grouplens-menu))
- (name . gnus-visual)
- (type . toggle))
- ((tag . "WWW Browser")
- (doc . "\
+ (default .
+ (summary-highlight group-highlight
+ article-highlight
+ summary-menu group-menu article-menu
+ tree-highlight menu highlight
+ browse-menu server-menu
+ page-marker tree-menu binary-menu pick-menu
+ grouplens-menu))
+ (name . gnus-visual)
+ (type . toggle))
+ ((tag . "WWW Browser")
+ (doc . "\
WWW Browser to call when clicking on an URL button in the article buffer.
You can choose between one of the predefined browsers, or `Other'.")
- (name . browse-url-browser-function)
- (calculate . (cond ((boundp 'browse-url-browser-function)
- browse-url-browser-function)
- ((fboundp 'w3-fetch)
- 'w3-fetch)
- ((eq window-system 'x)
- 'gnus-netscape-open-url)))
- (type . choice)
- (data ((tag . "W3")
- (type . const)
- (default . w3-fetch))
- ((tag . "Netscape")
- (type . const)
- (default . browse-url-netscape))
- ((prompt . "Other")
- (doc . "\
+ (name . browse-url-browser-function)
+ (calculate . (cond ((boundp 'browse-url-browser-function)
+ browse-url-browser-function)
+ ((fboundp 'w3-fetch)
+ 'w3-fetch)
+ ((eq window-system 'x)
+ 'gnus-netscape-open-url)))
+ (type . choice)
+ (data
+ ((tag . "W3")
+ (type . const)
+ (default . w3-fetch))
+ ((tag . "Netscape")
+ (type . const)
+ (default . browse-url-netscape))
+ ((prompt . "Other")
+ (doc . "\
You must specify the name of a Lisp function here. The lisp function
should open a WWW browser when called with an URL (a string).
")
- (default . __uninitialized__)
- (type . symbol))))
- ((tag . "Mouse Face")
- (doc . "\
+ (default . __uninitialized__)
+ (type . symbol))))
+ ((tag . "Mouse Face")
+ (doc . "\
Face used for group or summary buffer mouse highlighting.
The line beneath the mouse pointer will be highlighted with this
face.")
- (name . gnus-mouse-face)
- (calculate . (if (boundp 'gnus-mouse-face)
- gnus-mouse-face
- 'highlight))
- (type . face))
- ((tag . "Article Display")
- (doc . "Controls how the article buffer will look.
+ (name . gnus-mouse-face)
+ (calculate . (if (boundp 'gnus-mouse-face)
+ gnus-mouse-face
+ 'highlight))
+ (type . face))
+ ((tag . "Article Display")
+ (doc . "Controls how the article buffer will look.
If you leave the list empty, the article will appear exactly as it is
stored on the disk. The list entries will hide or highlight various
parts of the article, making it easier to find the information you
want.")
- (name . gnus-article-display-hook)
- (type . list)
- (default . (gnus-article-hide-headers-if-wanted
- gnus-article-hide-boring-headers
- gnus-article-treat-overstrike
- gnus-article-maybe-highlight))
- (data ((type . repeat)
- (header . nil)
- (data (tag . "Filter")
- (type . choice)
- (data ((tag . "Treat Overstrike")
- (doc . "\
+ (name . gnus-article-display-hook)
+ (type . list)
+ (default . (gnus-article-hide-headers-if-wanted
+ gnus-article-hide-boring-headers
+ gnus-article-treat-overstrike
+ gnus-article-maybe-highlight))
+ (data
+ ((type . repeat)
+ (header . nil)
+ (data
+ (tag . "Filter")
+ (type . choice)
+ (data
+ ((tag . "Treat Overstrike")
+ (doc . "\
Convert use of overstrike into bold and underline.
Two identical letters separated by a backspace are displayed as a
still in use on some newsgroups, in particular the ClariNet
hierarchy.
")
- (type . const)
- (default .
- gnus-article-treat-overstrike))
- ((tag . "Word Wrap")
- (doc . "\
+ (type . const)
+ (default .
+ gnus-article-treat-overstrike))
+ ((tag . "Word Wrap")
+ (doc . "\
Format too long lines.
")
- (type . const)
- (default . gnus-article-word-wrap))
- ((tag . "Remove CR")
- (doc . "\
+ (type . const)
+ (default . gnus-article-word-wrap))
+ ((tag . "Remove CR")
+ (doc . "\
Remove carriage returns from an article.
")
- (type . const)
- (default . gnus-article-remove-cr))
- ((tag . "Display X-Face")
- (doc . "\
+ (type . const)
+ (default . gnus-article-remove-cr))
+ ((tag . "Display X-Face")
+ (doc . "\
Look for an X-Face header and display it if present.
See also `X Face Command' for a definition of the external command
used for decoding and displaying the face.
")
- (type . const)
- (default . gnus-article-display-x-face))
- ((tag . "Unquote Printable")
- (doc . "\
+ (type . const)
+ (default . gnus-article-display-x-face))
+ ((tag . "Unquote Printable")
+ (doc . "\
Transform MIME quoted printable into 8-bit characters.
Quoted printable is often seen by strings like `=EF' where you would
expect a non-English letter.
")
- (type . const)
- (default .
- gnus-article-de-quoted-unreadable))
- ((tag . "Universal Time")
- (doc . "\
+ (type . const)
+ (default .
+ gnus-article-de-quoted-unreadable))
+ ((tag . "Universal Time")
+ (doc . "\
Convert date header to universal time.
")
- (type . const)
- (default . gnus-article-date-ut))
- ((tag . "Local Time")
- (doc . "\
+ (type . const)
+ (default . gnus-article-date-ut))
+ ((tag . "Local Time")
+ (doc . "\
Convert date header to local timezone.
")
- (type . const)
- (default . gnus-article-date-local))
- ((tag . "Lapsed Time")
- (doc . "\
+ (type . const)
+ (default . gnus-article-date-local))
+ ((tag . "Lapsed Time")
+ (doc . "\
Replace date header with a header showing the articles age.
")
- (type . const)
- (default . gnus-article-date-lapsed))
- ((tag . "Highlight")
- (doc . "\
+ (type . const)
+ (default . gnus-article-date-lapsed))
+ ((tag . "Highlight")
+ (doc . "\
Highlight headers, citations, signature, and buttons.
")
- (type . const)
- (default . gnus-article-highlight))
- ((tag . "Maybe Highlight")
- (doc . "\
+ (type . const)
+ (default . gnus-article-highlight))
+ ((tag . "Maybe Highlight")
+ (doc . "\
Highlight headers, signature, and buttons if `Visual' is turned on.
")
- (type . const)
- (default .
- gnus-article-maybe-highlight))
- ((tag . "Highlight Some")
- (doc . "\
+ (type . const)
+ (default .
+ gnus-article-maybe-highlight))
+ ((tag . "Highlight Some")
+ (doc . "\
Highlight headers, signature, and buttons.
")
- (type . const)
- (default . gnus-article-highlight-some))
- ((tag . "Highlight Headers")
- (doc . "\
+ (type . const)
+ (default . gnus-article-highlight-some))
+ ((tag . "Highlight Headers")
+ (doc . "\
Highlight headers as specified by `Article Header Highlighting'.
")
- (type . const)
- (default .
- gnus-article-highlight-headers))
- ((tag . "Highlight Signature")
- (doc . "\
+ (type . const)
+ (default .
+ gnus-article-highlight-headers))
+ ((tag . "Highlight Signature")
+ (doc . "\
Highlight the signature as specified by `Article Signature Face'.
")
- (type . const)
- (default .
- gnus-article-highlight-signature))
- ((tag . "Citation")
- (doc . "\
+ (type . const)
+ (default .
+ gnus-article-highlight-signature))
+ ((tag . "Citation")
+ (doc . "\
Highlight the citations as specified by `Citation Faces'.
")
- (type . const)
- (default .
- gnus-article-highlight-citation))
- ((tag . "Hide")
- (doc . "\
+ (type . const)
+ (default .
+ gnus-article-highlight-citation))
+ ((tag . "Hide")
+ (doc . "\
Hide unwanted headers, excess citation, and the signature.
")
- (type . const)
- (default . gnus-article-hide))
- ((tag . "Hide Headers If Wanted")
- (doc . "\
+ (type . const)
+ (default . gnus-article-hide))
+ ((tag . "Hide Headers If Wanted")
+ (doc . "\
Hide headers, but allow user to display them with `t' or `v'.
")
- (type . const)
- (default .
- gnus-article-hide-headers-if-wanted))
- ((tag . "Hide Headers")
- (doc . "\
+ (type . const)
+ (default .
+ gnus-article-hide-headers-if-wanted))
+ ((tag . "Hide Headers")
+ (doc . "\
Hide unwanted headers and possibly sort them as well.
Most likely you want to use `Hide Headers If Wanted' instead.
")
- (type . const)
- (default . gnus-article-hide-headers))
- ((tag . "Hide Signature")
- (doc . "\
+ (type . const)
+ (default . gnus-article-hide-headers))
+ ((tag . "Hide Signature")
+ (doc . "\
Hide the signature.
")
- (type . const)
- (default . gnus-article-hide-signature))
- ((tag . "Hide Excess Citations")
- (doc . "\
+ (type . const)
+ (default . gnus-article-hide-signature))
+ ((tag . "Hide Excess Citations")
+ (doc . "\
Hide excess citation.
Excess is defined by `Citation Hide Percentage' and `Citation Hide Absolute'.
")
- (type . const)
- (default .
- gnus-article-hide-citation-maybe))
- ((tag . "Hide Citations")
- (doc . "\
+ (type . const)
+ (default .
+ gnus-article-hide-citation-maybe))
+ ((tag . "Hide Citations")
+ (doc . "\
Hide all cited text.
")
- (type . const)
- (default . gnus-article-hide-citation))
- ((tag . "Add Buttons")
- (doc . "\
+ (type . const)
+ (default . gnus-article-hide-citation))
+ ((tag . "Add Buttons")
+ (doc . "\
Make URL's into clickable buttons.
")
- (type . const)
- (default . gnus-article-add-buttons))
- ((prompt . "Other")
- (doc . "\
+ (type . const)
+ (default . gnus-article-add-buttons))
+ ((prompt . "Other")
+ (doc . "\
Name of Lisp function to call.
Push the `Filter' button to select one of the predefined filters.
")
- (type . symbol)))))))
- ((tag . "Article Button Face")
- (doc . "\
+ (type . symbol)))))))
+ ((tag . "Article Button Face")
+ (doc . "\
Face used for highlighting buttons in the article buffer.
An article button is a piece of text that you can activate by pressing
`RET' or `mouse-2' above it.")
- (name . gnus-article-button-face)
- (default . bold)
- (type . face))
- ((tag . "Article Mouse Face")
- (doc . "\
+ (name . gnus-article-button-face)
+ (default . bold)
+ (type . face))
+ ((tag . "Article Mouse Face")
+ (doc . "\
Face used for mouse highlighting in the article buffer.
Article buttons will be displayed in this face when the cursor is
above them.")
- (name . gnus-article-mouse-face)
- (default . highlight)
- (type . face))
- ((tag . "Article Signature Face")
- (doc . "\
+ (name . gnus-article-mouse-face)
+ (default . highlight)
+ (type . face))
+ ((tag . "Article Signature Face")
+ (doc . "\
Face used for highlighting a signature in the article buffer.")
- (name . gnus-signature-face)
- (default . italic)
- (type . face))
- ((tag . "Article Header Highlighting")
- (doc . "\
+ (name . gnus-signature-face)
+ (default . italic)
+ (type . face))
+ ((tag . "Article Header Highlighting")
+ (doc . "\
Controls highlighting of article header.
Below is a list of article header names, and the faces used for
header, specify `None' in the `Content' field. Similarly, specify
`None' in the `Name' field if you only want to leave the name part
alone.")
- (name . gnus-header-face-alist)
- (type . list)
- (calculate . (cond ((not (eq gnus-display-type 'color))
- '(("" bold italic)))
- ((eq gnus-background-mode 'dark)
- (list (list "From" nil
- (custom-face-lookup
- "light blue" nil nil t t nil))
- (list "Subject" nil
- (custom-face-lookup
- "pink" nil nil t t nil))
- (list "Newsgroups:.*," nil
- (custom-face-lookup
- "yellow" nil nil t t nil))
- (list ""
- (custom-face-lookup
- "cyan" nil nil t nil nil)
- (custom-face-lookup
- "forestgreen"
- nil nil nil t nil))))
- (t
- (list (list "From" nil
- (custom-face-lookup
- "RoyalBlue"
- nil nil t t nil))
- (list "Subject" nil
- (custom-face-lookup
- "firebrick"
- nil nil t t nil))
- (list "Newsgroups:.*," nil
- (custom-face-lookup
- "indianred" nil nil t t nil))
- (list ""
- (custom-face-lookup
- "DarkGreen"
- nil nil t nil nil)
- (custom-face-lookup
- "DarkGreen"
- nil nil nil t nil))))))
- (data ((type . repeat)
- (header . nil)
- (data (type . list)
- (compact . t)
- (data ((type . string)
- (prompt . "Header")
- (tag . "Header "))
- "\n "
- ((type . face)
- (prompt . "Name")
- (tag . "Name "))
- "\n "
- ((type . face)
- (tag . "Content"))
- "\n")))))
- ((tag . "Attribution Face")
- (doc . "\
+ (name . gnus-header-face-alist)
+ (type . list)
+ (calculate
+ . (cond
+ ((not (eq gnus-display-type 'color))
+ '(("" bold italic)))
+ ((eq gnus-background-mode 'dark)
+ (list
+ (list "From" nil
+ (custom-face-lookup "light blue" nil nil t t nil))
+ (list "Subject" nil
+ (custom-face-lookup "pink" nil nil t t nil))
+ (list "Newsgroups:.*," nil
+ (custom-face-lookup "yellow" nil nil t t nil))
+ (list
+ ""
+ (custom-face-lookup "cyan" nil nil t nil nil)
+ (custom-face-lookup "forestgreen" nil nil nil t nil))))
+ (t
+ (list
+ (list "From" nil
+ (custom-face-lookup "RoyalBlue" nil nil t t nil))
+ (list "Subject" nil
+ (custom-face-lookup "firebrick" nil nil t t nil))
+ (list "Newsgroups:.*," nil
+ (custom-face-lookup "indianred" nil nil t t nil))
+ (list ""
+ (custom-face-lookup "DarkGreen" nil nil t nil nil)
+ (custom-face-lookup "DarkGreen" nil nil nil t nil))))))
+ (data
+ ((type . repeat)
+ (header . nil)
+ (data
+ (type . list)
+ (compact . t)
+ (data
+ ((type . string)
+ (prompt . "Header")
+ (tag . "Header "))
+ "\n "
+ ((type . face)
+ (prompt . "Name")
+ (tag . "Name "))
+ "\n "
+ ((type . face)
+ (tag . "Content"))
+ "\n")))))
+ ((tag . "Attribution Face")
+ (doc . "\
Face used for attribution lines.
It is merged with the face for the cited text belonging to the attribution.")
- (name . gnus-cite-attribution-face)
- (default . underline)
- (type . face))
- ((tag . "Citation Faces")
- (doc . "\
+ (name . gnus-cite-attribution-face)
+ (default . underline)
+ (type . face))
+ ((tag . "Citation Faces")
+ (doc . "\
List of faces used for highlighting citations.
When there are citations from multiple articles in the same message,
Gnus will try to give each citation from each article its own face.
This should make it easier to see who wrote what.")
- (name . gnus-cite-face-list)
- (import . gnus-custom-import-cite-face-list)
- (type . list)
- (calculate . (cond ((not (eq gnus-display-type 'color))
- '(italic))
- ((eq gnus-background-mode 'dark)
- (mapcar 'gnus-make-face
- gnus-face-light-name-list))
- (t
- (mapcar 'gnus-make-face
- gnus-face-dark-name-list))))
- (data ((type . repeat)
- (header . nil)
- (data (type . face)
- (tag . "Face")))))
- ((tag . "Citation Hide Percentage")
- (doc . "\
+ (name . gnus-cite-face-list)
+ (import . gnus-custom-import-cite-face-list)
+ (type . list)
+ (calculate . (cond ((not (eq gnus-display-type 'color))
+ '(italic))
+ ((eq gnus-background-mode 'dark)
+ (mapcar 'gnus-make-face
+ gnus-face-light-name-list))
+ (t
+ (mapcar 'gnus-make-face
+ gnus-face-dark-name-list))))
+ (data
+ ((type . repeat)
+ (header . nil)
+ (data (type . face)
+ (tag . "Face")))))
+ ((tag . "Citation Hide Percentage")
+ (doc . "\
Only hide excess citation if above this percentage of the body.")
- (name . gnus-cite-hide-percentage)
- (default . 50)
- (type . integer))
- ((tag . "Citation Hide Absolute")
- (doc . "\
+ (name . gnus-cite-hide-percentage)
+ (default . 50)
+ (type . integer))
+ ((tag . "Citation Hide Absolute")
+ (doc . "\
Only hide excess citation if above this number of lines in the body.")
- (name . gnus-cite-hide-absolute)
- (default . 10)
- (type . integer))
- ((tag . "Summary Selected Face")
- (doc . "\
+ (name . gnus-cite-hide-absolute)
+ (default . 10)
+ (type . integer))
+ ((tag . "Summary Selected Face")
+ (doc . "\
Face used for highlighting the current article in the summary buffer.")
- (name . gnus-summary-selected-face)
- (default . underline)
- (type . face))
- ((tag . "Summary Line Highlighting")
- (doc . "\
+ (name . gnus-summary-selected-face)
+ (default . underline)
+ (type . face))
+ ((tag . "Summary Line Highlighting")
+ (doc . "\
Controls the highlighting of summary buffer lines.
Below is a list of `Form'/`Face' pairs. When deciding how a a
default: The default article score.
below: The score below which articles are automatically marked as read.
mark: The article's mark.")
- (name . gnus-summary-highlight)
- (type . list)
- (calculate . (cond ((not (eq gnus-display-type 'color))
- '(((> score default) . bold)
- ((< score default) . italic)))
- ((eq gnus-background-mode 'dark)
- (list (cons '(= mark gnus-canceled-mark)
- (custom-face-lookup "yellow" "black" nil nil nil nil))
- (cons '(and (> score default)
- (or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark)))
- (custom-face-lookup "pink" nil nil t nil nil))
- (cons '(and (< score default)
- (or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark)))
- (custom-face-lookup "pink" nil nil nil t nil))
- (cons '(or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark))
- (custom-face-lookup "pink" nil nil nil nil nil))
-
- (cons '(and (> score default) (= mark gnus-ancient-mark))
- (custom-face-lookup "dark blue" nil nil t nil nil))
- (cons '(and (< score default) (= mark gnus-ancient-mark))
- (custom-face-lookup "SkyBlue" nil nil nil t nil))
- (cons '(= mark gnus-ancient-mark)
- (custom-face-lookup "SkyBlue" nil nil nil nil nil))
-
- (cons '(and (> score default) (= mark gnus-unread-mark))
- (custom-face-lookup "white" nil nil t nil nil))
- (cons '(and (< score default) (= mark gnus-unread-mark))
- (custom-face-lookup "white" nil nil nil t nil))
- (cons '(= mark gnus-unread-mark)
- (custom-face-lookup "white" nil nil nil nil nil))
-
- (cons '(> score default) 'bold)
- (cons '(< score default) 'italic)))
- (t
- (list (cons '(= mark gnus-canceled-mark)
- (custom-face-lookup "yellow" "black" nil nil nil nil))
- (cons '(and (> score default)
- (or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark)))
- (custom-face-lookup "firebrick" nil nil t nil nil))
- (cons '(and (< score default)
- (or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark)))
- (custom-face-lookup "firebrick" nil nil nil t nil))
- (cons '(or (= mark gnus-dormant-mark)
- (= mark gnus-ticked-mark))
- (custom-face-lookup "firebrick" nil nil nil nil nil))
-
- (cons '(and (> score default) (= mark gnus-ancient-mark))
- (custom-face-lookup "RoyalBlue" nil nil t nil nil))
- (cons '(and (< score default) (= mark gnus-ancient-mark))
- (custom-face-lookup "RoyalBlue" nil nil nil t nil))
- (cons '(= mark gnus-ancient-mark)
- (custom-face-lookup "RoyalBlue" nil nil nil nil nil))
-
- (cons '(and (> score default) (/= mark gnus-unread-mark))
- (custom-face-lookup "DarkGreen" nil nil t nil nil))
- (cons '(and (< score default) (/= mark gnus-unread-mark))
- (custom-face-lookup "DarkGreen" nil nil nil t nil))
- (cons '(/= mark gnus-unread-mark)
- (custom-face-lookup "DarkGreen" nil nil nil nil nil))
-
- (cons '(> score default) 'bold)
- (cons '(< score default) 'italic)))))
- (data ((type . repeat)
- (header . nil)
- (data (type . pair)
- (compact . t)
- (data ((type . sexp)
- (width . 60)
- (tag . "Form"))
- "\n "
- ((type . face)
- (tag . "Face"))
- "\n")))))
- ;; Do not define `gnus-button-alist' before we have
- ;; some `complexity' attribute so we can hide it from
- ;; beginners.
- )))))
+ (name . gnus-summary-highlight)
+ (type . list)
+ (calculate
+ . (cond
+ ((not (eq gnus-display-type 'color))
+ '(((> score default) . bold)
+ ((< score default) . italic)))
+ ((eq gnus-background-mode 'dark)
+ (list
+ (cons
+ '(= mark gnus-canceled-mark)
+ (custom-face-lookup "yellow" "black" nil nil nil nil))
+ (cons '(and (> score default)
+ (or (= mark gnus-dormant-mark)
+ (= mark gnus-ticked-mark)))
+ (custom-face-lookup "pink" nil nil t nil nil))
+ (cons '(and (< score default)
+ (or (= mark gnus-dormant-mark)
+ (= mark gnus-ticked-mark)))
+ (custom-face-lookup "pink" nil nil nil t nil))
+ (cons '(or (= mark gnus-dormant-mark)
+ (= mark gnus-ticked-mark))
+ (custom-face-lookup "pink" nil nil nil nil nil))
+
+ (cons
+ '(and (> score default) (= mark gnus-ancient-mark))
+ (custom-face-lookup "dark blue" nil nil t nil nil))
+ (cons
+ '(and (< score default) (= mark gnus-ancient-mark))
+ (custom-face-lookup "SkyBlue" nil nil nil t nil))
+ (cons
+ '(= mark gnus-ancient-mark)
+ (custom-face-lookup "SkyBlue" nil nil nil nil nil))
+
+ (cons '(and (> score default) (= mark gnus-unread-mark))
+ (custom-face-lookup "white" nil nil t nil nil))
+ (cons '(and (< score default) (= mark gnus-unread-mark))
+ (custom-face-lookup "white" nil nil nil t nil))
+ (cons '(= mark gnus-unread-mark)
+ (custom-face-lookup "white" nil nil nil nil nil))
+
+ (cons '(> score default) 'bold)
+ (cons '(< score default) 'italic)))
+ (t
+ (list
+ (cons '(= mark gnus-canceled-mark)
+ (custom-face-lookup "yellow" "black" nil nil nil nil))
+ (cons '(and (> score default)
+ (or (= mark gnus-dormant-mark)
+ (= mark gnus-ticked-mark)))
+ (custom-face-lookup "firebrick" nil nil t nil nil))
+ (cons '(and (< score default)
+ (or (= mark gnus-dormant-mark)
+ (= mark gnus-ticked-mark)))
+ (custom-face-lookup "firebrick" nil nil nil t nil))
+ (cons '(or (= mark gnus-dormant-mark)
+ (= mark gnus-ticked-mark))
+ (custom-face-lookup "firebrick" nil nil nil nil nil))
+
+ (cons '(and (> score default) (= mark gnus-ancient-mark))
+ (custom-face-lookup "RoyalBlue" nil nil t nil nil))
+ (cons '(and (< score default) (= mark gnus-ancient-mark))
+ (custom-face-lookup "RoyalBlue" nil nil nil t nil))
+ (cons '(= mark gnus-ancient-mark)
+ (custom-face-lookup "RoyalBlue" nil nil nil nil nil))
+
+ (cons '(and (> score default) (/= mark gnus-unread-mark))
+ (custom-face-lookup "DarkGreen" nil nil t nil nil))
+ (cons '(and (< score default) (/= mark gnus-unread-mark))
+ (custom-face-lookup "DarkGreen" nil nil nil t nil))
+ (cons '(/= mark gnus-unread-mark)
+ (custom-face-lookup "DarkGreen" nil nil nil nil nil))
+
+ (cons '(> score default) 'bold)
+ (cons '(< score default) 'italic)))))
+ (data
+ ((type . repeat)
+ (header . nil)
+ (data (type . pair)
+ (compact . t)
+ (data ((type . sexp)
+ (width . 60)
+ (tag . "Form"))
+ "\n "
+ ((type . face)
+ (tag . "Face"))
+ "\n")))))
+ ;; Do not define `gnus-button-alist' before we have
+ ;; some `complexity' attribute so we can hide it from
+ ;; beginners.
+ )))))
(defun gnus-custom-import-cite-face-list (custom alist)
;; Backward compatible grokking of light and dark.
`right-toolbar', and `left-toolbar'.")
(defvar gnus-group-toolbar
- '([gnus-group-exit-icon gnus-group-exit t "Exit Gnus"]
- [gnus-group-kill-group-icon gnus-group-kill-group t "Kill group"]
- [gnus-group-get-new-news-icon gnus-group-get-new-news t "Get new news"]
- [gnus-group-get-new-news-this-group-icon
+ '([gnus-group-exit gnus-group-exit t "Exit Gnus"]
+ [gnus-group-kill-group gnus-group-kill-group t "Kill group"]
+ [gnus-group-get-new-news gnus-group-get-new-news t "Get new news"]
+ [gnus-group-get-new-news-this-group
gnus-group-get-new-news-this-group t "Get new news in this group"]
- [gnus-group-catchup-current-icon
+ [gnus-group-catchup-current
gnus-group-catchup-current t "Catchup group"]
- [gnus-group-describe-group-icon
+ [gnus-group-describe-group
gnus-group-describe-group t "Describe group"])
"The group buffer toolbar.")
(defvar gnus-summary-toolbar
- '([gnus-summary-post-news-icon
+ '([gnus-summary-post-news
gnus-summary-post-news t "Post an article"]
- [gnus-summary-save-article-file-icon
+ [gnus-summary-save-article-file
gnus-summary-save-article-file t "Save article in file"]
- [gnus-summary-save-article-icon
+ [gnus-summary-save-article
gnus-summary-save-article t "Save article"]
- [gnus-summary-reply-icon
+ [gnus-summary-reply
gnus-summary-reply t "Mail a reply"]
- [gnus-summary-reply-with-original-icon
+ [gnus-summary-reply-with-original
gnus-summary-reply-with-original t "Mail a reply and yank the original"]
- [gnus-summary-followup-icon
+ [gnus-summary-followup
gnus-summary-followup t "Post a followup"]
- [gnus-summary-followup-with-original-icon
+ [gnus-summary-followup-with-original
gnus-summary-followup-with-original t
"Post a followup and yank the original"]
- [gnus-uu-decode-uu-icon
+ [gnus-uu-decode-uu
gnus-uu-decode-uu t "Decode uuencoded articles"]
- [gnus-uu-post-news-icon
+ [gnus-uu-post-news
gnus-uu-post-news t "Post an uuencoded article"]
- [gnus-summary-caesar-message-icon
+ [gnus-summary-caesar-message
gnus-summary-caesar-message t "Rot 13"]
- [gnus-summary-cancel-article-icon
+ [gnus-summary-cancel-article
gnus-summary-cancel-article t "Cancel article"])
"The summary buffer toolbar.")
+(defvar gnus-summary-mail-toolbar
+ '([gnus-summary-mail-reply gnus-summary-reply t "Reply"]
+ [gnus-summary-mail-get gnus-mail-get t "Message get"]
+ [gnus-summary-mail-originate gnus-summary-post-news t "Originate"]
+ [gnus-summary-mail-save gnus-summary-save-article t "Save"]
+ [gnus-summary-mail-copy gnus-summary-copy-article t "Copy message"]
+ [gnus-summary-mail-delete gnus-summary-delete-article t "Delete message"]
+ [gnus-summary-mail-forward gnus-summary-mail-forward t "Forward message"]
+; [gnus-summary-mail-spell gnus-mail-spell t "Spell"]
+; [gnus-summary-mail-help gnus-mail-help t "Message help"]
+ )
+ "The summary buffer mail toolbar.")
+
(defun gnus-xmas-setup-group-toolbar ()
(let (dir)
(and gnus-use-toolbar
(setq dir (message-xmas-setup-toolbar gnus-group-toolbar nil "gnus"))
- (file-exists-p (concat dir "gnus-group-catchup-current-icon-up.xpm"))
+ (file-exists-p (concat dir "gnus-group-catchup-current-up.xpm"))
(set-specifier (symbol-value gnus-use-toolbar)
(cons (current-buffer) gnus-group-toolbar)))))
(defun gnus-xmas-setup-summary-toolbar ()
- (let (dir)
+ (let ((bar (if (gnus-news-group-p gnus-newsgroup-name)
+ gnus-summary-toolbar gnus-summary-mail-toolbar))
+ dir)
(and gnus-use-toolbar
- (setq dir (message-xmas-setup-toolbar gnus-summary-toolbar
- nil "gnus"))
- (file-exists-p (concat dir "gnus-group-catchup-current-icon-up.xpm"))
+ (setq dir (message-xmas-setup-toolbar bar nil "gnus"))
+ (file-exists-p (concat dir "gnus-group-catchup-current-up.xpm"))
(set-specifier (symbol-value gnus-use-toolbar)
- (cons (current-buffer) gnus-summary-toolbar)))))
+ (cons (current-buffer) bar)))))
;; Written by Erik Naggum <erik@naggum.no>.
;; Saved by Steve Baur <steve@miranova.com>.
see the manual for details.")
(defvar gnus-message-archive-method
- '(nnfolder
+ `(nnfolder
"archive"
- (nnfolder-directory (nnheader-concat message-directory "archive"))
- (nnfolder-active-file (nnheader-concat message-directory "archive/active"))
+ (nnfolder-directory ,(nnheader-concat message-directory "archive"))
+ (nnfolder-active-file
+ ,(nnheader-concat message-directory "archive/active"))
(nnfolder-get-new-mail nil)
(nnfolder-inhibit-expiry t))
"*Method used for archiving messages you've sent.
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version "September Gnus v0.90"
+(defconst gnus-version "September Gnus v0.91"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
gnus-score-raise-same-subject gnus-score-default
gnus-score-raise-thread gnus-score-lower-same-subject-and-select
gnus-score-lower-same-subject gnus-score-lower-thread
- gnus-possibly-score-headers)
+ gnus-possibly-score-headers gnus-summary-raise-score
+ gnus-summary-set-score gnus-summary-current-score)
("gnus-score"
(gnus-summary-score-map keymap) gnus-score-save gnus-score-headers
gnus-current-score-file-nondirectory gnus-score-adaptive
(gnus-make-newsrc-file gnus-startup-file))
;; Read the dribble file.
- (and (or gnus-slave gnus-use-dribble-file) (gnus-dribble-read-file))
+ (when (or gnus-slave gnus-use-dribble-file)
+ (gnus-dribble-read-file))
;; Allow using GroupLens predictions.
(when gnus-use-grouplens
(= mark gnus-dormant-mark)
(= mark gnus-expirable-mark))))
+;; Saving hidden threads.
+
+(put 'gnus-save-hidden-threads 'lisp-indent-function 0)
+(put 'gnus-save-hidden-threads 'lisp-indent-hook 0)
+
+(defmacro gnus-save-hidden-threads (&rest forms)
+ "Save hidden threads, eval FORMS, and restore the hidden threads."
+ (let ((config (make-symbol "config")))
+ `(let ((,config (gnus-hidden-threads-configuration)))
+ (unwind-protect
+ (progn
+ ,@forms)
+ (gnus-restore-hidden-threads-configuration ,config)))))
+
+(defun gnus-hidden-threads-configuration ()
+ "Return the current hidden threads configuration."
+ (save-excursion
+ (let (config)
+ (goto-char (point-min))
+ (while (search-forward "\r" nil t)
+ (push (1- (point)) config))
+ config)))
+
+(defun gnus-restore-hidden-threads-configuration (config)
+ "Restore hidden threads configuration from CONFIG."
+ (let (point buffer-read-only)
+ (while (setq point (pop config))
+ (when (and (< point (point-max))
+ (goto-char point)
+ (= (following-char) ?\n))
+ (subst-char-in-region point (1+ point) ?\n ?\r)))))
+
;; Various summary mode internalish functions.
(defun gnus-mouse-pick-article (e)
default-score)
gnus-summary-mark-below)
;; Don't touch sparse articles.
- (not (memq number gnus-newsgroup-sparse)))
+ (not (memq number gnus-newsgroup-sparse))
+ (not (memq number gnus-newsgroup-ancient)))
(setq gnus-newsgroup-unreads
(delq number gnus-newsgroup-unreads))
(if gnus-newsgroup-auto-expire
(when (and gnus-summary-mark-below
(< (or (cdr (assq number gnus-newsgroup-scored))
gnus-summary-default-score 0)
- gnus-summary-mark-below))
+ gnus-summary-mark-below)
+ (not (memq number gnus-newsgroup-ancient)))
(setq gnus-newsgroup-unreads
(delq number gnus-newsgroup-unreads))
(if gnus-newsgroup-auto-expire
're-search-backward 're-search-forward))
(sum (current-buffer))
(found nil))
- ;; Hidden thread subtrees must be searched, too.
- (gnus-summary-show-all-threads)
- (gnus-summary-select-article)
- (set-buffer gnus-article-buffer)
- (while (not found)
- (gnus-message 7 "Searching article: %d..." gnus-current-article)
- (if (if backward
- (re-search-backward regexp nil t)
- (re-search-forward regexp nil t))
- ;; We found the regexp.
- (progn
- (setq found 'found)
- (beginning-of-line)
- (set-window-start
- (get-buffer-window (current-buffer))
- (point)))
- ;; We didn't find it, so we go to the next article.
- (set-buffer sum)
- (if (not (if backward (gnus-summary-find-prev)
- (gnus-summary-find-next)))
- ;; No more articles.
- (setq found t)
- ;; Select the next article and adjust point.
- (gnus-summary-select-article)
- (set-buffer gnus-article-buffer)
- (widen)
- (goto-char (if backward (point-max) (point-min))))))
- (set-buffer sum)
+ (gnus-save-hidden-threads
+ (gnus-summary-select-article)
+ (set-buffer gnus-article-buffer)
+ (while (not found)
+ (gnus-message 7 "Searching article: %d..." (cdr gnus-article-current))
+ (if (if backward
+ (re-search-backward regexp nil t)
+ (re-search-forward regexp nil t))
+ ;; We found the regexp.
+ (progn
+ (setq found 'found)
+ (beginning-of-line)
+ (set-window-start
+ (get-buffer-window (current-buffer))
+ (point)))
+ ;; We didn't find it, so we go to the next article.
+ (set-buffer sum)
+ (if (not (if backward (gnus-summary-find-prev)
+ (gnus-summary-find-next)))
+ ;; No more articles.
+ (setq found t)
+ ;; Select the next article and adjust point.
+ (gnus-summary-select-article)
+ (set-buffer gnus-article-buffer)
+ (widen)
+ (goto-char (if backward (point-max) (point-min))))))
+ (set-buffer sum)
+ (gnus-message 7 ""))
;; Return whether we found the regexp.
- (eq found 'found)))
+ (when (eq found 'found)
+ (gnus-summary-show-thread)
+ (gnus-summary-goto-subject gnus-current-article)
+ (gnus-summary-position-point)
+ t)))
(defun gnus-summary-find-matching (header regexp &optional backward unread
not-case-fold)
(pp-eval-expression
(list 'quote (mapcar 'car (nnmail-article-group 'identity)))))))
-;; Summary score commands.
-
-;; Suggested by boubaker@cenatls.cena.dgac.fr.
-
-(defun gnus-summary-raise-score (n)
- "Raise the score of the current article by N."
- (interactive "p")
- (gnus-set-global-variables)
- (gnus-summary-set-score (+ (gnus-summary-article-score) n)))
-
-(defun gnus-summary-set-score (n)
- "Set the score of the current article to N."
- (interactive "p")
- (gnus-set-global-variables)
- (save-excursion
- (gnus-summary-show-thread)
- (let ((buffer-read-only nil))
- ;; Set score.
- (gnus-summary-update-mark
- (if (= n (or gnus-summary-default-score 0)) ?
- (if (< n (or gnus-summary-default-score 0))
- gnus-score-below-mark gnus-score-over-mark)) 'score))
- (let* ((article (gnus-summary-article-number))
- (score (assq article gnus-newsgroup-scored)))
- (if score (setcdr score n)
- (setq gnus-newsgroup-scored
- (cons (cons article n) gnus-newsgroup-scored))))
- (gnus-summary-update-line)))
-
-(defun gnus-summary-current-score ()
- "Return the score of the current article."
- (interactive)
- (gnus-set-global-variables)
- (gnus-message 1 "%s" (gnus-summary-article-score)))
-
;; Summary marking commands.
(defun gnus-summary-kill-same-subject-and-select (&optional unmark)
(setq gnus-dribble-eval-file t)))))))
(defun gnus-dribble-eval-file ()
- (if (not gnus-dribble-eval-file)
- ()
+ (when gnus-dribble-eval-file
(setq gnus-dribble-eval-file nil)
(save-excursion
(let ((gnus-dribble-ignore t))
(eval-buffer (current-buffer))))))
(defun gnus-dribble-delete-file ()
- (if (file-exists-p (gnus-dribble-file-name))
- (delete-file (gnus-dribble-file-name)))
- (if gnus-dribble-buffer
- (save-excursion
- (set-buffer gnus-dribble-buffer)
- (let ((auto (make-auto-save-file-name)))
- (if (file-exists-p auto)
- (delete-file auto))
- (erase-buffer)
- (set-buffer-modified-p nil)))))
+ (when (file-exists-p (gnus-dribble-file-name))
+ (delete-file (gnus-dribble-file-name)))
+ (when gnus-dribble-buffer
+ (save-excursion
+ (set-buffer gnus-dribble-buffer)
+ (let ((auto (make-auto-save-file-name)))
+ (if (file-exists-p auto)
+ (delete-file auto))
+ (erase-buffer)
+ (set-buffer-modified-p nil)))))
(defun gnus-dribble-save ()
- (if (and gnus-dribble-buffer
- (buffer-name gnus-dribble-buffer))
- (save-excursion
- (set-buffer gnus-dribble-buffer)
- (save-buffer))))
+ (when (and gnus-dribble-buffer
+ (buffer-name gnus-dribble-buffer))
+ (save-excursion
+ (set-buffer gnus-dribble-buffer)
+ (save-buffer))))
(defun gnus-dribble-clear ()
- (save-excursion
- (if (gnus-buffer-exists-p gnus-dribble-buffer)
- (progn
- (set-buffer gnus-dribble-buffer)
- (erase-buffer)
- (set-buffer-modified-p nil)
- (setq buffer-saved-size (buffer-size))))))
+ (when (gnus-buffer-exists-p gnus-dribble-buffer)
+ (save-excursion
+ (set-buffer gnus-dribble-buffer)
+ (erase-buffer)
+ (set-buffer-modified-p nil)
+ (setq buffer-saved-size (buffer-size)))))
\f
;;;
;; Possibly eval the dribble file.
(and init (or gnus-use-dribble-file gnus-slave) (gnus-dribble-eval-file))
+ ;; Slave Gnusii should then clear the dribble buffer.
+ (when (and init gnus-slave)
+ (gnus-dribble-clear))
+
(gnus-update-format-specifications)
;; See whether we need to read the description file.