Function: calc-handle-undo
calc-handle-undo is a byte-compiled function defined in
calc-undo.el.gz.
Signature
(calc-handle-undo LIST)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-undo.el.gz
(defun calc-handle-undo (list)
(when list
(let ((action (car list)))
(cond
((eq (car action) 'push)
(calc-pop-stack 1 (nth 1 action) t))
((eq (car action) 'pop)
(calc-push-list (nth 2 action) (nth 1 action)))
((eq (car action) 'set)
(calc-record-undo (list 'set (nth 1 action)
(symbol-value (nth 1 action))))
(set (nth 1 action) (nth 2 action)))
((eq (car action) 'store)
(let ((v (intern (nth 1 action))))
(calc-record-undo (list 'store (nth 1 action)
(and (boundp v) (symbol-value v))))
(if (y-or-n-p (format "Un-store variable %s? "
(calc-var-name (nth 1 action))))
(progn
(if (nth 2 action)
(set v (nth 2 action))
(makunbound v))
(calc-refresh-evaltos v)))))
((eq (car action) 'eval)
(calc-record-undo (append (list 'eval (nth 2 action) (nth 1 action))
(cdr (cdr (cdr action)))))
(apply (nth 1 action) (cdr (cdr (cdr action))))))
(calc-handle-undo (cdr list)))))