(wl-draft-kill-flags): Avoid error when `wl-draft-parent-folder' is "".
[elisp/wanderlust.git] / wl / wl-fldmgr.el
index f4c1a45..f457aac 100644 (file)
@@ -51,6 +51,9 @@
 # Folder definition file
 # This file is generated automatically by %s.
 #
+# If you edit this file by hand, be sure that comment lines
+# will be washed out by wl-fldmgr.
+#
 
 " (product-string-1 'wl-version t)))
 
@@ -333,7 +336,7 @@ return value is diffs '(-new -unread -all)."
                   (message "%s not found" key)
                   (setq update nil)
                   (throw 'done t)))
-           (when access
+           (when (and access (not clear))
              (if is-group
                  (wl-append unsubscribes
                             (list (list (elmo-string key) 'access nil)))
@@ -384,11 +387,11 @@ return value is diffs '(-new -unread -all)."
            (cond
             ((stringp (car new2)) ;; folder
              (cond
-              ((wl-string-member (car new2) flist)
+              ((elmo-string-member (car new2) flist)
                (and errmes (message "%s: already exists" (car new2)))
                (throw 'success nil))
               ((and access
-                    (not (wl-string-member (car new2) unsubscribes)))
+                    (not (elmo-string-member (car new2) unsubscribes)))
                (and errmes (message "%s: not access group folder" (car new2)))
                (throw 'success nil))))
             (t                    ;; group
@@ -847,16 +850,10 @@ return value is diffs '(-new -unread -all)."
     (let* ((inhibit-read-only t)
           (tmp (wl-fldmgr-get-path-from-buffer))
           (entity (elmo-string (nth 4 tmp)))
-          (folder (wl-folder-get-elmo-folder entity))
-          (msgs (and (elmo-folder-exists-p folder)
-                     (elmo-folder-list-messages folder))))
-      (when (yes-or-no-p (format "%sDo you really want to delete \"%s\"? "
-                                (if (> (length msgs) 0)
-                                    (format "%d msg(s) exists. " (length msgs))
-                                  "")
-                                entity))
-       (elmo-folder-delete folder)
-       (wl-fldmgr-cut tmp nil t)))))
+          (folder (wl-folder-get-elmo-folder entity)))
+      (when (elmo-folder-delete folder)
+       (wl-fldmgr-cut tmp nil t)
+       (wl-fldmgr-save-access-list)))))
 
 (defun wl-fldmgr-rename ()
   (interactive)
@@ -868,7 +865,7 @@ return value is diffs '(-new -unread -all)."
        ((and (wl-folder-buffer-group-p)
             (looking-at wl-folder-group-regexp)) ;; group
        (let* ((indent (wl-match-buffer 1))
-              (old-group (wl-folder-get-realname (wl-match-buffer 3)))
+              (old-group (wl-folder-get-entity-from-buffer))
               (group-entity (wl-folder-search-group-entity-by-name
                              old-group wl-folder-entity))
               group)
@@ -924,6 +921,7 @@ return value is diffs '(-new -unread -all)."
           new-folder
           (wl-folder-get-entity-info old-folder))
          (wl-folder-clear-entity-info old-folder)
+         (setq wl-folder-info-alist-modified t)
          (if (eq (cdr (nth 2 tmp)) 'access)
 
              ;; force update access group
@@ -1051,7 +1049,7 @@ return value is diffs '(-new -unread -all)."
        (setq indent (wl-match-buffer 1))
        (setq opened (wl-match-buffer 2))
        (setq entity (wl-folder-search-group-entity-by-name
-                     (wl-folder-get-realname (wl-match-buffer 3))
+                     (wl-folder-get-entity-from-buffer)
                      wl-folder-entity))
        (message "Sorting...")
        (setq flist (sort (nth 2 entity) wl-fldmgr-sort-function))
@@ -1155,7 +1153,8 @@ return value is diffs '(-new -unread -all)."
            (setq indent (wl-fldmgr-make-indent (nth 1 tmp)))
            (if (eq (cdr (nth 2 tmp)) 'access)
                (when (wl-fldmgr-cut tmp)
-                 (pop wl-fldmgr-cut-entity-list)  ;; don't leave cut-list
+                 ;; don't leave cut-list
+                 (setq wl-fldmgr-cut-entity-list (cdr wl-fldmgr-cut-entity-list))
                  (setq beg (point))
                  (insert indent wl-folder-unsubscribe-mark
                          (if is-group
@@ -1194,7 +1193,7 @@ return value is diffs '(-new -unread -all)."
       (setq indent (wl-match-buffer 1))
       (setq opened (wl-match-buffer 2))
       (setq entity (wl-folder-search-group-entity-by-name
-                   (wl-folder-get-realname (wl-match-buffer 3))
+                   (wl-folder-get-entity-from-buffer)
                    wl-folder-entity))
       (when (eq (nth 1 entity) 'access)
        (save-excursion
@@ -1307,10 +1306,8 @@ return value is diffs '(-new -unread -all)."
                       "")
                     "\n"))
            ((consp name)
-            (let ((group (wl-folder-get-realname (car name)))
+            (let ((group (car name))
                   (type (nth 1 name)))
-              (if (not (string= group (car name))) ; petname.
-                  (wl-append pet-entities (list (car name))))
               (cond ((eq type 'group)
                      (insert indent group "{\n")
                      (setq pet-entities
@@ -1342,8 +1339,6 @@ return value is diffs '(-new -unread -all)."
 (defun wl-fldmgr-save-folders ()
   (interactive)
   (let ((tmp-buf (get-buffer-create " *wl-fldmgr-tmp*"))
-       (access-list wl-fldmgr-modified-access-list)
-       entity
        save-petname-entities)
     (message "Saving folders...")
     (set-buffer tmp-buf)
@@ -1352,7 +1347,7 @@ return value is diffs '(-new -unread -all)."
     (wl-fldmgr-delete-disused-petname)
     (setq save-petname-entities
          (wl-fldmgr-insert-folders-buffer "" (nth 2 wl-folder-entity)))
-    (insert "\n# petname definition (group, folder in access group)\n")
+    (insert "\n# petname definition (access group, folder in access group)\n")
     (wl-fldmgr-insert-petname-buffer save-petname-entities)
     (insert "\n# end of file.\n")
     (if (and wl-fldmgr-make-backup
@@ -1368,6 +1363,13 @@ return value is diffs '(-new -unread -all)."
        'no-msg)
       (set-file-modes wl-folders-file (+ (* 64 6) (* 8 0) 0))) ; chmod 0600
     (kill-buffer tmp-buf)
+    (wl-fldmgr-save-access-list)
+    (setq wl-fldmgr-modified nil)
+    (message "Saving folders...done")))
+
+(defun wl-fldmgr-save-access-list ()
+  (let ((access-list wl-fldmgr-modified-access-list)
+       entity)
     (while access-list
       (setq entity (wl-folder-search-group-entity-by-name
                    (car access-list) wl-folder-entity))
@@ -1377,9 +1379,7 @@ return value is diffs '(-new -unread -all)."
        (wl-folder-make-save-access-list (nth 2 entity))
        (wl-folder-make-save-access-list (nth 3 entity))))
       (setq access-list (cdr access-list)))
-    (setq wl-fldmgr-modified nil)
-    (setq wl-fldmgr-modified-access-list nil)
-    (message "Saving folders...done")))
+    (setq wl-fldmgr-modified-access-list nil)))
 
 (require 'product)
 (product-provide (provide 'wl-fldmgr) (require 'wl-version))