;;; diff-hl-dired.el --- Highlight changed files in Dired -*- lexical-binding: t -*-
-;; Copyright (C) 2012-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2012-2015 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
(let ((backend (ignore-errors (vc-responsible-backend default-directory)))
(def-dir default-directory)
(buffer (current-buffer))
- (contents (cl-loop for file in (directory-files default-directory)
- unless (member file '("." ".." ".hg"))
- collect file))
dirs-alist files-alist)
(when backend
(diff-hl-dired-clear)
(with-current-buffer diff-hl-dired-process-buffer
(setq default-directory (expand-file-name def-dir))
(erase-buffer)
- (vc-call-backend
- backend 'dir-status-files def-dir
+ (diff-hl-dired-status-files
+ backend def-dir
(when diff-hl-dired-extra-indicators
- contents)
- nil
+ (cl-loop for file in (directory-files def-dir)
+ unless (member file '("." ".." ".hg"))
+ collect file))
(lambda (entries &optional more-to-come)
(when (buffer-live-p buffer)
(with-current-buffer buffer
(append dirs-alist files-alist))))))
)))))
+(defun diff-hl-dired-status-files (backend dir files update-function)
+ "Using version control BACKEND, return list of (FILE STATE EXTRA) entries
+for DIR containing FILES. Call UPDATE-FUNCTION as entries are added."
+ (if (version< "25" emacs-version)
+ (vc-call-backend backend 'dir-status-files dir files update-function)
+ (vc-call-backend backend 'dir-status-files dir files nil update-function)))
+
(when (version< emacs-version "24.4.51.5")
;; Work around http://debbugs.gnu.org/19386
(defadvice vc-git-dir-status-goto-stage (around
(defalias 'diff-hl-dired-clear 'diff-hl-remove-overlays)
+;;;###autoload
(defun diff-hl-dired-mode-unless-remote ()
(unless (file-remote-p default-directory)
(diff-hl-dired-mode)))