diff --git a/modules/completion/vertico/autoload/vertico.el b/modules/completion/vertico/autoload/vertico.el index 3762f0eaa..0bfd9e00f 100644 --- a/modules/completion/vertico/autoload/vertico.el +++ b/modules/completion/vertico/autoload/vertico.el @@ -112,9 +112,28 @@ Supports exporting consult-grep to wgrep, file to wdeired, and consult-location "Previews candidate in vertico buffer, unless it's a consult command" (interactive) (unless (bound-and-true-p consult--preview-function) - (save-selected-window - (let ((embark-quit-after-action nil)) - (embark-dwim))))) + (if (fboundp 'embark-dwim) + (save-selected-window + (let (embark-quit-after-action) + (embark-dwim))) + (user-error "Embark not installed, aborting...")))) + +;;;###autoload +(defun +vertico/enter-or-preview () + "Enter directory or embark preview on current candidate." + (interactive) + (when (> 0 vertico--index) + (user-error "No vertico session is currently active")) + (if (and (let ((cand (vertico--candidate))) + (or (string-suffix-p "/" cand) + (and (vertico--remote-p cand) + (string-suffix-p ":" cand)))) + (not (equal vertico--base "")) + (eq 'file (vertico--metadata-get 'category))) + (vertico-insert) + (condition-case _ + (+vertico/embark-preview) + (user-error (vertico-directory-enter))))) (defvar +vertico/find-file-in--history nil) ;;;###autoload diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index ec417355c..86ff2b6fb 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -34,6 +34,12 @@ overrides `completion-styles' during company completion sessions.") #'consult-completion-in-region #'completion--in-region) args))) + + (map! :when (modulep! :editor evil +everywhere) + :map vertico-map + "C-h" (cmds! (eq 'file (vertico--metadata-get 'category)) #'vertico-directory-up) + "C-l" (cmds! (eq 'file (vertico--metadata-get 'category)) #'+vertico/enter-or-preview)) + ;; Cleans up path when moving directories with shadowed paths syntax, e.g. ;; cleans ~/foo/bar/// to /, and ~/foo/bar/~/ to ~/. (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy)