 (defun danny--longest-line-length (lines)
   "Return the longest length in LINES."
   (let ((longest 0))
-    (mapc (lambda (line)
-            (when (> (length line) longest)
-              (setq longest (length line))))
+    (mapc (lambda (item)
+            ;; Collection items may be text or cons of text and function.
+            (let ((text (if (consp item)
+                            (car item)
+                          item)))
+              (when (> (length text) longest)
+                (setq longest (length text)))))
           lines)
     longest))
 

   (list
    (make-danny--framed-ivy-source :prompt (format "Action on (%s): " (f-filename fpath))
                                   :collection (lambda (str pred v)
                                                 (-concat (list "Open"
                                                                "Move...")
                                                          (-map
                                                           (lambda (item)
                                                             (format "Move to %s" item))
                                                           (danny--last-destinations))))
                                   :action (lambda (item)
                                             (cond ((equal item "Open")
                                                    (unless (f-exists-p fpath)
                                                      (error "File not found: %s" fpath))
                                                    (find-file fpath))
                                                   ((equal item "Move...")
                                                    (danny--handle-file-created fpath))))
                                   :unwind (lambda ()
                                             (delete-frame)
                                             (kill-buffer "*danny*")

                                                                                :initial-input ivy-text))))
    (with-current-buffer (get-buffer-create "*danny*")
      (let* ((collection (funcall (danny--framed-ivy-source-collection source)
                                  nil nil nil))
             (lines-count (+ (length (s-split "\n" (danny--framed-ivy-source-prompt source)))
                             (length collection)))
             (frame (make-frame
