comparison lisp/mail/rmailsort.el @ 101725:9e2e923d8eb3

(rmail-sort-messages): Use car-less-than-car if possible.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 01 Feb 2009 03:28:33 +0000
parents 69b1ad070444
children 97184480e9dc
comparison
equal deleted inserted replaced
101724:b87c9a6e8490 101725:9e2e923d8eb3
160 2nd argument KEYFUN is called with a message number, and should return a key." 160 2nd argument KEYFUN is called with a message number, and should return a key."
161 (with-current-buffer rmail-buffer 161 (with-current-buffer rmail-buffer
162 (let ((return-to-point 162 (let ((return-to-point
163 (if (rmail-buffers-swapped-p) 163 (if (rmail-buffers-swapped-p)
164 (point))) 164 (point)))
165 (predicate nil) ;< or string-lessp
166 (sort-lists nil)) 165 (sort-lists nil))
167 (rmail-swap-buffers-maybe) 166 (rmail-swap-buffers-maybe)
168 (message "Finding sort keys...") 167 (message "Finding sort keys...")
169 (widen) 168 (widen)
170 (let ((msgnum 1)) 169 (let ((msgnum 1))
177 sort-lists)) 176 sort-lists))
178 (if (zerop (% msgnum 10)) 177 (if (zerop (% msgnum 10))
179 (message "Finding sort keys...%d" msgnum)) 178 (message "Finding sort keys...%d" msgnum))
180 (setq msgnum (1+ msgnum)))) 179 (setq msgnum (1+ msgnum))))
181 (or reverse (setq sort-lists (nreverse sort-lists))) 180 (or reverse (setq sort-lists (nreverse sort-lists)))
182 ;; Decide predicate: < or string-lessp
183 (if (numberp (car (car sort-lists))) ;Is a key numeric?
184 (setq predicate (function <))
185 (setq predicate (function string-lessp)))
186 (setq sort-lists 181 (setq sort-lists
187 (sort sort-lists 182 (sort sort-lists
188 (function 183 ;; Decide predicate: < or string-lessp
189 (lambda (a b) 184 (if (numberp (car (car sort-lists))) ;Is a key numeric?
190 (funcall predicate (car a) (car b)))))) 185 'car-less-than-car
186 (function
187 (lambda (a b)
188 (string-lessp (car a) (car b)))))))
191 (if reverse (setq sort-lists (nreverse sort-lists))) 189 (if reverse (setq sort-lists (nreverse sort-lists)))
192 ;; Now we enter critical region. So, keyboard quit is disabled. 190 ;; Now we enter critical region. So, keyboard quit is disabled.
193 (message "Reordering messages...") 191 (message "Reordering messages...")
194 (let ((inhibit-quit t) ;Inhibit quit 192 (let ((inhibit-quit t) ;Inhibit quit
195 (inhibit-read-only t) 193 (inhibit-read-only t)