branch: externals/ivy-hydra
commit b9eb3c1eb39f668bbbf8bcac4c0b8a60c7c6c65b
Author: Oleh Krehel <[email protected]>
Commit: Oleh Krehel <[email protected]>
swiper.el (swiper--line-number): Works with ivy-mark
Since `ivy-mark' adds one char, the line number property can move.
Fixes #2470
---
swiper.el | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/swiper.el b/swiper.el
index d5cbe6c..8f936f8 100644
--- a/swiper.el
+++ b/swiper.el
@@ -619,7 +619,7 @@ When non-nil, INITIAL-INPUT is the initial search pattern."
(if (eq (ivy-state-caller ivy-last) 'swiper-isearch)
(swiper--isearch-occur-cands cands)
(mapcar (lambda (s)
- (let ((n (get-text-property 0 'swiper-line-number
s)))
+ (let ((n (swiper--line-number s)))
(setq s (substring s 1))
(add-text-properties 0 1 (list 'swiper-line-number
n) s)
(cons n s)))
@@ -819,7 +819,7 @@ When non-nil, INITIAL-INPUT is the initial search pattern."
(if initial-input
(cl-position-if
(lambda (x)
- (= (1+ preselect) (get-text-property 0
'swiper-line-number x)))
+ (= (1+ preselect) (swiper--line-number x)))
(progn
(setq ivy--old-re nil)
(ivy--filter initial-input candidates)))
@@ -955,7 +955,7 @@ the face, window and priority of the overlay."
(let* ((re (replace-regexp-in-string
" " "\t"
re))
- (num (get-text-property 0 'swiper-line-number
(ivy-state-current ivy-last))))
+ (num (swiper--line-number (ivy-state-current ivy-last))))
(unless (memq this-command '(ivy-yank-word
ivy-yank-symbol
ivy-yank-char
@@ -1093,9 +1093,13 @@ WND, when specified is the window."
(recenter))))
(setq swiper--current-window-start (window-start)))
+(defun swiper--line-number (x)
+ (or (get-text-property 0 'swiper-line-number x)
+ (get-text-property 1 'swiper-line-number x)))
+
(defun swiper--action (x)
"Goto line X."
- (let ((ln (1- (get-text-property 0 'swiper-line-number x)))
+ (let ((ln (1- (swiper--line-number x)))
(re (ivy--regex ivy-text))
(case-fold-search (ivy--case-fold-p ivy-text)))
(if (null x)
@@ -1212,7 +1216,7 @@ otherwise continue prompting for buffers."
(with-ivy-window
(switch-to-buffer buffer-name)
(goto-char (point-min))
- (forward-line (1- (get-text-property 0 'swiper-line-number x)))
+ (forward-line (1- (swiper--line-number x)))
(re-search-forward
(ivy--regex ivy-text)
(line-end-position) t)