branch: elpa/isl
commit c73a346afa8facc3173a1926448b29997a29cee5
Author: Thierry Volpiatto <[email protected]>
Commit: Thierry Volpiatto <[email protected]>
Add scroll commands
---
isearch-light.el | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/isearch-light.el b/isearch-light.el
index b65dea7fc5f..c8f74d6a12e 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,33 @@ 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)
+ (if (> arg 0)
+ (scroll-up)
+ (scroll-down))
+ (when isl--iterator
+ (setq ov (isl-closest-overlay
+ (window-start) isl--item-overlays))))
+ (when ov
+ (isl--find-and-goto-overlay ov)
+ (with-selected-window (minibuffer-selected-window)
+ (set-window-start
+ (minibuffer-selected-window) (overlay-start ov))
+ (recenter)))))
+
+(defun isl-scroll-up ()
+ "Scroll up and move closest overlay on middle of window."
+ (interactive)
+ (isl-scroll-1 1))
+
+(defun isl-scroll-down ()
+ "Scroll down and move closest overlay on middle of window."
+ (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)