Skip to content

Commit 67eecb0

Browse files
committed
Ensure diff-hl-mode is bound and optimize diff-hl--update
1 parent ca4391f commit 67eecb0

1 file changed

Lines changed: 15 additions & 11 deletions

File tree

diff-hl.el

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -741,22 +741,26 @@ Return a list of line overlays used."
741741
(lambda (ref-changes)
742742
(when (buffer-live-p orig)
743743
(let ((ref-changes (diff-hl-adjust-changes ref-changes changes))
744-
(base (diff-hl--target-buffer orig)))
744+
(base (diff-hl--target-buffer orig))
745+
(has-changes (or changes ref-changes)))
745746
(dolist (buf (buffer-list))
746747
(when (and (buffer-live-p buf)
747-
(eq (diff-hl--target-buffer buf) base)
748+
(or (eq buf base)
749+
(eq (buffer-base-buffer buf) base))
748750
(buffer-local-value 'diff-hl-mode buf))
749751
(with-current-buffer buf
752+
(diff-hl-remove-overlays)
750753
(let (reuse)
751-
(diff-hl-remove-overlays)
752-
(let ((diff-hl-highlight-function
753-
diff-hl-highlight-reference-function)
754-
(diff-hl-fringe-face-function
755-
diff-hl-fringe-reference-face-function))
756-
(setq reuse (diff-hl--update-overlays ref-changes nil)))
757-
(diff-hl--update-overlays changes reuse)
758-
(when (not (or changes ref-changes))
759-
(diff-hl--autohide-margin))))))))))))))
754+
(when ref-changes
755+
(let ((diff-hl-highlight-function
756+
diff-hl-highlight-reference-function)
757+
(diff-hl-fringe-face-function
758+
diff-hl-fringe-reference-face-function))
759+
(setq reuse (diff-hl--update-overlays ref-changes nil))))
760+
(when changes
761+
(diff-hl--update-overlays changes reuse)))
762+
(unless has-changes
763+
(diff-hl--autohide-margin)))))))))))))
760764

761765
(defun diff-hl--resolve (value-or-buffer cb)
762766
(if (listp value-or-buffer)

0 commit comments

Comments
 (0)