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

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

[elpa] externals/vertico e9f3841811: vertico-grid/flat/reverse: Add/impr


From: ELPA Syncer
Subject: [elpa] externals/vertico e9f3841811: vertico-grid/flat/reverse: Add/improve keymap setup
Date: Thu, 30 Dec 2021 02:57:53 -0500 (EST)

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

    vertico-grid/flat/reverse: Add/improve keymap setup
    
    See feedback by @gcv in https://github.com/minad/vertico/issues/149
---
 extensions/vertico-flat.el    | 22 +++++++++++++++++++---
 extensions/vertico-grid.el    | 26 +++++++++++++++++++-------
 extensions/vertico-reverse.el |  6 +++---
 3 files changed, 41 insertions(+), 13 deletions(-)

diff --git a/extensions/vertico-flat.el b/extensions/vertico-flat.el
index a16a785c5b..d1125c05c4 100644
--- a/extensions/vertico-flat.el
+++ b/extensions/vertico-flat.el
@@ -28,7 +28,10 @@
 
 ;; This package is a Vertico extension providing a horizontal display.
 ;;
-;; The mode can be bound to a key to toggle to the horizontal display.
+;; The mode can be enabled pre command or completion category via
+;; `vertico-multiform-mode'. Alternatively the mode can be bound to a
+;; key to toggle to the horizontal display:
+;;
 ;; (define-key vertico-map "\M-F" #'vertico-flat-mode)
 
 ;;; Code:
@@ -50,6 +53,13 @@
   :type 'plist
   :group 'vertico)
 
+(defvar vertico-flat-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap left-char] #'vertico-previous)
+    (define-key map [remap right-char] #'vertico-next)
+    map)
+  "Additional keymap activated in flat mode.")
+
 (defun vertico-flat--display (candidates)
   "Display CANDIDATES horizontally."
   (setq-local truncate-lines nil)
@@ -100,6 +110,10 @@
       (push (plist-get vertico-flat-format :ellipsis) result))
     (nreverse result)))
 
+(defun vertico-flat--setup ()
+  "Setup flat keymap."
+  (use-local-map (make-composed-keymap vertico-flat-map (current-local-map))))
+
 ;;;###autoload
 (define-minor-mode vertico-flat-mode
   "Flat, horizontal display for Vertico."
@@ -113,10 +127,12 @@
     (when-let (win (active-minibuffer-window))
       (window-resize win (- (window-pixel-height win)) nil nil 'pixelwise))
     (advice-add #'vertico--arrange-candidates :override 
#'vertico-flat--arrange-candidates)
-    (advice-add #'vertico--display-candidates :override 
#'vertico-flat--display))
+    (advice-add #'vertico--display-candidates :override 
#'vertico-flat--display)
+    (advice-add #'vertico--setup :after #'vertico-flat--setup))
    (t
     (advice-remove #'vertico--arrange-candidates 
#'vertico-flat--arrange-candidates)
-    (advice-remove #'vertico--display-candidates #'vertico-flat--display))))
+    (advice-remove #'vertico--display-candidates #'vertico-flat--display)
+    (advice-remove #'vertico--setup #'vertico-flat--setup))))
 
 (provide 'vertico-flat)
 ;;; vertico-flat.el ends here
diff --git a/extensions/vertico-grid.el b/extensions/vertico-grid.el
index ac26463107..2b4e1bd087 100644
--- a/extensions/vertico-grid.el
+++ b/extensions/vertico-grid.el
@@ -28,7 +28,10 @@
 
 ;; This package is a Vertico extension providing a grid display.
 ;;
-;; The mode can be bound to a key to toggle to the grid display.
+;; The mode can be enabled pre command or completion category via
+;; `vertico-multiform-mode'. Alternatively the mode can be bound to a
+;; key to toggle to the grid display:
+;;
 ;; (define-key vertico-map "\M-G" #'vertico-grid-mode)
 
 ;;; Code:
@@ -59,6 +62,13 @@ When scrolling beyond this limit, candidates may be 
truncated."
   :type 'integer
   :group 'vertico)
 
+(defvar vertico-grid-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap left-char] #'vertico-grid-left)
+    (define-key map [remap right-char] #'vertico-grid-right)
+    map)
+  "Additional keymap activated in grid mode.")
+
 (defvar-local vertico-grid--columns 1
   "Current number of grid columns.")
 
@@ -130,6 +140,10 @@ When scrolling beyond this limit, candidates may be 
truncated."
     (vertico--goto (+ (* x vertico-count) (mod y vertico-count)
                       (* (/ y vertico-count) page)))))
 
+(defun vertico-grid--setup ()
+  "Setup grid keymap."
+  (use-local-map (make-composed-keymap vertico-grid-map (current-local-map))))
+
 ;;;###autoload
 (define-minor-mode vertico-grid-mode
   "Grid display for Vertico."
@@ -142,13 +156,11 @@ When scrolling beyond this limit, candidates may be 
truncated."
     ;; Shrink current minibuffer window
     (when-let (win (active-minibuffer-window))
       (window-resize win (- (window-pixel-height win)) nil nil 'pixelwise))
-    (define-key vertico-map [remap left-char] #'vertico-grid-left)
-    (define-key vertico-map [remap right-char] #'vertico-grid-right)
-    (advice-add #'vertico--arrange-candidates :override 
#'vertico-grid--arrange-candidates))
+    (advice-add #'vertico--arrange-candidates :override 
#'vertico-grid--arrange-candidates)
+    (advice-add #'vertico--setup :after #'vertico-grid--setup))
    (t
-    (assq-delete-all 'left-char (assq 'remap vertico-map))
-    (assq-delete-all 'right-char (assq 'remap vertico-map))
-    (advice-remove #'vertico--arrange-candidates 
#'vertico-grid--arrange-candidates))))
+    (advice-remove #'vertico--arrange-candidates 
#'vertico-grid--arrange-candidates)
+    (advice-remove #'vertico--setup #'vertico-grid--setup))))
 
 ;; Emacs 28: Do not show Vertico commands in M-X
 (dolist (sym '(vertico-grid-left vertico-grid-right))
diff --git a/extensions/vertico-reverse.el b/extensions/vertico-reverse.el
index 79e6c54548..a2ece379cf 100644
--- a/extensions/vertico-reverse.el
+++ b/extensions/vertico-reverse.el
@@ -33,7 +33,7 @@
 (require 'vertico)
 
 (defvar vertico-reverse-map
-  (let ((map (make-composed-keymap nil vertico-map)))
+  (let ((map (make-sparse-keymap)))
     (define-key map [remap beginning-of-buffer] #'vertico-last)
     (define-key map [remap minibuffer-beginning-of-buffer] #'vertico-last)
     (define-key map [remap end-of-buffer] #'vertico-first)
@@ -46,7 +46,7 @@
     (define-key map [remap backward-paragraph] #'vertico-next-group)
     (define-key map [remap forward-paragraph] #'vertico-previous-group)
     map)
-  "Vertico keymap adapted to reversed candidate order.")
+  "Additional keymap activated in reverse mode.")
 
 (defun vertico-reverse--display (lines)
   "Display LINES in reverse."
@@ -61,7 +61,7 @@
 
 (defun vertico-reverse--setup ()
   "Setup reverse keymap."
-  (use-local-map vertico-reverse-map))
+  (use-local-map (make-composed-keymap vertico-reverse-map 
(current-local-map))))
 
 ;;;###autoload
 (define-minor-mode vertico-reverse-mode



reply via email to

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