Synch with Oort Gnus.
authoryamaoka <yamaoka>
Sun, 2 Dec 2001 22:32:58 +0000 (22:32 +0000)
committeryamaoka <yamaoka>
Sun, 2 Dec 2001 22:32:58 +0000 (22:32 +0000)
lisp/ChangeLog
lisp/gnus-spec.el
lisp/gnus-sum.el
lisp/message.el
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi

index e1649cf..0fb6d70 100644 (file)
@@ -1,3 +1,28 @@
+2001-12-01 15:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-sum.el (gnus-summary-save-article): Nix
+       gnus-display-mime-function and gnus-article-prepare-hook.
+
+       * gnus-spec.el (gnus-parse-complex-format): Properly handle %C at
+       the beginning of lines.
+       (gnus-complex-form-to-spec): Ditto.
+
+2001-12-01 08:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el (message-make-mft): Fix the m-s-a-file regexp.
+       From Paul Jarc <prj@po.cwru.edu>.
+       
+2001-11-30 21:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el: New variable message-subscribed-address-file;
+       use it in message-make-mft.  From Paul Jarc <prj@po.cwru.edu>.
+
+2001-11-30 12:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el (message-tab-body-function): Set to nil.
+       (message-tab): Use text-mode-map or global-map.
+       Suggested by Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>.
+       
 2001-11-30  Simon Josefsson  <jas@extundo.com>
 
        * gnus-agent.el (gnus-agent-fetch-headers): Use gnus-range-add
