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)))))