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)))