;;; wl-highlight.el --- Hilight modules for Wanderlust.
-;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+;; Yuuichi Teranishi <teranisi@gohome.org>
;; Author: Yuuichi Teranishi <teranisi@gohome.org>
;; Keywords: mail, net news
(require 'wl-e21))
(t
(require 'wl-mule)))
- (defun-maybe extent-begin-glyph (a))
- (defun-maybe delete-extent (a))
- (defun-maybe make-extent (a b))
- (defun-maybe set-extent-begin-glyph (a b))
- (defun-maybe set-extent-end-glyph (a b))
- (defun-maybe extent-at (a b c d e))
(defun-maybe wl-dnd-set-drop-target (a b))
(defun-maybe wl-dnd-set-drag-starter (a b)))
:group 'wl-summary-faces
:group 'wl-faces)
-(wl-defface wl-highlight-summary-deleted-face
+(wl-defface wl-highlight-summary-disposed-face
'(
(((type tty)
(background dark))
(((class color)
(background light))
(:foreground "DarkKhaki")))
+ "Face used for displaying messages mark as disposed."
+ :group 'wl-summary-faces
+ :group 'wl-faces)
+
+(wl-defface wl-highlight-summary-deleted-face
+ '(
+ (((type tty)
+ (background dark))
+ (:foreground "blue"))
+ (((class color)
+ (background dark))
+ (:foreground "SteelBlue"))
+ (((class color)
+ (background light))
+ (:foreground "RoyalBlue4")))
+ "Face used for displaying messages mark as deleted."
+ :group 'wl-summary-faces
+ :group 'wl-faces)
+
+(wl-defface wl-highlight-summary-prefetch-face
+ '(
+ (((type tty)
+ (background dark))
+ (:foreground "Green"))
+ (((class color)
+ (background dark))
+ (:foreground "DeepSkyBlue"))
+ (((class color)
+ (background light))
+ (:foreground "brown")))
"Face used for displaying messages mark as deleted."
:group 'wl-summary-faces
:group 'wl-faces)
+(wl-defface wl-highlight-summary-resend-face
+ '(
+ (((type tty)
+ (background dark))
+ (:foreground "Yellow"))
+ (((class color)
+ (background dark))
+ (:foreground "orange3"))
+ (((class color)
+ (background light))
+ (:foreground "orange3")))
+ "Face used for displaying messages mark as resend."
+ :group 'wl-summary-faces
+ :group 'wl-faces)
+
(wl-defface wl-highlight-summary-refiled-face
'(
(((type tty)
:group 'wl-summary-faces
:group 'wl-faces)
+;; answered
+(wl-defface wl-highlight-summary-answered-face
+ '((((type tty)
+ (background dark))
+ (:foreground "yellow"))
+ (((class color)
+ (background dark))
+ (:foreground "khaki"))
+ (((class color)
+ (background light))
+ (:foreground "khaki4")))
+ "Face used for displaying answered messages."
+ :group 'wl-summary-faces
+ :group 'wl-faces)
+
;; obsolete.
(wl-defface wl-highlight-summary-temp-face
'(
"Face used for displaying demo."
:group 'wl-faces)
-(wl-defface wl-highlight-refile-destination-face
+(wl-defface wl-highlight-action-argument-face
'((((class color)
(background dark))
(:foreground "pink"))
(((class color)
(background light))
(:foreground "red")))
- "Face used for displaying refile destination."
+ "Face used for displaying action argument."
:group 'wl-summary-faces
:group 'wl-faces)
(put-text-property bol eol 'face text-face)))))
(defun wl-highlight-summary-line-string (line mark temp-mark indent)
- (let (fsymbol)
+ (let (fsymbol action)
(cond ((and (string= temp-mark wl-summary-score-over-mark)
- (member mark (list wl-summary-unread-cached-mark
- wl-summary-unread-uncached-mark
- wl-summary-new-mark)))
+ (member mark (list elmo-msgdb-unread-cached-mark
+ elmo-msgdb-unread-uncached-mark
+ elmo-msgdb-new-mark)))
(setq fsymbol 'wl-highlight-summary-high-unread-face))
((and (string= temp-mark wl-summary-score-below-mark)
- (member mark (list wl-summary-unread-cached-mark
- wl-summary-unread-uncached-mark
- wl-summary-new-mark)))
+ (member mark (list elmo-msgdb-unread-cached-mark
+ elmo-msgdb-unread-uncached-mark
+ elmo-msgdb-new-mark)))
(setq fsymbol 'wl-highlight-summary-low-unread-face))
- ((string= temp-mark "o")
- (setq fsymbol 'wl-highlight-summary-refiled-face))
- ((string= temp-mark "O")
- (setq fsymbol 'wl-highlight-summary-copied-face))
- ((string= temp-mark "D")
- (setq fsymbol 'wl-highlight-summary-deleted-face))
- ((string= temp-mark "*")
- (setq fsymbol 'wl-highlight-summary-temp-face))
- ((string= mark wl-summary-new-mark)
+ ((setq action (assoc temp-mark wl-summary-mark-action-list))
+ (setq fsymbol (nth 5 action)))
+ ((string= mark elmo-msgdb-new-mark)
(setq fsymbol 'wl-highlight-summary-new-face))
- ((member mark (list wl-summary-unread-cached-mark
- wl-summary-unread-uncached-mark))
+ ((member mark (list elmo-msgdb-unread-cached-mark
+ elmo-msgdb-unread-uncached-mark))
(setq fsymbol 'wl-highlight-summary-unread-face))
- ((or (string= mark wl-summary-important-mark))
+ ((member mark (list elmo-msgdb-answered-cached-mark
+ elmo-msgdb-answered-uncached-mark))
+ (setq fsymbol 'wl-highlight-summary-answered-face))
+ ((or (string= mark elmo-msgdb-important-mark))
(setq fsymbol 'wl-highlight-summary-important-face))
((string= temp-mark wl-summary-score-below-mark)
(setq fsymbol 'wl-highlight-summary-low-read-face))
(if wl-use-highlight-mouse-line
(put-text-property 0 (length line) 'mouse-face 'highlight line)))
-(defun wl-highlight-summary-current-line (&optional smark regexp temp-too)
+(defun wl-highlight-summary-current-line ()
(interactive)
(save-excursion
(let ((inhibit-read-only t)
(case-fold-search nil) temp-mark status-mark
(deactivate-mark nil)
- fregexp fsymbol bol eol matched thread-top looked-at dest ds)
+ fsymbol action bol eol matched thread-top looked-at dest ds)
(end-of-line)
(setq eol (point))
(beginning-of-line)
(setq bol (point))
- (if smark
- (setq status-mark smark)
- (setq status-mark (wl-summary-persistent-mark)))
- (when temp-too
- (setq temp-mark (wl-summary-temp-mark))
- (cond
- ((string= temp-mark "*")
- (setq fsymbol 'wl-highlight-summary-temp-face))
- ((string= temp-mark "D")
- (setq fsymbol 'wl-highlight-summary-deleted-face))
- ((string= temp-mark "O")
- (setq fsymbol 'wl-highlight-summary-copied-face
- dest t))
- ((string= temp-mark "o")
- (setq fsymbol 'wl-highlight-summary-refiled-face
- dest t))))
+ (setq status-mark (wl-summary-persistent-mark))
+ (setq temp-mark (wl-summary-temp-mark))
+ (when (setq action (assoc temp-mark wl-summary-mark-action-list))
+ (setq fsymbol (nth 5 action))
+ (setq dest (nth 2 action)))
(if (not fsymbol)
(cond
((and (string= temp-mark wl-summary-score-over-mark)
- (member status-mark (list wl-summary-unread-cached-mark
- wl-summary-unread-uncached-mark
- wl-summary-new-mark)))
+ (member status-mark (list elmo-msgdb-unread-cached-mark
+ elmo-msgdb-unread-uncached-mark
+ elmo-msgdb-new-mark)))
(setq fsymbol 'wl-highlight-summary-high-unread-face))
((and (string= temp-mark wl-summary-score-below-mark)
- (member status-mark (list wl-summary-unread-cached-mark
- wl-summary-unread-uncached-mark
- wl-summary-new-mark)))
+ (member status-mark (list elmo-msgdb-unread-cached-mark
+ elmo-msgdb-unread-uncached-mark
+ elmo-msgdb-new-mark)))
(setq fsymbol 'wl-highlight-summary-low-unread-face))
- ((string= status-mark wl-summary-new-mark)
+ ((string= status-mark elmo-msgdb-new-mark)
(setq fsymbol 'wl-highlight-summary-new-face))
- ((member status-mark (list wl-summary-unread-cached-mark
- wl-summary-unread-uncached-mark))
+ ((member status-mark (list elmo-msgdb-unread-cached-mark
+ elmo-msgdb-unread-uncached-mark))
(setq fsymbol 'wl-highlight-summary-unread-face))
- ((string= status-mark wl-summary-important-mark)
+ ((member status-mark (list elmo-msgdb-answered-cached-mark
+ elmo-msgdb-answered-uncached-mark))
+ (setq fsymbol 'wl-highlight-summary-answered-face))
+ ((string= status-mark elmo-msgdb-important-mark)
(setq fsymbol 'wl-highlight-summary-important-face))
;; score mark
((string= temp-mark wl-summary-score-below-mark)
(when dest
(put-text-property (next-single-property-change
(next-single-property-change
- bol 'wl-summary-destination
+ bol 'wl-summary-action-argument
nil eol)
- 'wl-summary-destination nil eol)
+ 'wl-summary-action-argument nil eol)
eol
'face
- 'wl-highlight-refile-destination-face))
+ 'wl-highlight-action-argument-face))
(if wl-use-highlight-mouse-line
(put-text-property bol
-;;; Use bol instead of (1- (match-end 0))
-;;; (1- (match-end 0))
eol 'mouse-face 'highlight))
-;;; (put-text-property (match-beginning 3) (match-end 3)
-;;; 'face 'wl-highlight-thread-indent-face)
- ;; Dnd stuff.
(if wl-use-dnd
(wl-dnd-set-drag-starter bol eol)))))
(overlay-put ov 'wl-momentary-overlay t))
(forward-line 1)))))
-(defun wl-highlight-refile-destination-string (string)
+(defun wl-highlight-action-argument-string (string)
(put-text-property 0 (length string) 'face
- 'wl-highlight-refile-destination-face
+ 'wl-highlight-action-argument-face
string))
(defun wl-highlight-summary-all ()
(< (point) end))
(when (or (not lazy)
(null (get-text-property (point) 'face)))
- (wl-highlight-summary-current-line nil nil
- (or wl-summary-lazy-highlight
- wl-summary-scored)))
+ (wl-highlight-summary-current-line))
(forward-line 1))
(unless wl-summary-lazy-highlight
(message "Highlighting...done")))))
(defun wl-highlight-summary-window (&optional win beg)
"Highlight summary window.
This function is defined for `window-scroll-functions'"
- (if wl-summary-highlight
- (with-current-buffer (window-buffer win)
- (when (eq major-mode 'wl-summary-mode)
- (wl-highlight-summary (window-start win)
- (window-end win)
- 'lazy)
- (set-buffer-modified-p nil)))))
+ (when wl-summary-highlight
+ (with-current-buffer (window-buffer win)
+ (when (eq major-mode 'wl-summary-mode)
+ (let ((start (window-start win))
+ (end (condition-case nil
+ (window-end win t) ;; old emacsen doesn't support 2nd arg.
+ (error (window-end win)))))
+ (wl-highlight-summary start
+ end
+ 'lazy))
+ (set-buffer-modified-p nil)))))
(defun wl-highlight-headers (&optional for-draft)
(let ((beg (point-min))
(real-end end)
current beg
e p hend)
- (if too-big
- nil
+ (unless too-big
(save-excursion
(save-restriction
(widen)
(goto-char start)
(while (and (not body-only)
(not (eobp)))
- (cond
- ((looking-at "^[^ \t\n:]+[ \t]*:")
- (put-text-property (match-beginning 0) (match-end 0)
- 'face 'wl-highlight-message-headers)
- (setq p (match-end 0))
- (setq hend (save-excursion (std11-field-end end)))
- (cond
- ((catch 'match
- (let ((regexp-alist wl-highlight-message-header-alist))
- (while regexp-alist
- (when (save-match-data
- (looking-at (caar regexp-alist)))
- (put-text-property p hend 'face
- (cdar regexp-alist))
- (throw 'match t))
- (setq regexp-alist (cdr regexp-alist)))
- (throw 'match nil))))
- (t
- (put-text-property
- p hend 'face 'wl-highlight-message-header-contents)))
- (goto-char hend))
- ;; ignore non-header field name lines
- (t (forward-line 1))))))
+ (if (looking-at "^[^ \t\n:]+[ \t]*:")
+ (progn
+ (put-text-property (match-beginning 0) (match-end 0)
+ 'face 'wl-highlight-message-headers)
+ (setq p (match-end 0))
+ (setq hend (save-excursion (std11-field-end end)))
+ (or (catch 'match
+ (let ((regexp-alist wl-highlight-message-header-alist))
+ (while regexp-alist
+ (when (save-match-data
+ (looking-at (caar regexp-alist)))
+ (put-text-property p hend 'face
+ (cdar regexp-alist))
+ (throw 'match t))
+ (setq regexp-alist (cdr regexp-alist)))
+ (throw 'match nil)))
+ (put-text-property
+ p hend 'face 'wl-highlight-message-header-contents))
+ (goto-char hend))
+ ;; ignore non-header field name lines
+ (forward-line 1)))))
(let (prefix prefix-face-alist pair end)
(while (not (eobp))
(cond