emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp/mail pmailout.el


From: Chong Yidong
Subject: [Emacs-diffs] emacs/lisp/mail pmailout.el
Date: Fri, 12 Dec 2008 15:26:28 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      08/12/12 15:26:28

Modified files:
        lisp/mail      : pmailout.el 

Log message:
        (pmail-output): Rewrite to handle mbox format.
        (pmail-output-to-babyl-file): Renamed from pmail-output-to-pmail-file.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/mail/pmailout.el?cvsroot=emacs&r1=1.7&r2=1.8

Patches:
Index: pmailout.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/mail/pmailout.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- pmailout.el 10 Dec 2008 20:56:32 -0000      1.7
+++ pmailout.el 12 Dec 2008 15:26:28 -0000      1.8
@@ -43,7 +43,7 @@
   :group 'pmail-output)
 
 (defun pmail-output-read-pmail-file-name ()
-  "Read the file name to use for `pmail-output-to-pmail-file'.
+  "Read the file name to use for `pmail-output-to-babyl-file'.
 Set `pmail-default-pmail-file' to this name as well as returning it."
   (let ((default-file
          (let (answer tail)
@@ -112,7 +112,7 @@
 ;;; There are functions elsewhere in Emacs that use this function;
 ;;; look at them before you change the calling method.
 ;;;###autoload
-(defun pmail-output-to-pmail-file (file-name &optional count stay)
+(defun pmail-output-to-babyl-file (file-name &optional count stay)
   "Append the current message to a Babyl 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
@@ -170,7 +170,7 @@
              ;; shift the place in the buffer where the visible text starts.
              (if (pmail-message-deleted-p pmail-current-message)
                  (progn (setq redelete t)
-                        (pmail-set-attribute "deleted" nil)))
+                        (pmail-set-attribute pmail-deleted-attr-index nil)))
              (save-restriction
                (widen)
                ;; Decide whether to append to a file or to an Emacs buffer.
@@ -228,8 +228,8 @@
                          (goto-char (point-max))
                          (insert-buffer-substring cur beg end)
                          (pmail-delete-unwanted-fields)))))))
-             (pmail-set-attribute "filed" t))
-         (if redelete (pmail-set-attribute "deleted" t))))
+             (pmail-set-attribute pmail-filed-attr-index t))
+         (if redelete (pmail-set-attribute pmail-deleted-attr-index t))))
       (setq count (1- count))
       (if pmail-delete-after-output
          (unless
@@ -242,6 +242,8 @@
                (if (not stay) (pmail-next-undeleted-message 1))
              (setq count 0)))))))
 
+(defalias 'pmail-output-to-pmail-file 'pmail-output-to-babyl-file)
+
 ;;;###autoload
 (defcustom pmail-fields-not-to-output nil
   "*Regexp describing fields to exclude when outputting a message to a file."
@@ -295,20 +297,12 @@
                          (and pmail-default-file
                               (file-name-directory pmail-default-file))))
   (if (and (file-readable-p file-name) (mail-file-babyl-p file-name))
-      (pmail-output-to-pmail-file file-name count)
+      (pmail-output-to-babyl-file file-name count)
     (set-buffer pmail-buffer)
     (let ((orig-count count)
-         (pmailbuf (current-buffer))
+         (pmailbuf pmail-buffer)
          (case-fold-search t)
          (tembuf (get-buffer-create " pmail-output"))
-         (original-headers-p
-          (and (not from-gnus)
-               (save-excursion
-                 (save-restriction
-                   (narrow-to-region (pmail-msgbeg pmail-current-message) 
(point-max))
-                   (goto-char (point-min))
-                   (forward-line 1)
-                   (= (following-char) ?0)))))
          header-beginning
          mail-from mime-version content-type)
       (while (> count 0)
@@ -317,10 +311,11 @@
        (or from-gnus
            (save-excursion
              (save-restriction
-               (widen)
-               (goto-char (pmail-msgbeg pmail-current-message))
+               (goto-char (if pmail-buffers-swapped-p
+                              (point-min)
+                            (pmail-msgbeg pmail-current-message)))
                (setq header-beginning (point))
-               (search-forward "\n*** EOOH ***\n")
+               (search-forward "\n\n" nil 'move)
                (narrow-to-region header-beginning (point))
                (setq mail-from (mail-fetch-field "Mail-From"))
                (unless pmail-enable-mime
@@ -330,18 +325,19 @@
          (set-buffer tembuf)
          (erase-buffer)
          (insert-buffer-substring pmailbuf)
+         (save-excursion
+           (goto-char (min (point-min) (- (point-max) 2)))
+           (unless (looking-at "\n\n")
+             (goto-char (point-max))
+             (insert "\n\n")))
          (when pmail-enable-mime
-           (if original-headers-p
-               (delete-region (goto-char (point-min))
-                              (if (search-forward "\n*** EOOH ***\n")
-                                  (match-end 0)))
              (goto-char (point-min))
              (forward-line 2)
-             (delete-region (point-min)(point))
-             (search-forward "\n*** EOOH ***\n")
+           (delete-region (point-min) (point))
+           (search-forward "\n\n")
              (delete-region (match-beginning 0)
                             (if (search-forward "\n\n")
-                                (1- (match-end 0)))))
+                              (1- (match-end 0))))
            (setq buffer-file-coding-system (or pmail-file-coding-system
                                                'raw-text)))
          (pmail-delete-unwanted-fields t)
@@ -350,10 +346,18 @@
          (if mail-from
              (insert mail-from "\n")
            (insert "From "
-                   (mail-strip-quoted-names (or (mail-fetch-field "from")
+                   (mail-strip-quoted-names
+                    (save-excursion
+                      (save-restriction
+                        (goto-char (point-min))
+                        (narrow-to-region
+                         (point)
+                         (or (search-forward "\n\n" nil)
+                             (point-max)))
+                        (or (mail-fetch-field "from")
                                                 (mail-fetch-field 
"really-from")
                                                 (mail-fetch-field "sender")
-                                                "unknown"))
+                            "unknown"))))
                    " " (current-time-string) "\n"))
          (when mime-version
            (insert "MIME-Version: " mime-version)
@@ -371,7 +375,7 @@
                        (if noattribute 'nomsg)))
        (or noattribute
            (if (equal major-mode 'pmail-mode)
-               (pmail-set-attribute "filed" t)))
+               (pmail-set-attribute pmail-filed-attr-index t)))
        (setq count (1- count))
        (or from-gnus
            (let ((next-message-p
@@ -380,8 +384,6 @@
                     (if (> count 0)
                         (pmail-next-undeleted-message 1))))
                  (num-appended (- orig-count count)))
-             (if (and next-message-p original-headers-p)
-                 (pmail-toggle-header))
              (if (and (> count 0) (not next-message-p))
                  (progn
                    (error "%s"
@@ -418,7 +420,7 @@
         (error "Operation aborted"))
     (write-region (point) (point-max) file-name)
     (if (equal major-mode 'pmail-mode)
-       (pmail-set-attribute "stored" t)))
+       (pmail-set-attribute pmail-stored-attr-index t)))
   (if pmail-delete-after-output
       (pmail-delete-forward)))
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]