summaryrefslogtreecommitdiff
path: root/lisp/mail/rmailout.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1999-01-04 01:36:24 +0000
committerRichard M. Stallman <rms@gnu.org>1999-01-04 01:36:24 +0000
commita51568bdddb1839d937f236014a83f26004c8072 (patch)
tree72ab230662a3f7b1808a5fa9583b96909fd2dbfb /lisp/mail/rmailout.el
parentf9e3db555986c46728835193aa0db435b0c417cb (diff)
downloademacs-a51568bdddb1839d937f236014a83f26004c8072.tar.gz
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.
Diffstat (limited to 'lisp/mail/rmailout.el')
-rw-r--r--lisp/mail/rmailout.el128
1 files changed, 69 insertions, 59 deletions
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el
index fa2be6b17d3..6b32c055839 100644
--- a/lisp/mail/rmailout.el
+++ b/lisp/mail/rmailout.el
@@ -25,6 +25,7 @@
;;; Code:
(require 'rmail)
+(provide 'rmailout)
;;;###autoload
(defcustom rmail-output-file-alist nil
@@ -40,6 +41,70 @@ a file name as a string."
sexp)))
:group 'rmail-output)
+(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)
+ ;; 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 suggestions, use same file as last time.
+ (expand-file-name (or answer rmail-default-rmail-file)))))
+ (let ((read-file
+ (expand-file-name
+ (read-file-name
+ (concat "Output message to Rmail file: (default "
+ (file-name-nondirectory default-file)
+ ") ")
+ (file-name-directory default-file)
+ (abbreviate-file-name default-file))
+ (file-name-directory default-file))))
+ ;; If the user enters just a directory,
+ ;; use the name within that directory chosen by the default.
+ (setq rmail-default-rmail-file
+ (if (file-directory-p read-file)
+ (expand-file-name (file-name-nondirectory default-file)
+ read-file)
+ 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
@@ -57,36 +122,8 @@ 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
- (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 not suggestions, use same file as last time.
- (expand-file-name (or answer rmail-default-rmail-file)))))
- (let ((read-file
- (expand-file-name
- (read-file-name
- (concat "Output message to Rmail file: (default "
- (file-name-nondirectory default-file)
- ") ")
- (file-name-directory default-file)
- (abbreviate-file-name default-file))
- (file-name-directory default-file))))
- ;; If the user enters just a directory,
- ;; use the name within that directory chosen by the default.
- (setq rmail-default-rmail-file
- (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))))
+ (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