branch: master commit f0b945a4c4ac31cfccd72e885bacae652d3765f9 Author: Wilfred Hughes <whug...@ahl.com> Commit: Wilfred Hughes <m...@wilfred.me.uk>
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)))