   "Name of the per-directory ignore file."
   :group 'git
   :type 'string)
+
+(defcustom git-show-uptodate nil
+  "Whether to display up-to-date files."
+  :group 'git
+  :type 'boolean)
+
+(defcustom git-show-ignored nil
+  "Whether to display ignored files."
+  :group 'git
+  :type 'boolean)
+
+(defcustom git-show-unknown t
+  "Whether to display unknown files."
+  :group 'git
+  :type 'boolean)
 
 
 (defface git-status-face

      (push config files))
    files))

(defun git-update-status-files (files &optional default-state)
  "Update the status of FILES from the index."
  (unless git-status (error "Not in git-status buffer."))
  (let* ((status git-status)
         (remaining-files
          (if (git-empty-db-p) ; we need some special handling for an empty db
              (git-run-ls-files status files 'added "-c")
            (git-run-diff-index status files))))
    (git-run-ls-unmerged status files)
    (when (or (not files) remaining-files)
      (let ((exclude-files (git-get-exclude-files)))
        (setq remaining-files (apply #'git-run-ls-files status remaining-files 'unknown "-o"
                                     (concat "--exclude-per-directory=" git-per-dir-ignore-file)
                                     (mapcar (lambda (f) (concat "--exclude-from=" f)) exclude-files)))))
    (git-set-filenames-state status remaining-files default-state)
    (git-refresh-files)
    (git-refresh-ewoc-hf status)))

(defun git-marked-files ()
  "Return a list of all marked files, or if none a list containing just the file at cursor position."

    (define-key map "q"   'git-status-quit)
    (define-key map "r"   'git-remove-file)
    (define-key map "R"   'git-resolve-file)
    (define-key map "t"    toggle-map)
    (define-key map "T"   'git-toggle-all-marks)
    (define-key map "u"   'git-unmark-file)
    (define-key map "U"   'git-revert-file)
