Mercurial > emacs
changeset 58552:59f299fd62df
(calc-original-buffer): Declare it.
(calc-embed-outer-top, calc-embed-outer-bot, calc-embed-top)
(calc-embed-bot): New variables.
(calc-do-embedded, calc-embedded-mark-formula)
(calc-embedded-find-bounds, calc-embedded-duplicate)
(calc-embedded-new-formula, calc-embedded-make-info):
Replace variables outer-top, outer-bot, bot and top by declared
variables.
(calc-embed-prev-modes): New variable.
(calc-embedded-set-modes, calc-embedded-update): Replace variable
prev-modes with declared variable.
(calc-embed-vars-used): New variable.
(calc-embedded-make-info, calc-embedded-evaluate-expr)
(calc-embedded-update, calc-embedded-find-vars): Replace variable
vars-used by declared variable.
author | Jay Belanger <jay.p.belanger@gmail.com> |
---|---|
date | Fri, 26 Nov 2004 22:38:31 +0000 |
parents | c38bc6b76926 |
children | 1c7dfa5d5967 |
files | lisp/calc/calc-embed.el |
diffstat | 1 files changed, 94 insertions(+), 71 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/calc/calc-embed.el Fri Nov 26 22:37:54 2004 +0000 +++ b/lisp/calc/calc-embed.el Fri Nov 26 22:38:31 2004 +0000 @@ -3,8 +3,7 @@ ;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. ;; Author: David Gillespie <daveg@synaptics.com> -;; Maintainers: D. Goel <deego@gnufans.org> -;; Colin Walters <walters@debian.org> +;; Maintainer: Jay Belanger <belanger@truman.edu> ;; This file is part of GNU Emacs. @@ -152,6 +151,16 @@ ;;; rather than using buffer-local variables because the latter are ;;; thrown away when a buffer changes major modes. +;; The variables calc-embed-outer-top, calc-embed-outer-bot, +;; calc-embed-top and calc-embed-bot are +;; local to calc-do-embedded, calc-embedded-mark-formula, +;; calc-embedded-duplicate, calc-embedded-new-formula and +;; calc-embedded-make-info, but are used by calc-embedded-find-bounds, +;; which is called (directly or indirectly) by the above functions. +(defvar calc-embed-outer-top) +(defvar calc-embed-outer-bot) +(defvar calc-embed-top) +(defvar calc-embed-bot) (defvar calc-embedded-quiet nil) (defun calc-do-embedded (arg end obeg oend) @@ -204,7 +213,7 @@ (let ((modes (list mode-line-buffer-identification (current-local-map) truncate-lines)) - top bot outer-top outer-bot + calc-embed-top calc-embed-bot calc-embed-outer-top calc-embed-outer-bot info chg ident) (barf-if-buffer-read-only) (or calc-embedded-globals @@ -300,6 +309,8 @@ (insert str "\n"))) (calc-show-edit-buffer)) +(defvar calc-original-buffer) + (defun calc-embedded-finish-edit (info) (let ((buf (current-buffer)) (str (buffer-substring (point) (point-max))) @@ -388,11 +399,11 @@ (interactive "P") (and (eq major-mode 'calc-mode) (error "This command should be used in a normal editing buffer")) - (let (top bot outer-top outer-bot) + (let (calc-embed-top calc-embed-bot calc-embed-outer-top calc-embed-outer-bot) (save-excursion (calc-embedded-find-bounds body-only)) - (push-mark (if body-only bot outer-bot) t) - (goto-char (if body-only top outer-top)))) + (push-mark (if body-only calc-embed-bot calc-embed-outer-bot) t) + (goto-char (if body-only calc-embed-top calc-embed-outer-top)))) (defun calc-embedded-find-bounds (&optional plain) ;; (while (and (bolp) (eq (following-char) ?\n)) @@ -407,7 +418,7 @@ (and (eq (preceding-char) ?\$) ; backward search for \$\$? won't back (eq (following-char) ?\$) ; up over a second $, so do it by hand. (forward-char -1)) - (setq outer-top (point)) + (setq calc-embed-outer-top (point)) (goto-char (match-end 0)) (if (eq (following-char) ?\n) (forward-char 1)) @@ -419,21 +430,21 @@ (progn (goto-char (match-end 0)) (search-forward calc-embedded-close-plain)))) - (setq top (point)) + (setq calc-embed-top (point)) (or (re-search-forward calc-embedded-close-formula nil t) (error "Can't find end of formula")) (if (< (point) home) (error "Not inside a formula")) (and (eq (following-char) ?\n) (not (bolp)) (forward-char 1)) - (setq outer-bot (point)) + (setq calc-embed-outer-bot (point)) (goto-char (match-beginning 0)) (if (eq (preceding-char) ?\n) (backward-char 1)) (or (eolp) (while (eq (preceding-char) ?\ ) (backward-char 1))) - (setq bot (point)))) + (setq calc-embed-bot (point)))) (defun calc-embedded-kill-formula () "Kill the formula surrounding point. @@ -458,25 +469,26 @@ (defun calc-embedded-duplicate () (interactive) (let ((already calc-embedded-info) - top bot outer-top outer-bot new-top) + calc-embed-top calc-embed-bot calc-embed-outer-top calc-embed-outer-bot new-top) (if calc-embedded-info (progn - (setq top (+ (aref calc-embedded-info 2)) - bot (+ (aref calc-embedded-info 3)) - outer-top (+ (aref calc-embedded-info 4)) - outer-bot (+ (aref calc-embedded-info 5))) + (setq calc-embed-top (+ (aref calc-embedded-info 2)) + calc-embed-bot (+ (aref calc-embedded-info 3)) + calc-embed-outer-top (+ (aref calc-embedded-info 4)) + calc-embed-outer-bot (+ (aref calc-embedded-info 5))) (calc-embedded nil)) (calc-embedded-find-bounds)) - (goto-char outer-bot) + (goto-char calc-embed-outer-bot) (insert "\n") (setq new-top (point)) - (insert-buffer-substring (current-buffer) outer-top outer-bot) - (goto-char (+ new-top (- top outer-top))) + (insert-buffer-substring (current-buffer) + calc-embed-outer-top calc-embed-outer-bot) + (goto-char (+ new-top (- calc-embed-top calc-embed-outer-top))) (let ((calc-embedded-quiet (if already t 'x))) - (calc-embedded (+ new-top (- top outer-top)) - (+ new-top (- bot outer-top)) + (calc-embedded (+ new-top (- calc-embed-top calc-embed-outer-top)) + (+ new-top (- calc-embed-bot calc-embed-outer-top)) new-top - (+ new-top (- outer-bot outer-top)))))) + (+ new-top (- calc-embed-outer-bot calc-embed-outer-top)))))) (defun calc-embedded-next (arg) (interactive "P") @@ -515,26 +527,26 @@ (error "This command should be used in a normal editing buffer")) (if calc-embedded-info (calc-embedded nil)) - (let (top bot outer-top outer-bot) + (let (calc-embed-top calc-embed-bot calc-embed-outer-top calc-embed-outer-bot) (if (and (eq (preceding-char) ?\n) (string-match "\\`\n" calc-embedded-open-new-formula)) (progn - (setq outer-top (1- (point))) + (setq calc-embed-outer-top (1- (point))) (forward-char -1) (insert (substring calc-embedded-open-new-formula 1))) - (setq outer-top (point)) + (setq calc-embed-outer-top (point)) (insert calc-embedded-open-new-formula)) - (setq top (point)) + (setq calc-embed-top (point)) (insert " ") - (setq bot (point)) + (setq calc-embed-bot (point)) (insert calc-embedded-close-new-formula) (if (and (eq (following-char) ?\n) (string-match "\n\\'" calc-embedded-close-new-formula)) (delete-char 1)) - (setq outer-bot (point)) - (goto-char top) + (setq calc-embed-outer-bot (point)) + (goto-char calc-embed-top) (let ((calc-embedded-quiet 'x)) - (calc-embedded top bot outer-top outer-bot)))) + (calc-embedded calc-embed-top calc-embed-bot calc-embed-outer-top calc-embed-outer-bot)))) (defun calc-embedded-forget () (interactive) @@ -542,6 +554,9 @@ calc-embedded-active)) (calc-embedded-active-state nil)) +;; The variables calc-embed-prev-modes is local to calc-embedded-update, +;; but is used by calc-embedded-set-modes. +(defvar calc-embed-prev-modes) (defun calc-embedded-set-modes (gmodes modes local-modes &optional temp) (let ((the-language (calc-embedded-language)) @@ -561,9 +576,10 @@ (equal (symbol-value (car (car v))) value)) (progn (setq changed t) - (if temp (setq prev-modes (cons (cons (car (car v)) - (symbol-value (car (car v)))) - prev-modes))) + (if temp (setq calc-embed-prev-modes + (cons (cons (car (car v)) + (symbol-value (car (car v)))) + calc-embed-prev-modes))) (set (car (car v)) value))) (setq v (cdr v))) (setq v modes) @@ -574,9 +590,9 @@ (equal (symbol-value (car (car v))) value) (progn (setq changed t) - (if temp (setq prev-modes (cons (cons (car (car v)) + (if temp (setq calc-embed-prev-modes (cons (cons (car (car v)) (symbol-value (car (car v)))) - prev-modes))) + calc-embed-prev-modes))) (set (car (car v)) value))) (setq v (cdr v))) (setq v local-modes) @@ -585,9 +601,9 @@ (equal (symbol-value (car (car v))) value) (progn (setq changed t) - (if temp (setq prev-modes (cons (cons (car (car v)) + (if temp (setq calc-embed-prev-modes (cons (cons (car (car v)) (symbol-value (car (car v)))) - prev-modes))) + calc-embed-prev-modes))) (set (car (car v)) value))) (setq v (cdr v))) (and changed (not (eq temp t)) @@ -704,13 +720,18 @@ (goto-char save-pt) (list modes emodes pmodes))) +;; The variable calc-embed-vars-used is local to calc-embedded-make-info, +;; calc-embedded-evaluate-expr and calc-embedded-update, but is +;; used by calc-embedded-find-vars, which is called by the above functions. +(defvar calc-embed-vars-used) (defun calc-embedded-make-info (point cbuf fresh &optional - top bot outer-top outer-bot) + calc-embed-top calc-embed-bot + calc-embed-outer-top calc-embed-outer-bot) (let* ((bufentry (assq (current-buffer) calc-embedded-active)) (found bufentry) - (force (and fresh top)) - (fixed top) + (force (and fresh calc-embed-top)) + (fixed calc-embed-top) (new-info nil) info str) (or found @@ -729,7 +750,8 @@ (aset info 1 (or cbuf (save-excursion (calc-create-buffer) (current-buffer))))) - (if (and (integerp top) (not bot)) ; started with a user-supplied argument + (if (and (integerp calc-embed-top) (not calc-embed-bot)) + ; started with a user-supplied argument (progn (if (= (setq arg (prefix-numeric-value arg)) 0) (progn @@ -741,18 +763,18 @@ (aset info 4 (copy-marker (aref info 2))) (aset info 5 (copy-marker (aref info 3)))) (if (aref info 4) - (setq top (aref info 2) - fixed top) - (if (consp top) + (setq calc-embed-top (aref info 2) + fixed calc-embed-top) + (if (consp calc-embed-top) (let ((calc-embedded-open-formula calc-embedded-open-word) (calc-embedded-close-formula calc-embedded-close-word)) (calc-embedded-find-bounds 'plain)) - (or top + (or calc-embed-top (calc-embedded-find-bounds 'plain))) - (aset info 2 (copy-marker (min top bot))) - (aset info 3 (copy-marker (max top bot))) - (aset info 4 (copy-marker (or outer-top (aref info 2)))) - (aset info 5 (copy-marker (or outer-bot (aref info 3)))))) + (aset info 2 (copy-marker (min calc-embed-top calc-embed-bot))) + (aset info 3 (copy-marker (max calc-embed-top calc-embed-bot))) + (aset info 4 (copy-marker (or calc-embed-outer-top (aref info 2)))) + (aset info 5 (copy-marker (or calc-embed-outer-bot (aref info 3)))))) (goto-char (aref info 2)) (if new-info (progn @@ -776,7 +798,7 @@ (let* ((open-plain calc-embedded-open-plain) (close-plain calc-embedded-close-plain) (pref-len (length open-plain)) - (vars-used nil) + (calc-embed-vars-used nil) suff-pos val temp) (save-excursion (set-buffer (aref info 1)) @@ -810,7 +832,7 @@ (nth 1 temp))) (if (memq (car-safe val) '(calcFunc-evalto calcFunc-assign)) (calc-embedded-find-vars val)) - (aset info 10 vars-used) + (aset info 10 calc-embed-vars-used) (aset info 11 nil)))) (if new-info (progn @@ -821,8 +843,8 @@ (defun calc-embedded-find-vars (x) (cond ((Math-primp x) (and (eq (car-safe x) 'var) - (not (assoc x vars-used)) - (setq vars-used (cons (list x) vars-used)))) + (not (assoc x calc-embed-vars-used)) + (setq calc-embed-vars-used (cons (list x) calc-embed-vars-used)))) ((eq (car x) 'calcFunc-evalto) (calc-embedded-find-vars (nth 1 x))) ((eq (car x) 'calcFunc-assign) @@ -831,16 +853,16 @@ (and (eq (car x) 'calcFunc-subscr) (eq (car-safe (nth 1 x)) 'var) (Math-primp (nth 2 x)) - (not (assoc x vars-used)) - (setq vars-used (cons (list x) vars-used))) + (not (assoc x calc-embed-vars-used)) + (setq calc-embed-vars-used (cons (list x) calc-embed-vars-used))) (while (setq x (cdr x)) (calc-embedded-find-vars (car x)))))) (defun calc-embedded-evaluate-expr (x) - (let ((vars-used (aref calc-embedded-info 10))) - (or vars-used (calc-embedded-find-vars x)) - (if vars-used + (let ((calc-embed-vars-used (aref calc-embedded-info 10))) + (or calc-embed-vars-used (calc-embedded-find-vars x)) + (if calc-embed-vars-used (let ((active (assq (aref calc-embedded-info 0) calc-embedded-active)) (args nil)) (save-excursion @@ -850,9 +872,9 @@ (calc-embedded-activate) (setq active (assq (aref calc-embedded-info 0) calc-embedded-active)))) - (while vars-used - (calc-embedded-eval-get-var (car (car vars-used)) active) - (setq vars-used (cdr vars-used)))) + (while calc-embed-vars-used + (calc-embedded-eval-get-var (car (car calc-embed-vars-used)) active) + (setq calc-embed-vars-used (cdr calc-embed-vars-used)))) (calc-embedded-subst x)) (calc-normalize (math-evaluate-expr-rec x))))) @@ -900,10 +922,10 @@ (defun calc-embedded-update (info which need-eval need-display &optional str entry old-val) - (let* ((prev-modes nil) + (let* ((calc-embed-prev-modes nil) (open-plain calc-embedded-open-plain) (close-plain calc-embedded-close-plain) - (vars-used nil) + (calc-embed-vars-used nil) (evalled nil) (val (aref info 8)) (old-eval (aref info 11))) @@ -926,7 +948,7 @@ (if (or (eq need-eval 'eval) (eq (car-safe val) 'calcFunc-evalto)) (aset info 8 val)) (aset info 9 nil) - (aset info 10 vars-used) + (aset info 10 calc-embed-vars-used) (aset info 11 nil) (if (or need-display (eq (car-safe val) 'calcFunc-evalto)) (let ((extra (if (eq calc-language 'big) 1 0))) @@ -978,16 +1000,17 @@ (if (eq (car-safe old-val) 'calcFunc-assign) (calc-embedded-var-change (nth 1 old-val) (aref info 0))))) (set-buffer (aref info 1)) - (while prev-modes - (cond ((eq (car (car prev-modes)) 'the-language) + (while calc-embed-prev-modes + (cond ((eq (car (car calc-embed-prev-modes)) 'the-language) + (if need-display + (calc-embedded-set-language (cdr (car calc-embed-prev-modes))))) + ((eq (car (car calc-embed-prev-modes)) 'the-display-just) (if need-display - (calc-embedded-set-language (cdr (car prev-modes))))) - ((eq (car (car prev-modes)) 'the-display-just) - (if need-display - (calc-embedded-set-justify (cdr (car prev-modes))))) + (calc-embedded-set-justify (cdr (car calc-embed-prev-modes))))) (t - (set (car (car prev-modes)) (cdr (car prev-modes))))) - (setq prev-modes (cdr prev-modes)))))) + (set (car (car calc-embed-prev-modes)) + (cdr (car calc-embed-prev-modes))))) + (setq calc-embed-prev-modes (cdr prev-modes))))))