index c6e0b69..60ee8a8 100644 (file)
@@ -414,47 +414,53 @@ characters when given a pad value."
       (gnus-parse-simple-format format spec-alist insert))))
 
 (defun gnus-parse-complex-format (format spec-alist)
-  (save-excursion
-    (gnus-set-work-buffer)
-    (insert format)
-    (goto-char (point-min))
-    (while (re-search-forward "\"" nil t)
-      (replace-match "\\\"" nil t))
-    (goto-char (point-min))
-    (insert "(\"")
-    ;; Convert all font specs into font spec lists.
-    (while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t)
-      (let ((number (if (match-beginning 1)
-                       (match-string 1) "0"))
-           (delim (aref (match-string 2) 0)))
-       (if (or (= delim ?\()
-               (= delim ?\{)
-               (= delim ?\«))
-           (replace-match (concat "\"("
-                                  (cond ((= delim ?\() "mouse")
-                                        ((= delim ?\{) "face")
-                                        (t "balloon"))
-                                  " " number " \"")
-                          t t)
-         (replace-match "\")\""))))
-    (goto-char (point-max))
-    (insert "\")")
-    ;; Convert point position commands.
-    (goto-char (point-min))
-    (let ((case-fold-search nil))
-      (while (re-search-forward "%\\([-0-9]+\\)?C" nil t)
-       (replace-match "\"(point)\"" t t)))
-    ;; Convert TAB commands.
-    (goto-char (point-min))
-    (while (re-search-forward "%\\([-0-9]+\\)=" nil t)
-      (replace-match (format "\"(tab %s)\"" (match-string 1)) t t))
-    ;; Convert the buffer into the spec.
-    (goto-char (point-min))
-    (let ((form (read (current-buffer))))
-      ;; If the first element is '(point), we just remove it.
-      (when (equal (car form) '(point))
-       (pop form))
-      (cons 'progn (gnus-complex-form-to-spec form spec-alist)))))
+  (let (found-C)
+    (save-excursion
+      (gnus-set-work-buffer)
+      (insert format)
+      (goto-char (point-min))
+      (while (re-search-forward "\"" nil t)
+       (replace-match "\\\"" nil t))
+      (goto-char (point-min))
+      (insert "(\"")
+      ;; Convert all font specs into font spec lists.
+      (while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t)
+       (let ((number (if (match-beginning 1)
+                         (match-string 1) "0"))
+             (delim (aref (match-string 2) 0)))
+         (if (or (= delim ?\()
+                 (= delim ?\{)
+                 (= delim ?\«))
+             (replace-match (concat "\"("
+                                    (cond ((= delim ?\() "mouse")
+                                          ((= delim ?\{) "face")
+                                          (t "balloon"))
+                                    " " number " \"")
+                            t t)
+           (replace-match "\")\""))))
+      (goto-char (point-max))
+      (insert "\")")
+      ;; Convert point position commands.
+      (goto-char (point-min))
+      (let ((case-fold-search nil))
+       (while (re-search-forward "%\\([-0-9]+\\)?C" nil t)
+         (replace-match "\"(point)\"" t t)
+         (setq found-C t)))
+      ;; Convert TAB commands.
+      (goto-char (point-min))
+      (while (re-search-forward "%\\([-0-9]+\\)=" nil t)
+       (replace-match (format "\"(tab %s)\"" (match-string 1)) t t))
+      ;; Convert the buffer into the spec.
+      (goto-char (point-min))
+      (let ((form (read (current-buffer))))
+       (if found-C
+           `(let (gnus-position)
+              ,@(gnus-complex-form-to-spec form spec-alist)
+              (if gnus-position
+                  (gnus-put-text-property gnus-position (1+ gnus-position) 
+                                          'gnus-position t)))
+         `(progn
+            ,@(gnus-complex-form-to-spec form spec-alist)))))))
 
 (defun gnus-complex-form-to-spec (form spec-alist)
   (delq nil
@@ -464,7 +470,7 @@ characters when given a pad value."
            ((stringp sform)
             (gnus-parse-simple-format sform spec-alist t))
            ((eq (car sform) 'point)
-            `(gnus-put-text-property (1- (point)) (point) 'gnus-position t))
+            '(setq gnus-position (point)))
            ((eq (car sform) 'tab)
             (gnus-spec-tab (cadr sform)))
            (t
index 0075f1f..1a9e778 100644 (file)
@@ -9953,7 +9953,9 @@ The variable `gnus-default-article-saver' specifies the saver function."
            (gnus-message 1 "Article %d is unsaveable" article))
        ;; This is a real article.
        (save-window-excursion
-         (gnus-summary-select-article t nil nil article))
+         (let ((gnus-display-mime-function nil)
+               (gnus-article-prepare-hook nil))
+           (gnus-summary-select-article t nil nil article)))
        (save-excursion
          (set-buffer save-buffer)
          (erase-buffer)
index 5844040..dacc08b 100644 (file)
@@ -583,6 +583,13 @@ conjunction with `message-subscribed-regexps' and
   :group 'message-interface
   :type '(repeat sexp))
 
+(defcustom message-subscribed-address-file nil
+  "*A file containing addresses the user is subscribed to.
+If nil, do not look at any files to determine list subscriptions.  If
+non-nil, each line of this file should be a mailing list address."
+  :group 'message-interface
+  :type 'string)
+
 (defcustom message-subscribed-addresses nil
   "*Specifies a list of addresses the user is subscribed to.
 If nil, do not use any predefined list subscriptions.  This list of
@@ -3231,6 +3238,7 @@ This sub function is for exclusive use of `message-send-mail'."
       ;; Generate the Mail-Followup-To header if the header is not there...
       (if (and (or message-subscribed-regexps
                   message-subscribed-addresses
+                  message-subscribed-address-file
                   message-subscribed-address-functions)
               (not (mail-fetch-field "mail-followup-to")))
          (setq headers
@@ -4394,9 +4402,25 @@ give as trustworthy answer as possible."
         (recipients
          (mapcar 'mail-strip-quoted-names
                  (message-tokenize-header msg-recipients)))
+        (file-regexps
+         (if message-subscribed-address-file
+             (let (begin end item re)
+               (save-excursion
+                 (with-temp-buffer
+                   (insert-file-contents message-subscribed-address-file)
+                   (while (not (eobp))
+                     (setq begin (point))
+                     (forward-line 1)
+                     (setq end (point))
+                     (if (bolp) (setq end (1- end)))
+                     (setq item (regexp-quote (buffer-substring begin end)))
+                     (if re (setq re (concat re "\\|" item))
+                       (setq re (concat "\\`\\(" item))))
+                   (and re (list (concat re "\\)\\'"))))))))
         (mft-regexps (apply 'append message-subscribed-regexps
                             (mapcar 'regexp-quote
                                     message-subscribed-addresses)
+                            file-regexps
                             (mapcar 'funcall
                                     message-subscribed-address-functions))))
     (save-match-data
@@ -5923,8 +5947,9 @@ which specify the range to operate on."
   :group 'message
   :type '(alist :key-type regexp :value-type function))
 
-(defcustom message-tab-body-function 'indent-relative
-  "*Function to execute when `message-tab' (TAB) is executed in the body."
+(defcustom message-tab-body-function nil
+  "*Function to execute when `message-tab' (TAB) is executed in the body.
+If nil, the function bound in `text-mode-map' or `global-map' is executed."
   :group 'message
   :type 'function)
 
@@ -5938,7 +5963,10 @@ those headers."
                (let ((mail-abbrev-mode-regexp (caar alist)))
                  (not (mail-abbrev-in-expansion-header-p))))
       (setq alist (cdr alist)))
-    (funcall (or (cdar alist) message-tab-body-function))))
+    (funcall (or (cdar alist) message-tab-body-function
+                (lookup-key text-mode-map "\t")
+                (lookup-key global-map "\t")
+                'indent-relative))))
 
 (defun message-expand-group ()
   "Expand the group name under point."
index 3655031..353e3f7 100644 (file)
@@ -1,3 +1,8 @@
+2001-12-01  Simon Josefsson  <jas@extundo.com>
+
+       * gnus.texi (Group Line Specification, Summary Buffer Lines):
+       Cross reference Positioning Point.
+
 2001-11-25 09:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * gnus.texi (Limiting): Addition.
index f0cbbe7..f16cb2a 100644 (file)
@@ -1839,10 +1839,10 @@ Gnus \e$B$N5/F0$K@.8y$7$?8e$K!"0lHV:G8e$K<B9T$5$l$k%U%C%/$G$9!#\e(B
 @samp{%M%S%5y: %(%g%)\n} \e$B$H$$$&CM$G>e5-$N9T$r@8@.$7$^$9!#\e(B
 
 \e$B%3%m%s$O!"$3$N9T$NCf$KI,$:L5$/$F$O$$$1$^$;$s!#%+!<%=%k$O!"2?$+$NA`:n$r$7\e(B
-\e$B$?8e$O>o$K%3%m%s$N$H$3$m$K0\F0$9$k$+$i$G$9!#B>$K$O2?$bI,MW$G$O$"$j$^$;\e(B
-\e$B$s!=!=%0%k!<%WL>$5$($b$G$9!#I=<($5$l$F$$$kJ8;z$OA4$F$?$@$N2hLL$N>~$j$G$"\e(B
-\e$B$j!"\e(Bgnus \e$B$,$=$l$rD4$Y$k$3$H$O$"$j$^$;$s!#\e(BGnus \e$B$OI,MW$H$9$kA4$F$N<B>pJs$r!"\e(B
-\e$B%F%-%9%HB0@-$r;H$C$F21$($F$$$^$9!#\e(B
+\e$B$?8e$O>o$K%3%m%s$N$H$3$m$K0\F0$9$k$+$i$G$9!#\e(B@xref{Positioning Point}\e$B!#B>\e(B
+\e$B$K$O2?$bI,MW$G$O$"$j$^$;$s!=!=%0%k!<%WL>$5$($b$G$9!#I=<($5$l$F$$$kJ8;z$O\e(B
+\e$BA4$F$?$@$N2hLL$N>~$j$G$"$j!"\e(Bgnus \e$B$,$=$l$rD4$Y$k$3$H$O$"$j$^$;$s!#\e(BGnus \e$B$O\e(B
+\e$BI,MW$H$9$kA4$F$N<B>pJs$r!"%F%-%9%HB0@-$r;H$C$F21$($F$$$^$9!#\e(B
 
 (\e$B$b$77/$,!"$9$4$/%X%s$J!"AG@2$i$7$$!"I=7W;;Iw$N%l%$%"%&%H$r:n$C$?$H$7$?\e(B
 \e$B$i!"$_$s$J!"7/$O2q7W$N;E;v$,K;$7$/$C$F!"%K%e!<%9$rFI$s$G;~4V$rL5BL;H$$$7\e(B
@@ -4320,7 +4320,7 @@ Gnus \e$B$OJQ?t\e(B @code{gnus-extract-address-components} \e$B$NCM$r\e(B @code{From
 \e$BA`:n$7$?8e$K!"%+!<%=%k$O$$$D$b%3%m%s$+%]%$%s%H0LCV$N%^!<%+!<$N>l=j$K0\F0\e(B
 \e$B$7$^$9!#\e(B(\e$B$b$A$m$s!"$3$NF0:n$rJQ$($k$3$H$,$G$-$J$$$H$7$?$i\e(B Gnus \e$B$K$O$"$k\e(B
 \e$B$^$8$-$3$H$G$9!#4X?t\e(B @code{gnus-goto-colon} \e$B$r!"$"$J$?$,9%$-$J%+!<%=%k$N\e(B
-\e$BF0$-$K$J$k$h$&$K!"?7$?$K=q$1$PNI$$$N$G$9!#\e(B)
+\e$BF0$-$K$J$k$h$&$K!"?7$?$K=q$1$PNI$$$N$G$9!#\e(B) @xref{Positioning Point}\e$B!#\e(B
 
 \e$B=i4|CM$NJ8;zNs$O\e(B @samp{%U%R%z%I%(%[%4L: %-23,23n%]%) %s\n} \e$B$G$9!#\e(B
 
index f71c2f3..8ed800d 100644 (file)
@@ -1709,10 +1709,10 @@ a @code{printf} specifications, for those of you who use (feh!) C.
 @samp{%M%S%5y: %(%g%)\n} is the value that produced those lines above.
 
 There should always be a colon on the line; the cursor always moves to
-the colon after performing an operation.  Nothing else is required---not
-even the group name.  All displayed text is just window dressing, and is
-never examined by gnus.  Gnus stores all real information it needs using
-text properties.
+the colon after performing an operation.  @xref{Positioning
+Point}. Nothing else is required---not even the group name.  All
+displayed text is just window dressing, and is never examined by Gnus.
+Gnus stores all real information it needs using text properties.
 
 (Note that if you make a really strange, wonderful, spreadsheet-like
 layout, everybody will believe you are hard at work with the accounting
@@ -4266,6 +4266,7 @@ the cursor always moves to the point position marker or the colon after
 performing an operation.  (Of course, Gnus wouldn't be Gnus if it wasn't
 possible to change this.  Just write a new function
 @code{gnus-goto-colon} which does whatever you like with the cursor.)
+@xref{Positioning Point}.
 
 The default string is @samp{%U%R%z%I%(%[%4L: %-23,23n%]%) %s\n}.