Function: calc-embedded-modes-change
calc-embedded-modes-change is an autoloaded and byte-compiled function
defined in calc-embed.el.gz.
Signature
(calc-embedded-modes-change VARS)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-embed.el.gz
(defun calc-embedded-modes-change (vars)
(defvar the-language) (defvar the-display-just)
(if (eq (car vars) 'calc-language) (setq vars '(the-language)))
(if (eq (car vars) 'calc-display-just) (setq vars '(the-display-just)))
(while (and vars
(not (rassq (car vars) calc-embedded-mode-vars)))
(setq vars (cdr vars)))
(if (and vars calc-mode-save-mode (not (eq calc-mode-save-mode 'save)))
(save-excursion
(let* ((save-mode calc-mode-save-mode)
(header (if (eq save-mode 'local)
"calc-mode:"
(format "calc-%s-mode:" save-mode)))
(the-language (calc-embedded-language))
(the-display-just (calc-embedded-justify))
(values (mapcar 'symbol-value vars))
(num (cond ((eq save-mode 'local) 12)
((eq save-mode 'edit) 13)
((eq save-mode 'perm) 14)
(t nil)))
base limit mname mlist)
(calc-embedded-original-buffer t)
(save-excursion
(if (eq save-mode 'global)
(setq base (point-max)
limit (point-min)
mlist calc-embedded-globals)
(goto-char (aref calc-embedded-info 4))
(beginning-of-line)
(setq base (point)
limit (max (- (point) 1000) (point-min))
mlist (and num (aref calc-embedded-info num)))
(and (re-search-backward
(format "\\(%s\\)[^\001]*\\(%s\\)\\|\\[calc-defaults]"
calc-embedded-open-formula
calc-embedded-close-formula) limit t)
(setq limit (point))))
(while vars
(goto-char base)
(if (setq mname (car (rassq (car vars)
calc-embedded-mode-vars)))
(let ((buffer-read-only nil)
(found (assq (car vars) mlist)))
(if found
(setcdr found (car values))
(setq mlist (cons (cons (car vars) (car values)) mlist))
(if num
(aset calc-embedded-info num mlist)
(if (eq save-mode 'global)
(setq calc-embedded-globals mlist))))
(if (re-search-backward
(format "\\[%s *%s: *\\(\"\\([^\"\n\\]\\|\\\\.\\)*\"\\|[- ()a-zA-Z0-9]+\\)]"
header mname)
limit t)
(progn
(goto-char (match-beginning 1))
(delete-region (point) (match-end 1))
(insert (prin1-to-string (car values))))
(goto-char base)
(insert-before-markers
calc-embedded-open-mode
"[" header " " mname ": "
(prin1-to-string (car values)) "]"
calc-embedded-close-mode))))
(setq vars (cdr vars)
values (cdr values))))))
(when (and vars (eq calc-mode-save-mode 'save))
(calc-embedded-save-original-modes))))