From 2fb8d86b5fa7d621f89cd758ebd6b831089fdd4c Mon Sep 17 00:00:00 2001 From: Oleh Krehel Date: Mon, 18 Apr 2016 16:23:14 +0200 Subject: [PATCH] ivy.el (ivy-done): Allow ivy-dispatching-done to exit with no cands Example of use: (defun ivy-recentf-with-last-input (_x) (ivy-read "Recentf: " recentf-list :action (lambda (f) (with-ivy-window (find-file f))) :initial-input ivy-text :caller 'ivy-recentf)) (ivy-set-actions t '(("r" ivy-recentf-with-last-input "recentf"))) The input may match no candidates, but it's still good for `ivy-recentf-with-last-input', since it uses `ivy-text' instead of `ivy--current'. --- ivy.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ivy.el b/ivy.el index e07fa53ee..7d705c8af 100644 --- a/ivy.el +++ b/ivy.el @@ -457,7 +457,10 @@ When non-nil, it should contain at least one %d.") "Exit the minibuffer with the selected candidate." (interactive) (delete-minibuffer-contents) - (cond ((> ivy--length 0) + (cond ((or (> ivy--length 0) + ;; the action from `ivy-dispatching-done' may not need a + ;; candidate at all + (eq this-command 'ivy-dispatching-done)) (ivy--done ivy--current)) ((memq (ivy-state-collection ivy-last) '(read-file-name-internal internal-complete-buffer)) -- 2.39.2