[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master ad0f605 008/184: swiper.el (swiper--isearch-function-1): E
From: |
Oleh Krehel |
Subject: |
[elpa] master ad0f605 008/184: swiper.el (swiper--isearch-function-1): Extract |
Date: |
Wed, 16 Oct 2019 13:14:39 -0400 (EDT) |
branch: master
commit ad0f605303ffc6685af8988dcc809cd3355a041d
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
swiper.el (swiper--isearch-function-1): Extract
---
swiper.el | 78 +++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 43 insertions(+), 35 deletions(-)
diff --git a/swiper.el b/swiper.el
index d999309..8820949 100644
--- a/swiper.el
+++ b/swiper.el
@@ -1300,47 +1300,55 @@ See `ivy-format-functions-alist' for further
information."
(defvar swiper--isearch-backward nil)
(defvar swiper--isearch-start-point nil)
+(defun swiper--isearch-function-1 (re backward)
+ (let ((idx 0)
+ cands idx-found)
+ (save-excursion
+ (goto-char (if backward (point-max) (point-min)))
+ (while (funcall (if backward #'re-search-backward #'re-search-forward)
re nil t)
+ (when (swiper-match-usable-p)
+ (unless idx-found
+ (when (if backward
+ (or (<= (match-end 0) swiper--isearch-start-point)
+ (and (< (match-beginning 0)
swiper--isearch-start-point)
+ (let ((mb-match
+ (string-match-p
+ re
+ (buffer-substring-no-properties
+ (match-beginning 0)
+ swiper--isearch-start-point))))
+ (eq mb-match 0))))
+ (>= (match-beginning 0) swiper--isearch-start-point))
+ (setq idx-found idx)))
+ (cl-incf idx)
+ (let ((pos (if (or backward swiper-goto-start-of-match)
+ (match-beginning 0)
+ (point))))
+ (push pos cands)))))
+ (cons
+ (if idx-found
+ (if backward
+ (- (length cands) idx-found 1)
+ idx-found)
+ 0)
+ (if backward
+ cands
+ (nreverse cands)))))
+
(defun swiper--isearch-function (str)
(let* ((case-fold-search (ivy--case-fold-p str))
(re-full (funcall ivy--regex-function str))
(re (ivy-re-to-str re-full)))
(unless (string= re "")
- (let ((re (if (string-match "\\`\\(.*\\)[\\]|\\'" re)
- (match-string 1 re)
- re))
- cands
- idx-found
- (idx 0))
- (save-excursion
- (goto-char (if swiper--isearch-backward (point-max) (point-min)))
- (while (funcall (if swiper--isearch-backward #'re-search-backward
#'re-search-forward) re nil t)
- (when (swiper-match-usable-p)
- (unless idx-found
- (when (if swiper--isearch-backward
- (or (<= (match-end 0) swiper--isearch-start-point)
- (and (< (match-beginning 0)
swiper--isearch-start-point)
- (let ((mb-match
- (string-match-p
- re
- (buffer-substring-no-properties
- (match-beginning 0)
- swiper--isearch-start-point))))
- (eq mb-match 0))))
- (>= (match-beginning 0) swiper--isearch-start-point))
- (setq idx-found idx)))
- (cl-incf idx)
- (let ((pos (if (or swiper--isearch-backward
swiper-goto-start-of-match)
- (match-beginning 0)
- (point))))
- (push pos cands)))))
+ (let* ((re (if (string-match "\\`\\(.*\\)[\\]|\\'" re)
+ (match-string 1 re)
+ re))
+ (res (swiper--isearch-function-1 re swiper--isearch-backward))
+ (idx-found (car res))
+ (cands (cdr res)))
(setq ivy--old-re re)
- (when idx-found
- (ivy-set-index (if swiper--isearch-backward
- (- (length cands) idx-found 1)
- idx-found)))
- (setq ivy--old-cands (if swiper--isearch-backward
- cands
- (nreverse cands)))))))
+ (ivy-set-index idx-found)
+ (setq ivy--old-cands cands)))))
(defcustom swiper-isearch-highlight-delay '(2 0.2)
"When `ivy-text' is too short, delay showing the overlay.
- [elpa] master updated (22e3e88 -> c2d3a4c), Oleh Krehel, 2019/10/16
- [elpa] master 196b4ea 001/184: doc/Makefile: Add target to install the info pages, Oleh Krehel, 2019/10/16
- [elpa] master 0a9fb0c 009/184: swiper.el (swiper--isearch-function): Refactor, Oleh Krehel, 2019/10/16
- [elpa] master f0ec850 005/184: swiper.el (swiper-isearch): Fix for ivy-resume, Oleh Krehel, 2019/10/16
- [elpa] master 2a036b8 002/184: swiper.el (swiper--isearch-function): Change., Oleh Krehel, 2019/10/16
- [elpa] master ad0f605 008/184: swiper.el (swiper--isearch-function-1): Extract,
Oleh Krehel <=
- [elpa] master dc7f5e0 012/184: swiper.el (swiper--isearch-function): Works for ivy--regex-ignore-order, Oleh Krehel, 2019/10/16
- [elpa] master 50ead7e 013/184: ivy-test.el (swiper-thing-at-point): Add and fix test, Oleh Krehel, 2019/10/16
- [elpa] master ec3e062 034/184: counsel (counsel-file-jump): Use temp buffer instead of split-string, Oleh Krehel, 2019/10/16
- [elpa] master 13be8ab 004/184: ivy.el (ivy--reset-state): Fix ivy-resume, Oleh Krehel, 2019/10/16
- [elpa] master 039353d 007/184: ivy.el (ivy--preselect-index): Fix ivy-resume for swiper-isearch, Oleh Krehel, 2019/10/16
- [elpa] master c7ffd06 016/184: swiper.el (swiper-isearch-action): Make ivy-previous-line-or-history work, Oleh Krehel, 2019/10/16
- [elpa] master b4c4a7f 011/184: swiper.el (swiper--isearch-next-item): Extract, Oleh Krehel, 2019/10/16
- [elpa] master b9f3e3b 017/184: swiper.el (swiper-isearch-action): Simplify, Oleh Krehel, 2019/10/16
- [elpa] master 38b5d83 015/184: swiper.el (swiper--isearch-filter-ignore-order): Extract, Oleh Krehel, 2019/10/16
- [elpa] master 5f99723 019/184: counsel.el (counsel--async-last-command): Add for ease of debugging, Oleh Krehel, 2019/10/16