+Mon Nov 18 21:42:40 1996 Loren Schall <schall@saifr00.ateng.az.honeywell.com>
+
+ * gnus-sum.el (gnus-summary-insert-line): Pick apart the From
+ header in reversed order.
+
+Mon Nov 18 02:00:33 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-sum.el (gnus-summary-refer-references): Protect against nil
+ References.
+
+ * gnus-score.el (gnus-all-score-files): Remove duplicate score
+ files from the end first.
+
+ * gnus-start.el (gnus-after-getting-new-news-hook,
+ gnus-get-new-news-hook): Switched defaults.
+
+ * gnus-score.el (gnus-all-score-files): Returned score files in
+ reverse order.
+
+ * gnus-util.el (gnus-make-directory): Protect against nil dirs.
+
+ * gnus-art.el (gnus-decode-encoded-word-method): Default to
+ 'gnus-article-de-quoted-unreadable.
+
+ * gnus.el (gnus-read-group): Prohibit : in group name.
+ (gnus-article-display-hook): Removed
+ `gnus-article-de-quoted-unreadable'.
+
+ * article.el (gnus-emphasis-alist): Accept "-" as word marker.
+
+ * messagexmas.el (message-xmas-dont-activate-region): Changed
+ default to t.
+
+Sun Nov 17 01:09:21 1996 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * message.el: Added customize support.
+
+Sun Nov 17 23:42:03 1996 Raja R. Harinath <harinath@cs.umn.edu>
+
+ * gnus-gl.el (bbb-extract-token-number): Fix.
+
+Sun Nov 17 12:18:27 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-sum.el (gnus-summary-next-article): Use it.
+ (gnus-group-make-articles-read): Quote undo forms.
+ (gnus-update-read-articles): Ditto.
+
+ * gnus.el (gnus-key-press-event-p): New alias.
+
+Sat Nov 16 22:05:24 1996 Steven L Baur <steve@miranova.com>
+
+ * gnus-sum.el (gnus-summary-next-article): XEmacs doesn't use
+ integers for keyboard events.
+
+Sun Nov 17 12:09:44 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-group.el (gnus-group-set-timestamp): Protect against nil
+ gnus-newsgroup-name.
+
+Sun Nov 17 01:09:21 1996 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * nnmail.el: Added customize support.
+
+Sat Nov 16 22:59:47 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.el (gnus-summary-line-format): Dox fix.
+
+ * nnfolder.el (nnfolder-save-mail): Would insert extra newline at
+ the start.
+
+Sat Nov 16 19:43:22 1996 Lars Magne Ingebrigtsen <menja.larsi@ifi.uio.no>
+
+ * gnus.el: Red Gnus v0.63 is released.
+
Sat Nov 16 11:32:43 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* gnus-sum.el (gnus-summary-next-article): Ignore non-keyboard
(defcustom gnus-emphasis-alist
(let ((format
- "\\(\\s-\\|^\\|[\"\(]\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*\\)%s\\)\\(\\s-\\|[?!.,;:\"\)]\\)")
+ "\\(\\s-\\|^\\|[-\"\(]\\)\\(%s\\(\\w+\\(\\s-+\\w+\\)*\\)%s\\)\\(\\s-\\|[-?!.,;:\"\)]\\)")
(types
'(("_" "_" underline)
("/" "/" italic)
:group 'article
:type 'function)
-(defcustom gnus-decode-encoded-word-method (lambda ())
- "*Function to decode a MIME encoded-words.
+(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
:type 'function)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Program global variables
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defvar grouplens-bbb-token "0"
+(defvar grouplens-bbb-token nil
"Current session token number")
(defvar grouplens-bbb-process nil
grouplens-bbb-token)
(defun bbb-extract-token-number ()
- (let ((token-pos (search-forward "token=" nil t) ))
+ (let ((token-pos (search-forward "token=" nil t)))
(when (looking-at "[0-9]+")
(buffer-substring token-pos (match-end 0)))))
(defun bbb-get-predictions (midlist groupname)
"Ask the bbb for predictions, and build up the score alist."
- (if (or (null grouplens-bbb-token)
- (equal grouplens-bbb-token "0"))
- (progn
- (gnus-message 3 "Error: You are not logged in to a BBB")
- (ding))
- (gnus-message 5 "Fetching Predictions...")
- (let ((bbb-process (bbb-connect-to-bbbd grouplens-bbb-host
- grouplens-bbb-port)))
- (when bbb-process
- (save-excursion
- (set-buffer (process-buffer bbb-process))
- (bbb-send-command bbb-process
- (bbb-build-predict-command midlist groupname
- grouplens-bbb-token))
- (if (not (bbb-read-response bbb-process))
- (progn
- (gnus-message 1 "Invalid Token, login and try again")
- (ding))
- (bbb-get-prediction-response bbb-process)))))))
+ (gnus-message 5 "Fetching Predictions...")
+ (if grouplens-bbb-token
+ (let ((bbb-process (bbb-connect-to-bbbd grouplens-bbb-host
+ grouplens-bbb-port)))
+ (when bbb-process
+ (save-excursion
+ (set-buffer (process-buffer bbb-process))
+ (bbb-send-command bbb-process
+ (bbb-build-predict-command midlist groupname
+ grouplens-bbb-token))
+ (if (bbb-read-response bbb-process)
+ (bbb-get-prediction-response bbb-process)
+ (gnus-message 1 "Invalid Token, login and try again")
+ (ding)))))
+ (gnus-message 3 "Error: You are not logged in to a BBB")
+ (ding)))
(defun bbb-get-all-mids ()
(mapcar (function (lambda (x) (mail-header-id x))) gnus-newsgroup-headers))
;; leave the gnus-score-find-score-files variable alone
((eq gnus-grouplens-override-scoring 'separate)
(add-hook 'gnus-select-group-hook
- '(lambda ()
- (bbb-get-predictions (bbb-get-all-mids)
- gnus-newsgroup-name))))
+ (lambda ()
+ (bbb-get-predictions (bbb-get-all-mids)
+ gnus-newsgroup-name))))
;; default is to override
(t
(setq gnus-score-find-score-files-function
"Change the timestamp of the current group to the current time.
This function can be used in hooks like `gnus-select-group-hook'
or `gnus-group-catchup-group-hook'."
- (let ((time (current-time)))
- (setcdr (cdr time) nil)
- (gnus-group-set-parameter gnus-newsgroup-name 'timestamp time)))
+ (when gnus-newsgroup-name
+ (let ((time (current-time)))
+ (setcdr (cdr time) nil)
+ (gnus-group-set-parameter gnus-newsgroup-name 'timestamp time))))
(defsubst gnus-group-timestamp (group)
"Return the timestamp for GROUP."
(setq funcs (list funcs)))
;; Get the initial score files for this group.
(when funcs
- (setq score-files (gnus-score-find-alist group)))
+ (setq score-files (nreverse (gnus-score-find-alist group))))
;; Add any home adapt files.
(let ((home (gnus-home-score-file group t)))
(when home
(when (stringp (car files))
(setcar files (expand-file-name (car files))))
(pop files)))
+ (setq score-files (nreverse score-files))
;; Remove any duplicate score files.
(while (and score-files
(member (car score-files) (cdr score-files)))
(require 'gnus-int)
(require 'gnus-spec)
(require 'gnus-range)
+(require 'gnus-util)
(require 'message)
(defcustom gnus-startup-file "~/.newsrc"
:group 'gnus-start
:type 'hook)
-(defcustom gnus-get-new-news-hook
- (when (gnus-boundp 'display-time-timer)
- '(display-time-event-handler))
+(defcustom gnus-get-new-news-hook nil
"A hook run just before Gnus checks for new news."
:group 'gnus-start
:type 'hook)
-(defcustom gnus-after-getting-new-news-hook nil
+(defcustom gnus-after-getting-new-news-hook
+ (when (gnus-boundp 'display-time-timer)
+ '(display-time-event-handler))
"A hook run after Gnus checks for new news."
:group 'gnus-start
:type 'hook)
(gnus-tmp-from (mail-header-from gnus-tmp-header))
(gnus-tmp-name
(cond
- ((string-match "(.+)" gnus-tmp-from)
- (substring gnus-tmp-from
- (1+ (match-beginning 0)) (1- (match-end 0))))
((string-match "<[^>]+> *$" gnus-tmp-from)
(let ((beg (match-beginning 0)))
(or (and (string-match "^\"[^\"]*\"" gnus-tmp-from)
(substring gnus-tmp-from (1+ (match-beginning 0))
(1- (match-end 0))))
(substring gnus-tmp-from 0 beg))))
+ ((string-match "(.+)" gnus-tmp-from)
+ (substring gnus-tmp-from
+ (1+ (match-beginning 0)) (1- (match-end 0))))
(t gnus-tmp-from)))
(gnus-tmp-subject (mail-header-subject gnus-tmp-header))
(gnus-tmp-number (mail-header-number gnus-tmp-header))
gnus-tmp-from (mail-header-from gnus-tmp-header)
gnus-tmp-name
(cond
- ((string-match "(.+)" gnus-tmp-from)
- (substring gnus-tmp-from
- (1+ (match-beginning 0)) (1- (match-end 0))))
((string-match "<[^>]+> *$" gnus-tmp-from)
(setq beg-match (match-beginning 0))
(or (and (string-match "^\"[^\"]*\"" gnus-tmp-from)
(substring gnus-tmp-from (1+ (match-beginning 0))
(1- (match-end 0))))
(substring gnus-tmp-from 0 beg-match)))
+ ((string-match "(.+)" gnus-tmp-from)
+ (substring gnus-tmp-from
+ (1+ (match-beginning 0)) (1- (match-end 0))))
(t gnus-tmp-from)))
(when (string= gnus-tmp-name "")
(setq gnus-tmp-name gnus-tmp-from))
(setq articles (delq id articles))))))
(gnus-undo-register
`(progn
- (gnus-info-set-marks ,info ,(gnus-info-marks info))
- (gnus-info-set-read ,info ,(gnus-info-read info))
+ (gnus-info-set-marks ,info ',(gnus-info-marks info))
+ (gnus-info-set-read ,info ',(gnus-info-read info))
(gnus-group-update-group group t)))
;; If the read list is nil, we init it.
(and active
"exiting"))
(gnus-summary-next-group nil group backward)))
(t
- (when (numberp last-input-event)
+ (when (gnus-key-press-event-p last-input-event)
(gnus-summary-walk-group-buffer
gnus-newsgroup-name cmd unread backward))))))))
(let ((ref (mail-header-references (gnus-summary-article-header)))
(current (gnus-summary-article-number))
(n 0))
- ;; For each Message-ID in the References header...
- (while (string-match "<[^>]*>" ref)
- (incf n)
- ;; ... fetch that article.
- (gnus-summary-refer-article
- (prog1 (match-string 0 ref)
- (setq ref (substring ref (match-end 0))))))
- (gnus-summary-goto-subject current)
- (gnus-summary-position-point)
- n))
+ (if (or (not ref)
+ (equal ref ""))
+ (error "No References in the current article")
+ ;; For each Message-ID in the References header...
+ (while (string-match "<[^>]*>" ref)
+ (incf n)
+ ;; ... fetch that article.
+ (gnus-summary-refer-article
+ (prog1 (match-string 0 ref)
+ (setq ref (substring ref (match-end 0))))))
+ (gnus-summary-goto-subject current)
+ (gnus-summary-position-point)
+ n)))
(defun gnus-summary-refer-article (message-id)
"Fetch an article specified by MESSAGE-ID."
(push (cons prev (cdr active)) read))
(gnus-undo-register
`(progn
- (gnus-info-set-marks ,info ,(gnus-info-marks info))
- (gnus-info-set-read ,info ,(gnus-info-read info))
+ (gnus-info-set-marks ,info ',(gnus-info-marks info))
+ (gnus-info-set-read ,info ',(gnus-info-read info))
(gnus-get-unread-articles-in-group ,info (gnus-active ,group))))
;; Enter this list into the group info.
(gnus-info-set-read
(defun gnus-make-directory (directory)
"Make DIRECTORY (and all its parents) if it doesn't exist."
- (when (not (file-exists-p directory))
+ (when (and directory
+ (not (file-exists-p directory)))
(make-directory directory t))
t)
(fset 'gnus-article-show-hidden-text 'gnus-xmas-article-show-hidden-text)
(fset 'gnus-mode-line-buffer-identification
'gnus-xmas-mode-line-buffer-identification)
+ (fset 'gnus-key-press-event-p 'key-press-event-p)
(add-hook 'gnus-group-mode-hook 'gnus-xmas-group-menu-add)
(add-hook 'gnus-summary-mode-hook 'gnus-xmas-summary-menu-add)
"Score and kill file handling."
:group 'gnus )
-(defconst gnus-version-number "0.63"
+(defconst gnus-version-number "0.64"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
(defalias 'gnus-character-to-event 'identity)
(defalias 'gnus-add-text-properties 'add-text-properties)
(defalias 'gnus-put-text-property 'put-text-property)
- (defalias 'gnus-mode-line-buffer-identification 'identity))
+ (defalias 'gnus-mode-line-buffer-identification 'identity)
+ (defalias 'gnus-key-press-event-p 'numberp))
;; The XEmacs people think this is evil, so it must go.
(defun custom-face-lookup (&optional fg bg stipple bold italic underline)
gnus-article-hide-boring-headers
gnus-article-treat-overstrike
gnus-article-maybe-highlight
- gnus-article-de-quoted-unreadable
gnus-article-display-x-face)
'(gnus-article-hide-headers-if-wanted
gnus-article-hide-boring-headers
gnus-article-treat-overstrike
- gnus-article-de-quoted-unreadable
gnus-article-maybe-highlight))
"Controls how the article buffer will look.
%t Number of articles under the current thread (number).
%e Whether the thread is empty or not (character).
%l GroupLens score (string).
+%V Total thread score (number).
%P The line number (number).
%u User defined specifier. The next character in the format string should
be a letter. Gnus will call the function gnus-user-format-function-X,
group)
(while (not group)
(when (string-match
- "[ `'\"/]\\|^$"
+ "[: `'\"/]\\|^$"
(setq group (read-string (concat prefix prompt)
"" 'gnus-group-history)))
(setq prefix (format "Illegal group name: \"%s\". " group)
(require 'nnheader)
(require 'timezone)
(require 'easymenu)
+(require 'custom)
(if (string-match "XEmacs\\|Lucid" emacs-version)
(require 'mail-abbrevs)
(require 'mailabbrev))
-(defvar message-directory "~/Mail/"
- "*Directory from which all other mail file variables are derived.")
+(defgroup message nil
+ "Mail and news message composing."
+ :group 'emacs)
-(defvar message-max-buffers 10
- "*How many buffers to keep before starting to kill them off.")
+(defcustom message-directory "~/Mail/"
+ "*Directory from which all other mail file variables are derived."
+ :group 'message
+ :type 'directory)
-(defvar message-send-rename-function nil
- "Function called to rename the buffer after sending it.")
+(defcustom message-max-buffers 10
+ "*How many buffers to keep before starting to kill them off."
+ :group 'message
+ :type 'integer)
+
+(defcustom message-send-rename-function nil
+ "Function called to rename the buffer after sending it."
+ :group 'message
+ :type 'function)
;;;###autoload
(defvar message-fcc-handler-function 'rmail-output
This function will be called with the name of the file to store the
article in. The default function is `rmail-output' which saves in Unix
mailbox format.")
-
-(defvar message-courtesy-message
+(put 'message-fcc-handler-function
+ 'custom-type '(radio (function-item rmail-output)
+ (function :tag "Other")))
+(put 'message-fcc-handler-function
+ 'factory-value '('rmail-output))
+(custom-add-to-group 'message 'message-fcc-handler-function 'custom-variable)
+
+(defcustom message-courtesy-message
"The following message is a courtesy copy of an article\nthat has been posted to %s as well.\n\n"
"*This is inserted at the start of a mailed copy of a posted message.
If the string contains the format spec \"%s\", the Newsgroups
the article has been posted to will be inserted there.
-If this variable is nil, no such courtesy message will be added.")
+If this variable is nil, no such courtesy message will be added."
+ :group 'message
+ :type 'string)
-(defvar message-ignored-bounced-headers "^\\(Received\\|Return-Path\\):"
- "*Regexp that matches headers to be removed in resent bounced mail.")
+(defcustom message-ignored-bounced-headers "^\\(Received\\|Return-Path\\):"
+ "*Regexp that matches headers to be removed in resent bounced mail."
+ :group 'message
+ :type 'regexp)
;;;###autoload
(defvar message-from-style 'default
Otherwise, most addresses look like `angles', but they look like
`parens' if `angles' would need quoting and `parens' would not.")
+(put 'message-from-style
+ 'custom-type '(choice (const :tag "simple" nil)
+ (const parens)
+ (const angles)
+ (const default)))
+(put 'message-from-style
+ 'factory-value '('default))
+(custom-add-to-group 'message 'message-from-style 'custom-variable)
(defvar message-syntax-checks nil
+ ;; Guess this one shouldn't be easy to customize...
"Controls what syntax checks should not be performed on outgoing posts.
To disable checking of long signatures, for instance, add
`(signature . disabled)' to this list.
approved sender empty empty-headers message-id from subject
shorten-followup-to existing-newsgroups.")
-(defvar message-required-news-headers
+(defcustom message-required-news-headers
'(From Newsgroups Subject Date Message-ID
(optional . Organization) Lines
(optional . X-Newsreader))
- "*Headers to be generated or prompted for when posting an article.
+ "Headers to be generated or prompted for when posting an article.
RFC977 and RFC1036 require From, Date, Newsgroups, Subject,
Message-ID. Organization, Lines, In-Reply-To, Expires, and
X-Newsreader are optional. If don't you want message to insert some
-header, remove it from this list.")
+header, remove it from this list."
+ :group 'message
+ :type 'sexp)
-(defvar message-required-mail-headers
+(defcustom message-required-mail-headers
'(From Subject Date (optional . In-Reply-To) Message-ID Lines
(optional . X-Mailer))
- "*Headers to be generated or prompted for when mailing a message.
+ "Headers to be generated or prompted for when mailing a message.
RFC822 required that From, Date, To, Subject and Message-ID be
-included. Organization, Lines and X-Mailer are optional.")
+included. Organization, Lines and X-Mailer are optional."
+ :group 'message
+ :type 'sexp)
-(defvar message-deletable-headers '(Message-ID Date Lines)
- "*Headers to be deleted if they already exist and were generated by message previously.")
+(defcustom message-deletable-headers '(Message-ID Date Lines)
+ "Headers to be deleted if they already exist and were generated by message previously."
+ :group 'message
+ :type 'sexp)
-(defvar message-ignored-news-headers
+(defcustom message-ignored-news-headers
"^NNTP-Posting-Host:\\|^Xref:\\|^Bcc:\\|^Gcc:\\|^Fcc:\\|^Resent-Fcc:"
- "*Regexp of headers to be removed unconditionally before posting.")
+ "*Regexp of headers to be removed unconditionally before posting."
+ :group 'message
+ :type 'regexp)
-(defvar message-ignored-mail-headers "^Gcc:\\|^Fcc:\\|^Resent-Fcc:"
- "*Regexp of headers to be removed unconditionally before mailing.")
+(defcustom message-ignored-mail-headers "^Gcc:\\|^Fcc:\\|^Resent-Fcc:"
+ "*Regexp of headers to be removed unconditionally before mailing."
+ :group 'message
+ :type 'regexp)
-(defvar message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:"
+(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:"
"*Header lines matching this regexp will be deleted before posting.
It's best to delete old Path and Date headers before posting to avoid
-any confusion.")
+any confusion."
+ :group 'message
+ :type 'regexp)
;;;###autoload
(defvar message-signature-separator "^-- *$"
"Regexp matching the signature separator.")
+(put 'message-signature-separator
+ 'custom-type 'regexp)
+(put 'message-signature-separator
+ 'factory-value '("^-- *$"))
+(custom-add-to-group 'message 'message-signature-separator 'custom-variable)
-(defvar message-interactive nil
+(defcustom message-interactive nil
"Non-nil means when sending a message wait for and display errors.
-nil means let mailer mail back a message to report errors.")
+nil means let mailer mail back a message to report errors."
+ :group 'message
+ :type 'boolean)
-(defvar message-generate-new-buffers t
+(defcustom message-generate-new-buffers t
"*Non-nil means that a new message buffer will be created whenever `mail-setup' is called.
If this is a function, call that function with three parameters: The type,
the to address and the group name. (Any of these may be nil.) The function
-should return the new buffer name.")
+should return the new buffer name."
+ :group 'message
+ :type '(choice (const :tag "off" nil)
+ (const :tag "on" t)
+ (function fun)))
-(defvar message-kill-buffer-on-exit nil
- "*Non-nil means that the message buffer will be killed after sending a message.")
+(defcustom message-kill-buffer-on-exit nil
+ "*Non-nil means that the message buffer will be killed after sending a message."
+ :group 'message
+ :type 'boolean)
(defvar gnus-local-organization)
-(defvar message-user-organization
+(defcustom message-user-organization
(or (and (boundp 'gnus-local-organization)
gnus-local-organization)
(getenv "ORGANIZATION")
t)
"*String to be used as an Organization header.
-If t, use `message-user-organization-file'.")
+If t, use `message-user-organization-file'."
+ :group 'message
+ :type '(choice string
+ (const :tag "consult file" t)))
;;;###autoload
(defvar message-user-organization-file "/usr/lib/news/organization"
"*Local news organization file.")
+(put 'message-user-organization-file
+ 'custom-type 'file)
+(put 'message-user-organization-file
+ 'factory-value '("/usr/lib/news/organization"))
+(custom-add-to-group 'message 'message-user-organization-file 'custom-variable)
-(defvar message-autosave-directory "~/"
+(defcustom message-autosave-directory "~/"
; (concat (file-name-as-directory message-directory) "drafts/")
"*Directory where message autosaves buffers.
-If nil, message won't autosave.")
+If nil, message won't autosave."
+ :group 'message
+ :type 'directory)
-(defvar message-forward-start-separator
+(defcustom message-forward-start-separator
"------- Start of forwarded message -------\n"
- "*Delimiter inserted before forwarded messages.")
+ "*Delimiter inserted before forwarded messages."
+ :group 'message
+ :type 'string)
-(defvar message-forward-end-separator
+(defcustom message-forward-end-separator
"------- End of forwarded message -------\n"
- "*Delimiter inserted after forwarded messages.")
+ "*Delimiter inserted after forwarded messages."
+ :group 'message
+ :type 'string)
-(defvar message-signature-before-forwarded-message t
- "*If non-nil, put the signature before any included forwarded message.")
+(defcustom message-signature-before-forwarded-message t
+ "*If non-nil, put the signature before any included forwarded message."
+ :group 'message
+ :type 'boolean)
-(defvar message-included-forward-headers
+(defcustom message-included-forward-headers
"^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Gnus-Warning:\\|^Resent-\\|^Message-ID:\\|^References:"
- "*Regexp matching headers to be included in forwarded messages.")
+ "*Regexp matching headers to be included in forwarded messages."
+ :group 'message
+ :type 'regexp)
-(defvar message-ignored-resent-headers "^Return-receipt"
- "*All headers that match this regexp will be deleted when resending a message.")
+(defcustom message-ignored-resent-headers "^Return-receipt"
+ "*All headers that match this regexp will be deleted when resending a message."
+ :group 'message
+ :type 'regexp)
-(defvar message-ignored-cited-headers "."
- "*Delete these headers from the messages you yank.")
+(defcustom message-ignored-cited-headers "."
+ "*Delete these headers from the messages you yank."
+ :group 'message
+ :type 'regexp)
-(defvar message-cancel-message "I am canceling my own article."
- "Message to be inserted in the cancel message.")
+(defcustom message-cancel-message "I am canceling my own article."
+ "Message to be inserted in the cancel message."
+ :group 'message
+ :type 'string)
;; Useful to set in site-init.el
;;;###autoload
Legal values include `message-send-mail-with-sendmail' (the default),
`message-send-mail-with-mh' and `message-send-mail-with-qmail'.")
+(put 'message-send-mail-function
+ 'custom-type '(radio (function-item message-send-mail-with-sendmail)
+ (function-item message-send-mail-with-mh)
+ (function-item message-send-mail-with-qmail)
+ (function :tag "Other")))
+(put 'message-send-mail-function
+ 'factory-value '('rmail-output))
+(custom-add-to-group 'message 'message-send-mail-function 'custom-variable)
-(defvar message-send-news-function 'message-send-news
+
+(defcustom message-send-news-function 'message-send-news
"Function to call to send the current buffer as news.
The headers should be delimited by a line whose contents match the
-variable `mail-header-separator'.")
+variable `mail-header-separator'."
+ :group 'message
+ :type 'function)
-(defvar message-reply-to-function nil
+(defcustom message-reply-to-function nil
"Function that should return a list of headers.
This function should pick out addresses from the To, Cc, and From headers
-and respond with new To and Cc headers.")
+and respond with new To and Cc headers."
+ :group 'message
+ :type 'function)
-(defvar message-wide-reply-to-function nil
+(defcustom message-wide-reply-to-function nil
"Function that should return a list of headers.
This function should pick out addresses from the To, Cc, and From headers
-and respond with new To and Cc headers.")
+and respond with new To and Cc headers."
+ :group 'message
+ :type 'function)
-(defvar message-followup-to-function nil
+(defcustom message-followup-to-function nil
"Function that should return a list of headers.
This function should pick out addresses from the To, Cc, and From headers
-and respond with new To and Cc headers.")
+and respond with new To and Cc headers."
+ :group 'message
+ :type 'function)
-(defvar message-use-followup-to 'ask
+(defcustom message-use-followup-to 'ask
"*Specifies what to do with Followup-To header.
If nil, ignore the header. If it is t, use its value, but query before
using the \"poster\" value. If it is the symbol `ask', query the user
whether to ignore the \"poster\" value. If it is the symbol `use',
-always use the value.")
+always use the value."
+ :group 'message
+ :type '(choice (const :tag "ignore" nil)
+ (const use)
+ (const ask)))
;; qmail-related stuff
-(defvar message-qmail-inject-program "/var/qmail/bin/qmail-inject"
- "Location of the qmail-inject program.")
+(defcustom message-qmail-inject-program "/var/qmail/bin/qmail-inject"
+ "Location of the qmail-inject program."
+ :group 'message
+ :type 'file)
-(defvar message-qmail-inject-args nil
+(defcustom message-qmail-inject-args nil
"Arguments passed to qmail-inject programs.
This should be a list of strings, one string for each argument.
For e.g., if you wish to set the envelope sender address so that bounces
go to the right place or to deal with listserv's usage of that address, you
-might set this variable to '(\"-f\" \"you@some.where\").")
+might set this variable to '(\"-f\" \"you@some.where\")."
+ :group 'message
+ :type '(repeat string))
(defvar gnus-post-method)
(defvar gnus-select-method)
-(defvar message-post-method
+(defcustom message-post-method
(cond ((and (boundp 'gnus-post-method)
gnus-post-method)
gnus-post-method)
((boundp 'gnus-select-method)
gnus-select-method)
(t '(nnspool "")))
- "Method used to post news.")
-
-(defvar message-generate-headers-first nil
- "*If non-nil, generate all possible headers before composing.")
-
-(defvar message-setup-hook nil
+ "Method used to post news."
+ :group 'message
+ ;; This should be the `gnus-select-method' widget, but that might
+ ;; create a dependence to `gnus.el'.
+ :type 'sexp)
+
+(defcustom message-generate-headers-first nil
+ "*If non-nil, generate all possible headers before composing."
+ :group 'message
+ :type 'boolean)
+
+(defcustom message-setup-hook nil
"Normal hook, run each time a new outgoing message is initialized.
-The function `message-setup' runs this hook.")
+The function `message-setup' runs this hook."
+ :group 'message
+ :type 'hook)
-(defvar message-signature-setup-hook nil
+(defcustom message-signature-setup-hook nil
"Normal hook, run each time a new outgoing message is initialized.
It is run after the headers have been inserted and before
-the signature is inserted.")
-
-(defvar message-mode-hook nil
- "Hook run in message mode buffers.")
-
-(defvar message-header-hook nil
- "Hook run in a message mode buffer narrowed to the headers.")
-
-(defvar message-header-setup-hook nil
- "Hook called narrowed to the headers when setting up a message buffer.")
+the signature is inserted."
+ :group 'message
+ :type 'hook)
+
+(defcustom message-mode-hook nil
+ "Hook run in message mode buffers."
+ :group 'message
+ :type 'hook)
+
+(defcustom message-header-hook nil
+ "Hook run in a message mode buffer narrowed to the headers."
+ :group 'message
+ :type 'hook)
+
+(defcustom message-header-setup-hook nil
+ "Hook called narrowed to the headers when setting up a message
+buffer."
+ :group 'message
+ :type 'hook)
;;;###autoload
(defvar message-citation-line-function 'message-insert-citation-line
"*Function called to insert the \"Whomever writes:\" line.")
+(put 'message-citation-line-function
+ 'custom-type 'function)
+(put 'message-citation-line-function
+ 'factory-value '('message-insert-citation-line))
+(custom-add-to-group 'message 'message-citation-line-function 'custom-variable)
+
;;;###autoload
(defvar message-yank-prefix "> "
"*Prefix inserted on the lines of yanked messages.
nil means use indentation.")
+(put 'message-yank-prefix
+ 'custom-type 'string)
+(put 'message-yank-prefix
+ 'factory-value '("> "))
+(custom-add-to-group 'message 'message-yank-prefix 'custom-variable)
-(defvar message-indentation-spaces 3
+(defcustom message-indentation-spaces 3
"*Number of spaces to insert at the beginning of each cited line.
-Used by `message-yank-original' via `message-yank-cite'.")
+Used by `message-yank-original' via `message-yank-cite'."
+ :group 'message
+ :type 'integer)
;;;###autoload
(defvar message-cite-function
mail-citation-hook
'message-cite-original)
"*Function for citing an original message.")
+(put 'message-cite-function
+ 'custom-type '(radio (function-item message-cite-original)
+ (function-item sc-cite-original)
+ (function :tag "Other")))
+(put 'message-cite-function
+ 'factory-value '('message-cite-original))
+(custom-add-to-group 'message 'message-cite-function 'custom-variable)
;;;###autoload
(defvar message-indent-citation-function 'message-indent-citation
This can also be a list of functions. Each function can find the
citation between (point) and (mark t). And each function should leave
point and mark around the citation text as modified.")
+(put 'message-indent-citation-function
+ 'custom-type 'function)
+(put 'message-indent-citation-function
+ 'factory-value '('message-indent-citation))
+(custom-add-to-group 'message 'message-indent-citation-function 'custom-variable)
(defvar message-abbrevs-loaded nil)
If t, the `message-signature-file' file will be inserted instead.
If a function, the result from the function will be used instead.
If a form, the result from the form will be used instead.")
+(put 'message-signature
+ 'custom-type 'sexp)
+(put 'message-signature
+ 'factory-value '(t))
+(custom-add-to-group 'message 'message-signature 'custom-variable)
;;;###autoload
(defvar message-signature-file "~/.signature"
"*File containing the text inserted at end of message buffer.")
-
-(defvar message-distribution-function nil
- "*Function called to return a Distribution header.")
-
-(defvar message-expires 14
- "*Number of days before your article expires.")
-
-(defvar message-user-path nil
+(put 'message-signature-file
+ 'custom-type 'file)
+(put 'message-signature-file
+ 'factory-value '("~/.signature"))
+(custom-add-to-group 'message 'message-signature-file 'custom-variable)
+
+(defcustom message-distribution-function nil
+ "*Function called to return a Distribution header."
+ :group 'message
+ :type 'function)
+
+(defcustom message-expires 14
+ "*Number of days before your article expires."
+ :group 'message
+ :type 'integer)
+
+(defcustom message-user-path nil
"If nil, use the NNTP server name in the Path header.
-If stringp, use this; if non-nil, use no host name (user name only).")
+If stringp, use this; if non-nil, use no host name (user name only)."
+ :group 'message
+ :type '(choice (const :tag "nntp" nil)
+ (string :tag "name")
+ (sexp :tag "none" :format "%t" t)))
(defvar message-reply-buffer nil)
(defvar message-reply-headers nil)
(defvar message-postpone-actions nil
"A list of actions to be performed after postponing a message.")
-(defvar message-default-headers nil
+(defcustom message-default-headers ""
"*A string containing header lines to be inserted in outgoing messages.
It is inserted before you edit the message, so you can edit or delete
-these lines.")
+these lines."
+ :group 'message
+ :type 'string)
-(defvar message-default-mail-headers nil
- "*A string of header lines to be inserted in outgoing mails.")
+(defcustom message-default-mail-headers ""
+ "*A string of header lines to be inserted in outgoing mails."
+ :group 'message
+ :type 'string)
-(defvar message-default-news-headers nil
- "*A string of header lines to be inserted in outgoing news articles.")
+(defcustom message-default-news-headers ""
+ "*A string of header lines to be inserted in outgoing news
+articles."
+ :group 'message
+ :type 'string)
;; Note: could use /usr/ucb/mail instead of sendmail;
;; options -t, and -v if not interactive.
-(defvar message-mailer-swallows-blank-line
+(defcustom message-mailer-swallows-blank-line
(if (and (string-match "sparc-sun-sunos\\(\\'\\|[^5]\\)"
system-configuration)
(file-readable-p "/etc/sendmail.cf")
"Set this non-nil if the system's mailer runs the header and body together.
\(This problem exists on Sunos 4 when sendmail is run in remote mode.)
The value should be an expression to test whether the problem will
-actually occur.")
+actually occur."
+ :group 'message
+ :type 'sexp)
;;; Internal variables.
;;; Well, not really internal.
"Alist of mail and news faces for facemenu.
The cdr of ech entry is a function for applying the face to a region.")
-(defvar message-send-hook nil
- "Hook run before sending messages.")
-
-(defvar message-send-mail-hook nil
- "Hook run before sending mail messages.")
-
-(defvar message-send-news-hook nil
- "Hook run before sending news messages.")
-
-(defvar message-sent-hook nil
- "Hook run after sending messages.")
+(defcustom message-send-hook nil
+ "Hook run before sending messages."
+ :group 'message
+ :options '(ispell-message)
+ :type 'hook)
+
+(defcustom message-send-mail-hook nil
+ "Hook run before sending mail messages."
+ :group 'message
+ :type 'hook)
+
+(defcustom message-send-news-hook nil
+ "Hook run before sending news messages."
+ :group 'message
+ :type 'hook)
+
+(defcustom message-sent-hook nil
+ "Hook run after sending messages."
+ :group 'message
+ :type 'hook)
;;; Internal variables.
(require 'nnheader)
-(defvar message-xmas-dont-activate-region nil
+(defvar message-xmas-dont-activate-region t
"If t, don't activate region after yanking.")
(defvar message-xmas-glyph-directory nil
(deffoo nnfolder-open-server (server &optional defs)
(nnoo-change-server 'nnfolder server defs)
(when (not (file-exists-p nnfolder-directory))
- (ignore-errors
- (gnus-make-directory nnfolder-directory)))
+ (gnus-make-directory nnfolder-directory))
(cond
((not (file-exists-p nnfolder-directory))
(nnfolder-close-server)
(goto-char (point-max))
(unless (eolp)
(insert "\n"))
- (insert "\n")
+ (unless (bobp)
+ (insert "\n"))
(insert-buffer-substring obuf beg end)
(set-buffer obuf)))
(require 'timezone)
(require 'message)
(eval-when-compile (require 'cl))
+(require 'custom)
-(defvar nnmail-split-methods
+(defgroup gnus-mail nil
+ "Mailreading.."
+ :group 'gnus)
+
+(defcustom nnmail-split-methods
'(("mail.misc" ""))
- "*Incoming mail will be split according to this variable.
+ "Incoming mail will be split according to this variable.
If you'd like, for instance, one mail group for mail from the
\"4ad-l\" mailing list, one group for junk mail and one for everything
The last element should always have \"\" as the regexp.
-This variable can also have a function as its value.")
+This variable can also have a function as its value."
+ :group 'gnus-mail
+ :type '(choice (repeat :tag "Alist" (group (string :tag "Name") regexp))
+ (function-item nnmail-split-fancy)
+ (function :tag "Other")))
;; Suggested by Erik Selberg <speed@cs.washington.edu>.
-(defvar nnmail-crosspost t
- "*If non-nil, do crossposting if several split methods match the mail.
-If nil, the first match found will be used.")
+(defcustom nnmail-crosspost t
+ "If non-nil, do crossposting if several split methods match the mail.
+If nil, the first match found will be used."
+ :group 'gnus-mail
+ :type 'boolean)
;; Added by gord@enci.ucalgary.ca (Gordon Matzigkeit).
-(defvar nnmail-keep-last-article nil
- "*If non-nil, nnmail will never delete the last expired article in a directory.
+(defcustom nnmail-keep-last-article nil
+ "If non-nil, nnmail will never delete the last expired article in a directory.
You may need to set this variable if other programs are putting
-new mail into folder numbers that Gnus has marked as expired.")
+new mail into folder numbers that Gnus has marked as expired."
+ :group 'gnus-mail
+ :type 'boolean)
-(defvar nnmail-use-long-file-names nil
- "*If non-nil the mail backends will use long file and directory names.
+(defcustom nnmail-use-long-file-names nil
+ "If non-nil the mail backends will use long file and directory names.
If nil, groups like \"mail.misc\" will end up in directories like
-\"mail/misc/\".")
+\"mail/misc/\"."
+ :group 'gnus-mail
+ :type 'boolean)
-(defvar nnmail-default-file-modes 384
- "Set the mode bits of all new mail files to this integer.")
+(defcustom nnmail-default-file-modes 384
+ "Set the mode bits of all new mail files to this integer."
+ :group 'gnus-mail
+ :type 'integer)
-(defvar nnmail-expiry-wait 7
+(defcustom nnmail-expiry-wait 7
"*Expirable articles that are older than this will be expired.
This variable can either be a number (which will be interpreted as a
number of days) -- this doesn't have to be an integer. This variable
-can also be `immediate' and `never'.")
-
-(defvar nnmail-expiry-wait-function nil
- "*Variable that holds function to specify how old articles should be before they are expired.
+can also be `immediate' and `never'."
+ :group 'gnus-mail
+ :type '(choice (const immediate)
+ (integer :tag "days")
+ (const never)))
+
+(defcustom nnmail-expiry-wait-function nil
+ "Variable that holds function to specify how old articles should be before they are expired.
The function will be called with the name of the group that the
expiry is to be performed in, and it should return an integer that
says how many days an article can be stored before it is considered
Eg.:
-(setq nnmail-expiry-wait-function
+\(setq nnmail-expiry-wait-function
(lambda (newsgroup)
(cond ((string-match \"private\" newsgroup) 31)
((string-match \"junk\" newsgroup) 1)
((string-match \"important\" newsgroup) 'never)
- (t 7))))")
+ (t 7))))"
+ :group 'gnus-mail
+ :type '(choice (const :tag "nnmail-expiry-wait" nil)
+ (function :format "%v" nnmail-)))
-(defvar nnmail-spool-file
+(defcustom nnmail-spool-file
(or (getenv "MAIL")
(concat "/usr/spool/mail/" (user-login-name)))
"Where the mail backends will look for incoming mail.
If this variable is a list, all files mentioned in this list will be
used as incoming mailboxes.
If this variable is a directory (i. e., it's name ends with a \"/\"),
-treat all files in that directory as incoming spool files.")
+treat all files in that directory as incoming spool files."
+ :group 'gnus-mail
+ :type 'file)
-(defvar nnmail-crash-box "~/.gnus-crash-box"
- "*File where Gnus will store mail while processing it.")
+(defcustom nnmail-crash-box "~/.gnus-crash-box"
+ "File where Gnus will store mail while processing it."
+ :group 'gnus-mail
+ :type 'file)
-(defvar nnmail-use-procmail nil
+(defcustom nnmail-use-procmail nil
"*If non-nil, the mail backends will look in `nnmail-procmail-directory' for spool files.
-The file(s) in `nnmail-spool-file' will also be read.")
+The file(s) in `nnmail-spool-file' will also be read."
+ :group 'gnus-mail
+ :type 'boolean)
-(defvar nnmail-procmail-directory "~/incoming/"
+(defcustom nnmail-procmail-directory "~/incoming/"
"*When using procmail (and the like), incoming mail is put in this directory.
-The Gnus mail backends will read the mail from this directory.")
+The Gnus mail backends will read the mail from this directory."
+ :group 'gnus-mail
+ :type 'directory)
-(defvar nnmail-procmail-suffix "\\.spool"
+(defcustom nnmail-procmail-suffix "\\.spool"
"*Suffix of files created by procmail (and the like).
This variable might be a suffix-regexp to match the suffixes of
-several files - eg. \".spool[0-9]*\".")
+several files - eg. \".spool[0-9]*\"."
+ :group 'gnus-mail
+ :type 'regexp)
-(defvar nnmail-resplit-incoming nil
- "*If non-nil, re-split incoming procmail sorted mail.")
+(defcustom nnmail-resplit-incoming nil
+ "*If non-nil, re-split incoming procmail sorted mail."
+ :group 'gnus-mail
+ :type 'boolean)
-(defvar nnmail-delete-file-function 'delete-file
- "Function called to delete files in some mail backends.")
+(defcustom nnmail-delete-file-function 'delete-file
+ "Function called to delete files in some mail backends."
+ :group 'gnus-mail
+ :type 'function)
-(defvar nnmail-crosspost-link-function 'add-name-to-file
+(defcustom nnmail-crosspost-link-function 'add-name-to-file
"Function called to create a copy of a file.
This is `add-name-to-file' by default, which means that crossposts
will use hard links. If your file system doesn't allow hard
-links, you could set this variable to `copy-file' instead.")
+links, you could set this variable to `copy-file' instead."
+ :group 'gnus-mail
+ :type '(radio (function-item add-name-to-file)
+ (function-item copy-file)
+ (function :tag "Other")))
-(defvar nnmail-movemail-program "movemail"
+(defcustom nnmail-movemail-program "movemail"
"*A command to be executed to move mail from the inbox.
The default is \"movemail\".
This can also be a function. In that case, the function will be
called with two parameters -- the name of the INBOX file, and the file
-to be moved to.")
-
-(defvar nnmail-pop-password-required nil
- "*Non-nil if a password is required when reading mail using POP.")
-
-(defvar nnmail-read-incoming-hook nil
- "*Hook that will be run after the incoming mail has been transferred.
+to be moved to."
+ :group 'gnus-mail
+ :type 'string)
+
+(defcustom nnmail-pop-password-required nil
+ "*Non-nil if a password is required when reading mail using POP."
+ :group 'gnus-mail
+ :type 'boolean)
+
+(defcustom nnmail-read-incoming-hook
+ (if (eq system-type 'windows-nt)
+ '(nnheader-ms-strip-cr)
+ nil)
+ "Hook that will be run after the incoming mail has been transferred.
The incoming mail is moved from `nnmail-spool-file' (which normally is
something like \"/usr/spool/mail/$user\") to the user's home
directory. This hook is called after the incoming mail box has been
;; Update the displayed time, since that will clear out
;; the flag that says you have mail.
(when (eq (process-status \"display-time\") 'run)
- (display-time-filter display-time-process \"\"))))")
-
-(when (eq system-type 'windows-nt)
- (add-hook 'nnmail-prepare-incoming-hook 'nnheader-ms-strip-cr))
+ (display-time-filter display-time-process \"\"))))"
+ :group 'gnus-mail
+ :type 'hook)
;; Suggested by Erik Selberg <speed@cs.washington.edu>.
-(defvar nnmail-prepare-incoming-hook nil
- "*Hook called before treating incoming mail.
-The hook is run in a buffer with all the new, incoming mail.")
-
-(defvar nnmail-prepare-incoming-header-hook nil
- "*Hook called narrowed to the headers of each message.
+(defcustom nnmail-prepare-incoming-hook nil
+ "Hook called before treating incoming mail.
+The hook is run in a buffer with all the new, incoming mail."
+ :group 'gnus-mail
+ :type 'hook)
+
+(defcustom nnmail-prepare-incoming-header-hook nil
+ "Hook called narrowed to the headers of each message.
This can be used to remove excessive spaces (and stuff like
-that) from the headers before splitting and saving the messages.")
+that) from the headers before splitting and saving the messages."
+ :group 'gnus-mail
+ :type 'hook)
-(defvar nnmail-prepare-incoming-message-hook nil
- "*Hook called narrowed to each message.")
+(defcustom nnmail-prepare-incoming-message-hook nil
+ "Hook called narrowed to each message."
+ :group 'gnus-mail
+ :type 'hook)
-(defvar nnmail-list-identifiers nil
+(defcustom nnmail-list-identifiers nil
"Regexp that match list identifiers to be removed.
-This can also be a list of regexps.")
-
-(defvar nnmail-pre-get-new-mail-hook nil
- "Hook called just before starting to handle new incoming mail.")
-
-(defvar nnmail-post-get-new-mail-hook nil
- "Hook called just after finishing handling new incoming mail.")
-
-(defvar nnmail-split-hook nil
+This can also be a list of regexps."
+ :group 'gnus-mail
+ :type '(choice regexp
+ (repeat regexp)))
+
+(defcustom nnmail-pre-get-new-mail-hook nil
+ "Hook called just before starting to handle new incoming mail."
+ :group 'gnus-mail
+ :type 'hook)
+
+(defcustom nnmail-post-get-new-mail-hook nil
+ "Hook called just after finishing handling new incoming mail."
+ :group 'gnus-mail
+ :type 'hook)
+
+(defcustom nnmail-split-hook nil
"Hook called before deciding where to split an article.
The functions in this hook are free to modify the buffer
contents in any way they choose -- the buffer contents are
-discarded after running the split process.")
+discarded after running the split process."
+ :group 'gnus-mail
+ :type 'hook)
;; Suggested by Mejia Pablo J <pjm9806@usl.edu>.
-(defvar nnmail-tmp-directory nil
- "*If non-nil, use this directory for temporary storage when reading incoming mail.")
+(defcustom nnmail-tmp-directory nil
+ "*If non-nil, use this directory for temporary storage when reading incoming mail."
+ :group 'gnus-mail
+ :type '(choice (const :tag "default" nil)
+ (directory :format "%v")))
-(defvar nnmail-large-newsgroup 50
+(defcustom nnmail-large-newsgroup 50
"*The number of the articles which indicates a large newsgroup.
If the number of the articles is greater than the value, verbose
-messages will be shown to indicate the current status.")
+messages will be shown to indicate the current status."
+ :group 'gnus-mail
+ :type 'integer)
-(defvar nnmail-split-fancy "mail.misc"
- "*Incoming mail can be split according to this fancy variable.
+(defcustom nnmail-split-fancy "mail.misc"
+ "Incoming mail can be split according to this fancy variable.
To enable this, set `nnmail-split-methods' to `nnmail-split-fancy'.
The format is this variable is SPLIT, where SPLIT can be one of
;; People...
(any \"larsi@ifi\\\\.uio\\\\.no\" \"people.Lars Magne Ingebrigtsen\"))
;; Unmatched mail goes to the catch all group.
- \"misc.misc\"))")
+ \"misc.misc\"))"
+ :group 'gnus-mail
+ ;; Sigh!
+ :type 'sexp)
-(defvar nnmail-split-abbrev-alist
+(defcustom nnmail-split-abbrev-alist
'((any . "from\\|to\\|cc\\|sender\\|apparently-to\\|resent-from\\|resent-to\\|resent-cc")
(mail . "mailer-daemon\\|postmaster\\|uucp"))
- "*Alist of abbreviations allowed in `nnmail-split-fancy'.")
+ "Alist of abbreviations allowed in `nnmail-split-fancy'."
+ :group 'gnus-mail
+ :type '(repeat (cons :format "%v" symbol regexp)))
-(defvar nnmail-delete-incoming nil
- "*If non-nil, the mail backends will delete incoming files after splitting.")
+(defcustom nnmail-delete-incoming nil
+ "*If non-nil, the mail backends will delete incoming files after
+splitting."
+ :group 'gnus-mail
+ :type 'boolean)
-(defvar nnmail-message-id-cache-length 1000
+(defcustom nnmail-message-id-cache-length 1000
"*The approximate number of Message-IDs nnmail will keep in its cache.
If this variable is nil, no checking on duplicate messages will be
-performed.")
+performed."
+ :group 'gnus-mail
+ :type '(choice (const :tag "disable" nil)
+ (integer :format "%v")))
-(defvar nnmail-message-id-cache-file "~/.nnmail-cache"
- "*The file name of the nnmail Message-ID cache.")
+(defcustom nnmail-message-id-cache-file "~/.nnmail-cache"
+ "*The file name of the nnmail Message-ID cache."
+ :group 'gnus-mail
+ :type 'file)
-(defvar nnmail-treat-duplicates 'warn
+(defcustom nnmail-treat-duplicates 'warn
"*If non-nil, nnmail keep a cache of Message-IDs to discover mail duplicates.
Three values are legal: nil, which means that nnmail is not to keep a
Message-ID cache; `warn', which means that nnmail should insert extra
This variable can also be a function. It will be called from a buffer
narrowed to the article in question with the Message-ID as a
-parameter. It should return nil, `warn' or `delete'.")
+parameter. It should return nil, `warn' or `delete'."
+ :group 'gnus-mail
+ :type '(choice (const :tag "off" nil)
+ (const warn)
+ (const delete)))
;;; Internal variables.
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Red Gnus 0.63 Manual
+@settitle Red Gnus 0.64 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Red Gnus 0.63 Manual
+@title Red Gnus 0.64 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.63
+This manual corresponds to Red Gnus 0.64
@end ifinfo