X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=wl%2Fwl-thread.el;h=a9026f3b252d35a9235f5219b0fdcc3e552da8a4;hb=afaaf10e4a3c0333436dd2b6aff450379c557961;hp=8ed56f121b4dd36f9c806a952a38cc5eb3630234;hpb=f4ebdc443b502d29c731c7c3ce48a6528a3e6db0;p=elisp%2Fwanderlust.git diff --git a/wl/wl-thread.el b/wl/wl-thread.el index 8ed56f1..a9026f3 100644 --- a/wl/wl-thread.el +++ b/wl/wl-thread.el @@ -198,8 +198,7 @@ (nth (- (length curc) 1) curc)))) (wl-thread-entity-get-number curp))) - (setcar (cddr to) (wl-append children - (list (car entity)))) + (wl-thread-entity-set-children to (wl-append children (list (car entity)))) (setq wl-thread-entities (cons entity wl-thread-entities)) (elmo-set-hash-val (format "#%d" (car entity)) entity wl-thread-entity-hashtb))) @@ -296,7 +295,7 @@ ENTITY is returned." "Jump to the message with specified number in the current summary." (interactive) (let ((num (or number - (string-to-int + (string-to-number (read-from-minibuffer "Jump to Message(No.): "))))) (wl-thread-entity-force-open (wl-thread-get-entity num)) (wl-summary-jump-to-msg num))) @@ -304,53 +303,34 @@ ENTITY is returned." (defun wl-thread-close-all () "Close all top threads." (interactive) - (message "Closing all threads...") - (save-excursion - (let ((entities wl-thread-entity-list) - (cur 0) - (len (length wl-thread-entity-list))) - (while entities + (elmo-with-progress-display + (wl-thread-close-all (length wl-thread-entity-list)) + "Closing all threads" + (save-excursion + (dolist (entity wl-thread-entity-list) (when (and (wl-thread-entity-get-opened (wl-thread-get-entity - (car entities))) + entity)) (wl-thread-entity-get-children (wl-thread-get-entity - (car entities)))) - (wl-summary-jump-to-msg (car entities)) + entity))) + (wl-summary-jump-to-msg entity) (wl-thread-open-close)) - (when (> len elmo-display-progress-threshold) - (setq cur (1+ cur)) - (if (or (zerop (% cur 5)) (= cur len)) - (elmo-display-progress - 'wl-thread-close-all "Closing all threads..." - (/ (* cur 100) len)))) - (setq entities (cdr entities))))) - (message "Closing all threads...done")) + (elmo-progress-notify 'wl-thread-close-all))))) (defun wl-thread-open-all () "Open all threads." (interactive) - (message "Opening all threads...") - (save-excursion - (goto-char (point-min)) - (let ((len (count-lines (point-min) (point-max))) - (cur 0) - entity) + (elmo-with-progress-display + (wl-thread-open-all (count-lines (point-min) (point-max))) + "Opening all threads" + (save-excursion + (goto-char (point-min)) (while (not (eobp)) (if (wl-thread-entity-get-opened - (setq entity (wl-thread-get-entity - (wl-summary-message-number)))) + (wl-thread-get-entity (wl-summary-message-number))) (forward-line 1) (wl-thread-force-open) (wl-thread-goto-bottom-of-sub-thread)) - (when (> len elmo-display-progress-threshold) - (setq cur (1+ cur)) - (elmo-display-progress - 'wl-thread-open-all "Opening all threads..." - (/ (* cur 100) len))))) - ;; Make sure to be 100%. - (elmo-display-progress - 'wl-thread-open-all "Opening all threads..." - 100)) - (message "Opening all threads...done")) + (elmo-progress-notify 'wl-thread-open-all))))) (defun wl-thread-open-all-unread () (interactive) @@ -431,28 +411,11 @@ ENTITY is returned." (wl-thread-get-entity (car msgs))))))))) updates)) -(defun wl-thread-update-line-msgs (msgs &optional no-msg) +(defun wl-thread-update-line-msgs (msgs) (wl-delete-all-overlays) - (let ((i 0) - (updates msgs) - len) -;;; (while msgs -;;; (setq updates -;;; (append updates -;;; (wl-thread-get-children-msgs (car msgs)))) -;;; (setq msgs (cdr msgs))) -;;; (setq updates (elmo-uniq-list updates)) - (setq len (length updates)) - (while updates - (wl-thread-update-line-on-buffer-sub nil (car updates)) - (setq updates (cdr updates)) - (when (and (not no-msg) - (> len elmo-display-progress-threshold)) - (setq i (1+ i)) - (if (or (zerop (% i 5)) (= i len)) - (elmo-display-progress - 'wl-thread-update-line-msgs "Updating deleted thread..." - (/ (* i 100) len))))))) + (dolist (message msgs) + (wl-thread-update-line-on-buffer-sub nil message) + (elmo-progress-notify 'wl-thread-update-line))) (defun wl-thread-delete-line-from-buffer (msg) "Simply delete msg line." @@ -525,9 +488,8 @@ ENTITY is returned." (apply (function nconc) update-msgs (mapcar - (function - (lambda (message) - (wl-thread-get-children-msgs message t))) + (lambda (message) + (wl-thread-get-children-msgs message t)) children)))) (wl-thread-entity-set-children parent (append older-brothers children younger-brothers)) @@ -649,8 +611,9 @@ Message is inserted to the summary buffer." ;; insert as children. (wl-thread-entity-insert-as-children parent - (setq child-entity (wl-thread-create-entity - msg (nth 0 parent) nil linked))) + (setq child-entity + (wl-thread-create-entity + msg (wl-thread-entity-get-number parent) nil linked))) ;; insert as top message. (wl-thread-entity-insert-as-top (wl-thread-create-entity msg nil))) @@ -703,25 +666,19 @@ Message is inserted to the summary buffer." ret)) (defun wl-thread-update-indent-string-thread (top-list) - (let* ((top-list (wl-thread-get-parent-list top-list)) - (num (length top-list)) - (i 0) - beg) - (while top-list - (when (> num elmo-display-progress-threshold) - (setq i (1+ i)) - (when (or (zerop (% i 5)) (= i num)) - (elmo-display-progress - 'wl-thread-update-indent-string-thread - "Updating thread indent..." - (/ (* i 100) num)))) - (when (car top-list) - (wl-summary-jump-to-msg (car top-list)) - (setq beg (point)) - (wl-thread-goto-bottom-of-sub-thread) - (wl-thread-update-indent-string-region beg (point))) - (setq top-list (cdr top-list))) - (message "Updating thread indent...done"))) + (let ((top-list (wl-thread-get-parent-list top-list)) + beg) + (elmo-with-progress-display + (wl-thread-update-indent-string-thread (length top-list)) + "Updating thread indent" + (while top-list + (when (car top-list) + (wl-summary-jump-to-msg (car top-list)) + (setq beg (point)) + (wl-thread-goto-bottom-of-sub-thread) + (wl-thread-update-indent-string-region beg (point))) + (elmo-progress-notify 'wl-thread-update-indent-string-thread) + (setq top-list (cdr top-list)))))) (defun wl-thread-update-children-number (entity) "Update the children number." @@ -799,22 +756,19 @@ Message is inserted to the summary buffer." (defun wl-thread-insert-top () (let ((elist wl-thread-entity-list) - (len (length wl-thread-entity-list)) - (cur 0)) - (wl-delete-all-overlays) - (while elist - (wl-thread-insert-entity - 0 - (wl-thread-get-entity (car elist)) - nil - len) - (setq elist (cdr elist)) - (when (> len elmo-display-progress-threshold) - (setq cur (1+ cur)) - (if (or (zerop (% cur 2)) (= cur len)) - (elmo-display-progress - 'wl-thread-insert-top "Inserting message..." - (/ (* cur 100) len))))))) + (len (length wl-thread-entity-list))) + (elmo-with-progress-display + (wl-thread-insert-entity (length wl-thread-entity-list)) + "Inserting message" + (wl-delete-all-overlays) + (while elist + (wl-thread-insert-entity + 0 + (wl-thread-get-entity (car elist)) + nil + len) + (elmo-progress-notify 'wl-thread-insert-entity) + (setq elist (cdr elist)))))) (defsubst wl-thread-insert-entity-sub (indent entity parent-entity all) (let (msg-num @@ -831,14 +785,14 @@ Message is inserted to the summary buffer." (setq temp-mark (wl-summary-get-score-mark msg-num))) (setq message-entity (elmo-message-entity wl-summary-buffer-elmo-folder - (nth 0 entity))) + msg-num)) ;;; (wl-delete-all-overlays) (when message-entity (wl-summary-insert-line (wl-summary-create-line message-entity (elmo-message-entity wl-summary-buffer-elmo-folder - (nth 0 parent-entity)) + (wl-thread-entity-get-number parent-entity)) temp-mark (elmo-message-status wl-summary-buffer-elmo-folder msg-num) (if wl-thread-insert-force-opened @@ -854,7 +808,7 @@ Message is inserted to the summary buffer." (while msgs (wl-thread-insert-entity-sub indent entity parent-entity all) (setq msgs (cdr msgs)) - (setq children (nth 2 entity)) + (setq children (wl-thread-entity-get-children entity)) (if children ;; insert children (when (or wl-thread-insert-force-opened @@ -989,8 +943,7 @@ Message is inserted to the summary buffer." (let (depth beg) (wl-thread-entity-set-opened entity nil) (setq depth (wl-thread-get-depth-of-current-line)) - (beginning-of-line) - (setq beg (point)) + (setq beg (point-at-bol)) (wl-thread-goto-bottom-of-sub-thread) (wl-thread-remove-argument-region beg (point)) @@ -999,7 +952,7 @@ Message is inserted to the summary buffer." (wl-thread-insert-entity (- depth 1) entity (wl-thread-get-entity - (nth 3 entity)) + (wl-thread-entity-get-parent entity)) nil) (delete-char 1) ; delete '\n' (wl-thread-print-argument-region beg (point)))) @@ -1016,16 +969,15 @@ Message is inserted to the summary buffer." (defun wl-thread-open (entity) (let (depth beg) - (beginning-of-line) - (setq beg (point)) + (setq beg (point-at-bol)) (setq depth (wl-thread-get-depth-of-current-line)) - (end-of-line) - (delete-region beg (point)) + (delete-region (point-at-bol) (point-at-eol)) (wl-thread-entity-set-opened entity t) (wl-thread-insert-entity depth ;(- depth 1) entity (wl-thread-get-entity - (nth 3 entity)) nil) + (wl-thread-entity-get-parent entity)) + nil) (delete-char 1) ; delete '\n' (wl-thread-print-argument-region beg (point)))) @@ -1136,7 +1088,7 @@ Message is inserted to the summary buffer." (if (string= dst-parent "") (setq dst-parent nil) (if (interactive-p) - (setq dst-parent (string-to-int dst-parent)) + (setq dst-parent (string-to-number dst-parent)) (setq dst-parent parent-number))) (if (and dst-parent (memq dst-parent (wl-thread-get-children-msgs number))) @@ -1176,7 +1128,7 @@ Message is inserted to the summary buffer." (wl-thread-entity-set-parent entity dst-parent) ;; update thread on buffer (wl-thread-make-number-list) - (wl-thread-update-line-msgs update-msgs t)))) + (wl-thread-update-line-msgs update-msgs)))) (require 'product) (product-provide (provide 'wl-thread) (require 'wl-version))