emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/re-builder.el


From: Eli Zaretskii
Subject: [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/re-builder.el
Date: Fri, 05 May 2006 13:02:14 +0000

Index: emacs/lisp/emacs-lisp/re-builder.el
diff -u emacs/lisp/emacs-lisp/re-builder.el:1.29 
emacs/lisp/emacs-lisp/re-builder.el:1.30
--- emacs/lisp/emacs-lisp/re-builder.el:1.29    Mon Feb  6 12:20:06 2006
+++ emacs/lisp/emacs-lisp/re-builder.el Fri May  5 13:02:14 2006
@@ -112,7 +112,7 @@
 (if (not (fboundp 'make-overlay))
     (require 'overlay))
 
-;; User costomizable variables
+;; User customizable variables
 (defgroup re-builder nil
   "Options for the RE Builder."
   :group 'lisp
@@ -627,11 +627,9 @@
            beg (match-end 0)))
     i))
 
-
 (defun reb-update-overlays (&optional subexp)
   "Switch to `reb-target-buffer' and mark all matches of `reb-regexp'.
 If SUBEXP is non-nil mark only the corresponding sub-expressions."
-
   (let* ((re (reb-target-binding reb-regexp))
         (subexps (reb-count-subexps re))
         (matches 0)
@@ -645,24 +643,35 @@
                  (or (not reb-auto-match-limit)
                      (< matches reb-auto-match-limit)))
        (if (= 0 (length (match-string 0)))
-         (error "Empty regular expression!"))
-       (let ((i 0))
+           (error "Empty regular expression!"))
+       (let ((i 0)
+             suffix max-suffix)
          (setq matches (1+ matches))
          (while (<= i subexps)
            (if (and (or (not subexp) (= subexp i))
                     (match-beginning i))
                (let ((overlay (make-overlay (match-beginning i)
                                             (match-end i)))
-                     (face-name (format "reb-match-%d" i)))
-                 (if (not firstmatch)
-                     (setq firstmatch (match-data)))
+                     ;; When we have exceeded the number of provided faces,
+                     ;; cycle thru them where `max-suffix' denotes the maximum
+                     ;; suffix for `reb-match-*' that has been defined and
+                     ;; `suffix' the suffix calculated for the current match.
+                     (face
+                      (cond
+                       (max-suffix
+                        (if (= suffix max-suffix)
+                            (setq suffix 1)
+                          (setq suffix (1+ suffix)))
+                        (intern-soft (format "reb-match-%d" suffix)))
+                       ((intern-soft (format "reb-match-%d" i)))
+                       ((setq max-suffix (1- i))
+                        (setq suffix 1)
+                        ;; `reb-match-1' must exist.
+                        'reb-match-1))))
+                 (unless firstmatch (setq firstmatch (match-data)))
                  (setq reb-overlays (cons overlay reb-overlays)
                        submatches (1+ submatches))
-                 (overlay-put
-                  overlay 'face
-                  (or (intern-soft face-name)
-                      (error "Too many subexpressions - face `%s' not defined"
-                             face-name )))
+                 (overlay-put overlay 'face face)
                  (overlay-put overlay 'priority i)))
            (setq i (1+ i))))))
     (let ((count (if subexp submatches matches)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]