* wl-folder.el (wl-make-plugged-alist): Add `wl-smtp-posting-port'.
[elisp/wanderlust.git] / wl / wl-folder.el
index 7225042..4e1be53 100644 (file)
@@ -336,22 +336,30 @@ Default HASHTB is `wl-folder-elmo-folder-hashtb'."
           (string= (elmo-folder-name-internal wl-draft-folder-internal)
                    wl-draft-folder))
       wl-draft-folder-internal
-    (setq wl-draft-folder-internal (elmo-make-folder wl-draft-folder))
+    (setq wl-draft-folder-internal (wl-folder-make-elmo-folder
+                                   wl-draft-folder))
     (wl-folder-confirm-existence wl-draft-folder-internal)
     (elmo-folder-open wl-draft-folder-internal 'load-msgdb)
     wl-draft-folder-internal))
 
-(defmacro wl-folder-get-elmo-folder (entity &optional no-cache)
+(defun wl-folder-mime-charset (folder-name)
+  (or (wl-get-assoc-list-value wl-folder-mime-charset-alist folder-name)
+      wl-mime-charset))
+
+(defun wl-folder-make-elmo-folder (folder-name)
+  (elmo-make-folder folder-name nil (wl-folder-mime-charset folder-name)))
+
+(defsubst wl-folder-get-elmo-folder (entity &optional no-cache)
   "Get elmo folder structure from ENTITY."
-  `(if ,no-cache
-       (elmo-make-folder (elmo-string ,entity))
-     (if (string= (elmo-string ,entity) wl-draft-folder)
-        (wl-draft-get-folder)
-       (or (wl-folder-elmo-folder-cache-get ,entity)
-          (let* ((name (elmo-string ,entity))
-                 (folder (elmo-make-folder name)))
-            (wl-folder-elmo-folder-cache-put name folder)
-            folder)))))
+  (let ((name (elmo-string entity)))
+    (if no-cache
+       (wl-folder-make-elmo-folder name)
+      (if (string= name wl-draft-folder)
+         (wl-draft-get-folder)
+       (or (wl-folder-elmo-folder-cache-get name)
+           (let ((folder (wl-folder-make-elmo-folder name)))
+             (wl-folder-elmo-folder-cache-put name folder)
+             folder))))))
 
 (defsubst wl-folder-put-folder-property (beg end id is-group &optional object)
   (put-text-property beg end 'wl-folder-entity-id id object)
@@ -2063,7 +2071,8 @@ Entering Folder mode calls the value of `wl-folder-mode-hook'."
     (when wl-smtp-posting-server
       (elmo-set-plugged wl-plugged
                        wl-smtp-posting-server  ; server
-                       (or (and (boundp 'smtp-service) smtp-service)
+                       (or wl-smtp-posting-port
+                           (and (boundp 'smtp-service) smtp-service)
                            "smtp")     ; port
                        wl-smtp-connection-type
                        nil nil "smtp" add))
@@ -2071,8 +2080,8 @@ Entering Folder mode calls the value of `wl-folder-mode-hook'."
     (when wl-nntp-posting-server
       (elmo-set-plugged wl-plugged
                        wl-nntp-posting-server
-                       wl-nntp-posting-stream-type
                        wl-nntp-posting-port
+                       wl-nntp-posting-stream-type
                        nil nil "nntp" add))
     (run-hooks 'wl-make-plugged-hook)))
 
@@ -2886,19 +2895,16 @@ Call `wl-summary-write-current-folder' with current folder name."
       (kill-buffer bufname))))
 
 (defun wl-folder-create-subr (folder)
-  (if (elmo-folder-creatable-p folder)
-      (if (y-or-n-p (format "Folder %s does not exist, create it? "
-                           (elmo-folder-name-internal folder)))
-         (progn
-           (message "")
-           (setq wl-folder-entity-hashtb
-                 (wl-folder-create-entity-hashtb
-                  (elmo-folder-name-internal folder)
-                  wl-folder-entity-hashtb))
-           (unless (elmo-folder-create folder)
-             (error "Create folder failed")))
-       (error "Folder %s is not created" (elmo-folder-name-internal folder)))
-    (error "Folder %s does not exist" (elmo-folder-name-internal folder))))
+  (let ((name (elmo-folder-name-internal folder)))
+    (unless (elmo-folder-creatable-p folder)
+      (error "Folder %s does not exist" name))
+    (unless (y-or-n-p (format "Folder %s does not exist, create it? " name))
+      (error "Folder %s is not created" name))
+    (message "")
+    (setq wl-folder-entity-hashtb
+         (wl-folder-create-entity-hashtb name wl-folder-entity-hashtb))
+    (unless (elmo-folder-create folder)
+      (error "Create folder failed"))))
 
 (defun wl-folder-confirm-existence (folder &optional force)
   (if force
@@ -3038,7 +3044,8 @@ Call `wl-summary-write-current-folder' with current folder name."
           (mapcar (lambda (x) (list (concat (downcase x) ":")))
                   (append '("last" "first"
                             "from" "subject" "to" "cc" "body"
-                            "since" "before" "tocc")
+                            "since" "before" "tocc"
+                            "larger" "smaller")
                           elmo-msgdb-extra-fields))))
       (if (not flag)
          (try-completion string candidate)