*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 02:01:57 +0000 (02:01 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 02:01:57 +0000 (02:01 +0000)
13 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-cite.el
lisp/gnus-demon.el
lisp/gnus-msg.el
lisp/gnus-salt.el
lisp/gnus-sum.el
lisp/gnus-uu.el
lisp/gnus.el
lisp/message.el
lisp/nnfolder.el
texi/ChangeLog
texi/gnus.texi

index 421973e..591f3f2 100644 (file)
@@ -1,3 +1,56 @@
+Fri Jan 24 20:31:25 1997  Paul Franklin  <paul@cs.washington.edu>
+
+       * gnus-sum.el (gnus-summary-next-article): There's no
+       reason not to select the current article if it's what should
+       be selected.
+
+Sat Jan 25 01:03:59 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+        * gnus-art.el: Organized customization options.
+        * gnus-sum.el: Adjusted.
+        * gnus-cite.el: Ditto.
+        * gnus.el: Ditto.
+
+Sat Jan 25 09:49:40 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-demon.el (gnus-demon): Disable demons when the minibuffer
+       window is active.
+
+       * gnus-art.el (gnus-article-read-summary-keys): Disable pick mode
+       commands. 
+
+Sat Jan 25 09:42:41 1997  Kurt Swanson  <kurt@dna.lth.se>
+
+       * message.el (message-pipe-buffer-body): New function.
+
+       * gnus-sum.el (gnus-summary-pipe-message): New command and
+       keystroke. 
+
+Fri Jan 24 11:01:06 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * gnus-uu.el: Cleaned up customization groups.
+
+Fri Jan 24 15:45:48 1997  Kurt Swanson  <kurt@dna.lth.se>
+
+       * gnus-sum.el (gnus-summary-make-menu-bar): Moved cache menu.
+
+Fri Jan 24 10:05:49 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-msg.el (gnus-summary-resend-message): Accept
+       process/prefix. 
+
+       * gnus-cite.el (gnus-article-fill-cited-article): Accept a width
+       prefix. 
+
+       * gnus-art.el (gnus-article-read-summary-keys): Disable pick mode
+       map. 
+
+       * gnus-sum.el (gnus-summary-make-menu-bar): Duplication removed.
+
+Fri Jan 24 08:33:42 1997  Lars Magne Ingebrigtsen  <menja.larsi@ifi.uio.no>
+
+       * gnus.el: Red Gnus v0.83 is released.
+
 Fri Jan 24 05:05:38 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus.el (gnus-article-display-hook): Removed emphasize.
index 507fec1..62747ac 100644 (file)
 (require 'gnus-int)
 (require 'browse-url)
 
-(defgroup article nil
+(defgroup gnus-article nil
   "Article display."
+  :link '(custom-manual "(gnus)The Article Buffer")
   :group 'gnus)
 
+(defgroup gnus-article-hiding nil
+  "Hiding article parts."
+  :link '(custom-manual "(gnus)Article Hiding")
+  :group 'gnus-article)
+
+(defgroup gnus-article-highlight nil
+  "Article highlighting."
+  :link '(custom-manual "(gnus)Article Highlighting")
+  :group 'gnus-article
+  :group 'gnus-visual)
+
+(defgroup gnus-article-signature nil
+  "Article signatures."
+  :link '(custom-manual "(gnus)Article Signature")
+  :group 'gnus-article)
+
+(defgroup gnus-article-headers nil
+  "Article headers."
+  :link '(custom-manual "(gnus)Hiding Headers")
+  :group 'gnus-article)
+
+(defgroup gnus-article-washing nil
+  "Special commands on articles."
+  :link '(custom-manual "(gnus)Article Washing")
+  :group 'gnus-article)
+
+(defgroup gnus-article-emphasis nil
+  "Fontisizing articles."
+  :link '(custom-manual "(gnus)Article Fontisizing")
+  :group 'gnus-article)
+
+(defgroup gnus-article-saving nil
+  "Saving articles."
+  :link '(custom-manual "(gnus)Saving Articles")
+  :group 'gnus-article)
+
+(defgroup gnus-article-mime nil
+  "Worshiping the MIME wonder."
+  :link '(custom-manual "(gnus)Using MIME")
+  :group 'gnus-article)
+
+(defgroup gnus-article-buttons nil
+  "Pushable buttons in the article buffer."
+  :link '(custom-manual "(gnus)Article Buttons")
+  :group 'gnus-article)
+
+(defgroup gnus-article-various nil
+  "Other article options."
+  :link '(custom-manual "(gnus)Misc Article")
+  :group 'gnus-article)
+
 (defcustom gnus-ignored-headers
   '("^Path:" "^Posting-Version:" "^Article-I.D.:" "^Expires:"
     "^Date-Received:" "^References:" "^Control:" "^Xref:" "^Lines:"
@@ -47,7 +99,7 @@ If `gnus-visible-headers' is non-nil, this variable will be ignored."
   :type '(choice :custom-show nil
                 regexp
                 (repeat regexp))
-  :group 'article)
+  :group 'gnus-article-hiding)
 
 (defcustom gnus-visible-headers 
   "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-"
@@ -60,7 +112,7 @@ If this variable is non-nil, `gnus-ignored-headers' will be ignored."
                          (or (stringp value)
                              (widget-editable-list-match widget value)))
                 regexp)
-  :group 'article)
+  :group 'gnus-article-hiding)
 
 (defcustom gnus-sorted-header-list
   '("^From:" "^Subject:" "^Summary:" "^Keywords:" "^Newsgroups:" "^To:"
@@ -70,7 +122,7 @@ If it is non-nil, headers that match the regular expressions will
 be placed first in the article buffer in the sequence specified by
 this list."
   :type '(repeat regexp)
-  :group 'article)
+  :group 'gnus-article-hiding)
 
 (defcustom gnus-boring-article-headers '(empty followup-to reply-to)
   "Headers that are only to be displayed if they have interesting data.
@@ -81,7 +133,7 @@ Possible values in this list are `empty', `newsgroups', `followup-to',
              (const :tag "Followup-to identical to newsgroups." followup-to)
              (const :tag "Reply-to identical to from." reply-to)
              (const :tag "Date less than four days old." date))
-  :group 'article)
+  :group 'gnus-article-hiding)
 
 (defcustom gnus-signature-separator '("^-- $" "^-- *$")
   "Regexp matching signature separator.
@@ -89,7 +141,7 @@ This can also be a list of regexps.  In that case, it will be checked
 from head to tail looking for a separator.  Searches will be done from
 the end of the buffer."
   :type '(repeat string)
-  :group 'article)
+  :group 'gnus-article-signature)
 
 (defcustom gnus-signature-limit nil
    "Provide a limit to what is considered a signature.
@@ -100,12 +152,12 @@ will be called without any parameters, and if it returns nil, there is
 no signature in the buffer.  If it is a string, it will be used as a
 regexp.  If it matches, the text in question is not a signature."
   :type '(choice integer number function regexp)
-  :group 'article)
+  :group 'gnus-article-signature)
 
 (defcustom gnus-hidden-properties '(invisible t intangible t)
   "Property list to use for hiding text."
   :type 'sexp 
-  :group 'article)
+  :group 'gnus-article-hiding)
 
 (defcustom gnus-article-x-face-command
   "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -"
@@ -113,12 +165,12 @@ regexp.  If it matches, the text in question is not a signature."
 If it is a string, the command will be executed in a sub-shell
 asynchronously.         The compressed face will be piped to this command."
   :type 'string                                ;Leave function case to Lisp.
-  :group 'article)
+  :group 'gnus-article-washing)
 
 (defcustom gnus-article-x-face-too-ugly nil
   "Regexp matching posters whose face shouldn't be shown automatically."
   :type 'regexp
-  :group 'article)
+  :group 'gnus-article-washing)
 
 (defcustom gnus-emphasis-alist
   (let ((format
@@ -154,42 +206,44 @@ is the face used for highlighting."
                       (integer :tag "Match group")
                       (integer :tag "Emphasize group")
                       face))
-  :group 'article)
+  :group 'gnus-article-emphasis)
 
 (defface gnus-emphasis-bold '((t (:bold t)))
   "Face used for displaying strong emphasized text (*word*)."
-  :group 'article)
+  :group 'gnus-article-emphasis)
 
 (defface gnus-emphasis-italic '((t (:italic t)))
   "Face used for displaying italic emphasized text (/word/)."
-  :group 'article)
+  :group 'gnus-article-emphasis)
 
 (defface gnus-emphasis-underline '((t (:underline t)))
   "Face used for displaying underlined emphasized text (_word_)."
-  :group 'article)
+  :group 'gnus-article-emphasis)
 
 (defface gnus-emphasis-underline-bold '((t (:bold t :underline t)))
   "Face used for displaying underlined bold emphasized text (_*word*_)."
-  :group 'article)
+  :group 'gnus-article-emphasis)
 
 (defface gnus-emphasis-underline-italic '((t (:italic t :underline t)))
   "Face used for displaying underlined italic emphasized text (_*word*_)."
-  :group 'article)
+  :group 'gnus-article-emphasis)
 
 (defface gnus-emphasis-bold-italic '((t (:bold t :italic t)))
   "Face used for displaying bold italic emphasized text (/*word*/)."
-  :group 'article)
+  :group 'gnus-article-emphasis)
 
 (defface gnus-emphasis-underline-bold-italic 
   '((t (:bold t :italic t :underline t)))
-  "Face used for displaying underlined bold italic emphasized text (_/*word*/_)."
-  :group 'article)
+  "Face used for displaying underlined bold italic emphasized text.
+Esample: (_/*word*/_)."
+  :group 'gnus-article-emphasis)
 
 (defcustom gnus-article-time-format "%a, %b %d %Y %T %Z"
   "Format for display of Date headers in article bodies.
 See `format-time-zone' for the possible values."
   :type 'string
-  :group 'article)
+  :link '(custom-manual "(gnus)Article Date")
+  :group 'gnus-article-washing)
 
 (eval-and-compile
   (autoload 'hexl-hex-string-to-integer "hexl")
@@ -198,12 +252,12 @@ See `format-time-zone' for the possible values."
 
 (defcustom gnus-article-save-directory gnus-directory
   "*Name of the directory articles will be saved in (default \"~/News\")."
-  :group 'article
+  :group 'gnus-article-saving
   :type 'directory)
 
 (defcustom gnus-save-all-headers t
   "*If non-nil, don't remove any headers before saving."
-  :group 'article
+  :group 'gnus-article-saving
   :type 'boolean)
 
 (defcustom gnus-prompt-before-saving 'always
@@ -214,7 +268,7 @@ every article that is saved will be preceded by a prompt, even when
 saving large batches of articles.  If this variable is neither nil not
 `always', there the user will be prompted once for a file name for
 each invocation of the saving commands."
-  :group 'article
+  :group 'gnus-article-saving
   :type '(choice (item always)
                 (item :tag "never" nil)
                 (sexp :tag "once" :format "%t")))
@@ -224,7 +278,7 @@ each invocation of the saving commands."
 If `gnus-save-all-headers' is non-nil, this variable will be ignored.
 If that variable is nil, however, all headers that match this regexp
 will be kept while the rest will be deleted before saving."
-  :group 'article
+  :group 'gnus-article-saving
   :type '(repeat string))
 
 (defcustom gnus-default-article-saver 'gnus-summary-save-in-rmail
@@ -240,7 +294,7 @@ Gnus provides the following functions:
 * gnus-summary-save-in-file (article format)
 * gnus-summary-save-in-vm (use VM's folder format)
 * gnus-summary-write-to-file (article format -- overwrite)."
-  :group 'article
+  :group 'gnus-article-saving
   :type '(radio (function-item gnus-summary-save-in-rmail)
                (function-item gnus-summary-save-in-mail)
                (function-item gnus-summary-save-in-folder)
@@ -251,26 +305,26 @@ Gnus provides the following functions:
 (defcustom gnus-rmail-save-name 'gnus-plain-save-name
   "A function generating a file name to save articles in Rmail format.
 The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."
-  :group 'article
+  :group 'gnus-article-saving
   :type 'function)
 
 (defcustom gnus-mail-save-name 'gnus-plain-save-name
   "A function generating a file name to save articles in Unix mail format.
 The function is called with NEWSGROUP, HEADERS, and optional LAST-FILE."
-  :group 'article
+  :group 'gnus-article-saving
   :type 'function)
 
 (defcustom gnus-folder-save-name 'gnus-folder-save-name
   "A function generating a file name to save articles in MH folder.
 The function is called with NEWSGROUP, HEADERS, and optional LAST-FOLDER."
-  :group 'article
+  :group 'gnus-article-saving
   :type 'function)
 
 (defcustom gnus-file-save-name 'gnus-numeric-save-name
   "A function generating a file name to save articles in article format.
 The function is called with NEWSGROUP, HEADERS, and optional
 LAST-FILE."
-  :group 'article
+  :group 'gnus-article-saving
   :type 'function)
 
 (defcustom gnus-split-methods
@@ -294,26 +348,26 @@ parameter.  If it is a list, it will be evaled in the same buffer.
 If this form or function returns a string, this string will be used as
 a possible file name; and if it returns a non-nil list, that list will
 be used as possible file names."
-  :group 'article
+  :group 'gnus-article-saving
   :type '(repeat (choice (list function)
                         (cons regexp (repeat string))
                         sexp)))
 
 (defcustom gnus-strict-mime t
   "*If nil, MIME-decode even if there is no Mime-Version header."
-  :group 'article
+  :group 'gnus-article-mime
   :type 'boolean)
 
 (defcustom gnus-show-mime-method 'metamail-buffer
   "Function to process a MIME message.
 The function is called from the article buffer."
-  :group 'article
+  :group 'gnus-article-mime
   :type 'function)
 
 (defcustom gnus-decode-encoded-word-method 'gnus-article-de-quoted-unreadable
   "*Function to decode MIME encoded words.
 The function is called from the article buffer."
-  :group 'article
+  :group 'gnus-article-mime
   :type 'function)
 
 (defcustom gnus-page-delimiter "^\^L"
@@ -321,29 +375,29 @@ The function is called from the article buffer."
 The default value is \"^\^L\", which is a form linefeed at the
 beginning of a line."
   :type 'regexp
-  :group 'article)
+  :group 'gnus-article-various)
 
 (defcustom gnus-article-mode-line-format "Gnus: %%b %S"
   "*The format specification for the article mode line.
 See `gnus-summary-mode-line-format' for a closer description."
   :type 'string
-  :group 'article)
+  :group 'gnus-article-various)
 
 (defcustom gnus-article-mode-hook nil
   "*A hook for Gnus article mode."
   :type 'hook
-  :group 'article)
+  :group 'gnus-article-various)
 
 (defcustom gnus-article-menu-hook nil
   "*Hook run after the creation of the article mode menu."
   :type 'hook
-  :group 'article)
+  :group 'gnus-article-various)
 
 (defcustom gnus-article-prepare-hook nil
   "*A hook called after an article has been prepared in the article buffer.
 If you want to run a special decoding program like nkf, use this hook."
   :type 'hook
-  :group 'article)
+  :group 'gnus-article-various)
 
 (defcustom gnus-article-button-face 'bold
   "Face used for highlighting buttons in the article buffer.
@@ -351,7 +405,7 @@ If you want to run a special decoding program like nkf, use this hook."
 An article button is a piece of text that you can activate by pressing
 `RET' or `mouse-2' above it."
   :type 'face
-  :group 'article)
+  :group 'gnus-article-buttons)
 
 (defcustom gnus-article-mouse-face 'highlight
   "Face used for mouse highlighting in the article buffer.
@@ -359,12 +413,13 @@ An article button is a piece of text that you can activate by pressing
 Article buttons will be displayed in this face when the cursor is
 above them."
   :type 'face
-  :group 'article)
+  :group 'gnus-article-buttons)
 
 (defcustom gnus-signature-face 'italic
   "Face used for highlighting a signature in the article buffer."
   :type 'face
-  :group 'article)
+  :group 'gnus-article-highlight
+  :group 'gnus-article-signature)
 
 (defface gnus-header-from-face 
   '((((class color)
@@ -376,7 +431,8 @@ above them."
     (t 
      (:bold t :italic t)))
   "Face used for displaying from headers."
-  :group 'article)
+  :group 'gnus-article-headers
+  :group 'gnus-article-highlight)
 
 (defface gnus-header-subject-face 
   '((((class color)
@@ -388,7 +444,8 @@ above them."
     (t 
      (:bold t :italic t)))
   "Face used for displaying subject headers."
-  :group 'article)
+  :group 'gnus-article-headers
+  :group 'gnus-article-highlight)
 
 (defface gnus-header-newsgroups-face 
   '((((class color)
@@ -400,7 +457,8 @@ above them."
     (t 
      (:bold t :italic t)))
   "Face used for displaying newsgroups headers."
-  :group 'article)
+  :group 'gnus-article-headers
+  :group 'gnus-article-highlight)
 
 (defface gnus-header-name-face 
   '((((class color)
@@ -412,7 +470,8 @@ above them."
     (t 
      (:bold t)))
   "Face used for displaying header names."
-  :group 'article)
+  :group 'gnus-article-headers
+  :group 'gnus-article-highlight)
 
 (defface gnus-header-content-face
   '((((class color)
@@ -423,7 +482,8 @@ above them."
      (:foreground "DarkGreen" :italic t))
     (t 
      (:italic t)))  "Face used for displaying header content."
-  :group 'article)
+  :group 'gnus-article-headers
+  :group 'gnus-article-highlight)
 
 (defcustom gnus-header-face-alist
   '(("From" nil gnus-header-from-face)
@@ -441,7 +501,8 @@ The name of each header field will be displayed using the face
 specified by the first element in the list where HEADER match the
 header name and NAME is non-nil.  Similarly, the content will be
 displayed by the first non-nil matching CONTENT face."
-  :group 'article
+  :group 'gnus-article-headers
+  :group 'gnus-article-highlight
   :type '(repeat (list (regexp :tag "Header")
                       (choice :tag "Name"
                               (item :tag "skip" nil)
@@ -863,12 +924,13 @@ always hide."
   (interactive (gnus-article-hidden-arg))
   (unless (gnus-article-check-hidden-text 'pgp arg)
     (save-excursion
-      (let (buffer-read-only beg end)
+      (let ((inhibit-point-motion-hooks t)
+           buffer-read-only beg end)
        (widen)
        (goto-char (point-min))
        ;; Hide the "header".
-       (and (search-forward "\n-----BEGIN PGP SIGNED MESSAGE-----\n" nil t)
-            (gnus-article-hide-text-type (match-beginning 0) (match-end 0) 'pgp))
+       (when (search-forward "\n-----BEGIN PGP SIGNED MESSAGE-----\n" nil t)
+         (gnus-article-hide-text-type (match-beginning 0) (match-end 0) 'pgp))
        (setq beg (point))
        ;; Hide the actual signature.
        (and (search-forward "\n-----BEGIN PGP SIGNATURE-----\n" nil t)
@@ -2115,8 +2177,9 @@ Argument LINES specifies lines to be scrolled down."
        keys)
     (save-excursion
       (set-buffer gnus-summary-buffer)
-      (push (or key last-command-event) unread-command-events)
-      (setq keys (read-key-sequence nil)))
+      (let (gnus-pick-mode)
+       (push (or key last-command-event) unread-command-events)
+       (setq keys (read-key-sequence nil))))
     (message "")
 
     (if (or (member keys nosaves)
@@ -2125,7 +2188,9 @@ Argument LINES specifies lines to be scrolled down."
        (let (func)
          (save-window-excursion
            (pop-to-buffer gnus-summary-buffer 'norecord)
-           (setq func (lookup-key (current-local-map) keys)))
+           ;; We disable the pick minor mode commands.
+           (let (gnus-pick-mode)
+             (setq func (lookup-key (current-local-map) keys))))
          (if (not func)
              (ding)
            (unless (member keys nosave-in-article)
@@ -2142,9 +2207,11 @@ Argument LINES specifies lines to be scrolled down."
            (pop-to-buffer gnus-summary-buffer 'norecord)
          (switch-to-buffer gnus-summary-buffer 'norecord))
        (setq in-buffer (current-buffer))
-       (if (setq func (lookup-key (current-local-map) keys))
-           (call-interactively func)
-         (ding))
+       ;; We disable the pick minor mode commands.
+       (let (gnus-pick-mode)
+         (if (setq func (lookup-key (current-local-map) keys))
+             (call-interactively func)
+           (ding)))
        (when (eq in-buffer (current-buffer))
          (set-buffer obuf)
          (unless not-restore-window
@@ -2314,7 +2381,7 @@ If given a prefix, show the hidden text instead."
 
 (defcustom gnus-article-edit-mode-hook nil
   "Hook run in article edit mode buffers."
-  :group 'article
+  :group 'gnus-article-various
   :type 'hook)
 
 (defvar gnus-article-edit-done-function nil)
@@ -2441,7 +2508,7 @@ groups."
 
 (defcustom gnus-button-url-regexp "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)"
   "Regular expression that matches URLs."
-  :group 'article
+  :group 'gnus-article-buttons
   :type 'regexp)
 
 (defcustom gnus-button-alist 
@@ -2468,7 +2535,7 @@ PAR: is a number of a regexp grouping whose text will be passed to CALLBACK.
 
 CALLBACK can also be a variable, in that case the value of that
 variable it the real callback function."
-  :group 'article
+  :group 'gnus-article-buttons
   :type '(repeat (list regexp 
                       (integer :tag "Button")
                       (sexp :tag "Form")
@@ -2496,7 +2563,8 @@ alist has an additional HEADER element first in each entry:
 
 HEADER is a regexp to match a header.  For a fuller explanation, see
 `gnus-button-alist'."
-  :group 'article
+  :group 'gnus-article-buttons
+  :group 'gnus-article-headers
   :type '(repeat (list (regexp :tag "Header")
                       regexp 
                       (integer :tag "Button")
index 248a7a5..ef3aa76 100644 (file)
@@ -33,8 +33,9 @@
 
 (defgroup gnus-cite nil
   "Citation."
-  :group 'article)
-  
+  :prefix "gnus-cite-"
+  :link '(custom-manual "(gnus)Article Highlighting")
+  :group 'gnus-article)
 
 (defcustom gnus-cite-reply-regexp
   "^\\(Subject: Re\\|In-Reply-To\\|References\\):"
@@ -408,15 +409,17 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps
            (setq m (cdr m))))
        marks))))
 
-(defun gnus-article-fill-cited-article (&optional force)
-  "Do word wrapping in the current article."
-  (interactive (list t))
+(defun gnus-article-fill-cited-article (&optional force width)
+  "Do word wrapping in the current article.
+If WIDTH (the numerical prefix), use that text width when filling."
+  (interactive (list t current-prefix-arg))
   (save-excursion
     (set-buffer gnus-article-buffer)
     (let ((buffer-read-only nil)
          (inhibit-point-motion-hooks t)
          (marks (gnus-dissect-cited-text))
-         (adaptive-fill-mode nil))
+         (adaptive-fill-mode nil)
+         (fill-column (if width (prefix-numeric-value width) fill-column)))
       (save-restriction
        (while (cdr marks)
          (widen)
index e3d4059..8b41021 100644 (file)
@@ -171,52 +171,54 @@ time Emacs has been idle for IDLE `gnus-demon-timestep's."
       (incf gnus-demon-idle-time)
     (setq gnus-demon-idle-time 0)
     (setq gnus-demon-idle-has-been-called nil))
-  ;; Then we go through all the handler and call those that are
-  ;; sufficiently ripe.
-  (let ((handlers gnus-demon-handler-state)
-       handler time idle)
-    (while handlers
-      (setq handler (pop handlers))
-      (cond 
-       ((numberp (setq time (nth 1 handler)))
-       ;; These handlers use a regular timeout mechanism.  We decrease
-       ;; the timer if it hasn't reached zero yet.
-       (unless (zerop time)
-         (setcar (nthcdr 1 handler) (decf time)))
-       (and (zerop time)               ; If the timer now is zero...
-            ;; Test for appropriate idleness
-            (progn
-              (setq idle (nth 2 handler))
-              (cond
-               ((null idle) t)         ; Don't care about idle.
-               ((numberp idle)         ; Numerical idle...
-                (< idle gnus-demon-idle-time)) ; Idle timed out.
-               (t (< 0 gnus-demon-idle-time)))) ; Or just need to be idle.
-            ;; So we call the handler.
-            (progn
-              (funcall (car handler))
-              ;; And reset the timer.
-              (setcar (nthcdr 1 handler)
-                      (gnus-demon-time-to-step
-                       (nth 1 (assq (car handler) gnus-demon-handlers)))))))
-       ;; These are only supposed to be called when Emacs is idle. 
-       ((null (setq idle (nth 2 handler)))
-       ;; We do nothing.
-       )
-       ((not (numberp idle))
-       ;; We want to call this handler each and every time that
-       ;; Emacs is idle. 
-       (funcall (car handler)))
-       (t
-       ;; We want to call this handler only if Emacs has been idle
-       ;; for a specified number of timesteps.
-       (and (not (memq (car handler) gnus-demon-idle-has-been-called))
-            (< idle gnus-demon-idle-time)
-            (progn
-              (funcall (car handler))
-              ;; Make sure the handler won't be called once more in
-              ;; this idle-cycle.
-              (push (car handler) gnus-demon-idle-has-been-called))))))))
+  ;; Disable all daemonic stuff if we're in the minibuffer
+  (unless (window-minibuffer-p (selected-window))
+    ;; Then we go through all the handler and call those that are
+    ;; sufficiently ripe.
+    (let ((handlers gnus-demon-handler-state)
+         handler time idle)
+      (while handlers
+       (setq handler (pop handlers))
+       (cond 
+        ((numberp (setq time (nth 1 handler)))
+         ;; These handlers use a regular timeout mechanism.  We decrease
+         ;; the timer if it hasn't reached zero yet.
+         (unless (zerop time)
+           (setcar (nthcdr 1 handler) (decf time)))
+         (and (zerop time)             ; If the timer now is zero...
+              ;; Test for appropriate idleness
+              (progn
+                (setq idle (nth 2 handler))
+                (cond
+                 ((null idle) t)       ; Don't care about idle.
+                 ((numberp idle)       ; Numerical idle...
+                  (< idle gnus-demon-idle-time)) ; Idle timed out.
+                 (t (< 0 gnus-demon-idle-time)))) ; Or just need to be idle.
+              ;; So we call the handler.
+              (progn
+                (funcall (car handler))
+                ;; And reset the timer.
+                (setcar (nthcdr 1 handler)
+                        (gnus-demon-time-to-step
+                         (nth 1 (assq (car handler) gnus-demon-handlers)))))))
+        ;; These are only supposed to be called when Emacs is idle. 
+        ((null (setq idle (nth 2 handler)))
+         ;; We do nothing.
+         )
+        ((not (numberp idle))
+         ;; We want to call this handler each and every time that
+         ;; Emacs is idle. 
+         (funcall (car handler)))
+        (t
+         ;; We want to call this handler only if Emacs has been idle
+         ;; for a specified number of timesteps.
+         (and (not (memq (car handler) gnus-demon-idle-has-been-called))
+              (< idle gnus-demon-idle-time)
+              (progn
+                (funcall (car handler))
+                ;; Make sure the handler won't be called once more in
+                ;; this idle-cycle.
+                (push (car handler) gnus-demon-idle-has-been-called)))))))))
 
 (defun gnus-demon-add-nocem ()
   "Add daemonic NoCeM handling to Gnus."
index ec75e32..cdcbd68 100644 (file)
@@ -86,6 +86,9 @@ Thank you.
 The first %s will be replaced by the Newsgroups header;
 the second with the current group name.")
 
+(defvar gnus-message-setup-hook nil
+  "Hook run after setting up a message buffer.")
+
 ;;; Internal variables.
 
 (defvar gnus-message-buffer "*Mail Gnus*")
@@ -167,7 +170,8 @@ Thank you for your help in stamping out bugs.
           ,@forms
         (gnus-inews-add-send-actions ,winconf ,buffer ,article)
         (setq gnus-message-buffer (current-buffer))
-        (make-local-variable 'gnus-newsgroup-name))
+        (make-local-variable 'gnus-newsgroup-name)
+        (run-hooks 'gnus-message-setup-hook))
        (gnus-configure-windows ,config t))))
     
 (defun gnus-inews-add-send-actions (winconf buffer article)
@@ -612,13 +616,16 @@ If FULL-HEADERS (the prefix), include full headers when forwarding."
           (if full-headers "" message-included-forward-headers)))
       (message-forward post))))
 
-(defun gnus-summary-resend-message (address)
+(defun gnus-summary-resend-message (address n)
   "Resend the current article to ADDRESS."
-  (interactive "sResend message to: ")
-  (gnus-summary-select-article)
-  (save-excursion
-    (set-buffer gnus-original-article-buffer)
-    (message-resend address)))
+  (interactive "sResend message(s) to: \nP")
+  (let ((articles (gnus-summary-work-articles n))
+       article)
+    (while (setq article (pop articles))
+      (gnus-summary-select-article nil nil nil article)
+      (save-excursion
+       (set-buffer gnus-original-article-buffer)
+       (message-resend address)))))
 
 (defun gnus-summary-post-forward (&optional full-headers)
   "Forward the current article to a newsgroup.
index 2357aff..0d76b33 100644 (file)
@@ -104,9 +104,10 @@ It accepts the same format specs that `gnus-summary-line-format' does.")
 \\{gnus-pick-mode-map}"
   (interactive "P")
   (when (eq major-mode 'gnus-summary-mode)
-    (when (set (make-local-variable 'gnus-pick-mode)
-              (if (null arg) (not gnus-pick-mode)
-                (> (prefix-numeric-value arg) 0)))
+    (if (not (set (make-local-variable 'gnus-pick-mode)
+                 (if (null arg) (not gnus-pick-mode)
+                   (> (prefix-numeric-value arg) 0))))
+       (remove-hook 'gnus-message-setup-hook 'gnus-pick-setup-message)
       ;; Make sure that we don't select any articles upon group entry.
       (set (make-local-variable 'gnus-auto-select-first) nil)
       ;; Change line format.
@@ -114,6 +115,7 @@ It accepts the same format specs that `gnus-summary-line-format' does.")
       (setq gnus-summary-line-format-spec nil)
       (gnus-update-format-specifications nil 'summary)
       (gnus-update-summary-mark-positions)
+      (add-hook 'gnus-message-setup-hook 'gnus-pick-setup-message)
       (set (make-local-variable 'gnus-summary-goto-unread) 'never)
       ;; Set up the menu.
       (when (gnus-visual-p 'pick-menu 'menu)
@@ -125,6 +127,15 @@ It accepts the same format specs that `gnus-summary-line-format' does.")
              minor-mode-map-alist))
       (run-hooks 'gnus-pick-mode-hook))))
 
+(defun gnus-pick-setup-message ()
+  "Make Message do the right thing on exit."
+  (when (and (gnus-buffer-live-p gnus-summary-buffer)
+            (save-excursion
+              (set-buffer gnus-summary-buffer)
+              gnus-pick-mode))
+    (message-add-action 
+     '(gnus-configure-windows 'pick t) 'exit 'postpone 'kill)))
+
 (defvar gnus-pick-line-number 1)
 (defun gnus-pick-line-number ()
   "Return the current line number."
index a961efd..e15f934 100644 (file)
   :link '(custom-manual "(gnus)Viewing Files")
   :group 'gnus-extract)
 
-;; Belongs to article.el
-(defgroup article-hiding-headers nil
-  "Hiding headers in the article buffer."
-  :link '(custom-manual "(gnus)Hiding Headers")
-  :group 'article)
-
-(defgroup article-various nil
-  "Miscellaneous article options."
-  :link '(custom-manual "(gnus)Misc Article")
-  :group 'article)
-
-(defgroup article-mime nil
-  "Encoding articles and including attachments."
-  :link '(custom-manual "(gnus)Using MIME")
-  :group 'article)
-
 ;; These belong here.
 (defgroup gnus-summary nil
   "Summary buffers."
@@ -373,27 +357,28 @@ and non-`vertical', do both horizontal and vertical recentering."
 
 (defcustom gnus-show-all-headers nil
   "*If non-nil, don't hide any headers."
-  :group 'article-hiding-headers
+  :group 'gnus-article-hiding
+  :group 'gnus-article-headers
   :type 'boolean)
 
 (defcustom gnus-single-article-buffer t
   "*If non-nil, display all articles in the same buffer.
 If nil, each group will get its own article buffer."
-  :group 'article-various
+  :group 'gnus-article-various
   :type 'boolean)
 
 (defcustom gnus-break-pages t
   "*If non-nil, do page breaking on articles.
 The page delimiter is specified by the `gnus-page-delimiter'
 variable."
-  :group 'article-various
+  :group 'gnus-article-various
   :type 'boolean)
 
 (defcustom gnus-show-mime nil
   "*If non-nil, do mime processing of articles.
 The articles will simply be fed to the function given by
 `gnus-show-mime-method'."
-  :group 'article-mime
+  :group 'gnus-article-mime
   :type 'boolean)
 
 (defcustom gnus-move-split-methods nil
@@ -1629,6 +1614,7 @@ increase the score of each group you read."
        ["Show X-Face" gnus-article-display-x-face t]
        ["Quoted-Printable" gnus-article-de-quoted-unreadable t]
        ["Rot 13" gnus-summary-caesar-message t]
+       ["Unix pipe" gnus-summary-pipe-message t]
        ["Add buttons" gnus-article-add-buttons t]
        ["Add buttons to head" gnus-article-add-buttons-to-head t]
        ["Stop page breaking" gnus-summary-stop-page-breaking t]
@@ -1675,6 +1661,9 @@ increase the score of each group you read."
        ["Save" gnus-uu-decode-save t]
        ["Binhex" gnus-uu-decode-binhex t]
        ["Postscript" gnus-uu-decode-postscript t])
+       ("Cache"
+       ["Enter article" gnus-cache-enter-article t]
+       ["Remove article" gnus-cache-remove-article t])
        ["Enter digest buffer" gnus-summary-enter-digest-group t]
        ["Isearch article..." gnus-summary-isearch-article t]
        ["Search articles forward..." gnus-summary-search-article-forward t]
@@ -1816,9 +1805,6 @@ increase the score of each group you read."
        ["Fetch group FAQ" gnus-summary-fetch-faq t]
        ["Describe group" gnus-summary-describe-group t]
        ["Read manual" gnus-info-find-node t])
-       ("Cache"
-       ["Enter article" gnus-cache-enter-article t]
-       ["Remove article" gnus-cache-remove-article t])
        ("Modes"
        ["Pick and read" gnus-pick-mode t]
        ["Binary" gnus-binary-mode t])
@@ -1833,7 +1819,6 @@ increase the score of each group you read."
        ["Expire expirable articles" gnus-summary-expire-articles
        (gnus-check-backend-function
         'request-expire-articles gnus-newsgroup-name)]
-       ["Regenerate buffer" gnus-summary-prepare t]
        ["Edit local kill file" gnus-summary-edit-local-kill t]
        ["Edit main kill file" gnus-summary-edit-global-kill t]
        ("Exit"
@@ -5345,11 +5330,6 @@ If BACKWARD, the previous article is selected instead of the next."
    ;; If not, we try the first unread, if that is wanted.
    ((and subject
         gnus-auto-select-same
-        ;; Make sure that we don't select the current article.
-        (not (eq (gnus-summary-article-number)
-                 (save-excursion
-                   (gnus-summary-first-subject t)
-                   (gnus-summary-article-number))))
         (gnus-summary-first-unread-article))
     (gnus-summary-position-point)
     (gnus-message 6 "Wrapped"))
@@ -8188,6 +8168,21 @@ save those articles instead."
   (let ((gnus-default-article-saver 'gnus-summary-save-body-in-file))
     (gnus-summary-save-article arg)))
 
+(defun gnus-summary-pipe-message (program)
+  "Pipe the current article through PROGRAM."
+  (interactive "sProgram: ")
+  (gnus-set-global-variables)
+  (gnus-summary-select-article)
+  (let ((mail-header-separator "")
+        (art-buf (get-buffer gnus-article-buffer)))
+    (gnus-eval-in-buffer-window gnus-article-buffer
+      (save-restriction
+        (widen)
+        (let ((start (window-start))
+              buffer-read-only)
+          (message-pipe-buffer-body program)
+          (set-window-start (get-buffer-window (current-buffer)) start))))))
+
 (defun gnus-get-split-value (methods)
   "Return a value based on the split METHODS."
   (let (split-name method result match)
index 0c4bd9d..979cdc1 100644 (file)
 
 (defgroup gnus-extract nil
   "Extracting encoded files."
+  :prefix "gnus-uu-"
   :group 'gnus)
 
+(defgroup gnus-extract-view nil
+  "Viewwing extracted files."
+  :group 'gnus-extract)
+
+(defgroup gnus-extract-archive nil
+  "Extracting encoded archives."
+  :group 'gnus-extract)
+
+(defgroup gnus-extract-post nil
+  "Extracting encoded archives."
+  :prefix "gnus-uu-post"
+  :group 'gnus-extract)
+
 ;; Default viewing action rules
 
 (defcustom gnus-uu-default-view-rules 
@@ -83,14 +97,14 @@ file.  If this variable contains no matches, gnus-uu examines the
 default rule variable provided in this package.  If gnus-uu finds no
 match here, it uses `gnus-uu-user-view-rules-end' to try to make a
 match."
-  :group 'gnus-extract
+  :group 'gnus-extract-view
   :type '(repeat (group regexp (string :tag "Command"))))
 
 (defcustom gnus-uu-user-view-rules nil 
   "What actions are to be taken to view a file.
 See the documentation on the `gnus-uu-default-view-rules' variable for 
 details."
-  :group 'gnus-extract
+  :group 'gnus-extract-view
   :type '(repeat (group regexp (string :tag "Command"))))
 
 (defcustom gnus-uu-user-view-rules-end 
@@ -98,7 +112,7 @@ details."
   "What actions are to be taken if no rule matched the file name.
 See the documentation on the `gnus-uu-default-view-rules' variable for 
 details."
-  :group 'gnus-extract
+  :group 'gnus-extract-view
   :type '(repeat (group regexp (string :tag "Command"))))
 
 ;; Default unpacking commands
@@ -114,7 +128,7 @@ details."
     ("\\.gz$" "gunzip")
     ("\\.arc$" "arc -x"))
   "See `gnus-uu-user-archive-rules'."
-  :group 'gnus-extract
+  :group 'gnus-extract-archive
   :type '(repeat (group regexp (string :tag "Command"))))
 
 (defvar gnus-uu-destructive-archivers 
@@ -127,7 +141,7 @@ unpack zip files, say the following:
   (setq gnus-uu-user-archive-rules 
     '((\"\\\\.tar$\" \"untar\")
       (\"\\\\.zip$\" \"zip -x\")))"
-  :group 'gnus-extract
+  :group 'gnus-extract-archive
   :type '(repeat (group regexp (string :tag "Command"))))
 
 (defcustom gnus-uu-ignore-files-by-name nil
@@ -208,13 +222,13 @@ Default is \"/tmp/\"."
 (defcustom gnus-uu-do-not-unpack-archives nil 
   "*Non-nil means that gnus-uu won't peek inside archives looking for files to display. 
 Default is nil."
-  :group 'gnus-extract
+  :group 'gnus-extract-archive
   :type 'boolean)
 
 (defcustom gnus-uu-ignore-default-view-rules nil
   "*Non-nil means that gnus-uu will ignore the default viewing rules.
 Only the user viewing rules will be consulted.  Default is nil."
-  :group 'gnus-extract
+  :group 'gnus-extract-view
   :type 'boolean)
 
 (defcustom gnus-uu-grabbed-file-functions nil
@@ -229,7 +243,7 @@ and `gnus-uu-grab-move'."
 (defcustom gnus-uu-ignore-default-archive-rules nil 
   "*Non-nil means that gnus-uu will ignore the default archive unpacking commands.  
 Only the user unpacking commands will be consulted.  Default is nil."
-  :group 'gnus-extract
+  :group 'gnus-extract-archive
   :type 'boolean)
 
 (defcustom gnus-uu-kill-carriage-return t
@@ -1739,7 +1753,7 @@ There are three functions supplied with gnus-uu for encoding files:
 `gnus-uu-post-encode-mime', which encodes with base64 and adds MIME 
 headers; and `gnus-uu-post-encode-mime-uuencode', which encodes with 
 uuencode and adds MIME headers."
-  :group 'gnus-extract
+  :group 'gnus-extract-post
   :type '(radio (function-item gnus-uu-post-encode-uuencode)
                (function-item gnus-uu-post-encode-mime)
                (function-item gnus-uu-post-encode-mime-uuencode)
@@ -1749,14 +1763,14 @@ uuencode and adds MIME headers."
   "Non-nil means that gnus-uu will ask for a file to encode before you compose the article.
 If this variable is t, you can either include an encoded file with
 \\[gnus-uu-post-insert-binary-in-article] or have one included for you when you post the article."
-  :group 'gnus-extract
+  :group 'gnus-extract-post
   :type 'boolean)
 
 (defcustom gnus-uu-post-length 990
   "Maximum length of an article.
 The encoded file will be split into how many articles it takes to
 post the entire file."
-  :group 'gnus-extract
+  :group 'gnus-extract-post
   :type 'integer)
 
 (defcustom gnus-uu-post-threaded nil
@@ -1765,7 +1779,7 @@ This may not be smart, as no other decoder I have seen are able to
 follow threads when collecting uuencoded articles.  (Well, I have seen
 one package that does that - gnus-uu, but somehow, I don't think that 
 counts...) Default is nil."
-  :group 'gnus-extract
+  :group 'gnus-extract-post
   :type 'boolean)
 
 (defcustom gnus-uu-post-separate-description t
@@ -1774,7 +1788,7 @@ The first article will typically be numbered (0/x).  If this variable
 is nil, the description the user enters will be included at the 
 beginning of the first article, which will be numbered (1/x).  Default 
 is t."
-  :group 'gnus-extract
+  :group 'gnus-extract-post
   :type 'boolean)
 
 (defvar gnus-uu-post-binary-separator "--binary follows this line--")
index 07aed6f..d0a5973 100644 (file)
@@ -43,7 +43,7 @@
   "Score and kill file handling."
   :group 'gnus )
 
-(defconst gnus-version-number "0.83"
+(defconst gnus-version-number "0.84"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
@@ -1152,7 +1152,7 @@ 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."
-  :group 'article
+  :group 'gnus-article-highlight
   :group 'gnus-visual
   :type 'hook
   :options '(gnus-article-add-buttons
index 6a8547e..5a7ae7a 100644 (file)
@@ -1306,6 +1306,18 @@ Mail and USENET news headers are not rotated."
        (narrow-to-region (point) (point-max)))
       (message-caesar-region (point-min) (point-max) rotnum))))
 
+(defun message-pipe-buffer-body (program)
+  "Pipe the message body in the current buffer through PROGRAM."
+  (save-excursion
+    (save-restriction
+      (when (message-goto-body)
+        (narrow-to-region (point) (point-max)))
+      (let ((body (buffer-substring (point-min) (point-max))))
+        (unless (equal 0 (call-process-region
+                           (point-min) (point-max) program t t))
+            (insert body)
+            (gnus-message 1 "%s failed." program))))))
+
 (defun message-rename-buffer (&optional enter-string)
   "Rename the *message* buffer to \"*message* RECIPIENT\".  
 If the function is run with a prefix, it will ask for a new buffer
index 6c6207c..fee60a0 100644 (file)
@@ -529,8 +529,7 @@ time saver for large mailboxes.")
 
 (defun nnfolder-save-mail (group-art-list)
   "Called narrowed to an article."
-  (let* ((delim (concat "^" message-unix-mail-delimiter))
-        save-list group-art)
+  (let* (save-list group-art)
     (goto-char (point-min))
     ;; The From line may have been quoted by movemail.
     (when (looking-at (concat ">" message-unix-mail-delimiter))
index 0320b11..b0ba564 100644 (file)
@@ -1,7 +1,13 @@
+Sat Jan 25 08:09:30 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi (The Active File): Addition.
+
 Fri Jan 24 05:07:28 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus.texi (Summary Mail Commands): Addition.
        (Required Backend Functions): Deletia.
+       (Article Washing): Addition.
+       (Summary Mail Commands): Addition.
 
 Mon Jan 20 22:19:40 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
index 07fb0ec..4e2be15 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Red Gnus 0.83 Manual
+@settitle Red Gnus 0.84 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -287,7 +287,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Red Gnus 0.83 Manual
+@title Red Gnus 0.84 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -323,7 +323,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 Red Gnus 0.83
+This manual corresponds to Red Gnus 0.84
 
 @end ifinfo
 
@@ -940,6 +940,9 @@ performance, but if the server does not support the aforementioned
 In any case, if you use @code{some} or @code{nil}, you should definitely
 kill all groups that you aren't interested in to speed things up.
 
+Note that this variable also affects active file retrieval from
+secondary select methods.
+
 
 @node Startup Variables
 @section Startup Variables
@@ -3615,6 +3618,9 @@ ship a mail to a different account of yours.  (If you're both
 to the @code{root} account, you may want to resend it to
 @code{postmaster}.  Ordnung muß sein!
 
+This command understands the process/prefix convention
+(@pxref{Process/Prefix}). 
+
 @item S O m
 @kindex S O m (Summary)
 @findex gnus-uu-digest-mail-forward
@@ -5929,6 +5935,9 @@ Do word wrap (@code{gnus-article-fill-cited-article}).  If you use this
 function in @code{gnus-article-display-hook}, it should be run fairly
 late and certainly after any highlighting.
 
+You can give the command a numerical prefix to specify the width to use
+when filling.
+
 @item W c
 @kindex W c (Summary)
 @findex gnus-article-remove-cr
@@ -8764,9 +8773,9 @@ default for reasons of security.
 Since Red Gnus is an alpha release, it is to be expected to lose mail.
 (No Gnus release since (ding) Gnus 0.10 (or something like that) have
 lost mail, I think, but that's not the point.  (Except certain versions
-of Red Gnus.))  By not deleting the
-Incoming* files, one can be sure to not lose mail -- if Gnus totally
-whacks out, one can always recover what was lost.
+of Red Gnus.))  By not deleting the Incoming* files, one can be sure to
+not lose mail -- if Gnus totally whacks out, one can always recover what
+was lost.
 
 Delete the @file{Incoming*} files at will.