From 5cd8f6142d37093cf4a7a174988078bf5930b818 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Sun, 29 Dec 2002 00:50:48 +0000 Subject: [PATCH] Synch with Oort Gnus. --- lisp/ChangeLog | 41 +++++++++++++++++++++++++++++++++ lisp/deuglify.el | 23 ++++++++----------- lisp/gnus-agent.el | 64 ++++++++++++++++++++++++++++------------------------ lisp/gnus-art.el | 2 +- lisp/gnus-sum.el | 18 +++++++++++++-- lisp/gnus.el | 26 +++++++++++++++------ lisp/message.el | 15 ++++++++---- lisp/nnimap.el | 13 +++++++---- lisp/nnmail.el | 9 ++++---- texi/ChangeLog | 5 ++++ texi/gnus-ja.texi | 9 +++++--- texi/gnus.texi | 7 ++++-- 12 files changed, 158 insertions(+), 74 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1623fd1..02cb07b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,44 @@ +2002-12-29 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-dummy-line-format): Update format to + fit with newer standard format. + (gnus-summary-make-false-root-always): New variable. + (gnus-gather-threads-by-subject): Use it. + + * message.el (message-get-reply-headers): Take an address list + optional argument. + +2002-12-28 Lars Magne Ingebrigtsen + + * gnus.el (gnus-keep-backlog): Change default to 20. + + * gnus-agent.el (gnus-agent-check-overview-buffer): Start from + start. + (gnus-agent-check-overview-buffer): Remove negative article + numbers. + + * nnmail.el (nnmail-split-fancy-with-parent-ignore-groups): Doc fix. + (nnmail-cache-ignore-groups): Doc fix. + + * nnimap.el (nnimap-debug): Made into a flag and defcustomed. + (nnimap-debug-buffer): New variable. + (nnimap-debug): Use it. + +2002-12-28 Lars Magne Ingebrigtsen + + * gnus.el (gnus-summary-high-uncached-face): New color scheme. + +2002-12-28 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-check-overview-buffer): Sort lines if + they aren't already sorted. + +2002-12-28 Jesper Harder + + * message.el (message-mode-menu): Add ellipses to menu items + expecting user interaction. + (message-mode-field-menu): do. + 2002-12-26 Jesper Harder * gnus-sum.el (gnus-summary-highlight-line): Don't bind `list' -- diff --git a/lisp/deuglify.el b/lisp/deuglify.el index e3a9bf3..61bb0e1 100644 --- a/lisp/deuglify.el +++ b/lisp/deuglify.el @@ -146,7 +146,7 @@ ;; Hey, John. There's no in all your sentences! ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; +;; ;; Usage ;; ----- ;; @@ -230,8 +230,7 @@ ;;; User Customizable Variables: (defgroup gnus-outlook-deuglify nil - "Deuglify articles generated by broken user agents like MS -Outlook (Express).") + "Deuglify articles generated by broken user agents like MS Outlook (Express).") ;;;###autoload (defcustom gnus-outlook-deuglify-unwrap-min 45 @@ -251,21 +250,18 @@ Outlook (Express).") :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-unwrap-stop-chars nil ;; ".?!" or nil - "Characters that inhibit unwrapping if they are the last one on the -cited line above the possible wrapped line." + "Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line." :type 'string :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-no-wrap-chars "`" - "Characters that inhibit unwrapping if they are the first one in the -possibly wrapped line." + "Characters that inhibit unwrapping if they are the first one in the possibly wrapped line." :type 'string :group 'gnus-outlook-deuglify) (defcustom gnus-outlook-deuglify-attrib-cut-regexp "\\(On \\|Am \\)?\\(Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\|Sun\\),[^,]+, " - "Regular expression matching the beginning of an attribution line -that should be cut off." + "Regular expression matching the beginning of an attribution line that should be cut off." :type 'string :group 'gnus-outlook-deuglify) @@ -287,8 +283,8 @@ that should be cut off." ;; TODO: don't kill MIME parts ;;;###autoload (defun gnus-outlook-unwrap-lines () - "Unwrap lines that appear to be wrapped citation lines. You can -control what lines will be unwrapped by frobbing + "Unwrap lines that appear to be wrapped citation lines. +You can control what lines will be unwrapped by frobbing `gnus-outlook-deuglify-unwrap-min' and `gnus-outlook-deuglify-unwrap-max', indicating the miminum and maximum length of an unwrapped citation line." @@ -311,14 +307,13 @@ length of an unwrapped citation line." (len3 (- (match-end 3) (match-beginning 3)))) (if (and (> len12 gnus-outlook-deuglify-unwrap-min) (< (+ len12 len3) gnus-outlook-deuglify-unwrap-max)) - (progn + (progn (replace-match "\\1\\2 \\3") (goto-char (match-beginning 0)))))))))) ;; TODO: respect signatures, don't kill MIME parts (defun gnus-outlook-rearrange-article (from-where) - "Put the text from `from-where' to the end of buffer at the top of -the article buffer." + "Put the text from `from-where' to the end of buffer at the top of the article buffer." (save-excursion (let ((inhibit-read-only t) (cite-marks gnus-outlook-deuglify-cite-marks)) diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index 2db7846..af1016a 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -41,8 +41,7 @@ (require 'gnus-group)) (eval-and-compile - (autoload 'gnus-server-update-server "gnus-srvr") - (autoload 'number-at-point "thingatpt")) + (autoload 'gnus-server-update-server "gnus-srvr")) (defcustom gnus-agent-directory (nnheader-concat gnus-directory "agent/") "Where the Gnus agent will store its files." @@ -1089,34 +1088,39 @@ In particular, checks that the file is sorted by article number and that there are no duplicates." (let ((prev-num -1)) (save-excursion - (when buffer (set-buffer buffer)) - (save-excursion - (save-restriction - (let ((deactivate-mark (if (boundp 'deactivate-mark) - (symbol-value 'deactivate-mark) - nil))) - (widen) - (goto-char (point-min)) - - (while (< (point) (point-max)) - (let ((p (point)) - (cur (condition-case nil - (read (current-buffer)) - (error nil)))) - (cond - ((or (not (integerp cur)) - (not (eq (char-after) ?\t))) - (gnus-message 1 - "Overview buffer contains garbage '%s'." (buffer-substring p (progn (end-of-line) (point))))) - ((= cur prev-num) - (gnus-message 1 - "Duplicate overview line for %d" cur) - (delete-region (point) (progn (forward-line 1) (point)))) - ((< cur prev-num) - (gnus-message 1 "Overview buffer not sorted!")) - (t - (setq prev-num cur))) - (forward-line 1))))))))) + (when buffer + (set-buffer buffer)) + (save-restriction + (widen) + (goto-char (point-min)) + + (while (< (point) (point-max)) + (let ((p (point)) + (cur (condition-case nil + (read (current-buffer)) + (error nil)))) + (cond + ((or (not (integerp cur)) + (not (eq (char-after) ?\t))) + (gnus-message 1 + "Overview buffer contains garbage '%s'." + (buffer-substring + p (gnus-point-at-eol)))) + ((= cur prev-num) + (gnus-message 1 + "Duplicate overview line for %d" cur) + (delete-region (point) (progn (forward-line 1) (point)))) + ((< cur 0) + (gnus-message 1 "Junk article number %d" cur) + (delete-region (point) (progn (forward-line 1) (point)))) + ((< cur prev-num) + (sort-numeric-fields 1 (point-min) (point-max)) + (goto-char (point-min)) + (setq prev-num -1) + (gnus-message 1 "Overview buffer not sorted!")) + (t + (setq prev-num cur))) + (forward-line 1))))))) (defun gnus-agent-flush-cache () (save-excursion diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index 7ad0686..eaa3105 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -151,7 +151,7 @@ "^X-Request-PGP:" "^X-Fingerprint:" "^X-WRIEnvto:" "^X-WRIEnvfrom:" "^X-Virus-Scanned:" "^X-Delivery-Agent:" "^Posted-Date:" "^X-Gateway:" "^X-Local-Origin:" "^X-Local-Destination:" "^X-UserInfo1:" - "^X-Received-Date:") + "^X-Received-Date:" "^X-Hashcash:") "*All headers that start with this regexp will be hidden. This variable can also be a list of regexps of headers to be ignored. If `gnus-visible-headers' is non-nil, this variable will be ignored." diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index e9f67f8..6559d30 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -120,6 +120,11 @@ given by the `gnus-summary-same-subject' variable.)" (const adopt) (const empty))) +(defcustom gnus-summary-make-false-root-always t + "Always make a false dummy root." + :group 'gnus-thread + :type 'boolean) + (defcustom gnus-summary-gather-exclude-subject "^ *$\\|^(none)$" "*A regexp to match subjects to be excluded from loose thread gathering. As loose thread gathering is done on subjects only, that means that @@ -609,7 +614,7 @@ list of parameters to that command." :type 'boolean) (defcustom gnus-summary-dummy-line-format - " %(: :%) %S\n" + " %(: :%) %S\n" "*The format specification for the dummy roots in the summary buffer. It works along the same lines as a normal formatting string, with some simple extensions. @@ -3609,7 +3614,16 @@ If SHOW-ALL is non-nil, already read articles are also listed." (setcdr prev (cdr threads)) (setq threads prev)) ;; Enter this thread into the hash table. - (gnus-sethash subject threads hashtb))) + (gnus-sethash subject + (if gnus-summary-make-false-root-always + (progn + ;; If you want a dummy root above all + ;; threads... + (setcar threads (list whole-subject + (car threads))) + threads) + threads) + hashtb))) (setq prev threads) (setq threads (cdr threads))) result))) diff --git a/lisp/gnus.el b/lisp/gnus.el index 675d388..acaf2ed 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -667,18 +667,30 @@ be set in `.emacs' instead." "Face used for normal interest ancient articles.") (defface gnus-summary-high-uncached-face - '((((class color)) - (:bold t :background "Wheat1"))) + '((((class color) + (background light)) + (:bold t :foreground "cyan4" :bold nil)) + (((class color) (background dark)) + (:bold t :foreground "LightGray" :bold nil)) + (t (:inverse-video t :bold t))) "Face used for high interest uncached articles.") (defface gnus-summary-low-uncached-face - '((((class color)) - (:italic t :background "Wheat1"))) + '((((class color) + (background light)) + (:italic t :foreground "cyan4" :bold nil)) + (((class color) (background dark)) + (:italic t :foreground "LightGray" :bold nil)) + (t (:inverse-video t :italic t))) "Face used for low interest uncached articles.") (defface gnus-summary-normal-uncached-face - '((((class color)) - (:background "Wheat1"))) + '((((class color) + (background light)) + (:foreground "cyan4" :bold nil)) + (((class color) (background dark)) + (:foreground "LightGray" :bold nil)) + (t (:inverse-video t))) "Face used for normal interest uncached articles.") (defface gnus-summary-high-unread-face @@ -1422,7 +1434,7 @@ cache to the full extent of the law." :group 'gnus-meta :type 'boolean) -(defcustom gnus-keep-backlog nil +(defcustom gnus-keep-backlog 20 "*If non-nil, Gnus will keep read articles for later re-retrieval. If it is a number N, then Gnus will only keep the last N articles read. If it is neither nil nor a number, Gnus will keep all read diff --git a/lisp/message.el b/lisp/message.el index d276b55..8337b37 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -2274,7 +2274,7 @@ Point is left at the beginning of the narrowed-to region." ["Insert Region Marked" message-mark-inserted-region ,@(if (featurep 'xemacs) '(t) '(:help "Mark region with enclosing tags"))] - ["Insert File Marked" message-mark-insert-file + ["Insert File Marked..." message-mark-insert-file ,@(if (featurep 'xemacs) '(t) '(:help "Insert file at point marked with enclosing tags"))] "----" @@ -2284,7 +2284,7 @@ Point is left at the beginning of the narrowed-to region." ["Postpone Message" message-dont-send ,@(if (featurep 'xemacs) '(t) '(:help "File this draft message and exit"))] - ["Send at Specific Time" gnus-delay-article + ["Send at Specific Time..." gnus-delay-article ,@(if (featurep 'xemacs) '(t) '(:help "Ask, then arrange to send message at that time"))] ["Kill Message" message-kill-buffer @@ -2300,7 +2300,7 @@ Point is left at the beginning of the narrowed-to region." ["To" message-goto-to t] ["From" message-goto-from t] ["Subject" message-goto-subject t] - ["Change subject" message-change-subject t] + ["Change subject..." message-change-subject t] ["Cc" message-goto-cc t] ["Bcc" message-goto-bcc t] ["Fcc" message-goto-fcc t] @@ -2312,7 +2312,7 @@ Point is left at the beginning of the narrowed-to region." ["Newsgroups" message-goto-newsgroups t] ["Followup-To" message-goto-followup-to t] ;; ["Followup-To (with note in body)" message-xpost-fup2 t] - ["Crosspost / Followup-To" message-xpost-fup2 t] + ["Crosspost / Followup-To..." message-xpost-fup2 t] ["Distribution" message-goto-distribution t] ["X-No-Archive:" message-add-archive-header t ] "----" @@ -5676,7 +5676,7 @@ OTHER-HEADERS is an alist of header/value pairs." (message-setup `((Newsgroups . ,(or newsgroups "")) (Subject . ,(or subject "")))))) -(defun message-get-reply-headers (wide &optional to-address) +(defun message-get-reply-headers (wide &optional to-address address-headers) (let (follow-to mct never-mct to cc author mft recipients) ;; Find all relevant headers we need. (let ((mrt (when message-use-mail-reply-to @@ -5734,6 +5734,11 @@ sends a copy of your response to " (if (string-match "," mct) (cond ((not wide) (setq recipients (concat ", " author))) + (address-headers + (dolist (header address-headers) + (let ((value (message-fetch-field header))) + (when value + (setq recipients (concat recipients ", " value)))))) ((and mft (string-match "[^ \t,]" mft) (or (not (eq message-use-mail-followup-to 'ask)) diff --git a/lisp/nnimap.el b/lisp/nnimap.el index 7a06fcb..a459161 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -381,12 +381,15 @@ just like \"ticked\" articles, in other IMAP clients.") If this is 'imap-mailbox-lsub, then use a server-side subscription list to restrict visible folders.") +(defcustom nnimap-debug nil + "If non-nil, random debug spews are placed in *nnimap-debug* buffer." + :group 'nnimap + :type 'boolean) + ;; Internal variables: +(defvar nnimap-debug-buffer "*nnimap-debug*") (defvar nnimap-mailbox-info (gnus-make-hashtable 997)) -(defvar nnimap-debug nil - "Name of buffer to record debugging info. -For example: (setq nnimap-debug \"*nnimap-debug*\")") (defvar nnimap-current-move-server nil) (defvar nnimap-current-move-group nil) (defvar nnimap-current-move-article nil) @@ -1564,8 +1567,8 @@ be used in a STORE FLAGS command." (when nnimap-debug (require 'trace) - (buffer-disable-undo (get-buffer-create nnimap-debug)) - (mapcar (lambda (f) (trace-function-background f nnimap-debug)) + (buffer-disable-undo (get-buffer-create nnimap-debug-buffer)) + (mapcar (lambda (f) (trace-function-background f nnimap-debug-buffer)) '( nnimap-possibly-change-server nnimap-verify-uidvalidity diff --git a/lisp/nnmail.el b/lisp/nnmail.el index df4e317..9273217 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -116,17 +116,16 @@ If nil, the first match found will be used." :type 'boolean) (defcustom nnmail-split-fancy-with-parent-ignore-groups nil - "Regexp that matches group names to be ignored when applying -`nnmail-split-fancy-with-parent'. This can also be a list of regexps." + "Regexp that matches group names to be ignored when applying `nnmail-split-fancy-with-parent'. +This can also be a list of regexps." :group 'nnmail-split :type '(choice (const :tag "none" nil) (regexp :value ".*") (repeat :value (".*") regexp))) (defcustom nnmail-cache-ignore-groups nil - "Regexp that matches group names to be ignored when inserting message -ids into the cache (`nnmail-cache-insert'). This can also be a list -of regexps." + "Regexp that matches group names to be ignored when inserting message ids into the cache (`nnmail-cache-insert'). +This can also be a list of regexps." :group 'nnmail-split :type '(choice (const :tag "none" nil) (regexp :value ".*") diff --git a/texi/ChangeLog b/texi/ChangeLog index 4e2b927..4e55c11 100644 --- a/texi/ChangeLog +++ b/texi/ChangeLog @@ -1,3 +1,8 @@ +2002-12-29 Lars Magne Ingebrigtsen + + * gnus.texi (Loose Threads): add + gnus-summary-make-false-root-always. + 2002-12-22 Jesper Harder * emacs-mime.texi: Fix typos. Index variables. Add diff --git a/texi/gnus-ja.texi b/texi/gnus-ja.texi index bfeebbb..78031ad 100644 --- a/texi/gnus-ja.texi +++ b/texi/gnus-ja.texi @@ -6242,12 +6242,15 @@ Gnus $B$O:G=i$N8I;y$r?F$K$7$^$9!#$3$N?F$O$9$Y$F$NB>$N5-;v$rM\;R$K$7$^$9!#(B @item $B$_$;$+$1(B (dummy) @vindex gnus-summary-dummy-line-format +@vindex gnus-summary-make-false-root-always Gnus $B$O?F$N$U$j$r$9$k$_$;$+$1$N35N,9T$r$D$/$j$^$9!#$_$;$+$1$N9T$O$I$NK\(B $BEv$N5-;v$K$bBP1~$7$^$;$s$N$G!"$=$l$rA*Br$9$k$3$H$O!"$_$;$+$1$N5-;v$N8e$N(B $B:G=i$NK\Ev$N5-;v$rA*Br$r$9$k$@$1$K$J$j$^$9!#$_$;$+$1$N:,K\$NMM<0$r;XDj(B $B$9$k$?$a$K!"(B@code{gnus-summary-dummy-line-format} $B$,;H$o$l$^$9!#$3$l$O$?$C(B $B$?0l$D$@$1$N%U%)!<%^%C%H$N;EMM$rl9g$O!"(B +@code{gnus-summary-make-false-root-always} $B$r(B t $B$K@_Dj$7$F2<$5$$!#(B @item $B6u(B (empty) Gnus $B$O