branch: master
commit 16db967b0577c376f29e0d72cef8aa2e3a5a84f0
Merge: 04f3d4b e933675
Author: Dmitry Gutov <[email protected]>
Commit: Dmitry Gutov <[email protected]>
Merge commit 'e93367512080e540dc5dd126dfcb38b4a5e9415b' from diff-hl
---
packages/diff-hl/README.md | 10 ++++++++++
packages/diff-hl/diff-hl-flydiff.el | 5 +++--
packages/diff-hl/diff-hl.el | 13 +++++++++++--
3 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/packages/diff-hl/README.md b/packages/diff-hl/README.md
index b8bbe3a..725466b 100644
--- a/packages/diff-hl/README.md
+++ b/packages/diff-hl/README.md
@@ -52,6 +52,16 @@ Notes
it's only accurate when the buffer is in saved state. Check out
`diff-hl-flydiff-mode`, it aims to handle unsaved buffers as well.
+* To use an
+ [alternative diff
algorithm](http://stackoverflow.com/questions/32365271/whats-the-difference-between-git-diff-patience-and-git-diff-histogram)
+ with Git, add a corresponding argument to `vc-git-diff-switches`,
+ e.g. `(setq vc-git-diff-switches '("--histogram"))`. Using the
+ `diff.algorithm` option doesn't work
+ [because](http://article.gmane.org/gmane.comp.version-control.git/294622)
+ `vc-git-diff` calls `git diff-index`. `diff-hl-flydiff-mode` does
+ not support alternative algorithms, because it uses the external
+ `diff` program.
+
* We conflict with other modes when they put indicators on the fringe,
such as [Flycheck](https://github.com/flycheck/flycheck). This is
rarely a significant problem, since if you're using such a mode,
diff --git a/packages/diff-hl/diff-hl-flydiff.el
b/packages/diff-hl/diff-hl-flydiff.el
index 94dbbd7..7f0c6c7 100644
--- a/packages/diff-hl/diff-hl-flydiff.el
+++ b/packages/diff-hl/diff-hl-flydiff.el
@@ -39,7 +39,7 @@
:type 'number)
(defvar diff-hl-flydiff-modified-tick 0)
-(defvar diff-hl-flydiff-timer)
+(defvar diff-hl-flydiff-timer nil)
(make-variable-buffer-local 'diff-hl-flydiff-modified-tick)
(defun diff-hl-flydiff/vc-git--symbolic-ref (file)
@@ -167,6 +167,7 @@ This requires the external program `diff' to be in your
`exec-path'."
(advice-remove 'diff-hl-modified-p #'diff-hl-flydiff/modified-p)
(advice-remove 'diff-hl-changes-buffer #'diff-hl-flydiff-buffer-with-head)
- (cancel-timer diff-hl-flydiff-timer)))
+ (and diff-hl-flydiff-timer
+ (cancel-timer diff-hl-flydiff-timer))))
(provide 'diff-hl-flydiff)
diff --git a/packages/diff-hl/diff-hl.el b/packages/diff-hl/diff-hl.el
index 2aaabd4..6650818 100644
--- a/packages/diff-hl/diff-hl.el
+++ b/packages/diff-hl/diff-hl.el
@@ -5,7 +5,7 @@
;; Author: Dmitry Gutov <[email protected]>
;; URL: https://github.com/dgutov/diff-hl
;; Keywords: vc, diff
-;; Version: 1.8.3
+;; Version: 1.8.4
;; Package-Requires: ((cl-lib "0.2"))
;; This file is part of GNU Emacs.
@@ -209,7 +209,16 @@
(defvar vc-svn-diff-switches)
(defmacro diff-hl-with-diff-switches (body)
- `(let ((vc-git-diff-switches nil)
+ `(let ((vc-git-diff-switches
+ ;; https://github.com/dgutov/diff-hl/issues/67
+ (cons "-U0"
+ ;; https://github.com/dgutov/diff-hl/issues/9
+ (and (boundp 'vc-git-diff-switches)
+ (listp vc-git-diff-switches)
+ (cl-remove-if-not
+ (lambda (arg)
+ (member arg '("--histogram" "--patience" "--minimal")))
+ vc-git-diff-switches))))
(vc-hg-diff-switches nil)
(vc-svn-diff-switches nil)
(vc-diff-switches '("-U0"))