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

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

[elpa] externals/vertico a1b0219840: Improved multiform toggling, add ve


From: ELPA Syncer
Subject: [elpa] externals/vertico a1b0219840: Improved multiform toggling, add vertico-multiform-vertical (Fix #183)
Date: Sun, 13 Feb 2022 11:58:05 -0500 (EST)

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

    Improved multiform toggling, add vertico-multiform-vertical (Fix #183)
    
    The toggler will remember the latest display mode and toggle between the 
latest
    mode and the mode corresponding to the command.
    
    (define-key vertico-map "\M-V" #'vertico-multiform-vertical)
    (define-key vertico-map "\M-G" #'vertico-multiform-grid)
    (define-key vertico-map "\M-F" #'vertico-multiform-flat)
    (define-key vertico-map "\M-R" #'vertico-multiform-reverse)
    (define-key vertico-map "\M-U" #'vertico-multiform-unobtrusive)
---
 README.org                      | 11 +++++++++++
 extensions/vertico-multiform.el | 23 +++++++++++++++++------
 2 files changed, 28 insertions(+), 6 deletions(-)

diff --git a/README.org b/README.org
index 7545c52d67..c7aef1b263 100644
--- a/README.org
+++ b/README.org
@@ -298,6 +298,17 @@ problem!
           (consult-grep buffer)))
 #+end_src
 
+Temporary toggling between the different display modes is possible. Bind the
+following commands:
+
+#+begin_src emacs-lisp
+  (define-key vertico-map "\M-V" #'vertico-multiform-vertical)
+  (define-key vertico-map "\M-G" #'vertico-multiform-grid)
+  (define-key vertico-map "\M-F" #'vertico-multiform-flat)
+  (define-key vertico-map "\M-R" #'vertico-multiform-reverse)
+  (define-key vertico-map "\M-U" #'vertico-multiform-unobtrusive)
+#+end_src
+
 You can use your own functions or even lambdas to configure the completion
 behavior per command or per completion category. The function must have the
 calling convention of a mode, i.e., it takes a single argument, which is either
diff --git a/extensions/vertico-multiform.el b/extensions/vertico-multiform.el
index 6334cd5611..1e86d17d72 100644
--- a/extensions/vertico-multiform.el
+++ b/extensions/vertico-multiform.el
@@ -49,6 +49,7 @@
 ;; Temporary toggling between the different display modes is
 ;; possible. Bind the following commands:
 ;;
+;; (define-key vertico-map "\M-V" #'vertico-multiform-vertical)
 ;; (define-key vertico-map "\M-G" #'vertico-multiform-grid)
 ;; (define-key vertico-map "\M-F" #'vertico-multiform-flat)
 ;; (define-key vertico-map "\M-R" #'vertico-multiform-reverse)
@@ -186,13 +187,23 @@ ARG can be nil, t, -1, 1 or toggle."
           (setcar vertico-multiform--stack (remove mode modes))
         (push not-mode (car vertico-multiform--stack))))))
 
-(defun vertico-multiform--display-toggle (mode)
-  "Toggle display MODE temporarily in minibuffer."
-  (let ((arg (not (and (boundp mode) (symbol-value mode)))))
+(defvar-local vertico-multiform--display-last nil)
+
+(defun vertico-multiform-vertical (&optional mode)
+  "Toggle to display MODE temporarily in minibuffer.
+MODE defaults to the vertical display."
+  (interactive)
+  (let (last)
     (dolist (m '(vertico-unobtrusive-mode vertico-flat-mode
                  vertico-grid-mode vertico-reverse-mode))
-      (vertico-multiform--temporary-mode m -1))
-    (when arg (vertico-multiform--temporary-mode mode 1))))
+      (when (and (boundp m) (symbol-value m))
+        (setq last m)
+        (vertico-multiform--temporary-mode m -1)))
+    (when (eq last mode)
+      (setq mode vertico-multiform--display-last))
+    (when mode
+      (vertico-multiform--temporary-mode mode 1))
+    (setq vertico-multiform--display-last last)))
 
 (defmacro vertico-multiform--define-display-toggle (name)
   "Define toggle for display mode NAME."
@@ -201,7 +212,7 @@ ARG can be nil, t, -1, 1 or toggle."
        (defun ,sym ()
          ,(format "Toggle the %s display." name)
          (interactive)
-         (vertico-multiform--display-toggle ',(intern (format 
"vertico-%s-mode" name))))
+         (vertico-multiform-vertical ',(intern (format "vertico-%s-mode" 
name))))
        (put ',sym 'completion-predicate #'vertico--command-p))))
 
 (vertico-multiform--define-display-toggle grid)



reply via email to

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