Function: diff-hl-changes-from-buffer

diff-hl-changes-from-buffer is a natively compiled function defined in diff-hl.el.

Signature

(diff-hl-changes-from-buffer BUF)

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-changes-from-buffer (buf)
  (with-current-buffer buf
    (let (res)
      (goto-char (point-min))
      (unless (eobp)
        (ignore-errors
          (diff-beginning-of-hunk t))
        (while (looking-at diff-hunk-header-re-unified)
          (let ((line (string-to-number (match-string 3)))
                (beg (point)))
            (with-no-warnings
              (let (diff-auto-refine-mode)
                (diff-end-of-hunk)))
            (let* ((inserts (diff-count-matches "^\\+" beg (point)))
                   (deletes (diff-count-matches "^-" beg (point)))
                   (type (cond ((zerop deletes) 'insert)
                               ((zerop inserts) 'delete)
                               (t 'change))))
              (when (eq type 'delete)
                (cl-incf line))
              (push (list line inserts deletes type) res)))))
      (nreverse res))))