]> git.eshelyaron.com Git - emacs.git/commitdiff
Ignore file-missing errors during diff-refined font-locking
authorJim Porter <jporterbugs@gmail.com>
Thu, 24 Jun 2021 16:07:25 +0000 (18:07 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 24 Jun 2021 16:07:25 +0000 (18:07 +0200)
* lisp/vc/diff-mode.el (diff--font-lock-refined): Ignore file-missing
errors (bug#49197).

lisp/vc/diff-mode.el

index a0093391c697d4185eb1ca3a31e11935454a0b37..4652afa1f922e8443c51df788f48371dd094be96 100644 (file)
@@ -2265,17 +2265,20 @@ Call FUN with two args (BEG and END) for each hunk."
       ;; same hunk.
       (goto-char (next-single-char-property-change
                   (point) 'diff--font-lock-refined nil max)))
-    (diff--iterate-hunks
-     max
-     (lambda (beg end)
-       (unless (get-char-property beg 'diff--font-lock-refined)
-         (diff--refine-hunk beg end)
-         (let ((ol (make-overlay beg end)))
-           (overlay-put ol 'diff--font-lock-refined t)
-           (overlay-put ol 'diff-mode 'fine)
-           (overlay-put ol 'evaporate t)
-           (overlay-put ol 'modification-hooks
-                        '(diff--overlay-auto-delete))))))))
+    ;; Ignore errors that diff cannot be found so that custom font-lock
+    ;; keywords after `diff--font-lock-refined' can still be evaluated.
+    (ignore-error file-missing
+      (diff--iterate-hunks
+       max
+       (lambda (beg end)
+         (unless (get-char-property beg 'diff--font-lock-refined)
+           (diff--refine-hunk beg end)
+           (let ((ol (make-overlay beg end)))
+             (overlay-put ol 'diff--font-lock-refined t)
+             (overlay-put ol 'diff-mode 'fine)
+             (overlay-put ol 'evaporate t)
+             (overlay-put ol 'modification-hooks
+                          '(diff--overlay-auto-delete)))))))))
 
 (defun diff--overlay-auto-delete (ol _after _beg _end &optional _len)
   (delete-overlay ol))