1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-15 17:00:26 +00:00

Ignore file-missing errors during diff-refined font-locking

* lisp/vc/diff-mode.el (diff--font-lock-refined): Ignore file-missing
errors (bug#49197).
This commit is contained in:
Jim Porter 2021-06-24 18:07:25 +02:00 committed by Lars Ingebrigtsen
parent f85ee6d5c7
commit ed30a7290c

View 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))