Function: track-changes--recover-from-error

track-changes--recover-from-error is a byte-compiled function defined in track-changes.el.gz.

Signature

(track-changes--recover-from-error &optional INFO)

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/track-changes.el.gz
(defun track-changes--recover-from-error (&optional info)
  ;; We somehow got out of sync.  This is usually the result of a bug
  ;; elsewhere that causes the before-c-f and after-c-f to be improperly
  ;; paired, or to be skipped altogether.
  ;; Not much we can do, other than force a full re-synchronization.
  (if (not track-changes-record-errors)
      (message "Recovering from confusing calls to `before/after-change-functions'!")
    (warn "Missing/incorrect calls to `before/after-change-functions'!!
Details logged to `track-changes--error-log'")
    (push (list (buffer-name) info
                (let* ((bf (backtrace-frames
                            #'track-changes--recover-from-error))
                       (tail (nthcdr 50 bf)))
                  (when tail (setcdr tail '...))
                  bf)
                (let ((rk (recent-keys 'include-cmds)))
                  (if (< (length rk) 20) rk (substring rk -20))))
          track-changes--error-log))
  (setq track-changes--before-clean 'unset)
  (setq track-changes--buffer-size (buffer-size))
  ;; Create a new state disconnected from the previous ones!
  ;; Mark the previous one as junk, just to be clear.
  (setf (track-changes--state-before track-changes--state) 'error)
  (setq track-changes--state (track-changes--state)))