[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 9a2083a 27/57: Swiper should use the :re-builder argument
From: |
Oleh Krehel |
Subject: |
[elpa] master 9a2083a 27/57: Swiper should use the :re-builder argument |
Date: |
Tue, 19 May 2015 14:21:31 +0000 |
branch: master
commit 9a2083a136618a8413aa4acbf5e4a19b2eb6cc5b
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>
Swiper should use the :re-builder argument
* ivy.el (ivy--transform-re): Remove defun, :re-builder should be used
for this logic.
(ivy--filter): Update.
* swiper.el (swiper-avy): Use `ivy--regex'.
(swiper--init): Don't set `ivy--regex-function' - it will be set by
:re-builder.
(swiper--re-builder): New defun.
(swiper--ivy): Use :re-builder in call to `ivy-read'.
(swiper--update-input-ivy): Use `ivy--regex'.
(swiper--action): Use `ivy--regex'.
Fixes #90
---
ivy.el | 20 +-------------------
swiper.el | 34 +++++++++++++++++++++++++++-------
2 files changed, 28 insertions(+), 26 deletions(-)
diff --git a/ivy.el b/ivy.el
index 739ebc3..ada698e 100644
--- a/ivy.el
+++ b/ivy.el
@@ -1010,28 +1010,10 @@ Should be run via minibuffer `post-command-hook'."
(font-lock-append-text-property 0 (length str) 'face face str))))
str)
-(defvar swiper-map)
-(defvar swiper--width)
-(defun ivy--transform-re (regex)
- "Transform REGEX into another regex.
-This is a work-around for `swiper' and line starts."
- (if (equal (ivy-state-keymap ivy-last) swiper-map)
- (cond
- ((equal regex "^")
- ".")
- ((string-match "^\\(?:\\\\(\\)?\\(\\^\\)" regex)
- (setq ivy--old-re "")
- (replace-match (format "^[0-9 ]\\{%d\\}"
- (1+ swiper--width)) nil t regex 1))
- (t
- regex))
- regex))
-
(defun ivy--filter (name candidates)
"Return all items that match NAME in CANDIDATES.
CANDIDATES are assumed to be static."
- (let* ((re (ivy--transform-re
- (funcall ivy--regex-function name)))
+ (let* ((re (funcall ivy--regex-function name))
(cands (cond ((and (equal re ivy--old-re)
ivy--old-cands)
ivy--old-cands)
diff --git a/swiper.el b/swiper.el
index 130b121..51af8e0 100644
--- a/swiper.el
+++ b/swiper.el
@@ -112,7 +112,7 @@
(with-selected-window (ivy-state-window ivy-last)
(let* ((candidates
(avy--regex-candidates
- (funcall ivy--regex-function ivy-text)))
+ (ivy--regex ivy-text)))
(avy-background nil)
(candidate
(avy--process candidates #'avy--overlay-post)))
@@ -195,9 +195,28 @@ When non-nil, INITIAL-INPUT is the initial search pattern."
(setq swiper--opoint (point))
(setq swiper--len 0)
(setq swiper--anchor (line-number-at-pos))
- (setq swiper--window (selected-window))
- (setq ivy--regex-function
- (cdr (assoc t ivy-re-builders-alist))))
+ (setq swiper--window (selected-window)))
+
+(defun swiper--re-builder (str)
+ "Transform STR into a swiper regex.
+This is the regex used in the minibuffer, since the candidates
+there have line numbers. In the buffer, `ivy--regex' should be used."
+ (cond
+ ((equal str "")
+ "")
+ ((equal str "^")
+ ".")
+ ((string-match "\\^" str)
+ (setq ivy--old-re "")
+ (let ((re (ivy--regex-plus (substring str 1))))
+ (format "^[0-9][0-9 ]\\{%d\\}%s"
+ swiper--width
+ (if (zerop ivy--subexps)
+ (prog1 (format "\\(%s\\)" re)
+ (setq ivy--subexps 1))
+ re))))
+ (t
+ (ivy--regex-plus str))))
(defun swiper--ivy (&optional initial-input)
"`isearch' with an overview using `ivy'.
@@ -226,7 +245,8 @@ Please remove it and update the \"swiper\" package."))
:preselect preselect
:require-match t
:update-fn #'swiper--update-input-ivy
- :unwind #'swiper--cleanup))
+ :unwind #'swiper--cleanup
+ :re-builder #'swiper--re-builder))
(if (null ivy-exit)
(goto-char swiper--opoint)
(swiper--action res ivy-text)))))
@@ -254,7 +274,7 @@ Please remove it and update the \"swiper\" package."))
(defun swiper--update-input-ivy ()
"Called when `ivy' input is updated."
(swiper--cleanup)
- (let* ((re (funcall ivy--regex-function ivy-text))
+ (let* ((re (ivy--regex ivy-text))
(str ivy--current)
(num (if (string-match "^[0-9]+" str)
(string-to-number (match-string 0 str))
@@ -319,7 +339,7 @@ BEG and END, when specified, are the point bounds."
(goto-char (point-min))
(forward-line (1- (read x)))
(re-search-forward
- (funcall ivy--regex-function input) (line-end-position) t)
+ (ivy--regex input) (line-end-position) t)
(swiper--ensure-visible)
(when (/= (point) swiper--opoint)
(unless (and transient-mark-mode mark-active)
- [elpa] master 8c936bc 21/57: ivy.el (ivy-use-virtual-buffers): New defcustom, (continued)
- [elpa] master 8c936bc 21/57: ivy.el (ivy-use-virtual-buffers): New defcustom, Oleh Krehel, 2015/05/19
- [elpa] master 9b9885d 33/57: ivy.el (ivy-partial-or-done): Fixup, Oleh Krehel, 2015/05/19
- [elpa] master d841418 24/57: Fix the transition from a bad regex to good one, Oleh Krehel, 2015/05/19
- [elpa] master 2ad5fb1 20/57: Add support for virtual buffers, Oleh Krehel, 2015/05/19
- [elpa] master f97622d 30/57: swiper.el (swiper-font-lock-ensure): Ignore fundamental-mode, Oleh Krehel, 2015/05/19
- [elpa] master 6d4f2b3 34/57: Fix the error switching to non-existent buffers, Oleh Krehel, 2015/05/19
- [elpa] master 16eb4a2 31/57: When completing file names, defer to `minibuffer-complete' for "TAB", Oleh Krehel, 2015/05/19
- [elpa] master b63c358 35/57: Properly update virtual buffers for "^ " interaction, Oleh Krehel, 2015/05/19
- [elpa] master d8f79fa 43/57: ivy.el (ivy-partial-or-done): Update doc, Oleh Krehel, 2015/05/19
- [elpa] master ce0efb3 29/57: Allow to customize the minibuffer formatter, Oleh Krehel, 2015/05/19
- [elpa] master 9a2083a 27/57: Swiper should use the :re-builder argument,
Oleh Krehel <=
- [elpa] master d8c2ef3 45/57: ivy.el (ivy-partial-or-done): More predictability, Oleh Krehel, 2015/05/19
- [elpa] master e05e3b7 39/57: ivy.el (ivy-read): Keep the last ivy--index for :dynamic-collection, Oleh Krehel, 2015/05/19
- [elpa] master 1cdb6ed 32/57: ivy.el (ivy-partial-or-done): Fixup, Oleh Krehel, 2015/05/19
- [elpa] master 5f2cf0c 28/57: Update test, Oleh Krehel, 2015/05/19
- [elpa] master 6405cb3 42/57: ivy.el (ivy-partial-or-done): Always forward to `ivy-alt-done', Oleh Krehel, 2015/05/19
- [elpa] master 10f9954 50/57: counsel.el (counsel-git-grep): Warn if not in a repository, Oleh Krehel, 2015/05/19
- [elpa] master 2cedcf5 37/57: Introduce :matcher for counsel-git-grep, Oleh Krehel, 2015/05/19
- [elpa] master 93faef3 41/57: ivy.el (ivy-delete-char): Add and bind to "C-d", Oleh Krehel, 2015/05/19
- [elpa] master 8630048 47/57: Fixed ivy--preselect-index on windows where the drives folders ends with a backslash (C:\, D:\), Oleh Krehel, 2015/05/19
- [elpa] master 1c0703e 36/57: Forward to minibuffer-complete for filenames only if "^/", Oleh Krehel, 2015/05/19