From 05f55b4d455361428a1faaa99ec73b0416b2fcf6 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Tue, 4 Mar 1997 09:45:39 +0000 Subject: [PATCH] *** empty log message *** --- lisp/ChangeLog | 39 +++ lisp/gnus-cus.el | 691 ++++++++++++++++++++++--------------------- lisp/gnus-gl.el | 4 +- lisp/gnus-picon.el | 6 +- lisp/gnus-score.el | 32 ++ lisp/gnus-xmas.el | 60 ++-- lisp/gnus.el | 200 +++++++------ lisp/message-xmas.el | 13 +- lisp/message.el | 2 +- lisp/nnfolder.el | 3 +- texi/ChangeLog | 4 + texi/gnus.texi | 9 +- 12 files changed, 580 insertions(+), 483 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 54975c6dc..605cbd2d7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,44 @@ +Wed May 22 21:56:56 1996 Lars Magne Ingebrigtsen + + * gnus.el (gnus-setup-news): Slave Gnusii should clear the dribble + buffer. + +Wed May 22 22:32:21 1996 Lars Magne Ingebrigtsen + + * gnus-score.el (gnus-summary-set-score): Moved here. + (gnus-summary-raise-score): Would bug out on nil arguments. + + * message-xmas.el (message-toolbar): Changed. + + * gnus-xmas.el (gnus-summary-mail-toolbar): New toolbar. + (gnus-xmas-setup-summary-toolbar): Use it. + +Wed May 22 19:24:04 1996 Lars Magne Ingebrigtsen + + * gnus.el (gnus-message-archive-method): Buggy definition. + (gnus-summary-prepare-threads): Don't mark ancient as low-scored. + (gnus-summary-prepare-unthreaded): Ditto. + +Wed May 22 02:14:42 1996 Lars Magne Ingebrigtsen + + * gnus.el (gnus-save-hidden-threads): New macro. + (gnus-hidden-threads-configuration): New function. + (gnus-restore-hidden-threads-configuration): New function. + (gnus-summary-search-article): Use it. + + * gnus-picon.el (gnus-picons-reverse-domain-path): New definition. + + * message.el: Required wrong file under XEmacs. + + * gnus-gl.el (bbb-get-predictions): Return nil on errors. + + * nnfolder.el (nnfolder-close-group): Make sure the buffer is + alive before killing it. + Tue May 21 20:08:33 1996 Lars Magne Ingebrigtsen + * gnus.el: September Gnus v0.90 is released. + * gnus.el (gnus-dribble-read-file): Don't do modes unless they are available. diff --git a/lisp/gnus-cus.el b/lisp/gnus-cus.el index 3eba2cc5e..a08bf4e28 100644 --- a/lisp/gnus-cus.el +++ b/lisp/gnus-cus.el @@ -54,80 +54,86 @@ (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 @@ -137,178 +143,178 @@ technique was developed for old line printers (think about it), and is 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 @@ -330,109 +336,103 @@ If you only want to change the display of the name part for a specific 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 @@ -450,88 +450,97 @@ score: The article's score 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. diff --git a/lisp/gnus-gl.el b/lisp/gnus-gl.el index 0f1509010..54997d2c9 100644 --- a/lisp/gnus-gl.el +++ b/lisp/gnus-gl.el @@ -348,7 +348,9 @@ recommend using both scores and grouplens predictions together." "Ask the bbb for predictions, and build up the score alist." (if (or (null grouplens-bbb-token) (equal grouplens-bbb-token "0")) - (gnus-message 3 "Error: You are not logged in to a BBB") + (progn + (gnus-message 3 "Error: You are not logged in to a BBB") + nil) (gnus-message 5 "Fetching Predictions...") (let (predict-list (predict-command (bbb-build-predict-command midlist groupname diff --git a/lisp/gnus-picon.el b/lisp/gnus-picon.el index d473e8066..f6025c55e 100644 --- a/lisp/gnus-picon.el +++ b/lisp/gnus-picon.el @@ -327,11 +327,7 @@ To use: (setq gnus-article-x-face-command 'gnus-picons-display-x-face)" (defun gnus-picons-reverse-domain-path (str) "a/b/c/d -> d/c/b/a" - (if (equal (replace-in-string str "^[^/]*$" "") "") - str - (concat (replace-in-string str "^.*/\\([_a-zA-Z0-9-]+\\)$" "\\1") "/" - (gnus-picons-reverse-domain-path - (replace-in-string str "^\\(.*\\)/[_a-zA-Z0-9-]+$" "\\1"))))) + (mapconcat 'identity (nreverse (message-tokenize-header str "/")) "/")) (provide 'gnus-picon) diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index d1370fe38..d22c20ef4 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -742,6 +742,38 @@ SCORE is the score to add." (setcdr alist (cons (cons symbol value) (cdr alist))))))) +(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) + (or n gnus-score-interactive-default-score )))) + +(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))) + (defun gnus-score-change-score-file (file) "Change current score alist." (interactive diff --git a/lisp/gnus-xmas.el b/lisp/gnus-xmas.el index b831af2e1..750035397 100644 --- a/lisp/gnus-xmas.el +++ b/lisp/gnus-xmas.el @@ -558,59 +558,73 @@ If it is non-nil, it must be a toolbar. The five legal values are `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 . ;; Saved by Steve Baur . diff --git a/lisp/gnus.el b/lisp/gnus.el index 9fb10decf..45514a1fe 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -133,10 +133,11 @@ There is a lot more to know about select methods and virtual servers - 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. @@ -1721,7 +1722,7 @@ variable (string, integer, character, etc).") "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 @@ -2048,7 +2049,8 @@ Thank you for your help in stamping out bugs. 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 @@ -4366,7 +4368,8 @@ prompt the user for the name of an NNTP server to use." (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 @@ -7395,6 +7398,38 @@ This is all marks except unread, ticked, dormant, and expirable." (= 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) @@ -8443,7 +8478,8 @@ or a straight list of headers." 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 @@ -8567,7 +8603,8 @@ or a straight list of headers." (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 @@ -11073,36 +11110,40 @@ Optional argument BACKWARD means do search for backward. '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) @@ -11735,41 +11776,6 @@ groups." (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) @@ -14760,8 +14766,7 @@ If NEWSGROUP is nil, return the global kill file name instead." (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)) @@ -14769,32 +14774,31 @@ If NEWSGROUP is nil, return the global kill file name instead." (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))))) ;;; @@ -15260,6 +15264,10 @@ If LEVEL is non-nil, the news will be set up at level LEVEL." ;; 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. diff --git a/lisp/message-xmas.el b/lisp/message-xmas.el index 6d33f8205..df6708480 100644 --- a/lisp/message-xmas.el +++ b/lisp/message-xmas.el @@ -37,17 +37,8 @@ If it is non-nil, it must be a toolbar. The five legal values are `right-toolbar', and `left-toolbar'.") (defvar message-toolbar - '( - [message-reply message-reply t "Reply"] - [message-get message-get t "Message get"] - [message-originate message-originate t "Originate"] - [message-save message-save t "Save"] - [message-copy message-copy t "Copy message"] - [message-delete message-delete t "Delete message"] - [message-forward message-forward t "Forward message"] - [message-spell message-spell t "Spell"] - [message-help message-help t "Message help"] - ) + '([message-spell toolbar-ispell t "Spell"] + [message-help toolbar-info t "Message help"]) "The message buffer toolbar.") (defun message-xmas-find-glyph-directory (&optional package) diff --git a/lisp/message.el b/lisp/message.el index 92298cbdc..9298c8356 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -36,7 +36,7 @@ (require 'timezone) (require 'easymenu) (if (string-match "XEmacs\\|Lucid" emacs-version) - (require 'mail-abbrev) + (require 'mail-abbrevs) (require 'mailabbrev)) (defvar message-directory "~/Mail/" diff --git a/lisp/nnfolder.el b/lisp/nnfolder.el index fcc0ae56c..48857a5cd 100644 --- a/lisp/nnfolder.el +++ b/lisp/nnfolder.el @@ -238,7 +238,8 @@ it.") (when (or (assoc group nnfolder-buffer-alist) (equal group nnfolder-current-group)) (nnfolder-possibly-change-group group server) - (when nnfolder-current-buffer + (when (and nnfolder-current-buffer + (buffer-name nnfolder-current-buffer)) (save-excursion (set-buffer nnfolder-current-buffer) ;; If the buffer was modified, write the file out now. diff --git a/texi/ChangeLog b/texi/ChangeLog index 5000daf90..943be80d1 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,7 @@ +Wed May 22 23:41:28 1996 Lars Magne Ingebrigtsen + + * gnus.texi (Troubleshooting): Addition. + Tue May 21 12:52:34 1996 Lars Magne Ingebrigtsen * gnus.texi: Excised message documentation. diff --git a/texi/gnus.texi b/texi/gnus.texi index a8bf41103..b55079fcb 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -11927,6 +11927,11 @@ insulting me about. Always over-explain everything. It's much easier for all of us---if I don't have all the information I need, I will just mail you and ask for more info, and everything takes more time. +If the problem you're seeing is very visual, and you can't quite explain +it, copy the Emacs window to a file (with @code{xwd}, for instance), put +it somewhere it can be reached, and include the URL of the picture in +the bug report.a + If you just need help, you are better off asking on @samp{gnu.emacs.gnus}. I'm not very helpful. @@ -12575,8 +12580,6 @@ Below is a slightly shortened version of the @code{nndir} backend. "*Non-nil means that nndir will never retrieve NOV headers." nnml-nov-is-evil) - - (defvoo nndir-current-group "" nil nnml-current-group nnmh-current-group) (defvoo nndir-top-directory nil nil nnml-directory nnmh-directory) (defvoo nndir-get-new-mail nil nil nnml-get-new-mail nnmh-get-new-mail) @@ -12584,8 +12587,6 @@ Below is a slightly shortened version of the @code{nndir} backend. (defvoo nndir-status-string "" nil nnmh-status-string) (defconst nndir-version "nndir 1.0") - - ;;; Interface functions. (nnoo-define-basics nndir) -- 2.34.1