From: Katsumi Yamaoka Date: Thu, 10 Jun 2010 00:30:13 +0000 (+0000) Subject: Synch with Gnus trunk. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~88 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3d6e7a438c78b55ded537c617fd20d8f4167f60e;p=emacs.git Synch with Gnus trunk. 2010-06-10 Dan Christensen * gnus-util.el (gnus-user-date): Use gnus-date-get-time. (gnus-dd-mmm): Use gnus-date-get-time. * gnus-sum.el (gnus-thread-latest-date): Use gnus-date-get-time and simplify logic. (gnus-summary-limit-to-age): Use gnus-date-get-time. (gnus-sort-threads): emit message if gnus-sort-threads-loop used. --- diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 5be038b5519..f233e65554a 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,12 @@ +2010-06-10 Dan Christensen + + * gnus-util.el (gnus-user-date): Use gnus-date-get-time. + (gnus-dd-mmm): Use gnus-date-get-time. + * gnus-sum.el (gnus-thread-latest-date): Use gnus-date-get-time and + simplify logic. + (gnus-summary-limit-to-age): Use gnus-date-get-time. + (gnus-sort-threads): emit message if gnus-sort-threads-loop used. + 2010-06-08 Michael Albinus * auth-source.el (top): Autoload `secrets-list-collections', diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 3626d0bd904..98a0556d499 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -4819,7 +4819,8 @@ If LINE, insert the rebuilt thread starting on line LINE." ;; Even after binding max-lisp-eval-depth, the recursive ;; sorter might fail for very long threads. In that case, ;; try using a (less well-tested) non-recursive sorter. - (error (gnus-sort-threads-loop + (error (gnus-message 9 "Sorting threads with loop...") + (gnus-sort-threads-loop threads (gnus-make-sort-function gnus-thread-sort-functions)))) (gnus-message 8 "Sorting threads...done")))) @@ -4986,22 +4987,17 @@ Unscored articles will be counted as having a score of zero." "Sort threads such that the thread with the most recently dated article comes first." (> (gnus-thread-latest-date h1) (gnus-thread-latest-date h2))) +; Since this is called not only to sort the top-level threads, but +; also in recursive sorts to order the articles within a thread, each +; article will be processed many times. Thus it speeds things up +; quite a bit to use gnus-date-get-time, which caches the time value. (defun gnus-thread-latest-date (thread) "Return the highest article date in THREAD." - (let ((previous-time 0)) - (apply 'max - (mapcar - (lambda (header) - (setq previous-time - (condition-case () - (gnus-float-time (mail-header-parse-date - (mail-header-date header))) - (error previous-time)))) - (sort - (message-flatten-list thread) - (lambda (h1 h2) - (< (mail-header-number h1) - (mail-header-number h2)))))))) + (apply 'max + (mapcar (lambda (header) (gnus-float-time + (gnus-date-get-time + (mail-header-date header)))) + (message-flatten-list thread)))) (defun gnus-thread-total-score-1 (root) ;; This function find the total score of the thread below ROOT. @@ -8236,9 +8232,7 @@ articles that are younger than AGE days." (when (and (vectorp (gnus-data-header d)) (setq date (mail-header-date (gnus-data-header d)))) (setq is-younger (time-less-p - (time-since (condition-case () - (date-to-time date) - (error '(0 0)))) + (time-since (gnus-date-get-time date)) cutoff)) (when (if younger-p is-younger diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index ed6d3f362a4..3045f72daeb 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -455,10 +455,10 @@ respectively.") (defun gnus-user-date (messy-date) "Format the messy-date according to gnus-user-date-format-alist. -Returns \" ? \" if there's bad input or if an other error occurs. +Returns \" ? \" if there's bad input or if another error occurs. Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"." (condition-case () - (let* ((messy-date (gnus-float-time (safe-date-to-time messy-date))) + (let* ((messy-date (gnus-float-time (gnus-date-get-time messy-date))) (now (gnus-float-time)) ;;If we don't find something suitable we'll use this one (my-format "%b %d '%y")) @@ -477,7 +477,7 @@ Input should look like this: \"Sun, 14 Oct 2001 13:34:39 +0200\"." (defun gnus-dd-mmm (messy-date) "Return a string like DD-MMM from a big messy string." (condition-case () - (format-time-string "%d-%b" (safe-date-to-time messy-date)) + (format-time-string "%d-%b" (gnus-date-get-time messy-date)) (error " - "))) (defmacro gnus-date-get-time (date)