Add section "Parameters for Sending".
[elisp/wanderlust.git] / wl / wl-mime.el
index 6e2f2be..f49c093 100644 (file)
 
 ;;; Code:
 ;;
-
 (require 'mime-view)
 (require 'mime-edit)
 (require 'mime-play)
 (require 'elmo)
+(require 'wl-vars)
 
 (eval-when-compile
   (defalias-maybe 'pgg-decrypt-region 'ignore)
@@ -179,10 +179,12 @@ It calls following-method selected from variable
 (defun wl-draft-preview-attributes-list ()
   (if (listp (car wl-draft-preview-attributes-list))
       (elmo-uniq-list
-       (append (and (wl-message-mail-p)
-                   (cdr (assq 'mail wl-draft-preview-attributes-list)))
-              (and (wl-message-news-p)
-                   (cdr (assq 'news wl-draft-preview-attributes-list)))))
+       (nconc (and (wl-message-mail-p)
+                  (copy-sequence
+                   (cdr (assq 'mail wl-draft-preview-attributes-list))))
+             (and (wl-message-news-p)
+                  (copy-sequence
+                   (cdr (assq 'news wl-draft-preview-attributes-list))))))
     wl-draft-preview-attributes-list))
 
 (defun wl-draft-show-attributes-buffer (attribute-values)
@@ -254,11 +256,32 @@ It calls following-method selected from variable
 (defun wl-draft-attribute-newsgroups ()
   (std11-field-body "Newsgroups"))
 
+(defun wl-draft-nntp-attribute (attribute &optional alternatives)
+  (let ((config (cdr (elmo-string-matched-assoc
+                     (std11-field-body "newsgroups")
+                     wl-nntp-posting-config-alist)))
+       entry)
+    (when (stringp config)
+      (setq config (list (cons 'server config))))
+    (if (setq entry (assq attribute config))
+       ;; maybe nil
+       (cdr entry)
+      (let (value)
+       (while alternatives
+         (if (setq value (symbol-value (car alternatives)))
+             (setq alternatives nil)
+           (setq alternatives (cdr alternatives))))
+       value))))
+
 (defun wl-draft-attribute-nntp-posting-server ()
-  (or wl-nntp-posting-server elmo-nntp-default-server))
+  (wl-draft-nntp-attribute
+   'server
+   '(wl-nntp-posting-server elmo-nntp-default-server)))
 
 (defun wl-draft-attribute-nntp-posting-port ()
-  (or wl-nntp-posting-port elmo-nntp-default-port))
+  (wl-draft-nntp-attribute
+   'point
+   '(wl-nntp-posting-port elmo-nntp-default-port)))
 
 (defun wl-draft-attribute-value (attr)
   (let ((name (symbol-name attr))
@@ -675,7 +698,7 @@ With ARG, ask destination folder."
        (elmo-folder-do-each-message-entity (entity folder)
          (when (string-match
                 (regexp-quote subject-id)
-                (elmo-message-entity-field entity 'subject 'decode))
+                (elmo-message-entity-field entity 'subject))
            (let* ((message
                    ;; request message at the cursor in Subject buffer.
                    (wl-message-request-partial