Function: diff-hl--ediff-reference-buffer

diff-hl--ediff-reference-buffer is a natively compiled function defined in diff-hl.el.

Signature

(diff-hl--ediff-reference-buffer FILE)

Documentation

Return the reference buffer for FILE used in Ediff.

Source Code

;; Defined in /nix/store/cfz56rl3lp066226i0bmmgiicls3gcq7-emacs-packages-deps/share/emacs/site-lisp/elpa/diff-hl-20261001.135/diff-hl.el
(defun diff-hl--ediff-reference-buffer (file)
  "Return the reference buffer for FILE used in Ediff."
  (unless file
    (user-error "No current file"))
  (let ((backend (vc-backend file)))
    (unless backend
      (user-error "The buffer is not under version control"))
    (let* ((reference diff-hl-reference-revision)
           ;; Use the index snapshot only when diff-hl hides staged changes.
           (use-index (and (diff-hl--use-git-index-base-p backend)
                           (not diff-hl-highlight-reference-function)))
           (buf
            (if use-index
                (let ((obj (diff-hl-git-index-object-name file)))
                  (unless obj
                    (user-error "No index entry for %s" file))
                  (let ((filename (diff-hl-git-index-revision file obj)))
                    (find-file-noselect filename)))
              (let ((rev (or reference
                             (assoc-default backend diff-hl-head-revision-alist)
                             (diff-hl-working-revision file backend))))
                (unless rev
                  (user-error "No reference revision specified"))
                (setq rev (diff-hl-resolved-revision backend rev))
                (vc-find-revision-no-save file rev backend)))))
      (with-current-buffer buf
        (set-buffer-modified-p nil)
        (read-only-mode 1))
      buf)))