comparison lisp/vm/vm-mark.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 0d2f883870bc
comparison
equal deleted inserted replaced
69:804d1389bcd6 70:131b0175ea99
21 "Removes all message marks in the current folder." 21 "Removes all message marks in the current folder."
22 (interactive) 22 (interactive)
23 (vm-select-folder-buffer) 23 (vm-select-folder-buffer)
24 (vm-check-for-killed-summary) 24 (vm-check-for-killed-summary)
25 (vm-error-if-folder-empty) 25 (vm-error-if-folder-empty)
26 (message "Clearing all marks...")
27 (let ((mp vm-message-list)) 26 (let ((mp vm-message-list))
28 (while mp 27 (while mp
29 (if (vm-mark-of (car mp)) 28 (if (vm-mark-of (car mp))
30 (progn 29 (progn
31 (vm-set-mark-of (car mp) nil) 30 (vm-set-mark-of (car mp) nil)
32 (vm-mark-for-summary-update (car mp) t))) 31 (vm-mark-for-summary-update (car mp) t)))
33 (setq mp (cdr mp)))) 32 (setq mp (cdr mp))))
34 (vm-display nil nil '(vm-clear-all-marks) 33 (vm-display nil nil '(vm-clear-all-marks)
35 '(vm-clear-all-marks marking-message)) 34 '(vm-clear-all-marks marking-message))
36 (vm-update-summary-and-mode-line) 35 (vm-update-summary-and-mode-line))
37 (message "Clearing all marks... done"))
38 36
39 (defun vm-mark-all-messages () 37 (defun vm-mark-all-messages ()
40 "Mark all messages in the current folder." 38 "Mark all messages in the current folder."
41 (interactive) 39 (interactive)
42 (vm-select-folder-buffer) 40 (vm-select-folder-buffer)
43 (vm-check-for-killed-summary) 41 (vm-check-for-killed-summary)
44 (vm-error-if-folder-empty) 42 (vm-error-if-folder-empty)
45 (message "Marking all messages...")
46 (let ((mp vm-message-list)) 43 (let ((mp vm-message-list))
47 (while mp 44 (while mp
48 (vm-set-mark-of (car mp) t) 45 (vm-set-mark-of (car mp) t)
49 (vm-mark-for-summary-update (car mp) t) 46 (vm-mark-for-summary-update (car mp) t)
50 (setq mp (cdr mp)))) 47 (setq mp (cdr mp))))
51 (vm-display nil nil '(vm-mark-all-messages) 48 (vm-display nil nil '(vm-mark-all-messages)
52 '(vm-mark-all-messages marking-message)) 49 '(vm-mark-all-messages marking-message))
53 (vm-update-summary-and-mode-line) 50 (vm-update-summary-and-mode-line))
54 (message "Marking all messages... done"))
55 51
56 (defun vm-mark-message (count) 52 (defun vm-mark-message (count)
57 "Mark the current message. 53 "Mark the current message.
58 Numeric prefix argument N means mark the current message and the next 54 Numeric prefix argument N means mark the current message and the next
59 N-1 messages. A negative N means mark the current message and the 55 N-1 messages. A negative N means mark the current message and the
99 (vm-mark-for-summary-update (car mlist) t))) 95 (vm-mark-for-summary-update (car mlist) t)))
100 (setq mlist (cdr mlist)))) 96 (setq mlist (cdr mlist))))
101 (vm-display nil nil '(vm-unmark-message) 97 (vm-display nil nil '(vm-unmark-message)
102 '(vm-unmark-message marking-message)) 98 '(vm-unmark-message marking-message))
103 (vm-update-summary-and-mode-line)) 99 (vm-update-summary-and-mode-line))
104
105 (defun vm-mark-summary-region ()
106 "Mark all messages with summary lines contained in the region."
107 (interactive)
108 (vm-select-folder-buffer)
109 (vm-check-for-killed-summary)
110 (vm-error-if-folder-empty)
111 (if (null vm-summary-buffer)
112 (error "No summary."))
113 (set-buffer vm-summary-buffer)
114 (if (not (mark))
115 (error "The region is not active now"))
116 (vm-mark-or-unmark-summary-region t)
117 (vm-display nil nil '(vm-mark-summary-region)
118 '(vm-mark-summary-region marking-message))
119 (vm-update-summary-and-mode-line))
120
121 (defun vm-unmark-summary-region ()
122 "Remove marks from messages with summary lines contained in the region."
123 (interactive)
124 (vm-select-folder-buffer)
125 (vm-check-for-killed-summary)
126 (vm-error-if-folder-empty)
127 (if (null vm-summary-buffer)
128 (error "No summary."))
129 (set-buffer vm-summary-buffer)
130 (if (not (mark))
131 (error "The region is not active now"))
132 (vm-mark-or-unmark-summary-region nil)
133 (vm-display nil nil '(vm-unmark-summary-region)
134 '(vm-unmark-summary-region marking-message))
135 (vm-update-summary-and-mode-line))
136
137 (defun vm-mark-or-unmark-summary-region (markit)
138 ;; The folder buffers copy of vm-message-list has already been
139 ;; propagated to the summary buffer.
140 (let ((mp vm-message-list)
141 (beg (point))
142 (end (mark))
143 tmp m)
144 (if (> beg end)
145 (setq tmp beg beg end end tmp))
146 (while mp
147 (setq m (car mp))
148 (if (not (eq (not markit) (not (vm-mark-of m))))
149 (if (or (and (> (vm-su-end-of m) beg)
150 (< (vm-su-end-of m) end))
151 (and (>= (vm-su-start-of m) beg)
152 (< (vm-su-start-of m) end))
153 (and (>= beg (vm-su-start-of m))
154 (< beg (vm-su-end-of m))))
155 (progn
156 (vm-set-mark-of m markit)
157 (vm-mark-for-summary-update m t))))
158 (setq mp (cdr mp)))))
159 100
160 (defun vm-mark-or-unmark-messages-with-selector (val selector arg) 101 (defun vm-mark-or-unmark-messages-with-selector (val selector arg)
161 (let ((mlist vm-message-list) 102 (let ((mlist vm-message-list)
162 (virtual (eq major-mode 'vm-virtual-mode)) 103 (virtual (eq major-mode 'vm-virtual-mode))
163 (arglist (if arg (list arg) nil)) 104 (arglist (if arg (list arg) nil))
345 (list this-command 'marking-message)) 286 (list this-command 'marking-message))
346 (vm-update-summary-and-mode-line)) 287 (vm-update-summary-and-mode-line))
347 288
348 (defun vm-next-command-uses-marks () 289 (defun vm-next-command-uses-marks ()
349 "Does nothing except insure that the next VM command will operate only 290 "Does nothing except insure that the next VM command will operate only
350 on the marked messages in the current folder. This only works for 291 on the marked messages in the current folder."
351 commands bound to key, menu or button press events. M-x vm-command will
352 not work."
353 (interactive) 292 (interactive)
354 (setq this-command 'vm-next-command-uses-marks) 293 (setq this-command 'vm-next-command-uses-marks)
355 (message "Next command uses marks...") 294 (vm-unsaved-message "Next command uses marks...")
356 (vm-display nil nil '(vm-next-command-uses-marks) 295 (vm-display nil nil '(vm-next-command-uses-marks)
357 '(vm-next-command-uses-marks))) 296 '(vm-next-command-uses-marks)))
358 297
359 (defun vm-marked-messages () 298 (defun vm-marked-messages ()
360 (let (list (mp vm-message-list)) 299 (let (list (mp vm-message-list))