Function: calc-change-mode
calc-change-mode is a byte-compiled function defined in
calc-ext.el.gz.
Signature
(calc-change-mode VAR VALUE &optional REFRESH OPTION)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-ext.el.gz
(defun calc-change-mode (var value &optional refresh option)
(if option
(setq value (if value
(> (prefix-numeric-value value) 0)
(not (symbol-value var)))))
(or (consp var) (setq var (list var) value (list value)))
(if calc-inverse-flag
(let ((old nil))
(or refresh (error "Not a display-mode command"))
(calc-check-stack 1)
(unwind-protect
(let ((v var))
(while v
(setq old (cons (symbol-value (car v)) old))
(set (car v) (car value))
(setq v (cdr v)
value (cdr value)))
(calc-refresh-top 1)
(calc-refresh-evaltos)
(symbol-value (car var)))
(let ((v var))
(setq old (nreverse old))
(while v
(set (car v) (car old))
(setq v (cdr v)
old (cdr old)))
(if (eq (car var) 'calc-language)
(calc-set-language calc-language calc-language-option t)))))
(let ((chg nil)
(v var))
(while v
(or (equal (symbol-value (car v)) (car value))
(progn
(set (car v) (car value))
(if (eq (car v) 'calc-float-format)
(setq calc-full-float-format
(list (if (eq (car (car value)) 'fix)
'float
(car (car value)))
0)))
(setq chg t)))
(setq v (cdr v)
value (cdr value)))
(if chg
(progn
(or (and refresh (calc-do-refresh))
(calc-refresh-evaltos))
(and (eq calc-mode-save-mode 'save)
(not (equal var '(calc-mode-save-mode)))
(calc-save-modes))))
(if calc-embedded-info (calc-embedded-modes-change var))
(calc-set-mode-line)
(symbol-value (car var)))))