- (let (action)
- (if (setq action (assoc temp-mark wl-summary-mark-action-list))
- (cons (nth 5 action) (nth 2 action))
- (cond
- ((and (string= temp-mark wl-summary-score-over-mark)
- (or (memq 'new flags) (memq 'unread flags)))
- '(wl-highlight-summary-high-unread-face))
- ((and (string= temp-mark wl-summary-score-below-mark)
- (or (memq 'new flags) (memq 'unread flags)))
- '(wl-highlight-summary-low-unread-face))
- ((let ((priorities wl-summary-flag-priority-list)
- result)
- (while (and (null result) priorities)
- (when (memq (car priorities) flags)
- (setq result
- (case (car priorities)
- (new
- '(wl-highlight-summary-new-face))
- (important
- '(wl-highlight-summary-important-face))
- (answered
- '(wl-highlight-summary-answered-face))
- (unread
- '(wl-highlight-summary-unread-face)))))
- (setq priorities (cdr priorities)))
- result))
- ((string= temp-mark wl-summary-score-below-mark)
- '(wl-highlight-summary-low-read-face))
- ((string= temp-mark wl-summary-score-over-mark)
- '(wl-highlight-summary-high-read-face))
- (t (if indent
- '(wl-highlight-summary-normal-face)
- '(wl-highlight-summary-thread-top-face)))))))
-
-(defun wl-highlight-summary-line-string (line flags temp-mark indent)
+ (or (let (action)
+ (and (setq action (assoc temp-mark wl-summary-mark-action-list))
+ (cons (nth 5 action) (nth 2 action))))
+ (let ((flags (elmo-message-status-flags status)))
+ (cond
+ ((and (string= temp-mark wl-summary-score-over-mark)
+ (or (memq 'new flags) (memq 'unread flags)))
+ '(wl-highlight-summary-high-unread-face))
+ ((and (string= temp-mark wl-summary-score-below-mark)
+ (or (memq 'new flags) (memq 'unread flags)))
+ '(wl-highlight-summary-low-unread-face))
+ ((let ((priorities wl-summary-persistent-mark-priority-list)
+ (fl wl-summary-flag-alist)
+ face result global-flags)
+ (while (and (null result) priorities)
+ (cond
+ ((eq (car priorities) 'killed)
+ (when (elmo-message-status-killed-p status)
+ (setq result '(wl-highlight-summary-killed-face))))
+ ((eq (car priorities) 'flag)
+ (when (setq global-flags
+ (elmo-get-global-flags flags 'ignore-preserved))
+ (while fl
+ (when (memq (car (car fl)) global-flags)
+ (setq result
+ (list (or (wl-highlight-get-face-by-name
+ "wl-highlight-summary-%s-flag-face"
+ (car (car fl)))
+ 'wl-highlight-summary-flagged-face))
+ fl nil))
+ (setq fl (cdr fl)))
+ (unless result
+ (setq result (list 'wl-highlight-summary-flagged-face)))))
+ ((memq (car priorities) flags)
+ (setq result
+ (list (or (wl-highlight-get-face-by-name
+ "wl-highlight-summary-%s-face"
+ (car priorities))
+ 'wl-summary-persistent-mark-face)))))
+ (setq priorities (cdr priorities)))
+ result))
+ ((string= temp-mark wl-summary-score-below-mark)
+ '(wl-highlight-summary-low-read-face))
+ ((string= temp-mark wl-summary-score-over-mark)
+ '(wl-highlight-summary-high-read-face))
+ (t (if indent
+ '(wl-highlight-summary-normal-face)
+ '(wl-highlight-summary-thread-top-face)))))))
+
+(autoload 'elmo-flag-folder-referrer "elmo-flag")
+(defun wl-highlight-flag-folder-help-echo (folder number)
+ (let ((referer (elmo-flag-folder-referrer folder number)))
+ (concat "The message exists in "
+ (mapconcat
+ (lambda (pair)
+ (concat (car pair) "/"
+ (number-to-string
+ (cdr pair))))
+ referer ","))))
+
+(defun wl-highlight-summary-line-help-echo (number beg end &optional string)
+ (let ((type (elmo-folder-type-internal wl-summary-buffer-elmo-folder))
+ message handler)
+ (when (setq handler (cadr (assq type wl-highlight-summary-line-help-echo-alist)))
+ (setq message
+ (funcall handler wl-summary-buffer-elmo-folder number))
+ (if message
+ (put-text-property beg end 'help-echo
+ message
+ string)))))
+
+(defun wl-highlight-summary-line-string (number line status temp-mark indent)