Mercurial > emacs
changeset 16818:6de559d0b20f
(list-matching-lines-face): New variable.
(occur): Highlight the actual matching characters.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 03 Jan 1997 03:11:11 +0000 |
parents | 40eaf36862f4 |
children | 0f0e40d129df |
files | lisp/replace.el |
diffstat | 1 files changed, 24 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/replace.el Fri Jan 03 01:16:16 1997 +0000 +++ b/lisp/replace.el Fri Jan 03 03:11:11 1997 +0000 @@ -317,6 +317,10 @@ (defalias 'list-matching-lines 'occur) +(defvar list-matching-lines-face 'bold + "*Face used by M-x list-matching-lines to show the text that matches. +If the value is nil, don't highlight the matching portions specially.") + (defun occur (regexp &optional nlines) "Show all lines in the current buffer containing a match for REGEXP. @@ -352,6 +356,8 @@ (dir default-directory) (linenum 1) (prevpos (point-min)) + sje-start + sje-len (final-context-start (make-marker))) ;;; (save-excursion ;;; (beginning-of-line) @@ -399,6 +405,14 @@ (forward-line (1+ nlines)) (forward-line 1)) (point))) + ;; Record where the actual match + (match-offset + (save-excursion + (goto-char (match-beginning 0)) + (beginning-of-line) + ;; +6 to skip over line number + (+ 6 (- (match-beginning 0) (point))))) + (match-len (- (match-end 0) (match-beginning 0))) (tag (format "%5d" linenum)) (empty (make-string (length tag) ?\ )) tem) @@ -424,13 +438,20 @@ (if (null tag) (setq tag (format "%5d" this-linenum))) (insert tag ?:) - (put-text-property (save-excursion - (beginning-of-line) - (point)) + (setq line-start + (save-excursion + (beginning-of-line) + (point))) + (put-text-property line-start (save-excursion (end-of-line) (point)) 'mouse-face 'highlight) + (if list-matching-lines-face + (put-text-property + (+ line-start match-offset) + (+ line-start match-offset match-len) + 'face list-matching-lines-face)) (forward-line 1) (setq tag nil) (setq this-linenum (1+ this-linenum)))