[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)