                      (delete-frame)
                      (other-window 1))))
       (danny--framed-ivy-read (-concat (list
-                                        (make-danny--framed-ivy-source :prompt (format "Open? (%s) " (f-filename file-path))
-                                                                       :action (danny--create-open-action-fun file-path)
-                                                                       :collection (lambda (str pred v)
-                                                                                     '())
-                                                                       :unwind unwind)
                                         (make-danny--framed-ivy-source :prompt (format "Save in Recent (%s): " (f-filename file-path))
                                                                        :action (danny--create-move-action-fun file-path)
                                                                        :collection (lambda (str pred v)

                                                                                         (1- index))
                                                                                :initial-input ivy-text))))
    (with-current-buffer (get-buffer-create "*danny*")
      (let* ((lines-count (length (funcall (danny--framed-ivy-source-collection source)
                                           nil nil nil)))
             (frame (make-frame
                     (-concat danny--base-frame-params
                              (list (cons 'height (if (> lines-count 0) 10
                                                    1))
                                    ;; Calculate a sensible width, based on longest path (in source).
                                    (cons 'width (if (> lines-count 0)
                                                     (+ 1
                                                        lines-count
                                                        (danny--longest-line-length (funcall (danny--framed-ivy-source-collection source)
                                                                                             nil nil nil)))
                                                   (1+ (length (danny--framed-ivy-source-prompt source))))))))))
        (x-focus-frame frame)
        (ivy-read (danny--framed-ivy-source-prompt source)
                  (danny--framed-ivy-source-collection source)
                  :update-fn (lambda ()
                               ;; Forcing redisplay works around "Open" source not shown
                               ;; after having visited other sources (left/right keys).

(defun danny--notify-callback (event)
  "Handle EVENT for file-notify events."
  (let ((event-type (nth 1 event))
        (fpath (nth 2 event)))
    (when (and (eq event-type 'created)
               (f-file-p fpath))
      (danny--choose-action fpath))))

(defun danny--create-move-action-fun (src-fpath)
  (lambda (dst-dpath)
