Define unmark functions for temporary marks.
[elisp/wanderlust.git] / wl / wl-summary.el
index 0930360..72811d5 100644 (file)
@@ -430,6 +430,7 @@ See also variable `wl-use-petname'."
   (define-key wl-summary-mode-map "\C-c\C-n" 'wl-summary-next-buffer)
   (define-key wl-summary-mode-map "H"    'wl-summary-toggle-all-header)
   (define-key wl-summary-mode-map "M"    'wl-summary-toggle-mime)
+  (define-key wl-summary-mode-map "\C-cm" 'wl-summary-toggle-mime-buttons)
   (define-key wl-summary-mode-map "B"    'wl-summary-burst)
   (define-key wl-summary-mode-map "Z"    'wl-status-update)
   (define-key wl-summary-mode-map "#"    'wl-summary-print-message)
@@ -653,32 +654,33 @@ See also variable `wl-use-petname'."
 ;; Handler of event from elmo-folder
 (defun wl-summary-update-persistent-mark-on-event (buffer numbers)
   (with-current-buffer buffer
-    (if wl-summary-lazy-update-mark
-       (let ((window-list (get-buffer-window-list (current-buffer) 'nomini t))
-             invalidate)
-         (dolist (number numbers)
-           (when (wl-summary-message-visible-p number)
-             (if (catch 'visible
-                   (let ((window-list window-list)
-                         win)
-                     (while (setq win (car window-list))
-                       (when (wl-summary-jump-to-msg number
-                                                     (window-start win)
-                                                     (window-end win))
-                         (throw 'visible t))
-                       (setq window-list (cdr window-list)))))
-                 (wl-summary-update-persistent-mark number)
-               (setq invalidate t))))
-         (when invalidate
-           (wl-summary-invalidate-persistent-mark)
-           (dolist (win window-list)
-             (wl-summary-validate-persistent-mark
-              (window-start win)
-              (window-end win)))))
-      (dolist (number numbers)
-       (when (and (wl-summary-message-visible-p number)
-                  (wl-summary-jump-to-msg number))
-         (wl-summary-update-persistent-mark number))))))
+    (save-excursion
+      (if wl-summary-lazy-update-mark
+         (let ((window-list (get-buffer-window-list (current-buffer) 'nomini t))
+               invalidate)
+           (dolist (number numbers)
+             (when (wl-summary-message-visible-p number)
+               (if (catch 'visible
+                     (let ((window-list window-list)
+                           win)
+                       (while (setq win (car window-list))
+                         (when (wl-summary-jump-to-msg number
+                                                       (window-start win)
+                                                       (window-end win))
+                           (throw 'visible t))
+                         (setq window-list (cdr window-list)))))
+                   (wl-summary-update-persistent-mark number)
+                 (setq invalidate t))))
+           (when invalidate
+             (wl-summary-invalidate-persistent-mark)
+             (dolist (win window-list)
+               (wl-summary-validate-persistent-mark
+                (window-start win)
+                (window-end win)))))
+       (dolist (number numbers)
+         (when (and (wl-summary-message-visible-p number)
+                    (wl-summary-jump-to-msg number))
+           (wl-summary-update-persistent-mark number)))))))
 
 (defun wl-summary-buffer-attach ()
   (when wl-summary-buffer-elmo-folder
@@ -5101,6 +5103,13 @@ If ARG is numeric number, decode message as following:
          (wl-message-header-narrowing-toggle)
          (and wpos (set-window-start mwin wpos)))))))
 
+(defun wl-summary-toggle-mime-buttons ()
+  "Toggle visibility of mime buttons."
+  (interactive)
+  (customize-set-value 'mime-view-buttons-visible (not mime-view-buttons-visible))
+  (wl-message-buffer-cache-clean-up)
+  (wl-summary-redisplay))
+
 (require 'product)
 (product-provide (provide 'wl-summary) (require 'wl-version))