Function: undo-adjust-elt

undo-adjust-elt is a byte-compiled function defined in simple.el.gz.

Signature

(undo-adjust-elt ELT DELTAS)

Documentation

Return adjustment of undo element ELT by the undo DELTAS list.

Source Code

;; Defined in /usr/src/emacs/lisp/simple.el.gz
(defun undo-adjust-elt (elt deltas)
  "Return adjustment of undo element ELT by the undo DELTAS list."
  (pcase elt
    ;; POSITION
    ((pred integerp)
     (undo-adjust-pos elt deltas))
    ;; (BEG . END)
    (`(,(and beg (pred integerp)) . ,(and end (pred integerp)))
     (undo-adjust-beg-end beg end deltas))
    ;; (TEXT . POSITION)
    (`(,(and text (pred stringp)) . ,(and pos (pred integerp)))
     (cons text (* (if (< pos 0) -1 1)
                   (undo-adjust-pos (abs pos) deltas))))
    ;; (nil PROPERTY VALUE BEG . END)
    (`(nil . ,(or `(,prop ,val ,beg . ,end) pcase--dontcare))
     `(nil ,prop ,val . ,(undo-adjust-beg-end beg end deltas)))
    ((and `(apply ,delta (,beg  . ,end) ,fun-name . ,args)
          (guard (and (integerp delta) (natnump beg) (natnump end)
                      (symbolp fun-name))))
     (let* ((r2 (undo-adjust-beg-end beg end deltas))
            (beg2 (car r2))
            (end2 (cdr r2)))
       `(apply ,delta (,beg2 . ,end2) ,fun-name . ,args)))
    ;; FIXME
    ;; All others return same elt
    (_ elt)))