branch: elpa/isl
commit 2f9c4cb473537fb05370a146a313fda36038304f
Author: Thierry Volpiatto <[email protected]>
Commit: Thierry Volpiatto <[email protected]>
Add again scroll commands
---
isearch-light.el | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/isearch-light.el b/isearch-light.el
index b65dea7fc5f..b0f84689a27 100644
--- a/isearch-light.el
+++ b/isearch-light.el
@@ -189,6 +189,8 @@ in pattern."
(define-key map (kbd "C-h m") 'isl-display-or-quit-help)
(define-key map (kbd "C-'") 'isl-show-or-hide-context-lines)
(define-key map (kbd "C-l") 'isl-recenter)
+ (define-key map (kbd "C-v") 'isl-scroll-up)
+ (define-key map (kbd "M-v") 'isl-scroll-down)
map))
;;; Actions
@@ -219,6 +221,39 @@ It put overlay on current position, move to next overlay
using
(isl--goto-overlay (isl-iter-next isl--iterator)))
(isl-setup-mode-line)))
+(defun isl-scroll-1 (arg)
+ "Scroll up if ARG is positive, down if it is negative."
+ (let (ov)
+ (with-selected-window (minibuffer-selected-window)
+ (when isl--iterator
+ (setq ov (if (> arg 0)
+ (isl--first-ov-after-pos (window-end))
+ (isl--first-ov-before-pos (window-start))))))
+ (when ov
+ (isl--find-and-goto-overlay ov)
+ (with-selected-window (minibuffer-selected-window)
+ (recenter)))))
+
+(defun isl--first-ov-after-pos (pos)
+ (cl-loop for ov in isl--item-overlays
+ when (> (overlay-start ov) pos)
+ return ov))
+
+(defun isl--first-ov-before-pos (pos)
+ (cl-loop for ov in (reverse isl--item-overlays)
+ when (< (overlay-start ov) pos)
+ return ov))
+
+(defun isl-scroll-up ()
+ "Scroll up to closest overlay in next screen."
+ (interactive)
+ (isl-scroll-1 1))
+
+(defun isl-scroll-down ()
+ "Scroll down to closest overlay in previous screen."
+ (interactive)
+ (isl-scroll-1 -1))
+
(defun isl--find-and-goto-overlay (overlay)
"Consume iterators up to OVERLAY and jump to it."
(with-selected-window (minibuffer-selected-window)