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.")