Commit a51568bd authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

Provide `rmailout'.

(rmail-output-read-rmail-file-name): New function.
(rmail-output-to-rmail-file): Use that.
(rmail-output-read-file-name): New function.
(rmail-output): Use that.
parent f9e3db55
......@@ -25,6 +25,7 @@
;;; Code:
(require 'rmail)
(provide 'rmailout)
;;;###autoload
(defcustom rmail-output-file-alist nil
......@@ -40,23 +41,9 @@ a file name as a string."
sexp)))
:group 'rmail-output)
;;; There are functions elsewhere in Emacs that use this function;
;;; look at them before you change the calling method.
;;;###autoload
(defun rmail-output-to-rmail-file (file-name &optional count)
"Append the current message to an Rmail file named FILE-NAME.
If the file does not exist, ask if it should be created.
If file is being visited, the message is appended to the Emacs
buffer visiting that file.
If the file exists and is not an Rmail file, the message is
appended in inbox format, the same way `rmail-output' does it.
The default file name comes from `rmail-default-rmail-file',
which is updated to the name you use in this command.
A prefix argument N says to output N consecutive messages
starting with the current one. Deleted messages are skipped and don't count."
(interactive
(defun rmail-output-read-rmail-file-name ()
"Read the file name to use for `rmail-output-to-rmail-file'.
Set `rmail-default-rmail-file' to this name as well as returning it."
(let ((default-file
(let (answer tail)
(setq tail rmail-output-file-alist)
......@@ -67,7 +54,7 @@ starting with the current one. Deleted messages are skipped and don't count."
(if (re-search-forward (car (car tail)) nil t)
(setq answer (eval (cdr (car tail)))))
(setq tail (cdr tail))))
;; If not suggestions, use same file as last time.
;; If no suggestions, use same file as last time.
(expand-file-name (or answer rmail-default-rmail-file)))))
(let ((read-file
(expand-file-name
......@@ -84,9 +71,59 @@ starting with the current one. Deleted messages are skipped and don't count."
(if (file-directory-p read-file)
(expand-file-name (file-name-nondirectory default-file)
read-file)
read-file)))
(list rmail-default-rmail-file
(prefix-numeric-value current-prefix-arg))))
read-file)))))
(defun rmail-output-read-file-name ()
"Read the file name to use for `rmail-output'.
Set `rmail-default-file' to this name as well as returning it."
(let ((default-file
(let (answer tail)
(setq tail rmail-output-file-alist)
;; Suggest a file based on a pattern match.
(while (and tail (not answer))
(save-excursion
(goto-char (point-min))
(if (re-search-forward (car (car tail)) nil t)
(setq answer (eval (cdr (car tail)))))
(setq tail (cdr tail))))
;; If no suggestion, use same file as last time.
(or answer rmail-default-file))))
(let ((read-file
(expand-file-name
(read-file-name
(concat "Output message to Unix mail file: (default "
(file-name-nondirectory default-file)
") ")
(file-name-directory default-file)
(abbreviate-file-name default-file))
(file-name-directory default-file))))
(setq rmail-default-file
(if (file-directory-p read-file)
(expand-file-name (file-name-nondirectory default-file)
read-file)
(expand-file-name
(or read-file (file-name-nondirectory default-file))
(file-name-directory default-file)))))))
;;; There are functions elsewhere in Emacs that use this function;
;;; look at them before you change the calling method.
;;;###autoload
(defun rmail-output-to-rmail-file (file-name &optional count)
"Append the current message to an Rmail file named FILE-NAME.
If the file does not exist, ask if it should be created.
If file is being visited, the message is appended to the Emacs
buffer visiting that file.
If the file exists and is not an Rmail file, the message is
appended in inbox format, the same way `rmail-output' does it.
The default file name comes from `rmail-default-rmail-file',
which is updated to the name you use in this command.
A prefix argument N says to output N consecutive messages
starting with the current one. Deleted messages are skipped and don't count."
(interactive
(list (rmail-output-read-rmail-file-name)
(prefix-numeric-value current-prefix-arg)))
(or count (setq count 1))
(setq file-name
(expand-file-name file-name
......@@ -227,35 +264,8 @@ to set the `filed' attribute, and not to display a message.
The optional fourth argument FROM-GNUS is set when called from GNUS."
(interactive
(let ((default-file
(let (answer tail)
(setq tail rmail-output-file-alist)
;; Suggest a file based on a pattern match.
(while (and tail (not answer))
(save-excursion
(goto-char (point-min))
(if (re-search-forward (car (car tail)) nil t)
(setq answer (eval (cdr (car tail)))))
(setq tail (cdr tail))))
;; If no suggestion, use same file as last time.
(or answer rmail-default-file))))
(list (setq rmail-default-file
(let ((read-file
(expand-file-name
(read-file-name
(concat "Output message to Unix mail file: (default "
(file-name-nondirectory default-file)
") ")
(file-name-directory default-file)
(abbreviate-file-name default-file))
(file-name-directory default-file))))
(if (file-directory-p read-file)
(expand-file-name (file-name-nondirectory default-file)
read-file)
(expand-file-name
(or read-file (file-name-nondirectory default-file))
(file-name-directory default-file)))))
(prefix-numeric-value current-prefix-arg))))
(list (rmail-output-read-file-name)
(prefix-numeric-value current-prefix-arg)))
(or count (setq count 1))
(setq file-name
(expand-file-name file-name
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment