From ed30a7290cbca58c21560e8251738665118d98ef Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Thu, 24 Jun 2021 18:07:25 +0200 Subject: [PATCH] Ignore file-missing errors during diff-refined font-locking * lisp/vc/diff-mode.el (diff--font-lock-refined): Ignore file-missing errors (bug#49197). --- lisp/vc/diff-mode.el | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index a0093391c69..4652afa1f92 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -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)) -- 2.39.2