-(defun diff-hl-make-temp-file-name (file rev &optional manual)
- "Return a backup file name for REV or the current version of FILE.
-If MANUAL is non-nil it means that a name for backups created by
-the user should be returned."
- (let* ((auto-save-file-name-transforms
- `((".*" ,temporary-file-directory t))))
- (expand-file-name
- (concat (make-auto-save-file-name)
- ".~" (subst-char-in-string
- ?/ ?_ rev)
- (unless manual ".") "~")
- temporary-file-directory)))
-
-(defun diff-hl-create-revision (file revision)
- "Read REVISION of FILE into a buffer and return the buffer."
- (let ((automatic-backup (diff-hl-make-temp-file-name file revision))
- (filebuf (get-file-buffer file))
- (filename (diff-hl-make-temp-file-name file revision 'manual)))
- (unless (file-exists-p filename)
- (if (file-exists-p automatic-backup)
- (rename-file automatic-backup filename nil)
- (with-current-buffer filebuf
- (let ((failed t)
- (coding-system-for-read 'no-conversion)
- (coding-system-for-write 'no-conversion))
- (unwind-protect
- (with-temp-file filename
- (let ((outbuf (current-buffer)))
- ;; Change buffer to get local value of
- ;; vc-checkout-switches.
- (with-current-buffer filebuf
- (vc-call find-revision file revision outbuf))))
- (setq failed nil)
- (when (and failed (file-exists-p filename))
- (delete-file filename)))))))
- filename))
-
-(defun diff-hl-diff-buffer-with-revision (revision)
- "View the differences between BUFFER and its associated file.
-This requires the external program `diff' to be in your `exec-path'."
- (interactive)
- (vc-ensure-vc-buffer)
- (with-current-buffer (get-buffer (current-buffer))
- (let ((rev (diff-hl-create-revision
- buffer-file-name
- (or revision
- (vc-working-revision buffer-file-name
- (vc-responsible-backend buffer-file-name)
- t))))
- (temporary-file-directory
- (if (file-directory-p "/dev/shm/")
- "/dev/shm/"
- temporary-file-directory)))
- (diff-hl-with-diff-switches
- (diff-no-select rev (current-buffer) "-U 0" 'noasync
- (get-buffer-create " *diff-hl-diff*"))))))
-
-(defvar diff-hl-modified-tick 0)
-(defvar diff-hl-flydiff-timer)
-(make-variable-buffer-local 'diff-hl-modified-tick)
-