Synch with Oort Gnus.
authoryamaoka <yamaoka>
Sun, 29 Dec 2002 00:50:48 +0000 (00:50 +0000)
committeryamaoka <yamaoka>
Sun, 29 Dec 2002 00:50:48 +0000 (00:50 +0000)
12 files changed:
lisp/ChangeLog
lisp/deuglify.el
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-sum.el
lisp/gnus.el
lisp/message.el
lisp/nnimap.el
lisp/nnmail.el
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi

index 1623fd1..02cb07b 100644 (file)
@@ -1,3 +1,44 @@
+2002-12-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * 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  <larsi@gnus.org>
+
+       * 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  <kgreiner@xpediantsolutions.com>
+
+       * gnus.el (gnus-summary-high-uncached-face): New color scheme. 
+
+2002-12-28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-agent.el (gnus-agent-check-overview-buffer): Sort lines if
+       they aren't already sorted.
+
+2002-12-28  Jesper Harder  <harder@ifa.au.dk>
+
+       * message.el (message-mode-menu): Add ellipses to menu items
+       expecting user interaction.
+       (message-mode-field-menu): do.
+
 2002-12-26  Jesper Harder  <harder@ifa.au.dk>
 
        * gnus-sum.el (gnus-summary-highlight-line): Don't bind `list' --
index e3a9bf3..61bb0e1 100644 (file)
 ;; Hey, John.  There's no in all your sentences!
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; 
+;;
 ;; Usage
 ;; -----
 ;;
 ;;; 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))
index 2db7846..af1016a 100644 (file)
@@ -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
index 7ad0686..eaa3105 100644 (file)
      "^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."
index e9f67f8..6559d30 100644 (file)
@@ -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)))
index 675d388..acaf2ed 100644 (file)
@@ -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
index d276b55..8337b37 100644 (file)
@@ -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))
index 7a06fcb..a459161 100644 (file)
@@ -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
index df4e317..9273217 100644 (file)
@@ -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 ".*")
index 4e2b927..4e55c11 100644 (file)
@@ -1,3 +1,8 @@
+2002-12-29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Loose Threads): add
+       gnus-summary-make-false-root-always. 
+
 2002-12-22  Jesper Harder  <harder@ifa.au.dk>
 
        * emacs-mime.texi: Fix typos.  Index variables.  Add
index bfeebbb..78031ad 100644 (file)
@@ -6242,12 +6242,15 @@ Gnus \e$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!#\e(B
 
 @item \e$B$_$;$+$1\e(B (dummy)
 @vindex gnus-summary-dummy-line-format
+@vindex gnus-summary-make-false-root-always
 Gnus \e$B$O?F$N$U$j$r$9$k$_$;$+$1$N35N,9T$r$D$/$j$^$9!#$_$;$+$1$N9T$O$I$NK\\e(B
 \e$BEv$N5-;v$K$bBP1~$7$^$;$s$N$G!"$=$l$rA*Br$9$k$3$H$O!"$_$;$+$1$N5-;v$N8e$N\e(B
 \e$B:G=i$NK\Ev$N5-;v$rA*Br$r$9$k$@$1$K$J$j$^$9!#$_$;$+$1$N:,K\$NMM<0$r;XDj\e(B
 \e$B$9$k$?$a$K!"\e(B@code{gnus-summary-dummy-line-format} \e$B$,;H$o$l$^$9!#$3$l$O$?$C\e(B
 \e$B$?0l$D$@$1$N%U%)!<%^%C%H$N;EMM$r<u$1IU$1$^$9\e(B: @samp{S} \e$B$G!"$3$l$O5-;v$N\e(B
-\e$BI=Bj$G$9!#\e(B@xref{Formatting Variables}.
+\e$BI=Bj$G$9!#\e(B@xref{Formatting Variables}\e$B!#$?$H$(=8$a$k$b$N$,L5$/$F$b!"$9$Y\e(B
+\e$B$F$N%9%l%C%I$K$_$;$+$1$N:,K\$r;}$?$;$?$$>l9g$O!"\e(B
+@code{gnus-summary-make-false-root-always} \e$B$r\e(B t \e$B$K@_Dj$7$F2<$5$$!#\e(B
 
 @item \e$B6u\e(B (empty)
 Gnus \e$B$O<B:]$K$O$I$N5-;v$b?F$K$O$;$:!"C1$K:G=i$N8I;y$r=|$$$F$9$Y$F$N8I;y\e(B
@@ -20870,7 +20873,7 @@ Spam \e$B$H@o$&$?$a$N?7$7$$5;K!$O!"%a%C%;!<%8$rAw?.$9$k:]$K$$$/$P$/$+$NIiC4\e(B
 @kindex S x
 @kindex M s x
 @findex gnus-summary-mark-as-spam
-(@code{gnus-summary-mark-as-spam})
+@code{gnus-summary-mark-as-spam}\e$B!#\e(B
 
 \e$B8=:_$N5-;v$K\e(B spam \e$B$H$7$F0u$rIU$1!"$=$l$r\e(B @samp{H} \e$B0u$GI=<($7$^$9!#\e(B
 Spam \e$B5-;v$r8+$?$H$-$O$$$D$G$b!"%0%k!<%W$rH4$1$kA0$KI,$:\e(B @kbd{M-d} \e$B$G$=$N\e(B
@@ -20881,7 +20884,7 @@ Spam \e$B5-;v$r8+$?$H$-$O$$$D$G$b!"%0%k!<%W$rH4$1$kA0$KI,$:\e(B @kbd{M-d} \e$B$G$=$
 @kindex M s t
 @kindex S t
 @findex spam-bogofilter-score
-(@code{spam-bogofilter-score}
+@code{spam-bogofilter-score}\e$B!#\e(B
 
 \e$B$3$N%3%^%s%I$,$A$c$s$HF/$/$?$a$K$O\e(B bogofilter \e$B$N=hM}$rM-8z$K$7$J$1$l$P$J\e(B
 \e$B$j$^$;$s!#\e(B
index c6b1f93..fa82af2 100644 (file)
@@ -6289,12 +6289,15 @@ square brackets (@samp{[]}).  This is the default method.
 
 @item dummy
 @vindex gnus-summary-dummy-line-format
+@vindex gnus-summary-make-false-root-always
 Gnus will create a dummy summary line that will pretend to be the
 parent.  This dummy line does not correspond to any real article, so
 selecting it will just select the first real article after the dummy
 article.  @code{gnus-summary-dummy-line-format} is used to specify the
 format of the dummy roots.  It accepts only one format spec:  @samp{S},
 which is the subject of the article.  @xref{Formatting Variables}.
+If you want all threads to have a dummy root, even the non-gathered
+ones, set @code{gnus-summary-make-false-root-always} to t.
 
 @item empty
 Gnus won't actually make any article the parent, but simply leave the
@@ -21332,7 +21335,7 @@ the following keyboard commands:
 @kindex S x
 @kindex M s x
 @findex gnus-summary-mark-as-spam
-(@code{gnus-summary-mark-as-spam})
+@code{gnus-summary-mark-as-spam}.
 
 Mark current article as spam, showing it with the @samp{H} mark.
 Whenever you see a spam article, make sure to mark its summary line
@@ -21343,7 +21346,7 @@ with @kbd{M-d} before leaving the group.
 @kindex M s t
 @kindex S t
 @findex spam-bogofilter-score
-(@code{spam-bogofilter-score}
+@code{spam-bogofilter-score}.
 
 You must have bogofilter processing enabled for that command to work
 properly.