branch: master commit 21b9edf64a3e2c0bde14e3dc31b2dd1669904009 Author: Oleh Krehel <ohwoeo...@gmail.com> Commit: Oleh Krehel <ohwoeo...@gmail.com>
Fix up visual-line-mode limitation logic * swiper.el (swiper-use-visual-line): New defvar. (swiper--candidates): (swiper--update-input-ivy): (swiper--action): Update. Re #227 --- swiper.el | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff --git a/swiper.el b/swiper.el index 0f8ff31..bd7dc18 100644 --- a/swiper.el +++ b/swiper.el @@ -215,16 +215,22 @@ (defvar swiper--width nil "Store the amount of digits needed for the longest line nubmer.") +(defvar swiper-use-visual-line nil + "When non-nil, use `line-move' instead of `forward-line'.") + (defun swiper--candidates () "Return a list of this buffer lines." + (setq swiper-use-visual-line + (and (not (eq major-mode 'org-mode)) + visual-line-mode + (< (buffer-size) 20000))) (let ((n-lines (count-lines (point-min) (point-max)))) (unless (zerop n-lines) (setq swiper--width (1+ (floor (log n-lines 10)))) (setq swiper--format-spec (format "%%-%dd " swiper--width)) (let ((line-number 0) - (advancer (if (and visual-line-mode - (< (buffer-size) 20000)) + (advancer (if swiper-use-visual-line (lambda (arg) (line-move arg t)) #'forward-line)) candidates) @@ -234,7 +240,7 @@ (while (< (point) (point-max)) (let ((str (concat " " (buffer-substring (point) - (if visual-line-mode + (if swiper-use-visual-line (save-excursion (end-of-visual-line) (point)) @@ -354,7 +360,7 @@ When non-nil, INITIAL-INPUT is the initial search pattern." (goto-char (point-min)) (when (cl-plusp num) (goto-char (point-min)) - (if visual-line-mode + (if swiper-use-visual-line (line-move (1- num)) (forward-line (1- num))) (if (and (equal ivy-text "") @@ -423,7 +429,7 @@ BEG and END, when specified, are the point bounds." (if (null x) (user-error "No candidates") (goto-char (point-min)) - (funcall (if visual-line-mode + (funcall (if swiper-use-visual-line #'line-move #'forward-line) (1- (read (get-text-property 0 'display x))))