branch: externals/vertico
commit 219c6b78d8f181ecee08183b9ce4a35952c5fe59
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    vertico-multiform: Add keymap support
---
 extensions/vertico-directory.el | 9 +++++++++
 extensions/vertico-multiform.el | 7 ++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/extensions/vertico-directory.el b/extensions/vertico-directory.el
index b489667812..f417af0292 100644
--- a/extensions/vertico-directory.el
+++ b/extensions/vertico-directory.el
@@ -114,5 +114,14 @@ Exit with current input if prefix ARG is given."
                  (> (point) (overlay-end ov)))
         (delete-region (overlay-start ov) (overlay-end ov))))))
 
+(defvar-keymap vertico-directory-map
+  :doc "File name editing map."
+  "RET" #'vertico-directory-enter
+  "DEL" #'vertico-directory-delete-char
+  "M-DEL" #'vertico-directory-delete-word)
+
+;;;###autoload (autoload 'vertico-directory-map "vertico-directory-map" nil t 
'keymap)
+(defalias 'vertico-directory-map vertico-directory-map)
+
 (provide 'vertico-directory)
 ;;; vertico-directory.el ends here
diff --git a/extensions/vertico-multiform.el b/extensions/vertico-multiform.el
index b68349f60f..524b951955 100644
--- a/extensions/vertico-multiform.el
+++ b/extensions/vertico-multiform.el
@@ -115,6 +115,7 @@ The keys in LIST can be symbols or regexps."
               'category))
         (exit (make-symbol "vertico-multiform--exit"))
         (depth (recursion-depth))
+        (kmaps nil)
         (modes nil))
     (fset exit (lambda ()
                  (when (= depth (recursion-depth))
@@ -126,6 +127,8 @@ The keys in LIST can be symbols or regexps."
     (dolist (x (cdr (or (vertico-multiform--lookup this-command 
vertico-multiform-commands)
                         (vertico-multiform--lookup cat 
vertico-multiform-categories))))
       (pcase x
+        (`(:keymap . ,key)
+         (push (if (keymapp key) key (apply #'define-keymap key)) kmaps))
         (`(:not . ,fs)
          (dolist (f fs)
            (let ((sym (and (symbolp f) (intern-soft (format "vertico-%s-mode" 
f)))))
@@ -137,7 +140,9 @@ The keys in LIST can be symbols or regexps."
         (_ (error "Invalid multiform setting %S" x))))
     (push modes vertico-multiform--stack)
     (vertico-multiform--toggle 1)
-    (vertico--setup)))
+    (vertico--setup)
+    (when kmaps
+      (use-local-map (make-composed-keymap kmaps (current-local-map))))))
 
 (defvar-keymap vertico-multiform-map
   :doc "Additional keymap activated in multiform mode.")

Reply via email to