- (unless (string= (wl-summary-persistent-mark) new-mark)
- (delete-backward-char 1)
- (insert (or new-mark " "))
- (if (and visible wl-summary-highlight)
- (wl-highlight-summary-current-line))
- (set-buffer-modified-p nil)))
- number)))
+ (if (null (wl-summary-message-number))
+ (message "No message.")
+ (end-of-line)
+ (setq eol (point))
+ (wl-summary-goto-previous-message-beginning)))
+ (if (or (and (not visible)
+ ;; already exists in msgdb.
+ (elmo-msgdb-overview-get-entity number msgdb))
+ (progn
+ ;; visible.
+ (setq cur-mark (wl-summary-persistent-mark))
+ (or (string= cur-mark " ")
+ (string= cur-mark wl-summary-read-uncached-mark))))
+ (progn
+ (setq number (or number (wl-summary-message-number)))
+ (setq mark (or mark cur-mark))
+ (save-match-data
+ (setq new-mark (if (string= mark
+ wl-summary-read-uncached-mark)
+ wl-summary-unread-uncached-mark
+ (if (elmo-message-use-cache-p folder number)
+ wl-summary-unread-mark
+ wl-summary-unread-uncached-mark))))
+ ;; server side mark
+ (unless no-server-update
+ (save-match-data
+ (unless (elmo-folder-unmark-read folder (list number))
+ (error "Setting mark failed"))))
+ (when visible
+ (delete-backward-char 1)
+ (insert new-mark))
+ (elmo-msgdb-set-mark msgdb number new-mark)
+ (unless no-modeline-update
+ (setq wl-summary-buffer-unread-count
+ (+ 1 wl-summary-buffer-unread-count))
+ (wl-summary-update-modeline)
+ (wl-folder-update-unread
+ (wl-summary-buffer-folder-name)
+ (+ wl-summary-buffer-unread-count
+ wl-summary-buffer-new-count)))
+ (wl-summary-set-mark-modified)
+ (if (and visible wl-summary-highlight)
+ (wl-highlight-summary-current-line))))))
+ (set-buffer-modified-p nil))