emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] master f30c6e1 022/184: swiper.el: Fix overlay faces using regex-


From: Oleh Krehel
Subject: [elpa] master f30c6e1 022/184: swiper.el: Fix overlay faces using regex-ignore-order
Date: Wed, 16 Oct 2019 13:14:41 -0400 (EDT)

branch: master
commit f30c6e19919e2b042b3d924c8e4fa0b80ceedc31
Author: Muir Manders <address@hidden>
Commit: Oleh Krehel <address@hidden>

    swiper.el: Fix overlay faces using regex-ignore-order
    
    regex-ignore-order operates using a list of
    regexps. swiper--update-input-ivy loops over each regexp, but
    when swiper--add-properties is called we have forgotten which regexp
    we are adding the overlay for, so it uses the first match face for all
    matches. Now we pass along a "re-idx" argument that indicates the
    index of the regexp being considered. swiper--add-properties gained
    logic to choose the face corresponding to this index.
    
    Fixes #2162
---
 swiper.el | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/swiper.el b/swiper.el
index 129083d..02fc34f 100644
--- a/swiper.el
+++ b/swiper.el
@@ -898,8 +898,10 @@ the face, window and priority of the overlay."
   (with-ivy-window
     (swiper--cleanup)
     (when (> (length (ivy-state-current ivy-last)) 0)
-      (let ((regexps (swiper--positive-regexps ivy-text)))
+      (let ((regexps (swiper--positive-regexps ivy-text))
+            (re-idx -1))
         (dolist (re regexps)
+          (setq re-idx (1+ re-idx))
           (let* ((re (replace-regexp-in-string
                       "    " "\t"
                       re))
@@ -945,9 +947,11 @@ the face, window and priority of the overlay."
               (if (swiper--recenter-p)
                   (window-end (selected-window) t)
                 (line-end-position (window-height)))
-              swiper--point-max))))))))
+              swiper--point-max)
+             nil
+             re-idx)))))))
 
-(defun swiper--add-overlays (re &optional beg end wnd)
+(defun swiper--add-overlays (re &optional beg end wnd re-idx)
   "Add overlays for RE regexp in visible part of the current buffer.
 BEG and END, when specified, are the point bounds.
 WND, when specified is the window."
@@ -988,16 +992,16 @@ WND, when specified is the window."
                                                (buffer-substring-no-properties
                                                 (line-beginning-position)
                                                 (line-end-position)))))))
-                (swiper--add-properties faces adder-fn)))))))))
+                (swiper--add-properties faces adder-fn re-idx)))))))))
 
-(defun swiper--add-properties (faces adder-fn)
+(defun swiper--add-properties (faces adder-fn &optional re-idx)
   (let ((mb (match-beginning 0))
         (me (match-end 0)))
     (unless (> (- me mb) 2017)
       (funcall adder-fn
                mb me
                (if (zerop ivy--subexps)
-                   (cadr faces)
+                   (nth (1+ (mod (or re-idx 0) (1- (length faces)))) faces)
                  (car faces))
                0)))
   (let ((i 1)



reply via email to

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