[mew-int 00852] Re: Saving attachment mail (one more)
Tatsuya Kinoshita
tats at example.com
Sat Apr 27 02:39:50 JST 2002
In message [mew-int 00851], on Fri, 26 Apr 2002,
Arnaud Vandyck <arnaud.vandyck at example.com> wrote:
> 2) On a multipart/Rfc822 part-x, Mew extracts _all_ the parts ('B'
> or 'C-u B'). (what is the difference between 'B' and 'C-u B'?)
> Last, I did apply the patch by hand (patch command fails
> (mew-2.2-3.deb)) and look at the code: I did not understand a thing!
I guess that your Emacs used *.elc instead of *.el.
Anyway, I've created the patch for Mew 2.2 now. Will you try this?
P.S.
It's easy to create a localized Debian package.
# apt-get install fakeroot
# apt-get build-dep mew
$ apt-get source mew
$ cd mew-2.2
$ patch -p1 < ../mew-2.2+mew-int-00849.diff
$ dch -v 1:2.2-3+local.1
$ debuild -rfakeroot -uc -us
$ cd ..
# dpkg -i mew_2.2-3+local.1_all.deb mew-bin_2.2-3+local.1_i386.deb
(`#' is a root's prompt. I suggest sudo or su.)
--
Tatsuya Kinoshita
-------------- next part --------------
This patch is written by Tatsuya Kinoshita. Copyright is disclaimed.
diff -ur mew-2.2.orig/mew-edit.el mew-2.2/mew-edit.el
--- mew-2.2.orig/mew-edit.el Thu Feb 21 11:58:40 2002
+++ mew-2.2/mew-edit.el Sat Apr 27 01:57:13 2002
@@ -378,51 +378,64 @@
;;; Burst
;;;
-(defun mew-summary-burst-body (fld msg folder)
+(defun mew-summary-burst-body (fld msg folder &optional num)
(save-excursion
(let ((buf (generate-new-buffer mew-buffer-prefix))
- ret errmsg entry multi mstr m n len)
+ ret errmsg mstr m)
(set-buffer buf)
(mew-erase-buffer)
(mew-insert-message fld msg mew-cs-text-for-read nil)
(mew-dinfo-set 1 nil nil nil) ;; xxx
(mew-decode-for-edit)
- (setq multi (mew-syntax-get-part mew-decode-syntax))
(cond
- ((not (mew-syntax-multipart-p multi))
+ ((not (mew-syntax-multipart-p (mew-syntax-get-part mew-decode-syntax)))
(message "Cannot burst"))
((not (mew-folder-check folder))
(setq errmsg (format "%s is wrong. Nothing was processed" folder)))
((not (setq mstr (mew-folder-new-message folder 'num-only)))
(setq errmsg (format "Error in %s. Nothing was processed" folder)))
(t
- (setq m (string-to-int mstr))
- (setq len (- (length multi) mew-syntax-magic))
- (setq n 1)
- (while (<= n len)
- (setq entry (mew-syntax-get-entry mew-decode-syntax (list n)))
- (if (not
- (string=
- (mew-syntax-get-value (mew-syntax-get-ct entry) 'cap)
- mew-ct-msg))
- () ;; return value
- (mew-frwlet
- mew-cs-dummy mew-cs-text-for-write
- (write-region
- (mew-syntax-get-begin entry)
- ;; This is RFC 822 message.
- ;; So, body is a single text/plain.
- (mew-syntax-get-end (mew-syntax-get-part entry))
- (mew-expand-folder folder (int-to-string m))
- nil 'no-msg))
- (setq m (1+ m)))
- (setq n (1+ n)))
- (mew-touch-folder folder)
- (setq ret (list mstr (int-to-string (1- m))))))
+ (setq m (mew-summary-burst-part (mew-syntax-get-part mew-decode-syntax)
+ folder (string-to-int mstr) num))
+ (if (= m (string-to-int mstr))
+ (message "Nothing was processed")
+ (mew-touch-folder folder)
+ (setq ret (list mstr (int-to-string (1- m)))))))
(mew-remove-buffer buf)
(if errmsg (error errmsg))
ret)))
+(defun mew-summary-burst-part (part folder newmsg &optional num)
+ (let (n len nums entry)
+ (setq n 1)
+ (cond
+ (num
+ (setq nums (mew-syntax-number-to-nums num))
+ (setq len 1))
+ (t
+ (setq nums (list n))
+ (setq len (- (length part) mew-syntax-magic))))
+ (while (<= n len)
+ (setq entry (mew-syntax-get-entry part nums))
+ (cond
+ ((mew-syntax-multipart-p entry)
+ (setq newmsg (mew-summary-burst-part entry folder newmsg)))
+ ((string= (mew-syntax-get-value (mew-syntax-get-ct entry) 'cap)
+ mew-ct-msg)
+ (mew-frwlet
+ mew-cs-dummy mew-cs-text-for-write
+ (write-region
+ (mew-syntax-get-begin entry)
+ ;; This is RFC 822 message.
+ ;; So, body is a single text/plain.
+ (mew-syntax-get-end (mew-syntax-get-part entry))
+ (mew-expand-folder folder (int-to-string newmsg))
+ nil 'no-msg))
+ (setq newmsg (1+ newmsg))))
+ (setq n (1+ n))
+ (setq nums (list n)))
+ newmsg))
+
(defvar mew-burst-last-folder nil)
(defun mew-input-burst-folder ()
@@ -433,16 +446,18 @@
(setq mew-burst-last-folder (mew-input-folder default))
mew-burst-last-folder))
-(defun mew-summary-burst ()
- "De-capsulate messages embedded in this message."
- (interactive)
+(defun mew-summary-burst (&optional arg)
+ "De-capsulate messages embedded in this message.
+If called with '\\[universal-argument]', the current part is de-capsulated."
+ (interactive "P")
(mew-summary-msg-or-part
(let ((fld (mew-summary-folder-name))
(msg (mew-summary-message-number2))
(folder (mew-input-burst-folder))
+ (num (if arg (mew-syntax-number)))
ret)
(message "Bursting...")
- (setq ret (mew-summary-burst-body fld msg folder))
+ (setq ret (mew-summary-burst-body fld msg folder num))
(when ret
(message "Bursting...done")
(if (y-or-n-p (format "Go to %s? " folder))
More information about the Mew-int
mailing list