Gnus, the Emacs newsreader, has undergone further rewriting. Many new
commands and variables have been added. There should be no
-significant imcompatabilities between this Gnus version and the
-previosly released version, except in the message composition area.
+significant incompatibilities between this Gnus version and the
+previously released version, except in the message composition area.
Below is a list of the more user-visible changes. Coding changes
between Gnus 5.1 and 5.2 are more extensive.
*** A new message composition mode is used. All old customization
variables for mail-mode, rnews-reply-mode and gnus-msg are now
-absolete.
+obsolete.
*** Gnus is now able to generate "sparse" threads -- threads where
missing articles are represented by empty nodes.
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
-*** Gnus can resend and bounce mail.
+*** Gnus can re-send and bounce mail.
Use the `S D r' and `S D b'.
+Thu Jun 13 02:28:26 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnheader.el (nnheader-insert-nov): Fudge a message-id if
+ necessary.
+
+ * nnml.el (nnml-request-accept-article): Use it.
+
+ * nnmail.el (nnmail-check-syntax): New function.
+
+ * gnus.el (gnus-group-fetch-faq): Would bug out when not called in
+ the group buffer.
+ (gnus-use-long-file-name): Doc fix.
+ (gnus-summary-search-article): Search backward from where we left
+ off.
+
+ * gnus-xmas.el (gnus-xmas-server-menu-add): New function.
+ (gnus-xmas-browse-menu-add): Ditto.
+
+Wed Jun 12 18:32:57 1996 Christoph Wedler <wedler@fmi.uni-passau.de>
+
+ * gnus-srvr.el (gnus-server-make-menu-bar): Use
+ `gnus-server-deny-server'
+
+Wed Jun 12 23:02:19 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+
+ * message.el (message-send-rename-function): New variable.
+ (message-do-send-housekeeping): Use it.
+
+Wed Jun 12 22:53:32 1996 Richard Mlynarik <mly@adoc.xerox.com>
+
+ * message.el (message-make-fqdn): Make sure `user-mail-address'
+ and `mail-host-address' looks like a full address.
+
+Wed Jun 12 22:06:39 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+
+ * message.el (message-generate-new-buffers): Extended syntax.
+ (message-buffer-name): Use it.
+ (message-make-fqdn): Checked `user-mail-address' directly.
+ (message-check-news-syntax): Check for misconfiguration.
+
+ * nnmail.el (nnmail-move-inbox): Use it.
+
+Wed Jun 12 22:06:10 1996 Richard Pieri <ratinox@unilab.dfci.harvard.edu>
+
+ * nnmail.el (nnmail-read-password): New function.
+
+Wed Jun 12 21:59:40 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+
+ * message.el (message-send): Make buffer read/write before
+ sending.
+
+ * gnus-score.el (gnus-score-edit-current-scores): Correct
+ message.
+
+Wed Jun 12 19:31:50 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-msg.el (gnus-inews-insert-archive-gcc): If ":" in name,
+ just use name.
+ (gnus-message-archive-group): Doc fix.
+
+ * nnmail.el (nnmail-split-it): Regexp bogosity.
+
+ * gnus-vis.el (gnus-button-alist): Have "news:" rule come before
+ URL rule.
+
+ * message.el (message-setup): Really be read-only.
+
+ * gnus.el (gnus-summary-import-article): Use message.
+
+Tue Jun 11 10:04:55 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * message.el (message-make-fqdm): Use `mail-host-address' before
+ `user-mail-address'.
+ (message-make-fqdn): Typo is function name.
+
+ * nndb.el: Make byte-compiler silent.
+
Tue Jun 11 02:29:33 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+ * gnus.el: Gnus v5.2.15 is released.
+
* gnus-score.el (gnus-score-find-trace): Erase contents first.
* nntp.el (nntp-send-region-to-server): Make sure the server is
This can either be a string, a list of strings; or an alist
of regexps/functions/forms to be evaluated to return a string (or a list
of strings). The functions are called with the name of the current
-group (or nil) as a parameter.")
+group (or nil) as a parameter.
+
+Normally the group names returned by this variable should be
+unprefixed -- which implictly means \"store on the archive server\".
+However, you may wish to store the message on some other server. In
+that case, just return a fully prefixed name of the group --
+\"nnml+private:mail.misc\", for instance.")
(defvar gnus-mailing-list-groups nil
"*Regexp matching groups that are really mailing lists.
(t
(eval (car var)))))))
(setq var (cdr var)))
- result))))
+ result)))
+ name)
(when groups
(when (stringp groups)
(setq groups (list groups)))
(gnus-inews-narrow-to-headers)
(goto-char (point-max))
(insert "Gcc: ")
- (while groups
- (insert (gnus-group-prefixed-name
- (pop groups) gnus-message-archive-method))
+ (while (setq name (pop groups))
+ (insert (if (string-match ":" name)
+ name
+ (gnus-group-prefixed-name
+ name gnus-message-archive-method)))
(insert " "))
(insert "\n"))))))
(setq gnus-prev-winconf winconf))
(gnus-message
4 (substitute-command-keys
- "\\<gnus-score-mode-map>\\[gnus-score-edit-done] to save edits")))
+ "\\<gnus-score-mode-map>\\[gnus-score-edit-exit] to save edits")))
(defun gnus-score-edit-file (file)
"Edit a score file."
(defun gnus-server-make-menu-bar ()
(gnus-visual-turn-off-edit-menu 'server)
- (or
- (boundp 'gnus-server-menu)
- (progn
- (easy-menu-define
- gnus-server-menu gnus-server-mode-map ""
- '("Server"
- ["Add" gnus-server-add-server t]
- ["Browse" gnus-server-read-server t]
- ["List" gnus-server-list-servers t]
- ["Kill" gnus-server-kill-server t]
- ["Yank" gnus-server-yank-server t]
- ["Copy" gnus-server-copy-server t]
- ["Edit" gnus-server-edit-server t]
- ["Exit" gnus-server-exit t]
- ))
-
- (easy-menu-define
- gnus-server-menu gnus-server-mode-map ""
- '("Connections"
- ["Open" gnus-server-open-server t]
- ["Close" gnus-server-close-server t]
- ["Deny" gnus-server-deny-servers t]
- ["Reset" gnus-server-remove-denials t]
- ))
-
- (run-hooks 'gnus-server-menu-hook))))
+ (unless (boundp 'gnus-server-menu)
+ (easy-menu-define
+ gnus-server-menu gnus-server-mode-map ""
+ '("Server"
+ ["Add" gnus-server-add-server t]
+ ["Browse" gnus-server-read-server t]
+ ["List" gnus-server-list-servers t]
+ ["Kill" gnus-server-kill-server t]
+ ["Yank" gnus-server-yank-server t]
+ ["Copy" gnus-server-copy-server t]
+ ["Edit" gnus-server-edit-server t]
+ ["Exit" gnus-server-exit t]
+ ))
+
+ (easy-menu-define
+ gnus-server-menu gnus-server-mode-map ""
+ '("Connections"
+ ["Open" gnus-server-open-server t]
+ ["Close" gnus-server-close-server t]
+ ["Deny" gnus-server-deny-server t]
+ ["Reset" gnus-server-remove-denials t]
+ ))
+
+ (run-hooks 'gnus-server-menu-hook)))
(defvar gnus-server-mode-map nil)
(put 'gnus-server-mode 'mode-class 'special)
(defvar gnus-button-alist
`(("\\bin\\( +article\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2
t gnus-button-message-id 3)
+ ("\\(<?\\(url: ?\\)?news:\\([^>\n\t ]*\\)>?\\)" 1 t
+ gnus-button-message-id 3)
+ ("\\(<URL: *\\)?mailto: *\\([^ \n\t]+\\)>?" 0 t gnus-button-reply 2)
;; This is how URLs _should_ be embedded in text...
("<URL: *\\([^\n\r>]*\\)>" 0 t gnus-button-url 1)
;; Next regexp stolen from highlight-headers.el.
;; Modified by Vladimir Alexiev.
- (,gnus-button-url-regexp 0 t gnus-button-url 0)
- ("\\(<?\\(url: \\)?news:\\([^>\n\t ]*\\)>?\\)" 1 t
- gnus-button-message-id 3)
- ("\\(<URL: *\\)?mailto: *\\([^ \n\t]+\\)>?" 0 t gnus-button-reply 2))
+ (,gnus-button-url-regexp 0 t gnus-button-url 0))
"Alist of regexps matching buttons in article bodies.
Each entry has the form (REGEXP BUTTON FORM CALLBACK PAR...), where
0 (length string) nil string)
string))
(nthcdr 4 entry))))
- (cond ((fboundp fun)
- (apply fun args))
- ((and (boundp fun)
- (fboundp (symbol-value fun)))
- (apply (symbol-value fun) args))
- (t
- (gnus-message 1 "You must define `%S' to use this button"
- (cons fun args)))))))
+ (cond
+ ((fboundp fun)
+ (apply fun args))
+ ((and (boundp fun)
+ (fboundp (symbol-value fun)))
+ (apply (symbol-value fun) args))
+ (t
+ (gnus-message 1 "You must define `%S' to use this button"
+ (cons fun args)))))))
(defun gnus-button-message-id (message-id)
"Fetch MESSAGE-ID."
(gnus-xmas-menu-add tree
gnus-tree-menu))
+(defun gnus-xmas-server-menu-add ()
+ (gnus-xmas-menu-add menu
+ gnus-server-menu))
+
+(defun gnus-xmas-browse-menu-add ()
+ (gnus-xmas-menu-add browse
+ gnus-browse-menu))
+
(defun gnus-xmas-grouplens-menu-add ()
(gnus-xmas-menu-add grouplens
gnus-grouplens-menu))
(add-hook 'gnus-tree-mode-hook 'gnus-xmas-tree-menu-add)
(add-hook 'gnus-binary-mode-hook 'gnus-xmas-binary-menu-add)
(add-hook 'gnus-grouplens-mode-hook 'gnus-xmas-grouplens-menu-add)
+ (add-hook 'gnus-server-mode-hook 'gnus-xmas-server-menu-add)
+ (add-hook 'gnus-browse-mode-hook 'gnus-xmas-browse-menu-add)
(add-hook 'gnus-group-mode-hook 'gnus-xmas-setup-group-toolbar)
(add-hook 'gnus-summary-mode-hook 'gnus-xmas-setup-summary-toolbar)
(when (featurep 'xface)
(setq xface-glyph
(make-glyph (vector 'xface :data
- (concat "X-Face: "
- (buffer-substring beg end)))))
+ (setq my (concat "X-Face: "
+ (buffer-substring beg end))))))
(goto-char (point-min))
(re-search-forward "^From:" nil t)
(beginning-of-line)
`not-score', long file names will not be used for score files; if it
contains the element `not-save', long file names will not be used for
saving; and if it contains the element `not-kill', long file names
-will not be used for kill files.")
+will not be used for kill files.
+
+Note that the default for this variable varies according to what system
+type you're using. On `usg-unix-v' and `xenix' this variable defaults
+to nil while on all other systems it defaults to t.")
(defvar gnus-article-save-directory gnus-directory
"*Name of the directory articles will be saved in (default \"~/News\").")
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version-number "5.2.15"
+(defconst gnus-version-number "5.2.16"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
gnus-uu-decode-binhex-view)
("gnus-msg" (gnus-summary-send-map keymap)
gnus-mail-yank-original gnus-mail-send-and-exit
- gnus-sendmail-setup-mail gnus-article-mail
- gnus-inews-message-id gnus-new-mail gnus-mail-reply)
+ gnus-article-mail gnus-new-mail gnus-mail-reply)
("gnus-msg" :interactive t
gnus-group-post-news gnus-group-mail gnus-summary-post-news
gnus-summary-followup gnus-summary-followup-with-original
gnus-summary-cancel-article gnus-summary-supersede-article
- gnus-post-news gnus-inews-news gnus-cancel-news
+ gnus-post-news gnus-inews-news
gnus-summary-reply gnus-summary-reply-with-original
gnus-summary-mail-forward gnus-summary-mail-other-window
gnus-bug)
"Fetch the FAQ for the current group."
(interactive
(list
- (gnus-group-real-name (gnus-group-group-name))
+ (and (gnus-group-group-name)
+ (gnus-group-real-name (gnus-group-group-name)))
(cond (current-prefix-arg
(completing-read
"Faq dir: " (and (listp gnus-group-faq-directory)
(gnus-save-hidden-threads
(gnus-summary-select-article)
(set-buffer gnus-article-buffer)
+ (when backward
+ (forward-line -1))
(while (not found)
(gnus-message 7 "Searching article: %d..." (cdr gnus-article-current))
(if (if backward
(current-time-string (nth 5 atts))
(current-time-zone now)
(current-time-zone now)) "\n"
- "Message-ID: " (gnus-inews-message-id) "\n"
+ "Message-ID: " (message-make-message-id) "\n"
"Lines: " (int-to-string lines) "\n"
"Chars: " (int-to-string (nth 7 atts)) "\n\n"))
(gnus-request-accept-article group nil t)
(defvar message-max-buffers 10
"*How many buffers to keep before starting to kill them off.")
+(defvar message-send-rename-function nil
+ "Function called to rename the buffer after sending it.")
+
;;;###autoload
(defvar message-fcc-handler-function 'rmail-output
"*A function called to save outgoing articles.
;;;###autoload
(defvar message-generate-new-buffers t
- "*Non-nil means that a new message buffer will be created whenever `mail-setup' is called.")
+ "*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.")
;;;###autoload
(defvar message-kill-buffer-on-exit nil
;; Remove blank lines at the end of the message.
(goto-char (point-max))
(skip-chars-backward " \t\n")
- (end-of-line)
+ (forward-line 1)
(delete-region (point) (point-max))
;; Insert the signature.
- (insert "\n\n-- \n")
+ (insert "\n-- \n")
(if (eq signature t)
(insert-file-contents message-signature-file)
(insert signature))
(y-or-n-p "No changes in the buffer; really send? ")))
;; Make it possible to undo the coming changes.
(undo-boundary)
+ (let ((inhibit-read-only t))
+ (put-text-property (point-min) (point-max) 'read-only nil))
(message-fix-before-sending)
(run-hooks 'message-send-hook)
(message "Sending...")
(goto-char (point-min))
(insert "Followup-To: " to "\n"))
t))
-
+ ;; Check "Shoot me".
+ (or (message-check-element 'shoot)
+ (save-excursion
+ (if (search-forward
+ ".i-have-a-misconfigured-system-so-shoot-me" nil t)
+ (y-or-n-p
+ "You appear to have a misconfigured system. Really post? ")
+ t)))
;; Check for Approved.
(or (message-check-element 'approved)
(save-excursion
(mail-header-subject message-reply-headers))
(message-strip-subject-re psubject))))
"_-_" ""))
- "@" (message-make-fqdm) ">"))
+ "@" (message-make-fqdn) ">"))
(defvar message-unique-id-char nil)
(when user-mail-address
(nth 1 (mail-extract-address-components user-mail-address))))
-(defun message-make-fqdm ()
+(defun message-make-fqdn ()
"Return user's fully qualified domain name."
- (let ((system-name (system-name)))
+ (let ((system-name (system-name))
+ (user-mail (message-user-mail-address)))
(cond
((string-match "[^.]\\.[^.]" system-name)
;; `system-name' returned the right result.
system-name)
- ;; We try `user-mail-address' as a backup.
- ((string-match "@\\(.*\\)\\'" (message-user-mail-address))
- (match-string 1 user-mail-address))
;; Try `mail-host-address'.
((and (boundp 'mail-host-address)
- mail-host-address)
+ (stringp mail-host-address)
+ (string-match "\\." mail-host-address))
mail-host-address)
+ ;; We try `user-mail-address' as a backup.
+ ((and (string-match "\\." user-mail)
+ (string-match "@\\(.*\\)\\'" user-mail))
+ (match-string 1 user-mail))
;; Default to this bogus thing.
(t
(concat system-name ".i-have-a-misconfigured-system-so-shoot-me")))))
(defun message-make-host-name ()
"Return the name of the host."
- (let ((fqdm (message-make-fqdm)))
- (string-match "^[^.]+\\." fqdm)
- (substring fqdm 0 (1- (match-end 0)))))
+ (let ((fqdn (message-make-fqdn)))
+ (string-match "^[^.]+\\." fqdn)
+ (substring fqdn 0 (1- (match-end 0)))))
(defun message-make-domain ()
"Return the domain name."
(or mail-host-address
- (message-make-fqdm)))
+ (message-make-fqdn)))
(defun message-generate-headers (headers)
"Prepare article HEADERS.
(defun message-buffer-name (type &optional to group)
"Return a new (unique) buffer name based on TYPE and TO."
- (if message-generate-new-buffers
- (generate-new-buffer-name
- (concat "*" type
- (if to
- (concat " to "
- (or (car (mail-extract-address-components to))
- to) "")
- "")
- (if group (concat " on " group) "")
- "*"))
- (format "*%s message*" type)))
+ (cond
+ ;; Check whether `message-generate-new-buffers' is a function,
+ ;; and if so, call it.
+ ((message-functionp message-generate-new-buffers)
+ (funcall message-generate-new-buffers type to group))
+ ;; Generate a new buffer name The Message Way.
+ (message-generate-new-buffers
+ (generate-new-buffer-name
+ (concat "*" type
+ (if to
+ (concat " to "
+ (or (car (mail-extract-address-components to))
+ to) "")
+ "")
+ (if group (concat " on " group) "")
+ "*")))
+ ;; Use standard name.
+ (t
+ (format "*%s message*" type))))
(defun message-pop-to-buffer (name)
"Pop to buffer NAME, and warn if it already exists and is modified."
(not (buffer-modified-p buffer)))
(kill-buffer buffer))))
;; Rename the buffer.
- (when (string-match "\\`\\*" (buffer-name))
- (rename-buffer
- (concat "*sent " (substring (buffer-name) (match-end 0))) t))
+ (if message-send-rename-function
+ (funcall message-send-rename-function)
+ (when (string-match "\\`\\*" (buffer-name))
+ (rename-buffer
+ (concat "*sent " (substring (buffer-name) (match-end 0))) t)))
;; Push the current buffer onto the list.
(when message-max-buffers
(setq message-buffer-list
(point)
(progn
(insert mail-header-separator "\n")
- (point))
+ (1- (point)))
'read-only nil)
(forward-line -1)
(when (message-news-p)
(deffoo nnbabyl-request-accept-article (group &optional server last)
(nnbabyl-possibly-change-newsgroup group server)
+ (nnmail-check-syntax)
(let ((buf (current-buffer))
result beg)
(and
(nnoo-define-basics nndb)
+;; Import other stuff from nntp as is.
+
+(nnoo-import nndb
+ (nntp))
+
;;- maybe this should be mail??
;;-(defun nndb-request-type (group &optional article)
;;- 'news)
; nndb-request-rename-group does not exist
; todo -- maybe later
-;; Import stuff from nntp
-
-
-
-;; Import other stuff from nntp as is.
-
-(nnoo-import nndb
- (nntp))
-
(provide 'nndb)
(deffoo nnfolder-request-accept-article (group &optional server last)
(nnfolder-possibly-change-group group server)
+ (nnmail-check-syntax)
(and (stringp group) (nnfolder-possibly-change-group group))
(let ((buf (current-buffer))
result)
(or (mail-header-subject header) "(none)") "\t"
(or (mail-header-from header) "(nobody)") "\t"
(or (mail-header-date header) "") "\t"
- (or (mail-header-id header) "") "\t"
+ (or (mail-header-id header)
+ (nnmail-message-id)) "\t"
(or (mail-header-references header) "") "\t")
(princ (or (mail-header-chars header) 0) (current-buffer))
(insert "\t")
;;; Internal variables.
-(eval-and-compile
- (autoload 'ange-ftp-read-passwd "ange-ftp"))
-
(defvar nnmail-split-fancy-syntax-table
(copy-syntax-table (standard-syntax-table))
"Syntax table used by `nnmail-split-fancy'.")
(setq password nnmail-pop-password)
(when (and nnmail-pop-password-required (not nnmail-pop-password))
(setq password
- (ange-ftp-read-passwd
+ (nnmail-read-passwd
(format "Password for %s: "
(substring inbox (+ popmail 3))))))
(message "Getting mail from post office ..."))
(cdr (assq value
nnmail-split-abbrev-alist))
value)
- "\\>\\)")))
+ "\\)\\>")))
(setq nnmail-split-cache
(cons (cons split regexp) nnmail-split-cache))
(goto-char (point-max))
;; Compare the time with the current time.
(nnmail-time-less days (nnmail-time-since time)))))))
+(defvar nnmail-read-passwd nil)
+(defun nnmail-read-passwd (prompt)
+ (unless nnmail-read-passwd
+ (if (load "passwd" t)
+ (setq nnmail-read-passwd 'read-passwd)
+ (autoload 'ange-ftp-read-passwd "ange-ftp")
+ (setq nnmail-read-passwd 'ange-ftp-read-passwd)))
+ (funcall nnmail-read-passwd prompt))
+
+(defun nnmail-check-syntax ()
+ "Check (and modify) the syntax of the message in the current buffer."
+ (save-restriction
+ (message-narrow-to-head)
+ (let ((case-fold-search t))
+ (unless (re-search-forward "^Message-Id:" nil t)
+ (insert "Message-ID: " (nnmail-message-id) "\n")))))
+
(run-hooks 'nnmail-load-hook)
(provide 'nnmail)
(deffoo nnmbox-request-accept-article (group &optional server last)
(nnmbox-possibly-change-newsgroup group server)
+ (nnmail-check-syntax)
(let ((buf (current-buffer))
result)
(goto-char (point-min))
(deffoo nnmh-request-accept-article (group &optional server last noinsert)
(nnmh-possibly-change-directory group server)
+ (nnmail-check-syntax)
(if (stringp group)
(and
(nnmail-activate 'nnmh)
(deffoo nnml-request-accept-article (group &optional server last)
(nnml-possibly-change-directory group server)
+ (nnmail-check-syntax)
(let (result)
(if (stringp group)
(and
+Wed Jun 12 22:44:25 1996 Lars Magne Ingebrigtsen <larsi@aegir.ifi.uio.no>
+
+ * message.texi (Message Buffers): Addition.
+ (Message Buffers): Addition.
+
+Wed Jun 12 19:32:44 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.texi: Deletia.
+
Mon Jun 10 03:21:04 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* message.texi (Various Message Variables): Addition.
(@code{gnus-summary-import-article}). You will be prompted for a file
name, a @code{From} header and a @code{Subject} header.
-Something similar can be done by just starting to compose a mail
-message. Instead of typing @kbd{C-c C-c} to mail it off, you can type
-@kbd{C-c M-C-p} instead. This will put the message you have just created
-into the current mail group.
-
@item B r
@kindex B r (Summary)
@findex gnus-summary-respool-article
@table @code
@item message-generate-new-buffers
-@findex message-generate-new-buffers
-If non-@code{nil}, generate new buffers. The default is @code{t}.
+@vindex message-generate-new-buffers
+If non-@code{nil}, generate new buffers. The default is @code{t}. 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 @code{nil}.)
+The function should return the new buffer name.
@item message-max-buffers
-@findex message-max-buffers
+@vindex message-max-buffers
This variable says how many old message buffers to keep. If there are
more message buffers than this, the oldest buffer will be killed. The
default is 10. If this variable is @code{nil}, no old message buffers
will ever be killed.
+@item message-send-rename-function
+@vindex message-send-rename-function
+After sending a message, the buffer is renamed from, for instance,
+@samp{*reply to Lars*} to @samp{*sent reply to Lars*}. If you don't
+like this, set this variable to a function that renames the buffer in a
+manner you like. If you don't want to rename the buffer at all, you can
+say:
+
+@lisp
+(setq message-send-rename-function 'ignore)
+@end lisp
+
@item message-kill-buffer-on-exit
@findex message-kill-buffer-on-exit
If non-@code{nil}, kill the buffer immediately on exit.