branch: master
commit f0b945a4c4ac31cfccd72e885bacae652d3765f9
Author: Wilfred Hughes <[email protected]>
Commit: Wilfred Hughes <[email protected]>
Don't call vc-state unless the file exists
If a buffer is visiting a file whose parent directory has been
renamed, vc-state throws an error because (buffer-file-path) no longer
points to an existing file.
Ensure that we never call vc-state when the file doesn't exist. This
issue can occur with diff-hl-flydiff, or when using
diff-hl-magit-post-refresh as documented in the readme.
This change causes diff-hl to stop highlighting in the current buffer,
which is the best we can do when we can't find the file.
---
diff-hl-flydiff.el | 1 +
diff-hl.el | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/diff-hl-flydiff.el b/diff-hl-flydiff.el
index 627840e..5b1522c 100644
--- a/diff-hl-flydiff.el
+++ b/diff-hl-flydiff.el
@@ -140,6 +140,7 @@ This requires the external program `diff' to be in your
`exec-path'."
(unless (or
(not diff-hl-mode)
(= diff-hl-flydiff-modified-tick (buffer-modified-tick))
+ (not (file-exists-p (buffer-file-name)))
(file-remote-p default-directory))
(diff-hl-update)))
diff --git a/diff-hl.el b/diff-hl.el
index d882eb1..86d9cc6 100644
--- a/diff-hl.el
+++ b/diff-hl.el
@@ -549,7 +549,8 @@ The value of this variable is a mode line template as in
;; (diff-hl-mode could be non-nil there, even if
;; buffer-file-name is nil):
(buffer-file-name buf)
- (file-in-directory-p (buffer-file-name buf) topdir))
+ (file-in-directory-p (buffer-file-name buf) topdir)
+ (file-exists-p (buffer-file-name buf)))
(with-current-buffer buf
(let* ((file buffer-file-name)
(backend (vc-backend file)))