Re: mime-edit の拡張

Hiroya Murata <[email protected]> Tue, 25 Oct 2005 22:38:56 +0900
Newsgroups gmane.mail.emacs.mime.japanese
Message-ID <u1x29solr.wl%[email protected]>
In the message [emacs-mime-ja : No.02002]
   on Tue, 25 Oct 2005 11:13:35 +0900, Hiroya Murata wrote:

> ;; 実体の参照に text-property を使っている関係で, wl-draft-save で
> ;; 添付パートが消えちゃってます. 使ってみようと言う方は注意して下
> ;; さい.

取り敢えず, この問題を解消する為のパッチです.

-- 
Hiroya Murata (村田 浩也) <[email protected]>
PGP fingerprint: 53B6 1B4A 8193 A2D4 1526  BC9E 9AEF 2F6D 249D 5F17
wl-draft.el.patch (application/octet-stream, 2.6 KB)
Index: wl/wl-draft.el
===================================================================
RCS file: /cvs/root/wanderlust/wl/wl-draft.el,v
retrieving revision 1.254
diff -u -r1.254 wl-draft.el
--- wl/wl-draft.el	16 Mar 2005 09:10:22 -0000	1.254
+++ wl/wl-draft.el	25 Oct 2005 13:37:13 -0000
@@ -66,6 +66,7 @@
 (defvar wl-draft-config-exec-flag t)
 (defvar wl-draft-buffer-cur-summary-buffer nil)
 (defvar wl-draft-clone-local-variable-regexp "^\\(wl\\|mime\\)")
+(defvar wl-draft-ignore-clone-variables '(mime-edit-attached-entity-buffers))
 (defvar wl-draft-sendlog-filename "sendlog")
 (defvar wl-draft-queue-save-filename "qinfo")
 (defvar wl-draft-config-save-filename "config")
@@ -575,7 +576,7 @@
 	body-beg)
     (set-buffer tmp-buf)
     (erase-buffer)
-    (insert string)
+    (insert (string-to-multibyte string))
     (setq to (std11-field-body "To"))
     (setq to (and to
 		  (eword-decode-string
@@ -1263,15 +1264,14 @@
       (wl-draft-send kill-when-done mes-string))))
 
 (defun wl-draft-clone-local-variables ()
-  (let ((locals (buffer-local-variables))
-	result)
-    (while locals
-      (when (and (consp (car locals))
-		 (car (car locals))
+  (let (symbol result)
+    (dolist (local (buffer-local-variables))
+      (when (and (consp local)
+		 (setq symbol (car local))
+		 (not (memq symbol wl-draft-ignore-clone-variables))
 		 (string-match wl-draft-clone-local-variable-regexp
-			       (symbol-name (car (car locals)))))
-	(wl-append result (list (car (car locals)))))
-      (setq locals (cdr locals)))
+			       (symbol-name symbol)))
+	(setq result (cons symbol result))))
     result))
 
 (defcustom wl-draft-send-confirm-with-preview t
@@ -1325,7 +1325,8 @@
   ;; Don't call this explicitly.
   ;; Added to 'wl-draft-send-hook (by teranisi)
   ;; (wl-draft-config-exec)
-  (run-hooks 'wl-draft-send-hook)
+  (let ((inhibit-read-only t))
+    (run-hooks 'wl-draft-send-hook))
   (when (or (not wl-interactive-send)
 	    (wl-draft-send-confirm))
     (let ((send-mail-function 'wl-draft-raw-send)
@@ -1428,7 +1429,7 @@
   (if (buffer-modified-p)
       (progn
 	(message "Saving...")
-	(let ((msg (buffer-substring-no-properties (point-min) (point-max)))
+	(let ((draft-buffer (current-buffer))
 	      next-number)
 	  (when wl-draft-buffer-message-number
 	    (elmo-folder-delete-messages (wl-draft-get-folder)
@@ -1438,7 +1439,7 @@
 	  (elmo-folder-check (wl-draft-get-folder))
 	  ;; If no header separator, insert it.
 	  (with-temp-buffer
-	    (insert msg)
+	    (insert-buffer-substring draft-buffer)
 	    (goto-char (point-min))
 	    (unless (re-search-forward
 		     (concat "^" (regexp-quote mail-header-separator) "$")