 
 (defun lusty-update-completion-buffer (&optional tab-pressed-p)
   (assert (minibufferp))
-  (multiple-value-bind (completions match single-selectable-completion)
+  (multiple-value-bind (matches openable-p)
       (ecase lusty--active-mode
-        (:file-explorer (lusty-file-explorer-completions))
+        (:file-explorer (lusty-file-explorer-matches))
         (:buffer-explorer (lusty-buffer-explorer-completions)))
 
-    (if (and tab-pressed-p
-             single-selectable-completion)
+    (if (and openable-p tab-pressed-p)
+        ;; STEVE ^^ this is not right anymore
+        ;;       tab should select highlighted entry
+        ;;       - recurse if directory, open if file
+        ;;       enter should use current file-portion
+        ;;       - recurse if directory, open if file, create if names nothing
+        ;;         - unless file portion is empty
         ;;
         ;; The user pressed TAB (or some other completion key) and we're
         ;; fully completable -- go ahead and choose it.
         (progn
-          (lusty-set-minibuffer-text single-selectable-completion)
+          (lusty-set-minibuffer-text (car matches))
           (minibuffer-complete-and-exit))
       ;;
       ;; Update the completion window.
       (let ((lusty-buffer (get-buffer-create lusty-buffer-name)))
         (with-current-buffer lusty-buffer
           (setq buffer-read-only t)
-          (let ((buffer-read-only nil))
-            (erase-buffer)
-            (lusty-display-completion-list completions match)
-            (goto-char (point-min))
-
-            ;; If only our completions window is open,
-            (when (one-window-p t)
-              ;; Restore original window configuration before fitting the
-              ;; window so the minibuffer won't grow and look silly.
-              (set-window-configuration lusty--initial-window-config))
-            (fit-window-to-buffer (display-buffer lusty-buffer)
-                                  ; TODO vvv do smarter
-                                  (- (frame-height) 3)))
+          (multiple-value-bind (truncated-matches truncated-p)
+              (lusty-truncate-entries matches)
+            (let ((buffer-read-only nil))
+              (erase-buffer)
+              (lusty-display-entries truncated-matches truncated-p)
+              (goto-char (point-min))))
+
+          ;; If only our completions window is open,
+          (when (one-window-p t)
+            ;; Restore original window configuration before fitting the
+            ;; window so the minibuffer won't grow and look silly.
+            (set-window-configuration lusty--initial-window-config))
+          (fit-window-to-buffer (display-buffer lusty-buffer)
+                                ; TODO vvv do smarter
+                                (- (frame-height) 3))
           (set-buffer-modified-p nil))))))
 
 (defun lusty-buffer-explorer-completions ()

(defvar lusty-truncated-string
  (propertize "-- TRUNCATED --" 'face 'font-lock-comment-face))

(defvar lusty--active-mode nil)
(defvar lusty--wrapping-ido-p nil)
(defvar lusty--previous-contents nil)
(defvar lusty--initial-window-config nil)
(defvar lusty--completion-ignored-extensions nil)

;;;###autoload

    ;;     remember to add back the '/'
    ;;     update the minibuffer contents
    ;;   
    (setq lusty--previous-contents (minibuffer-contents-no-properties)
          lusty--highlighted-index 0)
    (lusty-update-completion-buffer)))

;; Cribbed with modification from tail-select-lowest-window.
