~reddyuday/vm/message

« back to all changes in this revision

Viewing changes to lisp/vm-motion.el

  • Committer: Uday S Reddy
  • Date: 2012-02-19 20:44:14 UTC
  • Revision ID: u.s.reddy@cs.bham.ac.uk-20120219204414-8r12igaks0pybpo3
Make vm-record-and-change-message-pointer update the presentation buffer to keep it consistent.  (Bug 936517).

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
 
36
36
(declare-function vm-so-sortable-subject "vm-sort" (message))
37
37
 
38
 
(defun vm-record-and-change-message-pointer (old new)
 
38
(defun* vm-record-and-change-message-pointer (old new &key present)
39
39
  "Change the `vm-message-pointer' of the folder from OLD to NEW, both
40
 
of which must be pointers into the `vm-message-list'."
 
40
of which must be pointers into the `vm-message-list'.
 
41
If the keyword argument PRESENT is t, then update the presentation
 
42
buffer to contain the message at the position NEW."
41
43
  (intern (buffer-name) vm-buffers-needing-display-update)
42
44
  (vm-garbage-collect-message)
43
45
  (setq vm-last-message-pointer old
44
46
        vm-message-pointer new
45
 
        vm-need-summary-pointer-update t))
 
47
        vm-need-summary-pointer-update t)
 
48
  (if present
 
49
      (vm-present-current-message)))
46
50
 
47
51
;;;###autoload
48
52
(defun vm-goto-message (n)
72
76
          (error "No such message."))
73
77
      (if (eq vm-message-pointer cons)
74
78
          (vm-present-current-message)
75
 
        (vm-record-and-change-message-pointer vm-message-pointer cons)
76
 
        (vm-present-current-message)
 
79
        (vm-record-and-change-message-pointer vm-message-pointer cons
 
80
                                              :present t)
77
81
        ;;(vm-warn 0 0 "start of message you want is: %s"
78
82
        ;; (vm-su-start-of (car vm-message-pointer)))
79
83
        (if (and (vm-summary-operation-p)
92
96
  (vm-display nil nil '(vm-goto-message-last-seen)
93
97
              '(vm-goto-message-last-seen))
94
98
  (if vm-last-message-pointer
95
 
      (progn
96
 
        (vm-record-and-change-message-pointer vm-message-pointer
97
 
                                              vm-last-message-pointer)
98
 
        (vm-present-current-message))))
 
99
      (vm-record-and-change-message-pointer 
 
100
       vm-message-pointer vm-last-message-pointer
 
101
       :present t)))
99
102
(defalias 'vm-goto-last-message-seen 'vm-goto-message-last-seen)
100
103
 
101
104
;;;###autoload
122
125
             (setq message (car lineage)))))
123
126
    (when message
124
127
      (setq message (car (vm-th-messages-of (car lineage))))
125
 
      (vm-record-and-change-message-pointer vm-message-pointer
126
 
                                            (vm-message-position message))
127
 
      (vm-present-current-message))))
 
128
      (vm-record-and-change-message-pointer 
 
129
       vm-message-pointer (vm-message-position message)
 
130
       :present t))))
128
131
 
129
132
(defun vm-check-count (count)
130
133
  (if (>= count 0)
307
310
                      oldmp )))
308
311
           (setq error 'end-of-folder))))))
309
312
    (unless (eq vm-message-pointer oldmp)
310
 
      (vm-record-and-change-message-pointer oldmp vm-message-pointer)
311
 
      (vm-present-current-message))
 
313
      (vm-record-and-change-message-pointer 
 
314
       oldmp vm-message-pointer
 
315
       :present t))
312
316
    (when (and error signal-errors)
313
317
         (signal error nil))))
314
318
 
439
443
            (if (equal subject
440
444
                       (vm-so-sortable-subject (car vm-message-pointer)))
441
445
                (setq done t)))
442
 
          (vm-record-and-change-message-pointer oldmp vm-message-pointer)
443
 
          (vm-present-current-message))
 
446
          (vm-record-and-change-message-pointer 
 
447
           oldmp vm-message-pointer :present t))
444
448
      (end-of-folder
445
449
       (setq vm-message-pointer oldmp)
446
450
       (vm-inform 5 "No next message with the same subject")))))
468
472
            (if (equal subject
469
473
                       (vm-so-sortable-subject (car vm-message-pointer)))
470
474
                (setq done t)))
471
 
          (vm-record-and-change-message-pointer oldmp vm-message-pointer)
472
 
          (vm-present-current-message))
 
475
          (vm-record-and-change-message-pointer 
 
476
           oldmp vm-message-pointer :present t))
473
477
      (beginning-of-folder
474
478
       (setq vm-message-pointer oldmp)
475
479
       (vm-inform 5 "No previous message with the same subject")))))
549
553
               ;;       (save-excursion
550
554
               ;;         (set-buffer vm-mail-buffer)
551
555
               ;;         (vm-record-and-change-message-pointer 
552
 
               ;;               vm-message-pointer mp)
553
 
               ;;         (vm-present-current-message)
 
556
               ;;               vm-message-pointer mp :present t)
554
557
               ;;         ;; return non-nil so the caller will know that
555
558
               ;;         ;; a new message was selected.
556
559
               ;;         t ))
566
569
                (if (not (eq mp message-pointer))
567
570
                    (save-excursion
568
571
                      (set-buffer vm-mail-buffer)
 
572
                      ;; presentation disabled to avoid message
 
573
                      ;; loading. USR, 2010-09-30
569
574
                      (vm-record-and-change-message-pointer
570
 
                       vm-message-pointer mp)
571
 
                      ;; preview disabled to avoid message
572
 
                      ;; loading. USR, 2010-09-30
573
 
                      ;; (vm-present-current-message)
 
575
                       vm-message-pointer mp :present nil)
574
576
                      ;; return non-nil so the caller will know that
575
577
                      ;; a new message was selected.
576
578
                      t )))))))