mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-14 16:50:58 +00:00
(reb-update-overlays): Cycle through provided faces once they all have been
used.
This commit is contained in:
parent
a4336ea067
commit
fc7d3ac548
@ -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 @@ Return t if the (cooked) expression changed."
|
||||
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 @@ If SUBEXP is non-nil mark only the corresponding sub-expressions."
|
||||
(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)))
|
||||
|
Loading…
Reference in New Issue
Block a user