branch: master commit dc7f5e0510e517e721983fc6c29b4ed67fdfba1f Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
swiper.el (swiper--isearch-function): Works for ivy--regex-ignore-order Fixes #2155 --- swiper.el | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/swiper.el b/swiper.el index ea3d145..b103abc 100644 --- a/swiper.el +++ b/swiper.el @@ -1338,11 +1338,26 @@ See `ivy-format-functions-alist' for further information." (let ((re-full (funcall ivy--regex-function str))) (unless (equal re-full "") (let* ((case-fold-search (ivy--case-fold-p str)) - (re (ivy-re-to-str re-full)) - (cands (swiper--isearch-function-1 re swiper--isearch-backward)) - (idx (swiper--isearch-next-item re cands))) + (re + (if (stringp re-full) + re-full + (regexp-opt (delq nil (mapcar (lambda (x) (and (cdr x) (car x))) re-full))))) + (cands (swiper--isearch-function-1 re swiper--isearch-backward))) + (when (consp re-full) + (let (filtered-cands) + (dolist (re-cons re-full) + (save-excursion + (dolist (cand cands) + (goto-char cand) + (beginning-of-line) + (unless (if (re-search-forward (car re-cons) (line-end-position) t) + (not (cdr re-cons)) + (cdr re-cons)) + (push cand filtered-cands)))) + (setq cands (nreverse filtered-cands)) + (setq filtered-cands nil)))) (setq ivy--old-re re) - (ivy-set-index idx) + (ivy-set-index (swiper--isearch-next-item re cands)) (setq ivy--old-cands cands))))) (defcustom swiper-isearch-highlight-delay '(2 0.2)