From 95ff96aa9a0279b11d36b98aa7afc1979a702b26 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Sat, 14 Nov 1998 00:51:42 +0000 Subject: [PATCH] *** empty log message *** --- lisp/ChangeLog | 63 +++++++++++++++++++++++++++++++++++++++ lisp/binhex.el | 4 +-- lisp/gnus-agent.el | 34 ++++++++++----------- lisp/gnus-art.el | 16 ++++++---- lisp/gnus-cus.el | 1 + lisp/gnus-score.el | 74 ++++++++++++++++++++++++++++++++++++++-------- lisp/gnus-sum.el | 11 +++++-- lisp/gnus-util.el | 28 +++++++++++++----- lisp/gnus.el | 2 +- lisp/message.el | 5 ++-- lisp/mm-util.el | 7 +++-- lisp/mm-view.el | 24 ++++++++------- lisp/nngateway.el | 1 + texi/gnus.texi | 24 ++++++++------- texi/message.texi | 6 ++-- 15 files changed, 224 insertions(+), 76 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 36c32425e..7c0db279c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,66 @@ +Sat Nov 14 01:51:06 1998 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.43 is released. + +1998-11-07 Karl Kleinpaste + + * gnus-cus.el (gnus-score-customize): Add "Extra" element. + * gnus-score.el (gnus-score-default-header): Ditto. + (gnus-header-index): Ditto. + (gnus-summary-increase-score): Ditto, & process "extra" requests. + (gnus-summary-header): Handle extra headers. + (gnus-summary-score-entry): Ditto, & provide new score element. + (gnus-summary-score-effect): Ditto. + (gnus-score-string): Avoid "extra" string sort, & modify match in + "extra" case. + * gnus-sum.el (gnus-make-score-map): Add "extra" element. + +1998-11-13 20:30:40 Lars Magne Ingebrigtsen + + * message.el (message-resend): Bind message-required-mail-headers + to nil. + + * mm-view.el (mm-inline-text): Bind w3-strict-width. + + * nngateway.el (require): Require cl. + + * gnus-art.el (gnus-button-alist): Exclude more chars from news: + things. + +Wed Nov 11 02:15:06 1998 Shenghuo ZHU + + * gnus-agent.el (gnus-agent-fetch-headers): Create directory even + when no articles. + +1998-11-13 19:25:10 Lars Magne Ingebrigtsen + + * message.el (message-ignored-resent-headers): Remove X-Gnus. + +1998-11-10 Colin Rafferty + + * gnus-sum.el (gnus-ignored-from-addresses): Only quote + user-mail-address if non-nil. + +1998-11-13 18:50:18 Lars Magne Ingebrigtsen + + * gnus-util.el (gnus-make-sort-function): Do `reverse'. + (gnus-make-sort-function-1): Ditto. + + * gnus-art.el (gnus-mm-display-part): Switch to mm in right + window. + +1998-11-12 22:31:58 Lars Magne Ingebrigtsen + + * mm-util.el (mm-with-unibyte-buffer): Ditto. + + * binhex.el (binhex-decode-region): Quote. + +1998-11-10 05:32:28 Lars Magne Ingebrigtsen + + * gnus-art.el (article-decode-charset): Don't downcase charset. + + * gnus-sum.el (gnus-get-newsgroup-headers-xover): Translate CR's. + Sun Nov 8 23:17:24 1998 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v0.42 is released. diff --git a/lisp/binhex.el b/lisp/binhex.el index af18a1e49..fb02a05e1 100644 --- a/lisp/binhex.el +++ b/lisp/binhex.el @@ -3,7 +3,7 @@ ;; Author: Shenghuo Zhu ;; Create Date: Oct 1, 1998 -;; $Revision: 1.2 $ +;; $Revision: 5.1 $ ;; Time-stamp: ;; Keywords: binhex @@ -206,7 +206,7 @@ If HEADER-ONLY is non-nil only decode header and return filename." (when (re-search-forward binhex-begin-line end t) (if (boundp 'enable-multibyte-characters) (let ((multibyte - (default-value enable-multibyte-characters))) + (default-value 'enable-multibyte-characters))) (setq-default enable-multibyte-characters nil) (setq work-buffer (generate-new-buffer " *binhex-work*")) diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index c5184143d..5f80f8227 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -558,7 +558,8 @@ the actual number of articles toggled is returned." (gnus-delete-line)) (insert group " " (number-to-string (cdr active)) " " (number-to-string (car active)) " y\n")) - (when (re-search-forward (concat (regexp-quote group) "\\($\\| \\)") nil t) + (when (re-search-forward + (concat (regexp-quote group) "\\($\\| \\)") nil t) (gnus-delete-line)) (insert-buffer-substring nntp-server-buffer)))))) @@ -771,8 +772,11 @@ the actual number of articles toggled is returned." (cons (1+ (caar (last gnus-agent-article-alist))) (cdr (gnus-active group))))) (gnus-list-of-unread-articles group))) - (gnus-decode-encoded-word-function 'identity)) + (gnus-decode-encoded-word-function 'identity) + (file (gnus-agent-article-name ".overview" group))) ;; Fetch them. + (gnus-make-directory (nnheader-translate-file-chars + (file-name-directory file))) (when articles (gnus-message 7 "Fetching headers for %s..." group) (save-excursion @@ -781,21 +785,17 @@ the actual number of articles toggled is returned." (nnvirtual-convert-headers)) ;; Save these headers for later processing. (copy-to-buffer gnus-agent-overview-buffer (point-min) (point-max)) - (let (file) - (when (file-exists-p - (setq file (gnus-agent-article-name ".overview" group))) - (gnus-agent-braid-nov group articles file)) - (gnus-make-directory (nnheader-translate-file-chars - (file-name-directory file))) - (let ((coding-system-for-write - gnus-agent-file-coding-system)) - (write-region (point-min) (point-max) file nil 'silent)) - (gnus-agent-save-alist group articles nil) - (gnus-agent-enter-history - "last-header-fetched-for-session" - (list (cons group (nth (- (length articles) 1) articles))) - (time-to-days (current-time))) - articles))))) + (when (file-exists-p file) + (gnus-agent-braid-nov group articles file)) + (let ((coding-system-for-write + gnus-agent-file-coding-system)) + (write-region (point-min) (point-max) file nil 'silent)) + (gnus-agent-save-alist group articles nil) + (gnus-agent-enter-history + "last-header-fetched-for-session" + (list (cons group (nth (- (length articles) 1) articles))) + (time-to-days (current-time))) + articles)))) (defsubst gnus-agent-copy-nov-line (article) (let (b e) diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 660b086e6..cedbec9c6 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -1037,8 +1037,6 @@ If PROMPT (the prefix), prompt for a coding system to use." (gnus-group-find-parameter gnus-newsgroup-name 'charset)))) buffer-read-only) - (when charset - (setq charset (downcase charset))) (goto-char (point-max)) (widen) (forward-line 1) @@ -2334,7 +2332,13 @@ If ALL-HEADERS is non-nil, no headers are hidden." (gnus-insert-mime-button handle id (list (not (mm-handle-displayed-p handle)))) (prog1 - (mm-display-part handle) + (let ((window (selected-window))) + (save-excursion + (unwind-protect + (progn + (select-window (get-buffer-window (current-buffer) t)) + (mm-display-part handle)) + (select-window window)))) (goto-char point)))) (defun gnus-article-goto-part (n) @@ -3110,9 +3114,9 @@ groups." :type 'regexp) (defcustom gnus-button-alist - `(("<\\(url:[>\n\t ]*?\\)?news:[>\n\t ]*\\([^>\n\t ]*@[^>\n\t ]*\\)>" 0 t - gnus-button-message-id 2) - ("\\bnews:\\([^>\n\t ]*@[^>\n\t ]*\\)" 0 t gnus-button-message-id 1) + `(("<\\(url:[>\n\t ]*?\\)?news:[>\n\t ]*\\([^>\n\t ]*@[^)!;:,>\n\t ]*\\)>" + 0 t gnus-button-message-id 2) + ("\\bnews:\\([^>\n\t ]*@[^>)!;:,\n\t ]*\\)" 0 t gnus-button-message-id 1) ("\\(\\b<\\(url:[>\n\t ]*\\)?news:[>\n\t ]*\\(//\\)?\\([^>\n\t ]*\\)>\\)" 1 t gnus-button-fetch-group 4) diff --git a/lisp/gnus-cus.el b/lisp/gnus-cus.el index 7474f374b..b71e2a921 100644 --- a/lisp/gnus-cus.el +++ b/lisp/gnus-cus.el @@ -601,6 +601,7 @@ if you do all your changes will be lost. ") (gnus-score-string :tag "Subject") (gnus-score-string :tag "References") (gnus-score-string :tag "Xref") + (gnus-score-string :tag "Extra") (gnus-score-string :tag "Message-ID") (gnus-score-integer :tag "Lines") (gnus-score-integer :tag "Chars") diff --git a/lisp/gnus-score.el b/lisp/gnus-score.el index f5505beed..64824b2e7 100644 --- a/lisp/gnus-score.el +++ b/lisp/gnus-score.el @@ -308,6 +308,7 @@ Should be one of the following symbols. i: message-id t: references x: xref + e: `extra' (non-standard overview) l: lines d: date f: followup @@ -321,6 +322,7 @@ If nil, the user will be asked for a header." (const :tag "message-id" i) (const :tag "references" t) (const :tag "xref" x) + (const :tag "extra" e) (const :tag "lines" l) (const :tag "date" d) (const :tag "followup" f) @@ -444,6 +446,7 @@ of the last successful match.") ("chars" 6 gnus-score-integer) ("lines" 7 gnus-score-integer) ("xref" 8 gnus-score-string) + ("extra" 9 gnus-score-string) ("head" -1 gnus-score-body) ("body" -1 gnus-score-body) ("all" -1 gnus-score-body) @@ -502,6 +505,7 @@ used as score." (?i "message-id" nil t string) (?r "references" "message-id" nil string) (?x "xref" nil nil string) + (?e "extra" nil nil string) (?l "lines" nil nil number) (?d "date" nil nil date) (?f "followup" nil nil string) @@ -530,7 +534,7 @@ used as score." (aref (symbol-name gnus-score-default-type) 0))) (pchar (and gnus-score-default-duration (aref (symbol-name gnus-score-default-duration) 0))) - entry temporary type match) + entry temporary type match extra) (unwind-protect (progn @@ -622,9 +626,26 @@ used as score." ;; Always kill the score help buffer. (gnus-score-kill-help-buffer)) + ;; If scoring an extra (non-standard overview) header, + ;; we must find out which header is in question. + (setq extra + (and gnus-extra-headers + (equal (nth 1 entry) "extra") + (intern ; need symbol + (gnus-completing-read + (symbol-name (car gnus-extra-headers)) ; default response + "Score extra header:" ; prompt + (mapcar (lambda (x) ; completion list + (cons (symbol-name x) x)) + gnus-extra-headers) + nil ; no completion limit + t)))) ; require match + ;; extra is now nil or a symbol. + ;; We have all the data, so we enter this score. (setq match (if (string= (nth 2 entry) "") "" - (gnus-summary-header (or (nth 2 entry) (nth 1 entry))))) + (gnus-summary-header (or (nth 2 entry) (nth 1 entry)) + nil extra))) ;; Modify the match, perhaps. (cond @@ -660,7 +681,9 @@ used as score." (if (eq temporary 'perm) ; Temp nil temporary) - (not (nth 3 entry))) ; Prompt + (not (nth 3 entry)) ; Prompt + nil ; not silent + extra) ; non-standard overview. (when (eq symp 'a) ;; We change the score file back to the previous one. @@ -709,14 +732,16 @@ used as score." (shrink-window-if-larger-than-buffer)) (select-window (get-buffer-window gnus-summary-buffer)))) -(defun gnus-summary-header (header &optional no-err) +(defun gnus-summary-header (header &optional no-err extra) ;; Return HEADER for current articles, or error. (let ((article (gnus-summary-article-number)) headers) (if article (if (and (setq headers (gnus-summary-article-header article)) (vectorp headers)) - (aref headers (nth 1 (assoc header gnus-header-index))) + (if extra ; `header' must be "extra" + (or (cdr (assq extra (mail-header-extra headers))) "") + (aref headers (nth 1 (assoc header gnus-header-index)))) (if no-err nil (error "Pseudo-articles can't be scored"))) @@ -742,7 +767,7 @@ used as score." (gnus-newsgroup-score-alist))))) (defun gnus-summary-score-entry (header match type score date - &optional prompt silent) + &optional prompt silent extra) (interactive) "Enter score file entry. HEADER is the header being scored. @@ -751,7 +776,8 @@ TYPE is the match type: substring, regexp, exact, fuzzy. SCORE is the score to add. DATE is the expire date, or nil for no expire, or 'now for immediate expire. If optional argument `PROMPT' is non-nil, allow user to edit match. -If optional argument `SILENT' is nil, show effect of score entry." +If optional argument `SILENT' is nil, show effect of score entry. +If optional argument `EXTRA' is non-nil, it's a non-standard overview header." ;; Regexp is the default type. (when (eq type t) (setq type 'r)) @@ -792,6 +818,11 @@ If optional argument `SILENT' is nil, show effect of score entry." elem) (setq new (cond + (extra + (list match score + (and date (if (numberp date) date + (date-to-day date))) + type (symbol-name extra))) (type (list match score (and date (if (numberp date) date @@ -822,18 +853,19 @@ If optional argument `SILENT' is nil, show effect of score entry." (if (and (>= (nth 1 (assoc header gnus-header-index)) 0) (eq (nth 2 (assoc header gnus-header-index)) 'gnus-score-string)) - (gnus-summary-score-effect header match type score) + (gnus-summary-score-effect header match type score extra) (gnus-summary-rescore))) ;; Return the new scoring rule. new)) -(defun gnus-summary-score-effect (header match type score) +(defun gnus-summary-score-effect (header match type score extra) "Simulate the effect of a score file entry. HEADER is the header being scored. MATCH is the string we are looking for. TYPE is the score type. -SCORE is the score to add." +SCORE is the score to add. +EXTRA is the possible non-standard header." (interactive (list (completing-read "Header: " gnus-header-index (lambda (x) (fboundp (nth 2 x))) @@ -854,7 +886,7 @@ SCORE is the score to add." (t (regexp-quote match))))) (while (not (eobp)) - (let ((content (gnus-summary-header header 'noerr)) + (let ((content (gnus-summary-header header 'noerr extra)) (case-fold-search t)) (and content (when (if (eq type 'f) @@ -1866,12 +1898,23 @@ SCORE is the score to add." ;; and U is the number of unique headers. It is assumed (but ;; untested) this will be a net win because of the large constant ;; factor involved with string matching. - (setq gnus-scores-articles (sort gnus-scores-articles 'gnus-score-string<) + (setq gnus-scores-articles + ;; We cannot string-sort the extra headers list. *sigh* + (if (= gnus-score-index 9) + gnus-scores-articles + (sort gnus-scores-articles 'gnus-score-string<)) articles gnus-scores-articles) (erase-buffer) (while (setq art (pop articles)) (setq this (aref (car art) gnus-score-index)) + + ;; If we're working with non-standard headers, we are stuck + ;; with working on them as a group. What a hassle. + ;; Just wait 'til you see what horrors we commit against `match'... + (if (= gnus-score-index 9) + (setq this (prin1-to-string this))) ; ick. + (if simplify (setq this (gnus-map-function gnus-simplify-subject-functions this))) (if (equal last this) @@ -1902,6 +1945,7 @@ SCORE is the score to add." (type (or (nth 3 kill) 's)) (score (or (nth 1 kill) gnus-score-interactive-default-score)) (date (nth 2 kill)) + (extra (nth 4 kill)) ; non-standard header; string. (found nil) (mt (aref (symbol-name type) 0)) (case-fold-search (not (memq mt '(?R ?S ?E ?F)))) @@ -1917,6 +1961,12 @@ SCORE is the score to add." ((or (= dmt ?e) (= dmt ?s) (= dmt ?f)) 'search-forward) ((= dmt ?w) nil) (t (error "Illegal match type: %s" type))))) + + ;; Evil hackery to make match usable in non-standard headers. + (when extra + (setq match (concat "[ (](" extra " \\. \"[^)]*" match "[^(]*\")[ )]") + search-func 're-search-forward)) ; XXX danger?!? + (cond ;; Fuzzy matches. We save these for later. ((= dmt ?f) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 2fba73e38..17b90ad54 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -778,7 +778,8 @@ which it may alter in any way.") :group 'gnus-summary :type '(repeat symbol)) -(defcustom gnus-ignored-from-addresses (regexp-quote user-mail-address) +(defcustom gnus-ignored-from-addresses + (and user-mail-address (regexp-quote user-mail-address)) "*Regexp of From headers that may be suppressed in favor of To headers." :group 'gnus-summary :type 'regexp) @@ -1822,6 +1823,7 @@ increase the score of each group you read." ("article body" "body" string) ("article head" "head" string) ("xref" "xref" string) + ("extra header" "extra" string) ("lines" "lines" number) ("followups to author" "followup" string))) (types '((number ("less than" <) @@ -4631,6 +4633,9 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')." number headers header) (save-excursion (set-buffer nntp-server-buffer) + (goto-char (point-min)) + (while (search-forward "\r" nil t) + (replace-match " " t t)) ;; Allow the user to mangle the headers before parsing them. (gnus-run-hooks 'gnus-parse-headers-hook) (goto-char (point-min)) @@ -6729,6 +6734,7 @@ Optional argument BACKWARD means do search for backward. ;; We have to require this here to make sure that the following ;; dynamic binding isn't shadowed by autoloading. (require 'gnus-async) + (require 'gnus-art) (let ((gnus-select-article-hook nil) ;Disable hook. (gnus-article-display-hook nil) (gnus-mark-article-hook nil) ;Inhibit marking as read. @@ -6736,8 +6742,9 @@ Optional argument BACKWARD means do search for backward. (gnus-xmas-force-redisplay nil) ;Inhibit XEmacs redisplay. (gnus-use-trees nil) ;Inhibit updating tree buffer. (sum (current-buffer)) + (gnus-display-mime-function nil) (found nil) - point gnus-display-mime-function) + point) (gnus-save-hidden-threads (gnus-summary-select-article) (set-buffer gnus-article-buffer) diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index 678aba12b..29052c6bd 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -478,21 +478,35 @@ If N, return the Nth ancestor instead." (defun gnus-make-sort-function (funs) "Return a composite sort condition based on the functions in FUNC." (cond - ((not (listp funs)) funs) + ;; Just a simple function. + ((gnus-functionp funs) funs) + ;; No functions at all. ((null funs) funs) - ((cdr funs) + ;; A list of functions. + ((or (cdr funs) + (listp (car funs))) `(lambda (t1 t2) ,(gnus-make-sort-function-1 (reverse funs)))) + ;; A list containing just one function. (t (car funs)))) (defun gnus-make-sort-function-1 (funs) "Return a composite sort condition based on the functions in FUNC." - (if (cdr funs) - `(or (,(car funs) t1 t2) - (and (not (,(car funs) t2 t1)) - ,(gnus-make-sort-function-1 (cdr funs)))) - `(,(car funs) t1 t2))) + (let ((function (car funs)) + (first 't1) + (last 't2)) + (when (consp function) + (if (eq (car function) 'not) + (setq function (cadr function) + first 't2 + last 't1) + (error "Invalid sort spec: %s" function))) + (if (cdr funs) + `(or (,function ,first ,last) + (and (not (,function ,last ,first)) + ,(gnus-make-sort-function-1 (cdr funs)))) + `(,function ,first ,last)))) (defun gnus-turn-off-edit-menu (type) "Turn off edit menu in `gnus-TYPE-mode-map'." diff --git a/lisp/gnus.el b/lisp/gnus.el index e05b3c3b2..d69a237d4 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -254,7 +254,7 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "0.42" +(defconst gnus-version-number "0.43" "Version number for this version of Gnus.") (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number) diff --git a/lisp/message.el b/lisp/message.el index 0f746c673..47b329e8e 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -321,7 +321,7 @@ The provided functions are: :group 'message-forwarding :type 'boolean) -(defcustom message-ignored-resent-headers "^Return-receipt" +(defcustom message-ignored-resent-headers "^Return-receipt\\|^X-Gnus" "*All headers that match this regexp will be deleted when resending a message." :group 'message-interface :type 'regexp) @@ -3798,7 +3798,8 @@ Optional NEWS will use news to forward instead of mail." (when (looking-at "From ") (replace-match "X-From-Line: ")) ;; Send it. - (message-send-mail) + (let (message-required-mail-headers) + (message-send-mail)) (kill-buffer (current-buffer))) (message "Resending message to %s...done" address))) diff --git a/lisp/mm-util.el b/lisp/mm-util.el index eeff82fec..699e1832e 100644 --- a/lisp/mm-util.el +++ b/lisp/mm-util.el @@ -169,7 +169,7 @@ used as the line break code type of the coding system." (defsubst mm-enable-multibyte () "Enable multibyte in the current buffer." (when (and (fboundp 'set-buffer-multibyte) - (default-value enable-multibyte-characters)) + (default-value 'enable-multibyte-characters)) (set-buffer-multibyte t))) (defsubst mm-disable-multibyte () @@ -205,7 +205,7 @@ See also `with-temp-file' and `with-output-to-string'." (multibyte (make-symbol "multibyte"))) `(if (not (boundp 'enable-multibyte-characters)) (with-temp-buffer ,@forms) - (let ((,multibyte (default-value enable-multibyte-characters)) + (let ((,multibyte (default-value 'enable-multibyte-characters)) ,temp-buffer) (unwind-protect (progn @@ -231,7 +231,8 @@ See also `with-temp-file' and `with-output-to-string'." (save-restriction (narrow-to-region b e) (goto-char (point-min)) - (let ((entry (assoc current-language-environment language-info-alist))) + (let ((entry (assoc (capitalize current-language-environment) + language-info-alist))) (skip-chars-forward "\0-\177") (if (eobp) '(ascii) diff --git a/lisp/mm-view.el b/lisp/mm-view.el index 0335cdba9..069858e54 100644 --- a/lisp/mm-view.el +++ b/lisp/mm-view.el @@ -75,17 +75,19 @@ ,(set-marker (make-marker) (point-min)) ,(set-marker (make-marker) (point-max))))))))) ((equal type "html") - (save-excursion - (w3-do-setup) - (mm-with-unibyte-buffer - (insert-buffer-substring (mm-handle-buffer handle)) - (mm-decode-content-transfer-encoding - (mm-handle-encoding handle) - (car (mm-handle-type handle))) - (require 'url) - (save-window-excursion - (w3-region (point-min) (point-max)) - (setq text (buffer-string))))) + (let ((width (window-width))) + (save-excursion + (w3-do-setup) + (mm-with-unibyte-buffer + (insert-buffer-substring (mm-handle-buffer handle)) + (mm-decode-content-transfer-encoding + (mm-handle-encoding handle) + (car (mm-handle-type handle))) + (require 'url) + (save-window-excursion + (let ((w3-strict-width width)) + (w3-region (point-min) (point-max))) + (setq text (buffer-string)))))) (mm-insert-inline handle text)) ((or (equal type "enriched") (equal type "richtext")) diff --git a/lisp/nngateway.el b/lisp/nngateway.el index 41dc00a11..51e20ade9 100644 --- a/lisp/nngateway.el +++ b/lisp/nngateway.el @@ -25,6 +25,7 @@ ;;; Code: +(eval-when-compile (require 'cl)) (require 'nnoo) (require 'message) diff --git a/texi/gnus.texi b/texi/gnus.texi index 1499f1dd5..96ca8d972 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Pterodactyl Gnus 0.42 Manual +@settitle Pterodactyl Gnus 0.43 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -318,7 +318,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Pterodactyl Gnus 0.42 Manual +@title Pterodactyl Gnus 0.43 Manual @author by Lars Magne Ingebrigtsen @page @@ -354,7 +354,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local spool or your mbox file. All at the same time, if you want to push your luck. -This manual corresponds to Pterodactyl Gnus 0.42. +This manual corresponds to Pterodactyl Gnus 0.43. @end ifinfo @@ -5188,7 +5188,10 @@ Matching}). @findex gnus-thread-sort-by-number @vindex gnus-thread-sort-functions If you are using a threaded summary display, you can sort the threads by -setting @code{gnus-thread-sort-functions}, which is a list of functions. +setting @code{gnus-thread-sort-functions}, which can be either a single +function, a list of functions, or a list containing functions and +@code{(not some-function)} elements. + By default, sorting is done on article numbers. Ready-made sorting predicate functions include @code{gnus-thread-sort-by-number}, @code{gnus-thread-sort-by-author}, @code{gnus-thread-sort-by-subject}, @@ -5197,22 +5200,23 @@ predicate functions include @code{gnus-thread-sort-by-number}, Each function takes two threads and returns non-@code{nil} if the first thread should be sorted before the other. Note that sorting really is -normally done by looking only at the roots of each thread. If you use -more than one function, the primary sort key should be the last function -in the list. You should probably always include +normally done by looking only at the roots of each thread. + +If you use more than one function, the primary sort key should be the +last function in the list. You should probably always include @code{gnus-thread-sort-by-number} in the list of sorting functions---preferably first. This will ensure that threads that are equal with respect to the other sort criteria will be displayed in ascending article order. -If you would like to sort by score, then by subject, and finally by -number, you could do something like: +If you would like to sort by reverse score, then by subject, and finally +by number, you could do something like: @lisp (setq gnus-thread-sort-functions '(gnus-thread-sort-by-number gnus-thread-sort-by-subject - gnus-thread-sort-by-total-score)) + (reverse gnus-thread-sort-by-total-score))) @end lisp The threads that have highest score will be displayed first in the diff --git a/texi/message.texi b/texi/message.texi index a7c4d91c7..1ffb947f6 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Pterodactyl Message 0.42 Manual +@settitle Pterodactyl Message 0.43 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Pterodactyl Message 0.42 Manual +@title Pterodactyl Message 0.43 Manual @author by Lars Magne Ingebrigtsen @page @@ -83,7 +83,7 @@ Message mode buffers. * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Pterodactyl Message 0.42. Message is +This manual corresponds to Pterodactyl Message 0.43. Message is distributed with the Gnus distribution bearing the same version number as this manual. -- 2.25.1