-(defun diff-hl-dired-update-ignores (backend def-dir)
- (let ((buffer (current-buffer))
- entries-alist)
- (with-current-buffer diff-hl-dired-process-buffer
- (erase-buffer)
- (vc-call-backend
- backend 'dir-status-files def-dir
- (cl-loop for file in (directory-files def-dir)
- unless (member file '("." ".." ".hg"))
- collect file)
- nil
- (lambda (entries &optional more-to-come)
- (when (buffer-live-p buffer)
- (with-current-buffer buffer
- (dolist (entry entries)
- (cl-destructuring-bind (file state &rest r) entry
- ;; Work around http://debbugs.gnu.org/18605
- (setq file (replace-regexp-in-string "\\` " "" file))
- (when (eq state 'ignored)
- (push (cons (directory-file-name file)
- 'ignored) entries-alist))))
- (unless more-to-come
- (diff-hl-dired-highlight-items entries-alist)))))
- ))))
+(when (version< emacs-version "24.4.51.5")
+ ;; Work around http://debbugs.gnu.org/19386
+ (defadvice vc-git-dir-status-goto-stage (around
+ diff-hl-dired-skip-up-to-date
+ (stage files update-function)
+ activate)
+ (when (eq stage 'ls-files-up-to-date)
+ (setq stage 'diff-index))
+ ad-do-it))