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

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

[elpa] externals/vertico 3fd19b49f3 1/4: vertico-multiform: Add settings


From: ELPA Syncer
Subject: [elpa] externals/vertico 3fd19b49f3 1/4: vertico-multiform: Add settings variable, rename modes
Date: Sun, 26 Dec 2021 08:57:51 -0500 (EST)

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

    vertico-multiform: Add settings variable, rename modes
---
 extensions/vertico-multiform.el | 71 +++++++++++++++++++++++++----------------
 1 file changed, 44 insertions(+), 27 deletions(-)

diff --git a/extensions/vertico-multiform.el b/extensions/vertico-multiform.el
index f0a2f22646..ef76a78860 100644
--- a/extensions/vertico-multiform.el
+++ b/extensions/vertico-multiform.el
@@ -34,13 +34,13 @@
 ;;
 ;; Example:
 ;;
-;;    (setq vertico-multiform-commands
-;;            '((consult-line buffer)
-;;             (consult-imenu reverse buffer)
-;;             (execute-extended-command flat)))
+;;    (setq vertico-multiform-command-modes
+;;          '((consult-line buffer)
+;;            (consult-imenu reverse buffer)
+;;            (execute-extended-command flat)))
 ;;
-;;    (setq vertico-multiform-categories
-;;             '((file buffer grid)))
+;;    (setq vertico-multiform-category-modes
+;;          '((file buffer grid)))
 ;;
 ;;    (vertico-multiform-mode)
 
@@ -48,17 +48,31 @@
 
 (require 'vertico)
 
-(defcustom vertico-multiform-commands nil
+(defcustom vertico-multiform-command-modes nil
   "Alist of commands and list of modes to turn on per command.
-Takes precedence over `vertico-multiform-categories'."
+Takes precedence over `vertico-multiform-category-modes'."
   :group 'vertico
-  :type '(repeat (list symbol)))
+  :type '(alist :key-type symbol :value-type (repeat symbol)))
 
-(defcustom vertico-multiform-categories nil
-  "Alist of categories and list of modes to turn on per categories.
-Has lower precedence than `vertico-multiform-commands'."
+(defcustom vertico-multiform-category-modes nil
+  "Alist of categories and list of modes to turn on per category.
+Has lower precedence than `vertico-multiform-command-modes'."
   :group 'vertico
-  :type '(repeat (list symbol)))
+  :type '(alist :key-type symbol :value-type (repeat symbol)))
+
+(defcustom vertico-multiform-command-settings nil
+  "Alist of commands and alist of variables to set per command.
+Takes precedence over `vertico-multiform-category-settings'."
+  :group 'vertico
+  :type '(alist :key-type symbol
+                :value-type (alist :key-type symbol :value-type sexp)))
+
+(defcustom vertico-multiform-category-settings nil
+  "Alist of categories and alist of variables to set per category.
+Has lower precedence than `vertico-multiform-command-settings'."
+  :group 'vertico
+  :type '(alist :key-type symbol
+                :value-type (alist :key-type symbol :value-type sexp)))
 
 (defun vertico-multiform--advice (&rest app)
   "Advice for `vertico--advice' switching modes on and off.
@@ -69,22 +83,25 @@ APP is the original function call."
         (depth (1+ (recursion-depth))))
     (fset setup
           (lambda ()
+            (when (eq modes 'init)
+              (let ((cat (completion-metadata-get
+                          (completion-metadata
+                           (buffer-substring (minibuffer-prompt-end)
+                                             (max (minibuffer-prompt-end) 
(point)))
+                           minibuffer-completion-table
+                           minibuffer-completion-predicate)
+                          'category)))
+                (dolist (setting (or (and cat (alist-get cat 
vertico-multiform-category-settings))
+                                     (alist-get this-command 
vertico-multiform-command-settings)))
+                  (set (make-local-variable (car setting)) (cdr setting)))
+                (setq modes
+                      (mapcar (lambda (m)
+                                (let ((v (intern (format "vertico-%s-mode" 
m))))
+                                  (if (fboundp v) v m)))
+                              (or (and cat (alist-get cat 
vertico-multiform-category-modes))
+                                  (alist-get this-command 
vertico-multiform-command-modes))))))
             (cond
              ((= depth (recursion-depth))
-              (when (eq modes 'init)
-                (let ((cat (completion-metadata-get
-                            (completion-metadata
-                             (buffer-substring (minibuffer-prompt-end)
-                                               (max (minibuffer-prompt-end) 
(point)))
-                             minibuffer-completion-table
-                             minibuffer-completion-predicate)
-                            'category)))
-                  (setq modes
-                        (mapcar (lambda (m)
-                                  (let ((v (intern (format "vertico-%s-mode" 
m))))
-                                    (if (fboundp v) v m)))
-                                (or (and cat (alist-get cat 
vertico-multiform-categories))
-                                    (alist-get this-command 
vertico-multiform-commands))))))
               (mapc (lambda (f) (funcall f 1)) modes))
              ((= (1+ depth) (recursion-depth))
               (mapc (lambda (f) (funcall f -1)) modes)))))



reply via email to

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