comparison lisp/vm/vm-sort.el @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents 05472e90ae02
children a145efe76779
comparison
equal deleted inserted replaced
69:804d1389bcd6 70:131b0175ea99
210 (defun vm-so-sortable-datestring (m) 210 (defun vm-so-sortable-datestring (m)
211 (or (vm-sortable-datestring-of m) 211 (or (vm-sortable-datestring-of m)
212 (progn 212 (progn
213 (vm-set-sortable-datestring-of 213 (vm-set-sortable-datestring-of
214 m 214 m
215 (condition-case nil 215 (timezone-make-date-sortable
216 (timezone-make-date-sortable 216 (or (vm-get-header-contents m "Date:")
217 (or (vm-get-header-contents m "Date:") 217 (vm-grok-From_-date m)
218 (vm-grok-From_-date m) 218 "Thu, 1 Jan 1970 00:00:00 GMT")
219 "Thu, 1 Jan 1970 00:00:00 GMT") 219 "GMT" "GMT"))
220 "GMT" "GMT")
221 (error "1970010100:00:00")))
222 (vm-sortable-datestring-of m)))) 220 (vm-sortable-datestring-of m))))
223 221
224 (defun vm-so-sortable-subject (m) 222 (defun vm-so-sortable-subject (m)
225 (or (vm-sortable-subject-of m) 223 (or (vm-sortable-subject-of m)
226 (progn 224 (progn
327 (setq key-funcs (cons 'vm-sort-compare-physical-order key-funcs))) 325 (setq key-funcs (cons 'vm-sort-compare-physical-order key-funcs)))
328 ((equal key "reversed-physical-order") 326 ((equal key "reversed-physical-order")
329 (setq key-funcs (cons 'vm-sort-compare-physical-order-r key-funcs))) 327 (setq key-funcs (cons 'vm-sort-compare-physical-order-r key-funcs)))
330 (t (error "Unknown key: %s" key))) 328 (t (error "Unknown key: %s" key)))
331 (setq key-list (cdr key-list))) 329 (setq key-list (cdr key-list)))
332 (message "Sorting...") 330 (vm-unsaved-message "Sorting...")
333 (let ((vm-key-functions (nreverse key-funcs))) 331 (let ((vm-key-functions (nreverse key-funcs)))
334 (setq new-message-list (sort (copy-sequence old-message-list) 332 (setq new-message-list (sort (copy-sequence old-message-list)
335 'vm-sort-compare-xxxxxx)) 333 'vm-sort-compare-xxxxxx))
336 ;; only need to do this sort if we're going to physically 334 ;; only need to do this sort if we're going to physically
337 ;; move messages later. 335 ;; move messages later.
338 (if physical 336 (if physical
339 (setq vm-key-functions '(vm-sort-compare-physical-order) 337 (setq vm-key-functions '(vm-sort-compare-physical-order)
340 physical-order-list (sort (copy-sequence old-message-list) 338 physical-order-list (sort (copy-sequence old-message-list)
341 'vm-sort-compare-xxxxxx)))) 339 'vm-sort-compare-xxxxxx))))
342 (message "Sorting... done") 340 (vm-unsaved-message "Sorting... done")
343 (let ((inhibit-quit t)) 341 (let ((inhibit-quit t))
344 (setq mp-old old-message-list 342 (setq mp-old old-message-list
345 mp-new new-message-list) 343 mp-new new-message-list)
346 (while mp-new 344 (while mp-new
347 (if (eq (car mp-old) (car mp-new)) 345 (if (eq (car mp-old) (car mp-new))
377 ;; strip out any existing message order header and 375 ;; strip out any existing message order header and
378 ;; say there are no changes to prevent a message 376 ;; say there are no changes to prevent a message
379 ;; order header from being stuffed later. 377 ;; order header from being stuffed later.
380 (vm-remove-message-order) 378 (vm-remove-message-order)
381 (setq vm-message-order-changed nil) 379 (setq vm-message-order-changed nil)
382 (message "Moving messages... ") 380 (vm-unsaved-message "Moving messages... ")
383 (widen) 381 (widen)
384 (setq mp-old physical-order-list 382 (setq mp-old physical-order-list
385 mp-new new-message-list) 383 mp-new new-message-list)
386 (setq old-start (vm-start-of (car mp-old))) 384 (setq old-start (vm-start-of (car mp-old)))
387 (while mp-new 385 (while mp-new
400 (setq old-start (vm-start-of (car mp-old))) 398 (setq old-start (vm-start-of (car mp-old)))
401 ;; move mp-new but not mp-old because we moved 399 ;; move mp-new but not mp-old because we moved
402 ;; mp-old down one message by inserting a 400 ;; mp-old down one message by inserting a
403 ;; message in front of it. 401 ;; message in front of it.
404 (setq mp-new (cdr mp-new))))) 402 (setq mp-new (cdr mp-new)))))
405 (message "Moving messages... done") 403 (vm-unsaved-message "Moving messages... done")
406 (vm-set-buffer-modified-p t) 404 (vm-set-buffer-modified-p t)
407 (vm-clear-modification-flag-undos)) 405 (vm-clear-modification-flag-undos))
408 (if (and order-did-change (not vm-folder-read-only)) 406 (if (and order-did-change (not vm-folder-read-only))
409 (progn 407 (progn
410 (setq vm-message-order-changed t) 408 (setq vm-message-order-changed t)