X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=wl%2Fwl-draft.el;h=a2dd943ded34a7c360a2ac2bc1045b56ba07944a;hb=4dee2f09b7c63b19e24942f13b2917addb2a6501;hp=0515122e1bdc315e6466625f008e18be1a763ec5;hpb=f84adcfe54f0cd83aad75f770d364f66f7c01dc7;p=elisp%2Fwanderlust.git diff --git a/wl/wl-draft.el b/wl/wl-draft.el index 0515122..a2dd943 100644 --- a/wl/wl-draft.el +++ b/wl/wl-draft.el @@ -30,7 +30,7 @@ ;;; Code: ;; - +(require 'elmo) (require 'sendmail) (require 'wl-template) (require 'emu) @@ -152,15 +152,10 @@ e.g. "\n" smtp-end-of-line)) smtp-sasl-user-name smtp-sasl-properties sasl-read-passphrase) - (if (and (string= (car smtp-sasl-mechanisms) "DIGEST-MD5") - ;; sendmail bug? - (string-match "^\\([^@]*\\)@\\([^@]*\\)" - wl-smtp-posting-user)) - (setq smtp-sasl-user-name (match-string 1 wl-smtp-posting-user) - smtp-sasl-properties (list 'realm - (match-string 2 wl-smtp-posting-user))) - (setq smtp-sasl-user-name wl-smtp-posting-user - smtp-sasl-properties nil)) + (setq smtp-sasl-user-name wl-smtp-posting-user + smtp-sasl-properties (when wl-smtp-authenticate-realm + (list 'realm + wl-smtp-authenticate-realm))) (setq sasl-read-passphrase (function (lambda (prompt) @@ -278,8 +273,11 @@ e.g. (let (references parent-folder subject) (with-current-buffer summary-buf (setq parent-folder (wl-summary-buffer-folder-name))) - (setq subject (wl-draft-forward-make-subject original-subject)) + (let ((decoder (mime-find-field-decoder 'Subject 'plain))) + (setq subject (if (and original-subject decoder) + (funcall decoder original-subject) original-subject))) (with-current-buffer (wl-message-get-original-buffer) + (setq subject (wl-draft-forward-make-subject subject)) (setq references (nconc (std11-field-bodies '("References" "In-Reply-To")) (list (std11-field-body "Message-Id")))) @@ -380,9 +378,8 @@ Reply to author if WITH-ARG is non-nil." (with-temp-buffer ; to keep raw buffer unibyte. (set-buffer-multibyte default-enable-multibyte-characters) (setq decoder (mime-find-field-decoder 'Subject 'plain)) - (setq subject (wl-draft-reply-make-subject - (if (and subject decoder) - (funcall decoder subject) subject))) + (setq subject (if (and subject decoder) + (funcall decoder subject) subject)) (setq to-alist (mapcar (lambda (addr) @@ -397,6 +394,7 @@ Reply to author if WITH-ARG is non-nil." (cons (nth 1 (std11-extract-address-components addr)) (if decoder (funcall decoder addr) addr))) cc))) + (setq subject (wl-draft-reply-make-subject subject)) (setq in-reply-to (std11-field-body "Message-Id")) (setq references (nconc (std11-field-bodies '("References" "In-Reply-To")) @@ -676,11 +674,12 @@ Reply to author if WITH-ARG is non-nil." wl-draft-cite-function) (unwind-protect (progn - (elmo-message-fetch (wl-folder-get-elmo-folder fld) - number - ;; No cache. - (elmo-make-fetch-strategy 'entire) - nil mail-reply-buffer) + (with-current-buffer mail-reply-buffer + (erase-buffer) + (elmo-message-fetch (wl-folder-get-elmo-folder fld) + number + ;; No cache. + (elmo-make-fetch-strategy 'entire))) (wl-draft-yank-from-mail-reply-buffer nil)) (kill-buffer mail-reply-buffer)))) @@ -1316,7 +1315,8 @@ This variable is valid when `wl-interactive-send' has non-nil value." (t (throw 'done nil))))))) (quit nil)) - (when wl-draft-send-confirm-with-preview + (when (and wl-draft-send-confirm-with-preview + (eq major-mode 'mime-view-mode)) (wl-mime-quit-preview))))) (defun wl-draft-send (&optional kill-when-done mes-string) @@ -1363,7 +1363,8 @@ If KILL-WHEN-DONE is non-nil, current draft buffer is killed" ;; If flag is set after send-function, the current mailbox ;; might changed by Fcc. ;; It causes a huge loss in the IMAP folder. - (when (and parent-flag parent-number parent-folder) + (when (and parent-flag parent-number + (not (eq (length parent-folder) 0))) (wl-folder-set-persistent-mark parent-folder parent-number parent-flag)) (funcall wl-draft-send-function editing-buffer kill-when-done) @@ -1590,14 +1591,8 @@ If KILL-WHEN-DONE is non-nil, current draft buffer is killed" (goto-char (point-max)) (insert-buffer-substring send-mail-buffer header-end) (let ((id (std11-field-body "Message-ID")) - (elmo-enable-disconnected-operation t) - cache-saved) + (elmo-enable-disconnected-operation t)) (while fcc-list - (unless (or cache-saved - (elmo-folder-plugged-p - (wl-folder-get-elmo-folder (car fcc-list)))) - (elmo-file-cache-save id nil) ;; for disconnected operation - (setq cache-saved t)) (if (elmo-folder-append-buffer (wl-folder-get-elmo-folder (eword-decode-string (car fcc-list))) @@ -1650,7 +1645,7 @@ If KILL-WHEN-DONE is non-nil, current draft buffer is killed" (let (wl-demo) (wl-init)) ; returns immediately if already initialized. - + (wl-set-save-drafts) (let (buffer header-alist-internal) (setq buffer (wl-draft-create-buffer parent-folder)) (unless (cdr (assq 'From header-alist)) @@ -1704,8 +1699,7 @@ If KILL-WHEN-DONE is non-nil, current draft buffer is killed" (eq this-command 'wl-summary-forward) (eq this-command 'wl-summary-target-mark-forward) (eq this-command 'wl-summary-target-mark-reply-with-citation))) - (buffer (generate-new-buffer "*draft*")) ; Just for initial name. - change-major-mode-hook) + (buffer (generate-new-buffer "*draft*"))) ; Just for initial name. (set-buffer buffer) ;; switch-buffer according to draft buffer style. (if wl-draft-use-frame @@ -1741,7 +1735,8 @@ If KILL-WHEN-DONE is non-nil, current draft buffer is killed" (funcall wl-draft-buffer-style buffer) (error "Invalid value for wl-draft-buffer-style")))))) (auto-save-mode -1) - (wl-draft-mode) + (let (change-major-mode-hook) + (wl-draft-mode)) (set-buffer-multibyte t) ; draft buffer is always multibyte. (make-local-variable 'truncate-partial-width-windows) (setq truncate-partial-width-windows nil) @@ -1989,8 +1984,7 @@ If KILL-WHEN-DONE is non-nil, current draft buffer is killed" (switch-to-buffer-other-frame buffer) (switch-to-buffer buffer)) (set-buffer buffer) - (elmo-message-fetch draft-folder number (elmo-make-fetch-strategy 'entire) - nil (current-buffer)) + (elmo-message-fetch draft-folder number (elmo-make-fetch-strategy 'entire)) (elmo-delete-cr-buffer) (let ((mime-edit-again-ignored-field-regexp "^\\(Content-.*\\|Mime-Version\\):")) @@ -2368,8 +2362,7 @@ Automatically applied in draft sending time." (wl-draft-queue-info-operation (car msgs) 'load) (elmo-message-fetch queue-folder (car msgs) - (elmo-make-fetch-strategy 'entire) - nil (current-buffer)) + (elmo-make-fetch-strategy 'entire)) (condition-case err (setq failure (funcall wl-draft-queue-flush-send-function