diff options
author | Karl Heuer <kwzh@gnu.org> | 1994-04-24 18:30:53 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1994-04-24 18:30:53 +0000 |
commit | 99887e16ef939603515231b4bb06ee5aca2b160a (patch) | |
tree | 886f5c6179e5a6da7ec74d82e2c957688bea8a42 /lisp | |
parent | c63e83a4ee11ed29aedd3235bc45c1892b2efbff (diff) | |
download | emacs-99887e16ef939603515231b4bb06ee5aca2b160a.tar.gz |
(rmail-highlight-headers): Extracted as a new function. Fix overlay position.
Do nothing if face support is unavailable.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/mail/rmail.el | 79 |
1 files changed, 42 insertions, 37 deletions
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 9606398706a..b61fd65b698 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -1397,43 +1397,7 @@ If summary buffer is currently displayed, update current message there also." (narrow-to-region (point) end)) (goto-char (point-min)) (rmail-display-labels) - ;; Find all occurrences of certain fields, and highlight them. - (save-excursion - (search-forward "\n\n" nil 'move) - (save-restriction - (narrow-to-region (point-min) (point)) - (let ((case-fold-search t) - (inhibit-read-only t) - ;; Highlight with boldface if that is available. - ;; Otherwise use the `highlight' face. - (face (if (face-differs-from-default-p 'bold) - 'bold 'highlight)) - ;; List of overlays to reuse. - (overlays rmail-overlay-list)) - (goto-char (point-min)) - (while (re-search-forward rmail-highlighted-headers nil t) - (skip-syntax-forward " ") - (let ((beg (point)) - overlay) - (while (progn (forward-line 1) - (looking-at "[ \t]"))) - ;; Back up over newline, then trailing spaces or tabs - (forward-char -1) - (while (member (preceding-char) '(? ?\t)) - (forward-char -1)) - (if overlays - ;; Reuse an overlay we already have. - (progn - (setq overlay (car overlays) - overlays (cdr overlays)) - (overlay-put overlay 'face face) - (move-overlay overlay beg (point))) - ;; Make a new overlay and add it to - ;; rmail-overlay-list. - (setq overlay (make-overlay beg beg)) - (overlay-put overlay 'face face) - (setq rmail-overlay-list - (cons overlay rmail-overlay-list)))))))) + (rmail-highlight-headers) (run-hooks 'rmail-show-message-hook) ;; If there is a summary buffer, try to move to this message ;; in that buffer. But don't complain if this message @@ -1445,6 +1409,47 @@ If summary buffer is currently displayed, update current message there also." (if blurb (message blurb)))))) +;; Find all occurrences of certain fields, and highlight them. +(defun rmail-highlight-headers () + ;; Do this only if the system supports faces. + (if (fboundp 'internal-find-face) + (save-excursion + (search-forward "\n\n" nil 'move) + (save-restriction + (narrow-to-region (point-min) (point)) + (let ((case-fold-search t) + (inhibit-read-only t) + ;; Highlight with boldface if that is available. + ;; Otherwise use the `highlight' face. + (face (if (face-differs-from-default-p 'bold) + 'bold 'highlight)) + ;; List of overlays to reuse. + (overlays rmail-overlay-list)) + (goto-char (point-min)) + (while (re-search-forward rmail-highlighted-headers nil t) + (skip-syntax-forward " ") + (let ((beg (point)) + overlay) + (while (progn (forward-line 1) + (looking-at "[ \t]"))) + ;; Back up over newline, then trailing spaces or tabs + (forward-char -1) + (while (member (preceding-char) '(? ?\t)) + (forward-char -1)) + (if overlays + ;; Reuse an overlay we already have. + (progn + (setq overlay (car overlays) + overlays (cdr overlays)) + (overlay-put overlay 'face face) + (move-overlay overlay beg (point))) + ;; Make a new overlay and add it to + ;; rmail-overlay-list. + (setq overlay (make-overlay beg (point))) + (overlay-put overlay 'face face) + (setq rmail-overlay-list + (cons overlay rmail-overlay-list)))))))))) + (defun rmail-next-message (n) "Show following message whether deleted or not. With prefix arg N, moves forward N messages, or backward if N is negative." |