Revert wl-score-put-alike.
[elisp/wanderlust.git] / wl / wl-fldmgr.el
index fb5b135..a505606 100644 (file)
 (defun wl-fldmgr-exit ()
   (when (and wl-fldmgr-modified
             (or (not wl-interactive-save-folders)
-                (y-or-n-p "Folder view was modified.  Save current folders? ")))
+                (y-or-n-p
+                 (concat "Folder view was modified"
+                         (and wl-fldmgr-cut-entity-list
+                              (format " (%s in cut stack)"
+                                      (length wl-fldmgr-cut-entity-list)))
+                         ".  Save current folders? "))))
     (wl-fldmgr-save-folders)))
 
 ;;; Macro and misc Function
 ;;
 
 (defmacro wl-fldmgr-delete-line ()
-  (` (delete-region (save-excursion (beginning-of-line)
-                                   (point))
-                   (save-excursion (end-of-line)
-                                   (+ 1 (point))))))
+  '(delete-region (save-excursion (beginning-of-line)
+                                 (point))
+                 (save-excursion (end-of-line)
+                                 (+ 1 (point)))))
 
 (defmacro wl-fldmgr-make-indent (level)
-  (` (concat " " (make-string (* 2 (, level)) ? ))))
+  `(concat " " (make-string (* 2 ,level) ,(string-to-char " "))))
 
 (defmacro wl-fldmgr-get-entity-id (&optional entity)
-  (` (get-text-property (if (, entity)
-                           0
-                         (point))
-                       'wl-folder-entity-id
-                       (, entity))))
+  `(get-text-property (if ,entity
+                         0
+                       (point))
+                     'wl-folder-entity-id
+                     ,entity))
 
 (defmacro wl-fldmgr-assign-id (entity &optional id)
-  (` (let ((entity-id (or (, id) wl-folder-entity-id)))
-       (put-text-property 0 (length (, entity))
-                         'wl-folder-entity-id
-                         entity-id
-                         (, entity)))))
+  `(let ((entity-id (or ,id wl-folder-entity-id)))
+     (put-text-property 0 (length ,entity)
+                       'wl-folder-entity-id
+                       entity-id
+                       ,entity)))
 
 (defsubst wl-fldmgr-read-string (str)
   (if (string-match "\n" str)
@@ -243,7 +248,7 @@ return value is diffs '(-new -unread -all)."
 
 ;; (defun wl-fldmgr-get-previous-entity (entity key-id)
 ;;   (cdr (wl-fldmgr-get-previous-entity-internal '(nil . nil) entity key-id)))
-;; 
+;;
 ;; (defun wl-fldmgr-get-previous-entity-internal (result entity key-id)
 ;;   (cond
 ;;    ((stringp entity)
@@ -336,7 +341,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)))
@@ -766,7 +771,7 @@ return value is diffs '(-new -unread -all)."
                   (throw 'found (symbol-value atom)))))
            wl-fldmgr-add-completion-hashtb)))
        (pattern
-        (if (string-match "\\.$" 
+        (if (string-match "\\.$"
                           (elmo-folder-prefix-internal
                            (wl-folder-get-elmo-folder string)))
             (substring string 0 (match-beginning 0))
@@ -852,7 +857,9 @@ return value is diffs '(-new -unread -all)."
           (entity (elmo-string (nth 4 tmp)))
           (folder (wl-folder-get-elmo-folder entity)))
       (when (elmo-folder-delete folder)
-       (wl-fldmgr-cut tmp nil t)))))
+       (wl-folder-clear-entity-info entity)
+       (wl-fldmgr-cut tmp nil t)
+       (wl-fldmgr-save-access-list)))))
 
 (defun wl-fldmgr-rename ()
   (interactive)
@@ -1033,7 +1040,7 @@ return value is diffs '(-new -unread -all)."
          (setq entity (nth 4 tmp)))
        (unless entity (error "No folder"))
        (wl-fldmgr-add (concat "/"
-                              (elmo-read-search-condition
+                              (wl-read-search-condition
                                wl-fldmgr-make-filter-default)
                               "/" entity))))))
 
@@ -1044,7 +1051,11 @@ return value is diffs '(-new -unread -all)."
     (let ((inhibit-read-only t)
          entity flist indent opened)
       (when (and (wl-folder-buffer-group-p)
-                (looking-at wl-folder-group-regexp))
+                (looking-at wl-folder-group-regexp)
+                (prog1
+                    (y-or-n-p (format "Sort subfolders of %s? "
+                                      (wl-folder-get-entity-from-buffer)))
+                  (message nil)))
        (setq indent (wl-match-buffer 1))
        (setq opened (wl-match-buffer 2))
        (setq entity (wl-folder-search-group-entity-by-name
@@ -1163,7 +1174,8 @@ return value is diffs '(-new -unread -all)."
                  (save-excursion (forward-line -1)
                                  (wl-highlight-folder-current-line))
                  (remove-text-properties beg (point) '(wl-folder-entity-id))
-                 (setq execed t))))))
+                 (setq execed t))
+             (message "not an access group folder")))))
        (set-buffer-modified-p nil)))
     (if (or force execed)
        (progn
@@ -1256,7 +1268,8 @@ return value is diffs '(-new -unread -all)."
          (if (string= petname old-petname)
              nil
            (if (or (rassoc petname wl-folder-petname-alist)
-                   (wl-string-assoc petname wl-folder-group-alist))
+                   (and is-group
+                        (wl-string-assoc petname wl-folder-group-alist)))
                (message "%s: already exists" petname)
              (wl-folder-append-petname name petname)
              (setq change t)))))
@@ -1338,8 +1351,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)
@@ -1364,6 +1375,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))
@@ -1373,9 +1391,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))