;;; Code:
(require 'diff-hl)
+(require 'nadvice)
(defvar diff-hl-flydiff-modified-tick 0)
(defvar diff-hl-flydiff-timer)
(make-variable-buffer-local 'diff-hl-flydiff-modified-tick)
;; Polyfill concrete revisions for vc-git-working-revision in Emacs 24.4, 24.5
-(when (version<= emacs-version "24.5")
+(when (version<= emacs-version "25.0")
(with-eval-after-load 'vc-git
(defun vc-git--symbolic-ref (file)
(or
((eq state 'removed)
`((1 ,(line-number-at-pos (point-max)) delete))))))))
-(defun diff-hl-flydiff/overlay-modified (&rest args))
-
;;;###autoload
(define-minor-mode diff-hl-flydiff-mode
"Highlight diffs on-the-fly"
:global t
(if diff-hl-flydiff-mode
(progn
- (require 'nadvice)
- (advice-add 'diff-hl-update :around
- #'diff-hl-flydiff/update)
- (advice-add 'diff-hl-changes :override
- #'diff-hl-flydiff/changes)
- (advice-add 'diff-hl-overlay-modified :override
- #'diff-hl-flydiff/overlay-modified)
-
- (remove-hook 'after-change-functions #'diff-hl-edit t)
+ (advice-add 'diff-hl-update :around #'diff-hl-flydiff/update)
+ (advice-add 'diff-hl-changes :override #'diff-hl-flydiff/changes)
+ (advice-add 'diff-hl-overlay-modified :override #'ignored)
+
(setq diff-hl-flydiff-timer
(run-with-idle-timer 0.3 t #'diff-hl-update t)))
(advice-remove 'diff-hl-update #'diff-hl-flydiff/update)
(advice-remove 'diff-hl-changes #'diff-hl-flydiff/changes)
- (advice-remove 'diff-hl-overlay-modified
- #'diff-hl-flydiff/overlay-modified)
+ (advice-remove 'diff-hl-overlay-modified #'ignored)
- (cancel-timer diff-hl-flydiff-timer)
- (when diff-hl-mode
- (add-hook 'after-change-functions 'diff-hl-edit nil t))))
+ (cancel-timer diff-hl-flydiff-timer)))
(provide 'diff-hl-flydiff)