emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/vertico 23a907ff8c 4/4: vertico-grid: Improve left righ


From: ELPA Syncer
Subject: [elpa] externals/vertico 23a907ff8c 4/4: vertico-grid: Improve left right commands, add scroll commands
Date: Sun, 9 Jan 2022 07:57:55 -0500 (EST)

branch: externals/vertico
commit 23a907ff8c9da4f8bf2e9043cde3d7df9ed1a9e1
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    vertico-grid: Improve left right commands, add scroll commands
---
 extensions/vertico-grid.el | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/extensions/vertico-grid.el b/extensions/vertico-grid.el
index d061a4b686..d3a2e060c3 100644
--- a/extensions/vertico-grid.el
+++ b/extensions/vertico-grid.el
@@ -71,6 +71,8 @@ When scrolling beyond this limit, candidates may be 
truncated."
   (let ((map (make-sparse-keymap)))
     (define-key map [remap left-char] #'vertico-grid-left)
     (define-key map [remap right-char] #'vertico-grid-right)
+    (define-key map [remap scroll-down-command] #'vertico-grid-scroll-down)
+    (define-key map [remap scroll-up-command] #'vertico-grid-scroll-up)
     map)
   "Additional keymap activated in grid mode.")
 
@@ -136,15 +138,23 @@ When scrolling beyond this limit, candidates may be 
truncated."
   "Move N columns to the right in the grid."
   (interactive "p")
   (let* ((page (* vertico-count vertico-grid--columns))
-         (p (/ vertico--index page))
-         (q (mod vertico--index page))
-         (x (/ q vertico-count))
-         (y (mod q vertico-count))
-         (z (+ (* p page) (* vertico-grid--columns y) x (or n 1))))
-    (setq x (mod z vertico-grid--columns)
-          y (/ z vertico-grid--columns))
-    (vertico--goto (+ (* x vertico-count) (mod y vertico-count)
-                      (* (/ y vertico-count) page)))))
+         (x1 (/ (% vertico--index page) vertico-count))
+         (cols (min (1- vertico-grid--columns)
+                    (+ x1 (/ (- vertico--total vertico--index 1) 
vertico-count))))
+         (x2 (if vertico-cycle
+                 (mod (+ x1 (or n 1)) (1+ cols))
+               (min cols (max 0 (+ x1 (or n 1)))))))
+    (vertico--goto (+ vertico--index (* vertico-count (- x2 x1))))))
+
+(defun vertico-grid-scroll-down (&optional n)
+  "Go back by N pages."
+  (interactive "p")
+  (vertico--goto (max 0 (- vertico--index (* (or n 1) vertico-grid--columns 
vertico-count)))))
+
+(defun vertico-grid-scroll-up (&optional n)
+  "Go forward by N pages."
+  (interactive "p")
+  (vertico-grid-scroll-down (- (or n 1))))
 
 ;;;###autoload
 (define-minor-mode vertico-grid-mode
@@ -162,7 +172,8 @@ When scrolling beyond this limit, candidates may be 
truncated."
     (advice-remove #'vertico--arrange-candidates 
#'vertico-grid--arrange-candidates))))
 
 ;; Emacs 28: Do not show Vertico commands in M-X
-(dolist (sym '(vertico-grid-left vertico-grid-right))
+(dolist (sym '(vertico-grid-left vertico-grid-right
+               vertico-grid-scroll-up vertico-grid-scroll-down))
   (put sym 'completion-predicate #'vertico--command-p))
 
 (provide 'vertico-grid)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]