From ed9169dad4b524d5e3f9678ca51d83a8a2e68dc0 Mon Sep 17 00:00:00 2001 From: Oleh Krehel Date: Fri, 4 Dec 2015 08:30:17 +0100 Subject: [PATCH] swiper.el (swiper--update-input-ivy): Add a work-around for "M-j" When `ivy-yank-word' is called, don't move to the line of the current candidate. We're already there anyway. And not moving helps when there are multiple occurrences of the current input on the current line. Fixes #314 --- swiper.el | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/swiper.el b/swiper.el index 593f76335..2ee60a3a7 100644 --- a/swiper.el +++ b/swiper.el @@ -258,7 +258,8 @@ count." (require 'outline) (if (fboundp 'outline-show-all) (outline-show-all) - (show-all))) + (with-no-warnings + (show-all)))) (setq swiper-use-visual-line t)) (setq swiper-use-visual-line nil)) (let ((n-lines (count-lines (point-min) (point-max)))) @@ -437,22 +438,23 @@ Matched candidates should have `swiper-invocation-face'." (num (if (string-match "^[0-9]+" str) (string-to-number (match-string 0 str)) 0))) - (goto-char (point-min)) - (when (cl-plusp num) + (unless (eq this-command 'ivy-yank-word) (goto-char (point-min)) - (if swiper-use-visual-line - (line-move (1- num)) - (forward-line (1- num))) - (if (and (equal ivy-text "") - (>= swiper--opoint (line-beginning-position)) - (<= swiper--opoint (line-end-position))) - (goto-char swiper--opoint) - (re-search-forward re (line-end-position) t)) - (isearch-range-invisible (line-beginning-position) - (line-end-position)) - (unless (and (>= (point) (window-start)) - (<= (point) (window-end (ivy-state-window ivy-last) t))) - (recenter))) + (when (cl-plusp num) + (goto-char (point-min)) + (if swiper-use-visual-line + (line-move (1- num)) + (forward-line (1- num))) + (if (and (equal ivy-text "") + (>= swiper--opoint (line-beginning-position)) + (<= swiper--opoint (line-end-position))) + (goto-char swiper--opoint) + (re-search-forward re (line-end-position) t)) + (isearch-range-invisible (line-beginning-position) + (line-end-position)) + (unless (and (>= (point) (window-start)) + (<= (point) (window-end (ivy-state-window ivy-last) t))) + (recenter)))) (swiper--add-overlays re))))) (defun swiper--add-overlays (re &optional beg end wnd) -- 2.39.2