X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=wl%2Fwl-mime.el;h=18c3034f45a51787118047105f2c1868b638147b;hb=709366cf00291239e4287abb0b2105ad47fdbf59;hp=ff97691d3f149894cb36a310cd63be4471c7abc9;hpb=5f8df269dd48534955d4dd2ddd7e1f7902011d23;p=elisp%2Fwanderlust.git diff --git a/wl/wl-mime.el b/wl/wl-mime.el index ff97691..18c3034 100644 --- a/wl/wl-mime.el +++ b/wl/wl-mime.el @@ -1,4 +1,4 @@ -;;; wl-mime.el -- SEMI implementations of MIME processing on Wanderlust. +;;; wl-mime.el --- SEMI implementations of MIME processing on Wanderlust. ;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi @@ -24,10 +24,10 @@ ;; ;;; Commentary: -;; +;; ;;; Code: -;; +;; (require 'mime-view) (require 'mime-edit) @@ -69,18 +69,28 @@ By setting following-method as yank-content." (defalias 'wl-draft-enclose-digest-region 'mime-edit-enclose-digest-region) (defun wl-draft-preview-message () - "" + "Preview editing message." (interactive) (let* (recipients-message + (current-point (point)) (config-exec-flag wl-draft-config-exec-flag) + (parent-folder wl-draft-parent-folder) (mime-display-header-hook 'wl-highlight-headers) + (mime-header-encode-method-alist + (append + '((wl-draft-eword-encode-address-list + . (To Cc Bcc Resent-To Resent-Cc Bcc Resent-Bcc))) + (if (boundp 'mime-header-encode-method-alist) + (symbol-value 'mime-header-encode-method-alist)))) mime-view-ignored-field-list ; all header. (mime-edit-translate-buffer-hook (append (list (function (lambda () - (let ((wl-draft-config-exec-flag config-exec-flag)) + (let ((wl-draft-config-exec-flag config-exec-flag) + (wl-draft-parent-folder parent-folder)) + (goto-char current-point) (run-hooks 'wl-draft-send-hook) (setq recipients-message (condition-case err @@ -140,19 +150,19 @@ By setting following-method as yank-content." (defun wl-message-request-partial (folder number) (elmo-set-work-buf (elmo-message-fetch (wl-folder-get-elmo-folder folder) - number + number (elmo-make-fetch-strategy 'entire) nil (current-buffer) 'unread) (mime-parse-buffer nil))) -(defalias 'wl-message-read 'mime-preview-scroll-up-entity) -(defalias 'wl-message-next-content 'mime-preview-move-to-next) -(defalias 'wl-message-prev-content 'mime-preview-move-to-previous) -(defalias 'wl-message-play-content 'mime-preview-play-current-entity) -(defalias 'wl-message-extract-content 'mime-preview-extract-current-entity) -(defalias 'wl-message-quit 'mime-preview-quit) +(defalias 'wl-message-read 'mime-preview-scroll-up-entity) +(defalias 'wl-message-next-content 'mime-preview-move-to-next) +(defalias 'wl-message-prev-content 'mime-preview-move-to-previous) +(defalias 'wl-message-play-content 'mime-preview-play-current-entity) +(defalias 'wl-message-extract-content 'mime-preview-extract-current-entity) +(defalias 'wl-message-quit 'mime-preview-quit) (defalias 'wl-message-button-dispatcher-internal 'mime-button-dispatcher) @@ -169,7 +179,7 @@ By setting following-method as yank-content." number)))) ((and (eq (cdr (assq 'type content-type)) 'message) (eq (cdr (assq 'subtype content-type)) 'rfc822)) - (message (format "Bursting...%s" (setq number (+ 1 number)))) + (message "Bursting...%s" (setq number (+ 1 number))) (setq entity (car (mime-entity-children message-entity))) (with-temp-buffer @@ -203,23 +213,24 @@ By setting following-method as yank-content." (wl-summary-sync-update))) ;; internal variable. -(defvar wl-mime-save-dir nil "Last saved directory.") +(defvar wl-mime-save-directory nil "Last saved directory.") ;;; Yet another save method. (defun wl-mime-save-content (entity situation) (let ((filename (read-file-name "Save to file: " (expand-file-name (or (mime-entity-safe-filename entity) ".") - (or wl-mime-save-dir - wl-tmp-dir))))) + (or wl-mime-save-directory + wl-temporary-file-directory))))) (while (file-directory-p filename) (setq filename (read-file-name "Please set filename (not directory): " filename))) - (if (file-exists-p filename) - (or (yes-or-no-p (format "File %s exists. Save anyway? " filename)) - (error "Not saved"))) - (setq wl-mime-save-dir (file-name-directory filename)) - (mime-write-entity-content entity filename))) + (if (and (file-exists-p filename) + (not (yes-or-no-p (format "File %s exists. Save anyway? " + filename)))) + (message "Not saved") + (setq wl-mime-save-directory (file-name-directory filename)) + (mime-write-entity-content entity filename)))) ;;; Yet another combine method. (defun wl-mime-combine-message/partial-pieces (entity situation) @@ -298,6 +309,14 @@ By setting following-method as yank-content." (elmo-mime-insert-header entity situation) (wl-highlight-headers))) +(defun wl-mime-decrypt-application/pgp-encrypted (entity situation) + (let ((summary-buffer wl-message-buffer-cur-summary-buffer) + (original-buffer wl-message-buffer-original-buffer)) + (mime-decrypt-application/pgp-encrypted entity situation) + (setq wl-message-buffer-cur-summary-buffer summary-buffer) + (setq wl-message-buffer-original-buffer original-buffer))) + + ;;; Setup methods. (defun wl-mime-setup () (set-alist 'mime-preview-quitting-method-alist @@ -329,6 +348,12 @@ By setting following-method as yank-content." (ctree-set-calist-strictly 'mime-acting-condition + '((type . application) (subtype . pgp-encrypted) + (method . wl-mime-decrypt-application/pgp-encrypted) + (major-mode . wl-original-message-mode))) + + (ctree-set-calist-strictly + 'mime-acting-condition '((mode . "extract") (major-mode . wl-original-message-mode) (method . wl-mime-save-content)))