* wl-util.el (wl-biff-check-folders): Set biff flag.
[elisp/wanderlust.git] / wl / wl-util.el
index d543210..888dbc6 100644 (file)
@@ -871,6 +871,7 @@ This function is imported from Emacs 20.7."
            (while flist
              (setq folder (wl-folder-get-elmo-folder (car flist))
                    flist (cdr flist))
+             (elmo-folder-set-biff-internal folder t)
              (when (and (elmo-folder-plugged-p folder)
                         (elmo-folder-exists-p folder))
                (setq new-mails
@@ -1033,23 +1034,28 @@ is enclosed by at least one regexp grouping construct."
             (symbol-value variable))))))
 
 ;;; Search Condition
+(defun wl-search-condition-fields ()
+  (let ((denial-fields
+        (nconc (mapcar 'capitalize elmo-msgdb-extra-fields)
+               (mapcar 'capitalize wl-additional-search-condition-fields)
+               '("Flag" "Since" "Before"
+                 "From" "Subject" "To" "Cc" "Body" "ToCc"
+                 "Larger" "Smaller"))))
+    (append '("Last" "First")
+           denial-fields
+           (mapcar (lambda (f) (concat "!" f))
+                   denial-fields))))
+
 (defun wl-read-search-condition (default)
   "Read search condition string interactively."
   (wl-read-search-condition-internal "Search by" default))
 
 (defun wl-read-search-condition-internal (prompt default &optional paren)
   (let* ((completion-ignore-case t)
-        (denial-fields (nconc (mapcar 'capitalize elmo-msgdb-extra-fields)
-                              '("Flag" "Since" "Before"
-                                "From" "Subject" "To" "Cc" "Body" "ToCc"
-                                "Larger" "Smaller")))
         (field (completing-read
                 (format "%s (%s): " prompt default)
-                (mapcar 'list
-                        (append '("AND" "OR" "Last" "First")
-                                denial-fields
-                                (mapcar (lambda (f) (concat "!" f))
-                                        denial-fields)))))
+                (mapcar #'list
+                        (append '("AND" "OR") (wl-search-condition-fields)))))
         value)
     (setq field (if (string= field "")
                    (setq field default)
@@ -1107,10 +1113,10 @@ is enclosed by at least one regexp grouping construct."
       (while t
        (discard-input)
        (case (let ((cursor-in-echo-area t))
-               (read-event prompt))
+               (cdr (wl-read-event-char prompt)))
          ((?y ?Y)
           (throw 'done t))
-         (? 
+         (?\ 
           (if scroll-by-SPC
               (ignore-errors (scroll-up))
             (throw 'done t)))
@@ -1121,6 +1127,43 @@ is enclosed by at least one regexp grouping construct."
          (t
           (throw 'done nil)))))))
 
+(defun wl-find-region (beg-regexp end-regexp)
+  (if (or (re-search-forward end-regexp nil t)
+         (re-search-backward end-regexp nil t))
+      (let ((end (match-end 0))
+           (beg (re-search-backward beg-regexp nil t)))
+       (if beg
+           (cons beg end)))))
+
+(defun wl-simple-display-progress (label action current total)
+  (message "%s... %d%%"
+          action
+          (if (> total 0) (floor (* (/ current (float total)) 100)) 0)))
+
+(when (fboundp 'progress-feedback-with-label)
+  (defun wl-display-progress-with-gauge (label action current total)
+    (progress-feedback-with-label
+     label
+     "%s..."
+     (if (> total 0) (floor (* (/ current (float total)) 100)) 0)
+     action)))
+
+(defun wl-progress-callback-function (label action current total)
+  (case current
+    (query
+     (let ((threshold (if (consp wl-display-progress-threshold)
+                         (cdr (or (assq label wl-display-progress-threshold)
+                                  (assq t wl-display-progress-threshold)))
+                       wl-display-progress-threshold)))
+       (and threshold
+           (>= total threshold))))
+    (start
+     (message "%s..." action))
+    (done
+     (message "%s...done" action))
+    (t
+     (when wl-display-progress-function
+       (funcall wl-display-progress-function label action current total)))))
 
 ;; read multiple strings with completion
 (defun wl-completing-read-multiple-1 (prompt
@@ -1168,8 +1211,17 @@ is enclosed by at least one regexp grouping construct."
                                     nil initial-input
                                     hist def inherit-input-method))))
  (t
-  (defalias 'wl-completing-read-multiple 'wl-completing-read-multiple-2)))
+  (defalias 'wl-completing-read-multiple 'completing-read-multiple)))
+
 
+(cond
+ ((fboundp 'shell-command-read-minibuffer)
+  (defun wl-read-shell-command (prompt &optional
+                                      initial-contents keymap read hist)
+    (shell-command-read-minibuffer prompt default-directory
+                                  initial-contents keymap read hist)))
+ (t
+  (defalias 'wl-read-shell-command 'read-from-minibuffer)))
 
 (require 'product)
 (product-provide (provide 'wl-util) (require 'wl-version))