Fix type of wl-summary-width to accept nil.
[elisp/wanderlust.git] / wl / wl-score.el
index fe8bb3a..5974622 100644 (file)
 (defvar wl-score-header-buffer-list nil)
 (defvar wl-score-alike-hashtb nil)
 
-(defvar wl-score-edit-exit-func nil
+(defvar wl-score-edit-exit-function nil
   "Function run on exit from the score buffer.")
 
 (make-variable-buffer-local 'wl-current-score-file)
@@ -353,7 +353,7 @@ Set `wl-score-cache' nil."
 
 (defun wl-score-get-score-alist (&optional folder)
   (interactive)
-  (let* ((fld (or folder wl-summary-buffer-folder-name))
+  (let* ((fld (or folder (wl-summary-buffer-folder-name)))
         (score-alist (reverse
                       (wl-score-get-score-files wl-score-folder-alist fld)))
         alist scores)
@@ -374,12 +374,13 @@ Set `wl-score-cache' nil."
       (let ((mark (car (wl-score-get 'mark alist)))
            (expunge (car (wl-score-get 'expunge alist)))
            (mark-and-expunge (car (wl-score-get 'mark-and-expunge alist)))
+           (temp (car (wl-score-get 'temp alist))) ; obsolate
            (target (car (wl-score-get 'target alist)))
            (important (car (wl-score-get 'important alist))))
        (setq wl-summary-important-above
              (or important wl-summary-important-above))
        (setq wl-summary-target-above
-             (or target wl-summary-target-above))
+             (or target temp wl-summary-target-above))
        (setq wl-summary-mark-below
              (or mark mark-and-expunge wl-summary-mark-below))
        (setq wl-summary-expunge-below
@@ -394,9 +395,9 @@ Set `wl-score-cache' nil."
         (expire (and wl-score-expiry-days
                      (- now wl-score-expiry-days)))
         (overview (elmo-msgdb-get-overview
-                   (or msgdb wl-summary-buffer-msgdb)))
+                   (or msgdb (wl-summary-buffer-msgdb))))
         (mark-alist (elmo-msgdb-get-mark-alist
-                     (or msgdb wl-summary-buffer-msgdb)))
+                     (or msgdb (wl-summary-buffer-msgdb))))
         (wl-score-stop-add-entry not-add)
         entries
         news new num entry ov header)
@@ -925,11 +926,11 @@ Set `wl-score-cache' nil."
         (expire (and wl-score-expiry-days
                      (- now wl-score-expiry-days)))
         (roverview (reverse (elmo-msgdb-get-overview
-                             wl-summary-buffer-msgdb)))
+                             (wl-summary-buffer-msgdb))))
         msgs)
     (if (not expire)
        (mapcar 'car (elmo-msgdb-get-number-alist
-                     wl-summary-buffer-msgdb)) ;; all messages
+                     (wl-summary-buffer-msgdb))) ;; all messages
       (catch 'break
        (while roverview
          (if (< (wl-day-number
@@ -945,8 +946,8 @@ Set `wl-score-cache' nil."
   (let ((num (wl-summary-message-number)))
     (if num
        (assoc (cdr (assq num (elmo-msgdb-get-number-alist
-                              wl-summary-buffer-msgdb)))
-              (elmo-msgdb-get-overview wl-summary-buffer-msgdb)))))
+                              (wl-summary-buffer-msgdb))))
+              (elmo-msgdb-get-overview (wl-summary-buffer-msgdb))))))
 
 (defun wl-score-get-header (header &optional extra)
   (let ((index (nth 2 (assoc header wl-score-header-index)))
@@ -993,19 +994,20 @@ Set `wl-score-cache' nil."
          (setq format (concat "%c: %-" (int-to-string pad) "s"))
          (insert (format format (caar alist) (nth idx (car alist))))
          (setq alist (cdr alist))
-         (setq i (1+ i))
-         (set-buffer-modified-p nil)))
-      (when (and (get-buffer wl-message-buf-name)
-                (setq mes-win (get-buffer-window
-                               (get-buffer wl-message-buf-name))))
-       (select-window mes-win)
-       (unless (eq (next-window) cur-win)
-         (delete-window (next-window))))
-      (split-window)
-      (pop-to-buffer "*Score Help*")
-      (let ((window-min-height 1))
-       (shrink-window-if-larger-than-buffer))
-      (select-window cur-win))))
+         (setq i (1+ i)))
+       (set-buffer-modified-p nil)))
+    (when (and wl-message-buffer
+              (get-buffer wl-message-buffer)
+              (setq mes-win (get-buffer-window
+                             (get-buffer wl-message-buffer))))
+      (select-window mes-win)
+      (unless (eq (next-window) cur-win)
+       (delete-window (next-window))))
+    (split-window)
+    (pop-to-buffer "*Score Help*")
+    (let ((window-min-height 1))
+      (shrink-window-if-larger-than-buffer))
+    (select-window cur-win)))
 
 (defun wl-score-get-header-entry (&optional match-func increase)
   (let (hchar tchar pchar
@@ -1088,8 +1090,9 @@ Set `wl-score-cache' nil."
 
          ;; read the score.
          (unless (or score increase)
-           (setq score (string-to-int (read-string "Set score: "))))
-         (message "")))
+           (setq score (string-to-int (read-string "Set score: ")))))
+      (message "")
+      (wl-score-kill-help-buffer))
 
     (let* ((match-header (or (nth 2 hentry) header))
           (match (if match-func
@@ -1181,8 +1184,8 @@ Set `wl-score-cache' nil."
     (wl-score-save)
     (setq wl-score-cache nil)
     (setq wl-summary-scored nil)
-    (setq number-alist (elmo-msgdb-get-number-alist wl-summary-buffer-msgdb))
-    (wl-summary-score-headers nil wl-summary-buffer-msgdb
+    (setq number-alist (elmo-msgdb-get-number-alist (wl-summary-buffer-msgdb)))
+    (wl-summary-score-headers nil (wl-summary-buffer-msgdb)
                              (unless arg
                                (wl-summary-rescore-msgs number-alist)))
     (setq expunged (wl-summary-score-update-all-lines t))
@@ -1194,14 +1197,13 @@ Set `wl-score-cache' nil."
 (defun wl-summary-score-headers (&optional folder msgdb force-msgs not-add)
   "Do scoring if scoring is required."
   (let ((scores (wl-score-get-score-alist
-                (or folder wl-summary-buffer-folder-name))))
+                (or folder (wl-summary-buffer-folder-name)))))
     (when scores
       (wl-score-headers scores msgdb force-msgs not-add))))
 
 (defun wl-summary-score-update-all-lines (&optional update)
   (let* ((alist wl-summary-scored)
         (count (length alist))
-        (folder wl-summary-buffer-folder-name)
         (i 0)
         (update-unread nil)
         num score dels visible score-mark mark-alist)
@@ -1212,7 +1214,7 @@ Set `wl-score-cache' nil."
              score (cdar alist))
        (when wl-score-debug
          (message "Scored %d with %d" score num)
-         (wl-push (list (elmo-string wl-summary-buffer-folder-name) num score)
+         (wl-push (list (elmo-string (wl-summary-buffer-folder-name)) num score)
                wl-score-trace))
        (setq score-mark (wl-summary-get-score-mark num))
        (and (setq visible (wl-summary-jump-to-msg num))
@@ -1243,22 +1245,22 @@ Set `wl-score-cache' nil."
           (/ (* i 100) count))))
       (when dels
        (setq mark-alist
-             (elmo-msgdb-get-mark-alist wl-summary-buffer-msgdb))
+             (elmo-msgdb-get-mark-alist (wl-summary-buffer-msgdb)))
        (let ((marks dels))
          (while marks
            (setq mark-alist
                  (elmo-msgdb-mark-set mark-alist (pop marks) nil))))
-       (elmo-mark-as-read wl-summary-buffer-folder-name
-                          dels wl-summary-buffer-msgdb)
-       (elmo-msgdb-set-mark-alist wl-summary-buffer-msgdb mark-alist)
+       (elmo-folder-mark-as-read wl-summary-buffer-elmo-folder
+                                 dels)
+       (elmo-msgdb-set-mark-alist (wl-summary-buffer-msgdb) mark-alist)
        (wl-summary-delete-messages-on-buffer dels))
       (when (and update update-unread)
        (let ((num-db (elmo-msgdb-get-number-alist
-                      wl-summary-buffer-msgdb))
+                      (wl-summary-buffer-msgdb)))
              (mark-alist (elmo-msgdb-get-mark-alist
-                          wl-summary-buffer-msgdb)))
+                          (wl-summary-buffer-msgdb))))
          ;; Update Folder mode
-         (wl-folder-set-folder-updated wl-summary-buffer-folder-name
+         (wl-folder-set-folder-updated (wl-summary-buffer-folder-name)
                                        (list 0
                                              (wl-summary-count-unread
                                               mark-alist)
@@ -1293,16 +1295,15 @@ Set `wl-score-cache' nil."
                       (find-file-noselect file)))
        (sum-buf (current-buffer)))
     (if (string-match (concat "^" wl-summary-buffer-name) (buffer-name))
-       (let ((cur-buf (current-buffer))
-             (view-message-buffer (get-buffer wl-message-buf-name)))
-         (when view-message-buffer
-           (wl-select-buffer view-message-buffer)
+       (let ((cur-buf (current-buffer)))
+         (when wl-message-buffer
+           (wl-message-select-buffer wl-message-buffer)
            (delete-window)
            (select-window (get-buffer-window cur-buf)))
-         (wl-select-buffer edit-buffer))
+         (wl-message-select-buffer edit-buffer))
       (switch-to-buffer edit-buffer))
     (wl-score-mode)
-    (setq wl-score-edit-exit-func 'wl-score-edit-done)
+    (setq wl-score-edit-exit-function 'wl-score-edit-done)
     (setq wl-score-edit-summary-buffer sum-buf)
     (make-local-variable 'wl-prev-winconf)
     (setq wl-prev-winconf winconf))
@@ -1355,7 +1356,7 @@ Entering Score mode calls the value of `wl-score-mode-hook'."
   (setq major-mode 'wl-score-mode)
   (setq mode-name "Score")
   (lisp-mode-variables nil)
-  (make-local-variable 'wl-score-edit-exit-func)
+  (make-local-variable 'wl-score-edit-exit-function)
   (make-local-variable 'wl-score-edit-summary-buffer)
   (run-hooks 'emacs-lisp-mode-hook 'wl-score-mode-hook))
 
@@ -1387,8 +1388,8 @@ Entering Score mode calls the value of `wl-score-mode-hook'."
     (wl-as-mime-charset wl-score-mode-mime-charset
       (save-buffer)))
   (let ((buf (current-buffer)))
-    (when wl-score-edit-exit-func
-      (funcall wl-score-edit-exit-func))
+    (when wl-score-edit-exit-function
+      (funcall wl-score-edit-exit-function))
     (kill-buffer buf)))
 
 (defun wl-score-edit-kill ()
@@ -1396,8 +1397,8 @@ Entering Score mode calls the value of `wl-score-mode-hook'."
   (interactive)
   (let ((buf (current-buffer)))
     (set-buffer-modified-p nil)
-    (when wl-score-edit-exit-func
-      (funcall wl-score-edit-exit-func))
+    (when wl-score-edit-exit-function
+      (funcall wl-score-edit-exit-function))
     (kill-buffer buf)))
 
 (defun wl-score-edit-get-summary-buf ()
@@ -1448,6 +1449,7 @@ Entering Score mode calls the value of `wl-score-mode-hook'."
                                    wl-score-edit-header-char))
            (error "Invalid match type")))
       (message "")
+      (wl-score-kill-help-buffer)
       (let* ((header (nth 1 entry))
             (value (wl-score-edit-get-header header)))
        (and value (prin1 value (current-buffer)))))))