+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.
(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:"
: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-"
(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:"
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.
(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.
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.
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 -"
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
(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")
(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
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")))
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
* 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)
(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
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"
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.
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.
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)
(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)
(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)
(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)
(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)
(: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)
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)
(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)
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)
(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)
(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
(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)
(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
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")
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")
(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\\):"
(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)
(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."
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*")
,@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)
(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.
\\{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.
(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)
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."
: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."
(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
["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]
["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]
["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])
["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"
;; 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"))
(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)
(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
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
"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
("\\.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
(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
(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
(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
`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)
"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
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
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--")
"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)
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
(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
(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))
+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>
\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
@tex
@titlepage
-@title Red Gnus 0.83 Manual
+@title Red Gnus 0.84 Manual
@author by Lars Magne Ingebrigtsen
@page
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
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
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
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
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.