Function: calc-kbd-push
calc-kbd-push is an autoloaded, interactive and byte-compiled function
defined in calc-prog.el.gz.
Signature
(calc-kbd-push ARG)
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-prog.el.gz
(defun calc-kbd-push (arg)
(interactive "P")
(calc-wrapper
(let* ((defs (and arg (> (prefix-numeric-value arg) 0)))
(var-q0 var-q0)
(var-q1 var-q1)
(var-q2 var-q2)
(var-q3 var-q3)
(var-q4 var-q4)
(var-q5 var-q5)
(var-q6 var-q6)
(var-q7 var-q7)
(var-q8 var-q8)
(var-q9 var-q9)
(calc-internal-prec (if defs 12 calc-internal-prec))
(calc-word-size (if defs 32 calc-word-size))
(calc-angle-mode (if defs 'deg calc-angle-mode))
(calc-simplify-mode (if defs nil calc-simplify-mode))
(calc-algebraic-mode (if arg nil calc-algebraic-mode))
(calc-incomplete-algebraic-mode (if arg nil
calc-incomplete-algebraic-mode))
(calc-symbolic-mode (if defs nil calc-symbolic-mode))
(calc-matrix-mode (if defs nil calc-matrix-mode))
(calc-prefer-frac (if defs nil calc-prefer-frac))
(calc-complex-mode (if defs nil calc-complex-mode))
(calc-infinite-mode (if defs nil calc-infinite-mode))
(count 0)
(body "")
ch)
(if (or executing-kbd-macro defining-kbd-macro)
(progn
(if defining-kbd-macro
(message "Reading body..."))
(while (>= count 0)
(if (calc--at-end-of-kmacro-p)
(error "Unterminated Z` in keyboard macro"))
(setq ch (read-char))
(if (= ch ?Z)
(progn
(setq ch (read-char)
body (concat body "Z" (char-to-string ch)))
(cond ((eq ch ?\`)
(setq count (1+ count)))
((eq ch ?\')
(setq count (1- count)))
((eq ch 7)
(keyboard-quit))))
(setq body (concat body (char-to-string ch)))))
(if defining-kbd-macro
(message "Reading body...done"))
(let ((calc-kbd-push-level 0))
(execute-kbd-macro (substring body 0 -2))))
(let ((calc-kbd-push-level (1+ calc-kbd-push-level)))
;; Avoid substituting the "'" character:
(message "%s" "Saving modes; type Z' to restore")
(recursive-edit))))))