   (let* ((path (minibuffer-contents-no-properties))
          (dir (lusty-normalize-dir (file-name-directory path)))
          (file-portion (file-name-nondirectory path))
+         (files
+          (and dir
+               ; NOTE: directory-files is quicker but
+               ;       doesn't append slash for directories.
+               ;(directory-files dir nil nil t)
+               (file-name-all-completions "" dir)))
          (matches
-          ;; TODO: let bind read-file-name-completion-ignore-case 
-          ;; based on whether file-portion includes uppercase
-          (and dir
-               (lusty-sort-by-fuzzy-score 
-                (lusty-filter-files
-                 file-portion
-                 (directory-files dir nil nil t))
-                file-portion)))
+          (lusty-sort-by-fuzzy-score
+           (lusty-filter-files file-portion files)
+           file-portion))
          (openable-p
           ;; Only one entry and not a directory.
           (let ((first-entry (car matches)))

;;    M-x lusty-file-explorer
;;    M-x lusty-buffer-explorer
;;
;; And then use as you would `find-file' or `switch-to-buffer'.  (There are
;; minor differences in entry selection, e.g. tab-completing when there is a
;; only a single completion will select that completion.)  A split window
;; shows the *Lusty-Completions* buffer, which updates dynamically as you
;; type.
;;
;; Respects these variables:

    (set-keymap-parent map minibuffer-local-map)
    (define-key map "\C-n" 'lusty-highlight-next)
    (define-key map "\C-p" 'lusty-highlight-previous)
    (define-key map "\t" 'lusty-select-entry)
    ;; STEVE ^ entry for <Enter> as well?
    map)
  "Minibuffer keymap for `lusty-file-explorer' and `lusty-buffer-explorer'.")

