[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/vertico 3e12ee1389 3/4: vertico-multiform: Add vertico-
From: |
ELPA Syncer |
Subject: |
[elpa] externals/vertico 3e12ee1389 3/4: vertico-multiform: Add vertico-multiform-unobtrusive toggle command |
Date: |
Sun, 2 Jan 2022 19:57:54 -0500 (EST) |
branch: externals/vertico
commit 3e12ee1389d7821dc4f63743aaf87685419f6736
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
vertico-multiform: Add vertico-multiform-unobtrusive toggle command
---
README.org | 2 +-
extensions/vertico-multiform.el | 56 +++++++++++++++++++++++------------------
2 files changed, 32 insertions(+), 26 deletions(-)
diff --git a/README.org b/README.org
index 4ca6133977..4573cca9d7 100644
--- a/README.org
+++ b/README.org
@@ -288,7 +288,7 @@ problem!
;; and a flat (Ido-like) menu for M-x.
(setq vertico-multiform-commands
'((consult-imenu buffer indexed)
- (execute-extended-command flat)))
+ (execute-extended-command unobtrusive)))
;; Configure the display per completion category.
;; Use the grid display for files and a buffer
diff --git a/extensions/vertico-multiform.el b/extensions/vertico-multiform.el
index a5fe9c6278..e25bcc69ac 100644
--- a/extensions/vertico-multiform.el
+++ b/extensions/vertico-multiform.el
@@ -50,6 +50,7 @@
;; (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)
;;
;;; Code:
@@ -145,8 +146,8 @@ APP is the original function call."
(advice-add #'vertico--advice :override #'vertico-multiform--advice)
(advice-remove #'vertico--advice #'vertico-multiform--advice)))
-(defun vertico-multiform--temporary-disable (mode)
- "Disable MODE temporarily in minibuffer."
+(defun vertico-multiform--display-disable (mode)
+ "Disable display MODE temporarily in minibuffer."
(unless (minibufferp)
(user-error "`%s' must be called inside the minibuffer" this-command))
(unless vertico-multiform-mode
@@ -156,34 +157,39 @@ APP is the original function call."
(setf (car vertico-multiform--stack)
(remove mode (car vertico-multiform--stack)))))
-(defun vertico-multiform--temporary-enable (mode)
- "Enable MODE temporarily in minibuffer."
+(defun vertico-multiform--display-enable (mode)
+ "Enable display MODE temporarily in minibuffer."
(unless (and (boundp mode) (symbol-value mode))
(funcall mode 1)
(push mode (car vertico-multiform--stack))))
-(defun vertico-multiform--temporary-toggle (mode)
- "Toggle MODE temporarily in minibuffer."
+(defun vertico--multiform--display-disable-all ()
+ "Disable all display modes."
+ (dolist (m '(vertico-flat-mode vertico-grid-mode
+ vertico-reverse-mode vertico-unobtrusive-mode))
+ (vertico-multiform--display-disable m)))
+
+(defun vertico-multiform--display-toggle (mode)
+ "Toggle display MODE temporarily in minibuffer."
(if (and (boundp mode) (symbol-value mode))
- (vertico-multiform--temporary-disable mode)
- (dolist (m '(vertico-flat-mode vertico-grid-mode vertico-reverse-mode))
- (vertico-multiform--temporary-disable m))
- (vertico-multiform--temporary-enable mode)))
-
-(defun vertico-multiform-grid ()
- "Toggle the grid display."
- (interactive)
- (vertico-multiform--temporary-toggle 'vertico-grid-mode))
-
-(defun vertico-multiform-flat ()
- "Toggle the flat display."
- (interactive)
- (vertico-multiform--temporary-toggle 'vertico-flat-mode))
-
-(defun vertico-multiform-reverse ()
- "Toggle the reverse display."
- (interactive)
- (vertico-multiform--temporary-toggle 'vertico-reverse-mode))
+ (vertico-multiform--display-disable mode)
+ (vertico--multiform--display-disable-all)
+ (vertico-multiform--display-enable mode)))
+
+(defmacro vertico-multiform--display-define-toggle (name)
+ "Define toggle for display mode NAME."
+ (let ((sym (intern (format "vertico-multiform-%s" name))))
+ `(progn
+ (defun ,sym ()
+ ,(format "Toggle the %s display." name)
+ (interactive)
+ (vertico-multiform--display-toggle ',(intern (format
"vertico-%s-mode" name))))
+ (put ',sym 'completion-predicate #'vertico--command-p))))
+
+(vertico-multiform--display-define-toggle grid)
+(vertico-multiform--display-define-toggle flat)
+(vertico-multiform--display-define-toggle reverse)
+(vertico-multiform--display-define-toggle unobtrusive)
(provide 'vertico-multiform)
;;; vertico-multiform.el ends here