* wl-vars.el (wl-summary-default-view-alist): Fix docstring
[elisp/wanderlust.git] / wl / wl-addrmgr.el
index bcc1557..9bc6ee8 100644 (file)
@@ -1,4 +1,4 @@
-;;; wl-addrmgr.el -- Address manager for Wanderlust.
+;;; wl-addrmgr.el --- Address manager for Wanderlust.
 
 ;; Copyright (C) 2001 Kitamoto Tsuyoshi <tsuyoshi.kitamoto@city.sapporo.jp>
 ;; Copyright (C) 2001 Yuuichi Teranishi <teranisi@gohome.org>
   "Major mode for Wanderlust address management.
 See info under Wanderlust for full documentation.
 
-\\{wl-addrmgr-mode}"
+\\{wl-addrmgr-mode-map}"
   (kill-all-local-variables)
   (setq mode-name "Address"
        major-mode 'wl-addrmgr-mode)
@@ -362,13 +362,16 @@ Return nil if no ADDRESS exists."
       (forward-char 4)))))
 
 (defun wl-addrmgr-quit-yes ()
-  (if (and wl-addrmgr-draft-buffer
-          (buffer-live-p wl-addrmgr-draft-buffer)
-          (null (get-buffer-window wl-addrmgr-draft-buffer)))
-      (switch-to-buffer wl-addrmgr-draft-buffer)
-    (unless (one-window-p)
-      (delete-window)))
-  (kill-buffer wl-addrmgr-buffer-name))
+  (let ((draft-buffer wl-addrmgr-draft-buffer))
+    (if (and draft-buffer
+            (buffer-live-p draft-buffer)
+            (null (get-buffer-window draft-buffer 'visible)))
+       (switch-to-buffer draft-buffer)
+      (unless (one-window-p)
+       (delete-window)))
+    (kill-buffer wl-addrmgr-buffer-name)
+    (if (and draft-buffer (not (one-window-p)))
+       (switch-to-buffer-other-window draft-buffer))))
 
 (defun wl-addrmgr-quit ()
   "Exit from electric reference mode without inserting reference."
@@ -577,23 +580,35 @@ Return nil if no ADDRESS exists."
        (setq realname (nth 2 (wl-addrmgr-address-entry)))
        (cond
         ((string= mark "To:")
-         (setq to-list (cons (if full (concat
-                                       (wl-address-quote-specials realname)
-                                       " <" addr">")
-                               addr)
-                             to-list)))
+         (setq to-list (cons
+                        (if (and full
+                                 (not (or (string= realname "")
+                                          (string-match ".*:.*;$" addr))))
+                            (concat
+                             (wl-address-quote-specials realname)
+                             " <" addr">")
+                          addr)
+                        to-list)))
         ((string= mark "Cc:")
-         (setq cc-list (cons (if full (concat
-                                       (wl-address-quote-specials realname)
-                                       " <" addr">")
-                               addr)
-                             cc-list)))
+         (setq cc-list (cons
+                        (if (and full
+                                 (not (or (string= realname "")
+                                          (string-match ".*:.*;$" addr))))
+                            (concat
+                             (wl-address-quote-specials realname)
+                             " <" addr">")
+                          addr)
+                        cc-list)))
         ((string= mark "Bcc:")
-         (setq bcc-list (cons (if full (concat
-                                        (wl-address-quote-specials realname)
-                                        " <" addr">")
-                                addr)
-                              bcc-list)))))
+         (setq bcc-list (cons
+                         (if (and full
+                                  (not (or (string= realname "")
+                                           (string-match ".*:.*;$" addr))))
+                             (concat
+                              (wl-address-quote-specials realname)
+                              " <" addr">")
+                           addr)
+                         bcc-list)))))
       (list to-list cc-list bcc-list))))
 
 (defun wl-addrmgr-apply-exec (rcpt)
@@ -607,8 +622,8 @@ Return nil if no ADDRESS exists."
     (when (or (null wl-addrmgr-draft-buffer)
              (not (buffer-live-p wl-addrmgr-draft-buffer)))
       (setq wl-addrmgr-draft-buffer (save-window-excursion
-                                  (wl-draft)
-                                  (current-buffer))))
+                                     (call-interactively 'wl-draft)
+                                     (current-buffer))))
     (with-current-buffer wl-addrmgr-draft-buffer
       (setq from (std11-field-body "From"))
       (if from