fix(vc-gutter): update diff-hl on ESC or switching window/frame

The former debouncer wasn't actually doing anything, meaning
diff-hl-update was triggered way more often than it needed to be.
This commit is contained in:
Henrik Lissner 2025-12-16 04:33:15 -05:00
parent 2c682d60de
commit 92f99d64dd
No known key found for this signature in database
GPG key ID: B60957CA074D39A3

View file

@ -107,13 +107,18 @@ Respects `diff-hl-disable-on-remote'."
(add-hook! '(doom-escape-hook doom-switch-window-hook doom-switch-frame-hook) :append
(defun +vc-gutter-update-h (&rest _)
"Return nil to prevent shadowing other `doom-escape-hook' hooks."
(ignore (and (or (bound-and-true-p diff-hl-mode)
(bound-and-true-p diff-hl-dir-mode))
(or (null +vc-gutter--last-state)
(not (equal +vc-gutter--last-state
(symbol-plist (intern (expand-file-name buffer-file-name)
vc-file-prop-obarray)))))
(diff-hl-update)))))
(and (or (bound-and-true-p diff-hl-mode)
(bound-and-true-p diff-hl-dir-mode))
(buffer-file-name (buffer-base-buffer))
(not ; debouncing
(equal +vc-gutter--last-state
(setq +vc-gutter--last-state
(cons (point)
(copy-sequence
(symbol-plist
(intern (expand-file-name buffer-file-name)
vc-file-prop-obarray)))))))
(ignore (diff-hl-update)))))
;; UX: Update diff-hl when magit alters git state.
(when (modulep! :tools magit)
(add-hook 'magit-post-refresh-hook #'diff-hl-magit-post-refresh))