(track-changes--after): Fix problem found in bug#73041
When calling `track-changes--before` (e.g. because of a missing b-f-c or for some other reason), it sets `track-changes--before-end` to the right value so we shouldn't increment it right after. Also, we should update `track-changes--buffer-size` before calling `track-changes--before` so it doesn't risk signaling a spurious inconsistency. * lisp/emacs-lisp/track-changes.el (track-changes--after): Update `track-changes--buffer-size` earlier, and don't increment `track-changes--before-end` when we call `track-changes--before`.
This commit is contained in:
parent
d3c9410226
commit
90c6880a92
1 changed files with 8 additions and 8 deletions
|
@ -555,16 +555,16 @@ Details logged to `track-changes--error-log'")
|
|||
|
||||
(defun track-changes--after (beg end len)
|
||||
(cl-assert track-changes--state)
|
||||
(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))
|
||||
(setq track-changes--before-clean nil)
|
||||
(let ((offset (- (- end beg) len)))
|
||||
(cl-incf track-changes--before-end offset)
|
||||
(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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue