+2003-04-13 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * lisp/gnus-vers.el: T-gnus 6.15.19 (quimby) revision 00.
+
+2003-04-13 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * lisp/gnus-vers.el: T-gnus 6.15.18 revision 00.
+
+ * lisp/message.el (message-forward-subject-name-subject): Rewrite.
+
+ * lisp/mail-source.el (mail-source-fetch-pop): Require `pop3'
+ explicitly.
+ (mail-source-check-pop): Ditto.
+
2003-04-07 Katsumi Yamaoka <yamaoka@jpl.org>
* lisp/nnmail.el (nnmail-split-it): Revoke the change of 1999-08-19.
* T-gnus 6.15 - this is based on Oort Gnus.
- The latest T-gnus is T-gnus 6.15.18 (based on Oort Gnus 0.18). It
+ The latest T-gnus is T-gnus 6.15.19 (based on Oort Gnus 0.19). It
requires SEMI 1.14, FLIM 1.14, and APEL 10.0 or later.
===============
T-gnus is an improvement of Gnus with SEMI's MIME feature. T-gnus
-6.15 is based on Oort Gnus v0.18. SEMI may stand for "SEMI is Emacs
+6.15 is based on Oort Gnus v0.19. SEMI may stand for "SEMI is Emacs
MIME Interface" and is developped to provide an easy interfaces for
users to handle MIME message structures. For further information,
refer to REASME.en of SEMI.
=============
T-gnus \e$B$O!"\e(BSEMI \e$B$rMxMQ$7$F\e(B Gnus \e$B$K\e(B MIME \e$B5!G=$rDI2C$9$k$b$N$G$9!#\e(B
-T-gnus 6.15 \e$B$O\e(B Oort Gnus v0.18 \e$B$r%Y!<%9$K$7$F$$$^$9!#\e(BSEMI \e$B$O\e(B Emacs \e$B$G\e(B
+T-gnus 6.15 \e$B$O\e(B Oort Gnus v0.19 \e$B$r%Y!<%9$K$7$F$$$^$9!#\e(BSEMI \e$B$O\e(B Emacs \e$B$G\e(B
MIME \e$B$r;H$($k$h$&$K$9$k$b$N$G!"\e(BMIME message \e$B$N9=J8$N9=B$$HMxMQ<T$N4V$r\e(B
\e$B$D$J$0%$%s%?!<%U%'!<%9$rDs6!$7$^$9!#>\$7$/$O!"\e(BSEMI \e$B$N\e(B README.en \e$B$r;2>H\e(B
\e$B$7$F$/$@$5$$!#\e(B
+2003-04-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-version-number): Bump.
+
+2003-04-13 01:12:01 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+ * gnus.el: Oort Gnus v0.18 is released.
+
+2003-04-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-draft.el (gnus-draft-send): Add message-hidden-headers.
+
+2003-04-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-article-next-page): Use
+ gnus-article-over-scroll.
+ (gnus-article-over-scroll): New variable.
+
+ * message.el (message-newline-and-reformat): Place a boundary
+ before filling.
+ (message-make-forward-subject-function): Changed default to
+ message-forward-subject-name-subject.
+ (message-forward-subject-name-subject): New function.
+
+ * nnimap.el (nnimap-split-fancy): Ditto.
+
+ * gnus-sum.el (gnus-summary-line-message-size): Ditto.
+
+ * gnus-cus.el (gnus-group-parameters): Removed "which see".
+
+ * mml.el (mml-minibuffer-read-file): Bind
+ completion-ignored-extensions to nil.
+
+ * message.el (message-fix-before-sending): Comment fix.
+ (message-fix-before-sending): Make hidden headers visible.
+ (message-hide-headers): Bind after-change-functions to nil.
+ (message-forbidden-properties): Put invisible and intangible
+ back.
+ (message-strip-forbidden-properties): Ignore message-hidden text.
+
+ * gnus-msg.el: Hide headers.
+
+ * message.el (message-hidden-headers): New variable.
+ (message-hide-headers): New function.
+ (message-hide-header-p): New function.
+ (message-hide-header-p): Change logic.
+ (message-forbidden-properties): Remove intangible nil invisible
+ nil.
+ (message-hide-headers): Narrow to headers.
+
+ * lpath.el (featurep): Bind Info-directory, Info-menu.
+
+2003-04-12 Jesper Harder <harder@ifa.au.dk>
+
+ * mm-bodies.el (mm-body-charset-encoding-alist): UTF-16 *must* be
+ encoded.
+ (mm-encode-body): Don't corrupt UTF-16.
+ (mm-body-encoding): Pay attention to mm-body-charset-encoding-alist.
+
2003-04-10 Kevin Greiner <kgreiner@xpediantsolutions.com>
* gnus-agent.el (gnus-agent-get-undownloaded-list): Articles in
same directory.
(gnus-agent-group-pathname): New function. Wrapper for
nnmail-group-pathname.
+ (gnus-agent-expire-unagentized-dirs): New variable. May be
+ customized to disable gnus-agent-expire-unagentized-dirs.
+ (gnus-agent-expire-unagentized-dirs): Expand gnus-agent-directory
+ as the directories in gnus-agent-expire-current-dirs were
+ expanded.
2003-04-10 Jesper Harder <harder@ifa.au.dk>
:type '(radio (const :format "Enable " ENABLE)
(const :format "Disable " DISABLE)))
+(defcustom gnus-agent-expire-unagentized-dirs t
+"Have gnus-agent-expire scan the directories under
+\(gnus-agent-directory) for groups that are no longer agentized. When
+found, offer to remove them.")
+
;;; Internal variables
(defvar gnus-agent-history-buffers nil)
(gnus-message 4 "Expiry...done")))))
(defun gnus-agent-expire-unagentized-dirs ()
- (when (boundp 'gnus-agent-expire-current-dirs)
+ (when (and gnus-agent-expire-unagentized-dirs
+ (boundp 'gnus-agent-expire-current-dirs))
(let* ((keep (gnus-make-hashtable))
;; Formally bind gnus-agent-expire-current-dirs so that the
;; compiler will not complain about free references.
(gnus-agent-expire-current-dirs
(symbol-value 'gnus-agent-expire-current-dirs))
- dir)
+ dir)
(gnus-sethash gnus-agent-directory t keep)
(while gnus-agent-expire-current-dirs
(gnus-sethash dir t keep)
(setq dir (file-name-directory (directory-file-name dir))))))
- (let* (to-remove
- checker
- (checker
- (function
- (lambda (d)
- "Given a directory, check it and its subdirectories for
+ (let* (to-remove
+ checker
+ (checker
+ (function
+ (lambda (d)
+ "Given a directory, check it and its subdirectories for
membership in the keep hash. If it isn't found, add
it to to-remove."
- (let ((files (directory-files d))
- file)
- (while (setq file (pop files))
- (cond ((equal file ".") ; Ignore self
- nil)
- ((equal file "..") ; Ignore parent
- nil)
- ((equal file ".overview")
- ;; Directory must contain .overview to be
- ;; agent's cache of a group.
- (let ((d (file-name-as-directory d))
- r)
- ;; Search ancestor's for last directory NOT
- ;; found in keep hash.
- (while (not (gnus-gethash
- (setq d (file-name-directory d)) keep))
- (setq r d
- d (directory-file-name d)))
- ;; if ANY ancestor was NOT in keep hash and
- ;; it it's already in to-remove, add it to
- ;; to-remove.
- (if (and r
- (not (member r to-remove)))
- (push r to-remove))))
- ((file-directory-p (setq file (nnheader-concat d file)))
- (funcall checker file)))))))))
- (funcall checker gnus-agent-directory)
-
- (when (and to-remove
- (gnus-y-or-n-p
- "gnus-agent-expire has identified local directories that are\
+ (let ((files (directory-files d))
+ file)
+ (while (setq file (pop files))
+ (cond ((equal file ".") ; Ignore self
+ nil)
+ ((equal file "..") ; Ignore parent
+ nil)
+ ((equal file ".overview")
+ ;; Directory must contain .overview to be
+ ;; agent's cache of a group.
+ (let ((d (file-name-as-directory d))
+ r)
+ ;; Search ancestor's for last directory NOT
+ ;; found in keep hash.
+ (while (not (gnus-gethash
+ (setq d (file-name-directory d)) keep))
+ (setq r d
+ d (directory-file-name d)))
+ ;; if ANY ancestor was NOT in keep hash and
+ ;; it it's already in to-remove, add it to
+ ;; to-remove.
+ (if (and r
+ (not (member r to-remove)))
+ (push r to-remove))))
+ ((file-directory-p (setq file (nnheader-concat d file)))
+ (funcall checker file)))))))))
+ (funcall checker (expand-file-name gnus-agent-directory))
+
+ (when (and to-remove
+ (or gnus-expert-user
+ (gnus-y-or-n-p
+ "gnus-agent-expire has identified local directories that are\
not currently required by any agentized group. Do you wish to consider\
- deleting them?"))
- (while to-remove
- (let ((dir (pop to-remove)))
- (if (gnus-y-or-n-p (format "Delete %s?" dir))
- (let* (delete-recursive
- (delete-recursive
- (function
- (lambda (f-or-d)
- (ignore-errors
- (if (file-directory-p f-or-d)
- (condition-case nil
- (delete-directory f-or-d)
- (file-error
- (mapcar (lambda (f)
- (or (member f '("." ".."))
- (funcall delete-recursive
- (nnheader-concat
- f-or-d f))))
- (directory-files f-or-d))
- (delete-directory f-or-d)))
- (delete-file f-or-d)))))))
- (funcall delete-recursive dir))))))))))
+ deleting them?")))
+ (while to-remove
+ (let ((dir (pop to-remove)))
+ (if (gnus-y-or-n-p (format "Delete %s?" dir))
+ (let* (delete-recursive
+ (delete-recursive
+ (function
+ (lambda (f-or-d)
+ (ignore-errors
+ (if (file-directory-p f-or-d)
+ (condition-case nil
+ (delete-directory f-or-d)
+ (file-error
+ (mapcar (lambda (f)
+ (or (member f '("." ".."))
+ (funcall delete-recursive
+ (nnheader-concat
+ f-or-d f))))
+ (directory-files f-or-d))
+ (delete-directory f-or-d)))
+ (delete-file f-or-d)))))))
+ (funcall delete-recursive dir))))))))))
;;;###autoload
(defun gnus-agent-batch ()
:group 'gnus-article-headers
:type 'boolean)
+(defcustom gnus-article-over-scroll nil
+ "If non-nil, allow scrolling the article buffer even when there no more text."
+ :group 'gnus-article
+ :type 'boolean)
+
;;; Internal variables
(defvar gnus-english-month-names
(move-to-window-line lines)
(unless (search-backward "\n\n" nil t)
(setq start (point)))))
- (cond (end-of-buffer t)
+ (cond (end-of-buffer
+ (not gnus-article-over-scroll))
(end-of-page
(gnus-narrow-to-page 1)
nil)
string) "\
Where expired messages end up.
-Overrides `nnmail-expiry-target', which see.")
+Overrides `nnmail-expiry-target'.")
(score-file (file :tag "Score File") "\
Make the specified file into the current score file.
"Send message ARTICLE."
(let ((message-syntax-checks (if interactive message-syntax-checks
'dont-check-for-anything-just-trust-me))
+ (message-hidden-headers nil)
(message-inhibit-body-encoding (or (not group)
(equal group "nndraft:queue")
message-inhibit-body-encoding))
(set (make-local-variable 'gnus-newsgroup-name) ,group)
(gnus-maybe-setup-default-charset)
(gnus-run-hooks 'gnus-message-setup-hook))
+ (message-hide-headers)
(gnus-add-buffer)
(gnus-configure-windows ,config t)
(run-hooks 'post-command-hook)
(defsubst gnus-summary-line-message-size (head)
"Return pretty-printed version of message size.
This function is intended to be used in
-`gnus-summary-line-format-alist', which see."
+`gnus-summary-line-format-alist'."
(let ((c (or (mail-header-chars head) -1)))
(cond ((< c 0) "n/a") ; chars not available
((< c (* 1000 10)) (format "%1.1fk" (/ c 1024.0)))
;; Product information of this gnus.
(product-provide 'gnus-vers
(product-define "T-gnus" nil
- (list 6 15 18
+ (list 6 15 19
(string-to-number gnus-revision-number))))
-(defconst gnus-original-version-number "0.18"
+(defconst gnus-original-version-number "0.19"
"Version number for this version of Gnus.")
(provide 'running-pterodactyl-gnus-0_73-or-later)
(if (featurep 'xemacs)
(progn
(maybe-fbind '(ccl-execute-on-string
+ Info-directory Info-menu
char-charset charsetp coding-system-get
coding-system-list coding-system-p decode-coding-region
decode-coding-string define-ccl-program delete-overlay
(eval-when-compile
(require 'cl)
(require 'imap)
- (eval-when-compile (defvar display-time-mail-function)))
-(eval-and-compile
- (defvar pop3-leave-mail-on-server)
+ (defvar display-time-mail-function)
(autoload 'pop3-movemail "pop3")
- (autoload 'pop3-get-message-count "pop3")
+ (autoload 'pop3-get-message-count "pop3"))
+(eval-and-compile
(autoload 'nnheader-cancel-timer "nnheader")
(autoload 'nnheader-run-at-time "nnheader"))
(require 'format-spec)
(funcall function mail-source-crash-box))
;; The default is to use pop3.el.
(t
+ (require 'pop3)
(let ((pop3-password password)
(pop3-maildrop user)
(pop3-mailhost server)
(pop3-leave-mail-on-server
(or leave
(and (boundp 'pop3-leave-mail-on-server)
- pop3-leave-mail-on-server))))
+ (symbol-value 'pop3-leave-mail-on-server)))))
(if (or debug-on-quit debug-on-error)
(save-excursion (pop3-movemail mail-source-crash-box))
(condition-case err
(function)
;; The default is to use pop3.el.
(t
+ (require 'pop3)
(let ((pop3-password password)
(pop3-maildrop user)
(pop3-mailhost server)
:type 'regexp)
(defcustom message-make-forward-subject-function
- 'message-forward-subject-author-subject
+ 'message-forward-subject-name-subject
"*List of functions called to generate subject headers for forwarded messages.
The subject generated by the previous function is passed into each
successive function.
* `message-forward-subject-author-subject' (Source of article (author or
newsgroup)), in brackets followed by the subject
+* `message-forward-subject-name-subject' (Source of article (name of author
+ or newsgroup)), in brackets followed by the subject
* `message-forward-subject-fwd' (Subject of article with 'Fwd:' prepended
to it."
:group 'message-forwarding
(or (not (listp message-shoot-gnksa-feet))
(memq feature message-shoot-gnksa-feet)))
+(defcustom message-hidden-headers nil
+ "Regexp of headers to be hidden when composing new messages.
+This can also be a list of regexps to match headers. Or a list
+starting with `not' and followed by regexps.."
+ :group 'message
+ :type '(repeat regexp))
+
;;; Internal variables.
;;; Well, not really internal.
;; No reason this should be clutter up customize. We make it a
;; property list (rather than a list of property symbols), to be
;; directly useful for `remove-text-properties'.
- '(field nil read-only nil intangible nil invisible nil
+ '(field nil read-only nil invisible nil intangible nil
mouse-face nil modification-hooks nil insert-in-front-hooks nil
insert-behind-hooks nil point-entered nil point-left nil)
;; Other special properties:
(message-tamago-not-in-use-p begin)
;; Check whether the invisible MIME part is not inserted.
(not (text-property-any begin end 'mime-edit-invisible t)))
- (remove-text-properties begin end message-forbidden-properties)))
+ (while (not (= begin end))
+ (when (not (get-text-property begin 'message-hidden))
+ (remove-text-properties begin (1+ begin)
+ message-forbidden-properties))
+ (incf begin))))
;;;###autoload
(define-derived-mode message-mode text-mode "Message"
(delete-region (point) (re-search-forward "[ \t]*"))
(when (and quoted (not bolp))
(insert quoted leading-space)))
+ (undo-boundary)
(if quoted
(let* ((adaptive-fill-regexp
(regexp-quote (concat quoted leading-space)))
(goto-char (point-max))
(unless (bolp)
(insert "\n"))
+ ;; Make the hidden headers visible.
+ (let ((points (message-text-with-property 'message-hidden)))
+ (when points
+ (goto-char (car points))
+ (dolist (point points)
+ (add-text-properties point (1+ point)
+ '(invisible nil intangible nil)))))
;; Delete all invisible text except for the mime parts which might
;; be inserted by the MIME-Edit.
(message-check 'invisible-text
"(nowhere)"))
"] " subject))
+(defun message-forward-subject-name-subject (subject)
+ "Generate a SUBJECT for a forwarded message.
+The form is: [Source] Subject, where if the original message was mail,
+Source is the name of the sender, and if the original message was
+news, Source is the list of newsgroups is was posted to."
+ (concat "["
+ (let ((prefix (message-fetch-field "newsgroups")))
+ (or prefix
+ (and (setq prefix (message-fetch-field "from"))
+ (car (std11-extract-address-components
+ (nnheader-decode-from prefix))))
+ "(nowhere)"))
+ "] " subject))
+
(defun message-forward-subject-fwd (subject)
"Generate a SUBJECT for a forwarded message.
The form is: Fwd: Subject, where Subject is the original subject of
(if (and (or to cc) bcc) ", ")
(or bcc "")))))))
+(defun message-hide-headers ()
+ "Hide headers based on the `message-hidden-headers' variable."
+ (let ((regexps (if (stringp message-hidden-headers)
+ (list message-hidden-headers)
+ message-hidden-headers))
+ (inhibit-point-motion-hooks t)
+ (after-change-functions nil))
+ (when regexps
+ (save-excursion
+ (save-restriction
+ (message-narrow-to-headers)
+ (goto-char (point-min))
+ (while (not (eobp))
+ (if (not (message-hide-header-p regexps))
+ (message-next-header)
+ (let ((begin (point)))
+ (message-next-header)
+ (add-text-properties begin (point)
+ '(intangible t invisible t
+ message-hidden t))))))))))
+
+(defun message-hide-header-p (regexps)
+ (let ((result nil)
+ (reverse nil))
+ (when (eq (car regexps) 'not)
+ (setq reverse t)
+ (pop regexps))
+ (dolist (regexp regexps)
+ (setq result (or result (looking-at regexp))))
+ (if reverse
+ (not result)
+ result)))
+
(when (featurep 'xemacs)
(require 'messagexmas)
(message-xmas-redefine))
(defcustom mm-body-charset-encoding-alist
'((iso-2022-jp . 7bit)
- (iso-2022-jp-2 . 7bit))
+ (iso-2022-jp-2 . 7bit)
+ ;; We MUST encode UTF-16 because it can contain \0's which is
+ ;; known to break servers.
+ (utf-16 . base64)
+ (utf-16be . base64)
+ (utf-16le . base64))
"Alist of MIME charsets to encodings.
Valid encodings are `7bit', `8bit', `quoted-printable' and `base64'."
:type '(repeat (cons (symbol :tag "charset")
charset)
(goto-char (point-min))
(let ((charsets (mm-find-mime-charset-region (point-min) (point-max)
- mm-hack-charsets))
- start)
+ mm-hack-charsets)))
(cond
;; No encoding.
((null charsets)
charsets)
;; We encode.
(t
- (setq charset (car charsets))
- (while (not (eobp))
- (if (eq (mm-charset-after) 'ascii)
- (when start
- (save-restriction
- (narrow-to-region start (point))
- (mm-encode-coding-region
- start (point) (mm-charset-to-coding-system charset))
- (goto-char (point-max)))
- (setq start nil))
- (unless start
- (setq start (point))))
- (forward-char 1))
- (when start
- (mm-encode-coding-region start (point)
- (mm-charset-to-coding-system charset))
- (setq start nil))
- charset)))))))
+ (prog1
+ (setq charset (car charsets))
+ (mm-encode-coding-region (point-min) (point-max)
+ (mm-charset-to-coding-system charset))))
+ ))))))
(defun mm-long-lines-p (length)
"Say whether any of the lines in the buffer is longer than LINES."
bits)
((and (not mm-use-ultra-safe-encoding)
(not longp)
- (not (eq '7bit (cdr (assq charset mm-body-charset-encoding-alist))))
+ (not (cdr (assq charset mm-body-charset-encoding-alist)))
(or (eq t (cdr message-posting-charset))
(memq charset (cdr message-posting-charset))
(eq charset mail-parse-charset)))
;;;
(defun mml-minibuffer-read-file (prompt)
- (let ((file (read-file-name prompt nil nil t)))
+ (let* ((completion-ignored-extensions nil)
+ (file (read-file-name prompt nil nil t)))
;; Prevent some common errors. This is inspired by similar code in
;; VM.
(when (file-directory-p file)
:type 'string)
(defcustom nnimap-split-fancy nil
- "Like the variable `nnmail-split-fancy', which see."
+ "Like the variable `nnmail-split-fancy'."
:group 'nnimap
:type 'sexp)
+2003-04-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.texi (Misc Article): Addition.
+
+2003-04-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.texi (Message Headers): Addition.
+
+2003-04-12 Jesper Harder <harder@ifa.au.dk>
+
+ * emacs-mime.texi (Encoding Customization): Update default for
+ mm-body-charset-encoding-alist.
+
2003-04-08 Jesper Harder <harder@ifa.au.dk>
* emacs-mime.texi (Non-MIME): Add diff.
Mapping from @sc{mime} charset to encoding to use. This variable is
usually used except, e.g., when other requirements force a specific
encoding (digitally signed messages require 7bit encodings). The
-default is @code{((iso-2022-jp . 7bit) (iso-2022-jp-2 . 7bit))}. As
-an example, if you do not want to have ISO-8859-1 characters
+default is
+
+@lisp
+((iso-2022-jp . 7bit)
+ (iso-2022-jp-2 . 7bit)
+ (utf-16 . base64)
+ (utf-16be . base64)
+ (utf-16le . base64))
+@end lisp
+
+As an example, if you do not want to have ISO-8859-1 characters
quoted-printable encoded, you may add @code{(iso-8859-1 . 8bit)} to
this variable. You can override this setting on a per-message basis
by using the @code{encoding} MML tag (@pxref{MML Definition}).
\e$B5-;v%P%C%U%!$GMQ$$$i$l$k%7%s%?%C%/%9%F!<%V%k$G$9!#$3$l\e(B
\e$B$O\e(B @code{text-mode-syntax-table} \e$B$r$b$H$K=i4|2=$5$l$^$9!#\e(B
+@vindex gnus-article-over-scroll
+@item gnus-article-over-scroll
+\e$BHs\e(B-@code{nil} \e$B$K$9$k$3$H$K$h$C$F!"$=$l0J>e%9%/%m!<%k$9$k?7$7$$%F%-%9%H$,\e(B
+\e$BL5$/$F$b5-;v%P%C%U%!$r%9%/%m!<%k$9$k$3$H$r2DG=$K$7$^$9!#%G%#%U%)%k%H\e(B
+\e$B$O\e(B @code{nil} \e$B$G$9!#\e(B(\e$BLuCm\e(B: \e$B8=<B$NF0:n$H9g$C$F$$$J$$$h$&$J5$$,$9$k!#\e(B)
+
@vindex gnus-article-mode-line-format
@item gnus-article-mode-line-format
\e$B$3$NJQ?t$O\e(B @code{gnus-summary-mode-line-format} \e$B$HF1$89T$K=>$C$?MM<0J8;z\e(B
@end table
+
@node Article Buffer
@chapter Article Buffer
@cindex article buffer
Syntax table used in article buffers. It is initialized from
@code{text-mode-syntax-table}.
+@vindex gnus-article-over-scroll
+@item gnus-article-over-scroll
+If non-@code{nil}, allow scrolling the article buffer even when there
+no more new text to scroll in. The default is @code{nil}.
+
@vindex gnus-article-mode-line-format
@item gnus-article-mode-line-format
This variable is a format string along the same lines as
\e$BDj$7$^$9!#\e(B@code{always} \e$B$@$C$?$i$H$K$+$/Aw?.$7!"\e(B@code{never} \e$B$@$C$?$iAw\e(B
\e$B?.$7$^$;$s!#\e(B@code{ask} (\e$B$=$l$,%G%#%U%)%k%H\e(B) \e$B$@$C$?$i!"$I$&$9$k$+?R$M$i$l\e(B
\e$B$^$9!#\e(B
+
+@item message-hidden-headers
+@vindex message-hidden-headers
+\e$B@55,I=8=!"@55,I=8=$N%j%9%H!"$^$?$O:G=i$NMWAG$,\e(B @code{not} \e$B$G;D$j$,@55,I=\e(B
+\e$B8=$G$"$k%j%9%H!#%a%C%;!<%8$N:n@.Cf$K$I$N%X%C%@!<$r1#$7$?$^$^$K$7$F$*$/$+\e(B
+\e$B$r7h$a$^$9!#\e(B
+
+@lisp
+(setq message-hidden-headers
+ '(not "From" "Subject" "To" "Cc" "Newsgroups"))
+@end lisp
@end table
@node Mail Headers
allowed. If it is @code{never}, the posting is not allowed. If it is
@code{ask} (the default), you are prompted.
+@item message-hidden-headers
+@vindex message-hidden-headers
+A regexp, a list of regexps, or a list where the first element is
+@code{not} and the rest are regexps. It says which headers to keep
+hidden when composing a message.
+
+@lisp
+(setq message-hidden-headers
+ '(not "From" "Subject" "To" "Cc" "Newsgroups"))
+@end lisp
+
@end table