mime-view-ignored-field-list)
(mime-view-mode nil nil nil inbuf outbuf)))
-(defun wl-message-delete-mime-out-buf ()
- (let (mime-out-buf mime-out-win)
- (if (setq mime-out-buf (get-buffer mime-echo-buffer-name))
- (if (setq mime-out-win (get-buffer-window mime-out-buf))
- (delete-window mime-out-win)))))
+(defun wl-message-delete-popup-windows ()
+ (dolist (buffer wl-message-popup-buffers)
+ (when (or (stringp buffer)
+ (and (symbolp buffer)
+ (boundp buffer)
+ (setq buffer (symbol-value buffer))))
+ (let ((window (get-buffer-window buffer)))
+ (when window
+ (delete-window window))))))
(defun wl-message-request-partial (folder number)
(elmo-set-work-buf
(elmo-with-progress-display (epg-decript nil reporter)
"Decrypting"
(epg-context-set-progress-callback context
- #'wl-epg-progress-callback
- reporter)
+ (cons #'wl-epg-progress-callback
+ reporter))
(insert (prog1
(decode-coding-string
(epg-decrypt-string
(elmo-with-progress-display (epg-verify nil reporter)
"Verifying"
(epg-context-set-progress-callback context
- #'wl-epg-progress-callback
- reporter)
+ (cons #'wl-epg-progress-callback
+ reporter))
(epg-verify-string
context
(encode-coding-string
(setq wl-mime-save-directory (file-name-directory filename))
(mime-write-entity-content entity filename))))
+(defun wl-summary-extract-attachments-1 (message-entity directory number)
+ ;; returns new number.
+ (let (children filename)
+ (cond
+ ((setq children (mime-entity-children message-entity))
+ (dolist (entity children)
+ (setq number
+ (wl-summary-extract-attachments-1 entity directory number))))
+ ((and (eq (mime-content-disposition-type
+ (mime-entity-content-disposition message-entity))
+ 'attachment)
+ (setq filename (mime-entity-safe-filename message-entity)))
+ (let ((full (expand-file-name filename directory)))
+ (when (or (not (file-exists-p full))
+ (yes-or-no-p
+ (format "File %s exists. Save anyway? " filename)))
+ (message "Extracting...%s" (setq number (+ 1 number)))
+ (mime-write-entity-content message-entity full)))))
+ number))
+
+(defun wl-summary-extract-attachments (directory)
+ "Extract attachment parts in MIME format into the DIRECTORY."
+ (interactive
+ (let* ((default (or wl-mime-save-directory
+ wl-temporary-file-directory))
+ (directory (read-directory-name "Extract to " default default t)))
+ (list (if (> (length directory) 0) directory default))))
+ (unless (and (file-writable-p directory)
+ (file-directory-p directory))
+ (error "%s is not writable" directory))
+ (save-excursion
+ (wl-summary-set-message-buffer-or-redisplay)
+ (let ((entity (get-text-property (point-min) 'mime-view-entity)))
+ (when entity
+ (message "Extracting...")
+ (wl-summary-extract-attachments-1 entity directory 0)
+ (message "Extracting...done")))))
+
;;; Yet another combine method.
(defun wl-mime-combine-message/partial-pieces (entity situation)
"Internal method for wl to combine message/partial messages automatically."
(elmo-message-visible-field-list wl-message-visible-field-list)
(elmo-message-sorted-field-list wl-message-sort-field-list))
(elmo-mime-insert-header entity situation)
+ (goto-char (point-min))
+ (delete-matching-lines "^$")
(wl-highlight-headers)))
(defun wl-mime-decrypt-application/pgp-encrypted (entity situation)
'wl-original-message-mode 'wl-message-exit)
(set-alist 'mime-preview-over-to-next-method-alist
'wl-original-message-mode 'wl-message-exit)
- (add-hook 'wl-summary-redisplay-hook 'wl-message-delete-mime-out-buf)
- (add-hook 'wl-message-exit-hook 'wl-message-delete-mime-out-buf)
+ (add-hook 'wl-summary-toggle-disp-off-hook 'wl-message-delete-popup-windows)
+ (add-hook 'wl-summary-redisplay-hook 'wl-message-delete-popup-windows)
+ (add-hook 'wl-message-exit-hook 'wl-message-delete-popup-windows)
(ctree-set-calist-strictly
'mime-preview-condition