changeset 63911:954c9ade6e2b

(font-lock-regexp-grouping-backslash): Rename from font-lock-regexp-backslash. Doc fix. (font-lock-regexp-backslash-grouping-construct): Rename from font-lock-regexp-backslash-construct. Doc fix. (lisp-font-lock-keywords-2): Fix highlighting of ELisp regexp grouping constructs.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 02 Jul 2005 09:40:42 +0000
parents d9fbcc67ef0d
children 12f374b6c866
files lisp/font-lock.el
diffstat 1 files changed, 19 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/font-lock.el	Sat Jul 02 09:17:47 2005 +0000
+++ b/lisp/font-lock.el	Sat Jul 02 09:40:42 2005 +0000
@@ -1825,15 +1825,15 @@
   "Font Lock mode face used to highlight preprocessor directives."
   :group 'font-lock-highlighting-faces)
 
-(defface font-lock-regexp-backslash
+(defface font-lock-regexp-grouping-backslash
   '((((class color) (min-colors 16)) :inherit escape-glyph)
     (t :inherit bold))
-  "Font Lock mode face used to highlight a backslash in Lisp regexps."
+  "Font Lock mode face for backslashes in Lisp regexp grouping constructs."
   :group 'font-lock-highlighting-faces)
 
-(defface font-lock-regexp-backslash-construct
+(defface font-lock-regexp-backslash-grouping-construct
   '((t :inherit bold))
-  "Font Lock mode face used to highlight `\' constructs in Lisp regexps."
+  "Font Lock mode face used to highlight grouping constructs in Lisp regexps."
   :group 'font-lock-highlighting-faces)
 
 ;;; End of Colour etc. support.
@@ -2082,22 +2082,22 @@
        ("\\<:\\sw+\\>" 0 font-lock-builtin-face)
        ;; ELisp and CLisp `&' keywords as types.
        ("\\&\\sw+\\>" . font-lock-type-face)
-       ;; Make regexp grouping constructs bold, so they stand out, but only
-       ;; in strings.
+       ;; ELisp regexp grouping constructs
        ((lambda (bound)
-	  (if (re-search-forward "\\(\\\\\\\\\\)\\((\\(?:?:\\)?\\|[|)]\\)" bound t)
-	       (let ((face (get-text-property (1- (point)) 'face)))
-		 (if (listp face)
-		     (memq 'font-lock-string-face face)
-		   (eq 'font-lock-string-face face)))))
-	(1 'font-lock-regexp-backslash prepend)
-	(2 'font-lock-regexp-backslash-construct prepend))
-
-       ;; Underline innermost grouping, so that you can more easily see what
-       ;; belongs together.  2005-05-12: Font-lock can go into an
-       ;; unbreakable endless loop on this -- something's broken.
-       ;;("[\\][\\][(]\\(?:\\?:\\)?\\(\\(?:[^\\\"]+\\|[\\]\\(?:[^\\]\\|[\\][^(]\\)\\)+?\\)[\\][\\][)]"
-	 ;;1 'underline prepend)
+          (catch 'found
+            ;; The following loop is needed to continue searching after matches
+            ;; that do not occur in strings.  The associated regexp matches one
+            ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'.  `\\\\' has been included to
+            ;; avoid highlighting, for example, `\\(' in `\\\\('.
+            (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?:\\)?\\|[|)]\\)\\)" bound t)
+              (unless (match-beginning 2)
+                (let ((face (get-text-property (1- (point)) 'face)))
+                  (when (or (and (listp face)
+                                 (memq 'font-lock-string-face face))
+                            (eq 'font-lock-string-face face))
+                    (throw 'found t)))))))
+        (1 'font-lock-regexp-grouping-backslash prepend)
+        (3 'font-lock-regexp-grouping-construct prepend))
 ;;;  This is too general -- rms.
 ;;;  A user complained that he has functions whose names start with `do'
 ;;;  and that they get the wrong color.