diff options
author | Richard M. Stallman <rms@gnu.org> | 1994-11-17 16:48:10 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1994-11-17 16:48:10 +0000 |
commit | ba9ff0046101e449c2453731ceb1b1350d3a60f6 (patch) | |
tree | 4dd7f0014cd7b6f9df8ee5a97c54d1e7342b94ab /lisp/mail/rmailout.el | |
parent | 3a5504c8c61b9ef438de88b2bae8c899dfafdf32 (diff) | |
download | emacs-ba9ff0046101e449c2453731ceb1b1350d3a60f6.tar.gz |
(rmail-fields-not-to-output): New variable.
(rmail-delete-unwanted-fields): New function.
(rmail-output, rmail-output-to-rmail-file): Call it.
Diffstat (limited to 'lisp/mail/rmailout.el')
-rw-r--r-- | lisp/mail/rmailout.el | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el index 190c3dddff5..3d81d6a25dd 100644 --- a/lisp/mail/rmailout.el +++ b/lisp/mail/rmailout.el @@ -119,7 +119,17 @@ starting with the current one. Deleted messages are skipped and don't count." (beg (1+ (rmail-msgbeg rmail-current-message))) (end (1+ (rmail-msgend rmail-current-message)))) (if (not buf) - (append-to-file beg end file-name) + ;; Output to a file. + (if rmail-fields-not-to-output + ;; Delete some fields while we output. + (let ((obuf (current-buffer))) + (set-buffer (get-buffer-create " rmail-out-temp")) + (insert-buffer-substring obuf beg end) + (rmail-delete-unwanted-fields) + (append-to-file (point-min) (point-max) file-name) + (set-buffer obuf) + (kill-buffer (get-buffer " rmail-out-temp"))) + (append-to-file beg end file-name)) (if (eq buf (current-buffer)) (error "Can't output message to same file it's already in")) ;; File has been visited, in buffer BUF. @@ -143,6 +153,7 @@ starting with the current one. Deleted messages are skipped and don't count." (widen) (search-backward "\n\^_") (narrow-to-region (point) (point-max)) + (rmail-delete-unwanted-fields) (rmail-count-new-messages t) (if (rmail-summary-exists) (rmail-select-summary @@ -151,7 +162,8 @@ starting with the current one. Deleted messages are skipped and don't count." ;; Output file not in rmail mode => just insert at the end. (narrow-to-region (point-min) (1+ (buffer-size))) (goto-char (point-max)) - (insert-buffer-substring cur beg end))))))) + (insert-buffer-substring cur beg end) + (rmail-delete-unwanted-fields))))))) (rmail-set-attribute "filed" t)) (if redelete (rmail-set-attribute "deleted" t)))) (setq count (1- count)) @@ -160,6 +172,26 @@ starting with the current one. Deleted messages are skipped and don't count." (if (> count 0) (rmail-next-undeleted-message 1)))))) +(defvar rmail-fields-not-to-output nil + "*Regexp describing fields to exclude when outputting a message to a file.") + +;; Delete from the buffer header fields we don't want output. +;; NOT-RMAIL if t means this buffer does not have the full header +;; and *** EOOH *** that a message in an Rmail file has. +(defun rmail-delete-unwanted-fields (&optional not-rmail) + (if rmail-fields-not-to-output + (save-excursion + (goto-char (point-min)) + ;; Find the end of the header. + (if (and (or not-rmail (search-forward "\n*** EOOH ***\n" nil t)) + (search-forward "\n\n" nil t)) + (let ((end (point-marker))) + (goto-char (point-min)) + (while (re-search-forward rmail-fields-not-to-output end t) + (beginning-of-line) + (delete-region (point) + (progn (forward-line 1) (point))))))))) + ;; Returns t if file FILE is an Rmail file. ;;;###autoload (defun rmail-file-p (file) @@ -254,6 +286,7 @@ The optional fourth argument FROM-GNUS is set when called from GNUS." (set-buffer tembuf) (erase-buffer) (insert-buffer-substring rmailbuf) + (rmail-delete-unwanted-fields t) (insert "\n") (goto-char (point-min)) (if mail-from |