Function: track-changes--after

track-changes--after is a byte-compiled function defined in track-changes.el.gz.

Signature

(track-changes--after BEG END LEN)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/track-changes.el.gz
(defun track-changes--after (beg end len)
  (cl-assert track-changes--state)
  (let ((offset (- (- end beg) len)))
    (cl-incf track-changes--buffer-size offset)
    (if (and (eq track-changes--before-clean 'unset)
             (not track-changes--before-no))
         ;; This can be a sign that a `before-change-functions' went missing,
         ;; or that we called `track-changes--clean-state' between
         ;; a `before-change-functions' and `after-change-functions'.
         (track-changes--before beg end)
      (cl-incf track-changes--before-end offset))
    (setq track-changes--before-clean nil)
    (if (not (or track-changes--before-no
                 (save-restriction
                   (widen)
                   (<= (point-min)
                       track-changes--before-beg
                       beg end
                       track-changes--before-end
                       (point-max)))))
        ;; BEG..END is not covered by previous `before-change-functions'!!
        (track-changes--recover-from-error `(unexpected-after ,beg ,end ,len))
      ;; Note the new changes.
      (when (< beg (track-changes--state-beg track-changes--state))
        (setf (track-changes--state-beg track-changes--state) beg))
      (cl-callf (lambda (old-end) (max end (+ old-end offset)))
          (track-changes--state-end track-changes--state))
      (cl-assert (or track-changes--before-no
                     (<= track-changes--before-beg
                         (track-changes--state-beg track-changes--state)
                         beg end
                         (track-changes--state-end track-changes--state)
                         track-changes--before-end)))))
  (while track-changes--clean-trackers
    (let ((tracker (pop track-changes--clean-trackers)))
      (if (track-changes--tracker-immediate tracker)
          (funcall (track-changes--tracker-signal tracker) tracker)
        (run-with-timer 0 nil #'track-changes--call-signal
                        (current-buffer) tracker)))))