[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/calc/calc-embed.el
From: |
Jay Belanger |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/calc/calc-embed.el |
Date: |
Fri, 26 Nov 2004 17:56:25 -0500 |
Index: emacs/lisp/calc/calc-embed.el
diff -c emacs/lisp/calc/calc-embed.el:1.9 emacs/lisp/calc/calc-embed.el:1.10
*** emacs/lisp/calc/calc-embed.el:1.9 Wed Sep 15 16:49:04 2004
--- emacs/lisp/calc/calc-embed.el Fri Nov 26 22:38:31 2004
***************
*** 3,10 ****
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Author: David Gillespie <address@hidden>
! ;; Maintainers: D. Goel <address@hidden>
! ;; Colin Walters <address@hidden>
;; This file is part of GNU Emacs.
--- 3,9 ----
;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Author: David Gillespie <address@hidden>
! ;; Maintainer: Jay Belanger <address@hidden>
;; This file is part of GNU Emacs.
***************
*** 152,157 ****
--- 151,166 ----
;;; 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,210 ****
(let ((modes (list mode-line-buffer-identification
(current-local-map)
truncate-lines))
! top bot outer-top outer-bot
info chg ident)
(barf-if-buffer-read-only)
(or calc-embedded-globals
--- 213,219 ----
(let ((modes (list mode-line-buffer-identification
(current-local-map)
truncate-lines))
! 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,305 ****
--- 309,316 ----
(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,398 ****
(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)
(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))))
(defun calc-embedded-find-bounds (&optional plain)
;; (while (and (bolp) (eq (following-char) ?\n))
--- 399,409 ----
(interactive "P")
(and (eq major-mode 'calc-mode)
(error "This command should be used in a normal editing buffer"))
! (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 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,413 ****
(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))
(goto-char (match-end 0))
(if (eq (following-char) ?\n)
(forward-char 1))
--- 418,424 ----
(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 calc-embed-outer-top (point))
(goto-char (match-end 0))
(if (eq (following-char) ?\n)
(forward-char 1))
***************
*** 419,439 ****
(progn
(goto-char (match-end 0))
(search-forward calc-embedded-close-plain))))
! (setq 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))
(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))))
(defun calc-embedded-kill-formula ()
"Kill the formula surrounding point.
--- 430,450 ----
(progn
(goto-char (match-end 0))
(search-forward calc-embedded-close-plain))))
! (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 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 calc-embed-bot (point))))
(defun calc-embedded-kill-formula ()
"Kill the formula surrounding point.
***************
*** 458,482 ****
(defun calc-embedded-duplicate ()
(interactive)
(let ((already calc-embedded-info)
! top bot outer-top 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)))
(calc-embedded nil))
(calc-embedded-find-bounds))
! (goto-char outer-bot)
(insert "\n")
(setq new-top (point))
! (insert-buffer-substring (current-buffer) outer-top outer-bot)
! (goto-char (+ new-top (- top outer-top)))
(let ((calc-embedded-quiet (if already t 'x)))
! (calc-embedded (+ new-top (- top outer-top))
! (+ new-top (- bot outer-top))
new-top
! (+ new-top (- outer-bot outer-top))))))
(defun calc-embedded-next (arg)
(interactive "P")
--- 469,494 ----
(defun calc-embedded-duplicate ()
(interactive)
(let ((already calc-embedded-info)
! calc-embed-top calc-embed-bot calc-embed-outer-top calc-embed-outer-bot
new-top)
(if calc-embedded-info
(progn
! (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 calc-embed-outer-bot)
(insert "\n")
(setq new-top (point))
! (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 (- calc-embed-top calc-embed-outer-top))
! (+ new-top (- calc-embed-bot calc-embed-outer-top))
new-top
! (+ new-top (- calc-embed-outer-bot
calc-embed-outer-top))))))
(defun calc-embedded-next (arg)
(interactive "P")
***************
*** 515,540 ****
(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)
(if (and (eq (preceding-char) ?\n)
(string-match "\\`\n" calc-embedded-open-new-formula))
(progn
! (setq outer-top (1- (point)))
(forward-char -1)
(insert (substring calc-embedded-open-new-formula 1)))
! (setq outer-top (point))
(insert calc-embedded-open-new-formula))
! (setq top (point))
(insert " ")
! (setq 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)
(let ((calc-embedded-quiet 'x))
! (calc-embedded top bot outer-top outer-bot))))
(defun calc-embedded-forget ()
(interactive)
--- 527,552 ----
(error "This command should be used in a normal editing buffer"))
(if calc-embedded-info
(calc-embedded nil))
! (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 calc-embed-outer-top (1- (point)))
(forward-char -1)
(insert (substring calc-embedded-open-new-formula 1)))
! (setq calc-embed-outer-top (point))
(insert calc-embedded-open-new-formula))
! (setq calc-embed-top (point))
(insert " ")
! (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 calc-embed-outer-bot (point))
! (goto-char calc-embed-top)
(let ((calc-embedded-quiet 'x))
! (calc-embedded calc-embed-top calc-embed-bot calc-embed-outer-top
calc-embed-outer-bot))))
(defun calc-embedded-forget ()
(interactive)
***************
*** 542,547 ****
--- 554,562 ----
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,569 ****
(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)))
(set (car (car v)) value)))
(setq v (cdr v)))
(setq v modes)
--- 576,585 ----
(equal (symbol-value (car (car v))) value))
(progn
(setq changed t)
! (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,582 ****
(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)))
(set (car (car v)) value)))
(setq v (cdr v)))
(setq v local-modes)
--- 590,598 ----
(equal (symbol-value (car (car v))) value)
(progn
(setq changed t)
! (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 local-modes)
***************
*** 585,593 ****
(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)))
(set (car (car v)) value)))
(setq v (cdr v)))
(and changed (not (eq temp t))
--- 601,609 ----
(equal (symbol-value (car (car v))) value)
(progn
(setq changed t)
! (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)))
(and changed (not (eq temp t))
***************
*** 704,716 ****
(goto-char save-pt)
(list modes emodes pmodes)))
(defun calc-embedded-make-info (point cbuf fresh &optional
! top bot outer-top outer-bot)
(let* ((bufentry (assq (current-buffer) calc-embedded-active))
(found bufentry)
! (force (and fresh top))
! (fixed top)
(new-info nil)
info str)
(or found
--- 720,737 ----
(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
! 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 calc-embed-top))
! (fixed calc-embed-top)
(new-info nil)
info str)
(or found
***************
*** 729,735 ****
(aset info 1 (or cbuf (save-excursion
(calc-create-buffer)
(current-buffer)))))
! (if (and (integerp top) (not bot)) ; started with a user-supplied
argument
(progn
(if (= (setq arg (prefix-numeric-value arg)) 0)
(progn
--- 750,757 ----
(aset info 1 (or cbuf (save-excursion
(calc-create-buffer)
(current-buffer)))))
! (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,758 ****
(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)
(let ((calc-embedded-open-formula calc-embedded-open-word)
(calc-embedded-close-formula calc-embedded-close-word))
(calc-embedded-find-bounds 'plain))
! (or 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))))))
(goto-char (aref info 2))
(if new-info
(progn
--- 763,780 ----
(aset info 4 (copy-marker (aref info 2)))
(aset info 5 (copy-marker (aref info 3))))
(if (aref info 4)
! (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 calc-embed-top
(calc-embedded-find-bounds 'plain)))
! (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,782 ****
(let* ((open-plain calc-embedded-open-plain)
(close-plain calc-embedded-close-plain)
(pref-len (length open-plain))
! (vars-used nil)
suff-pos val temp)
(save-excursion
(set-buffer (aref info 1))
--- 798,804 ----
(let* ((open-plain calc-embedded-open-plain)
(close-plain calc-embedded-close-plain)
(pref-len (length open-plain))
! (calc-embed-vars-used nil)
suff-pos val temp)
(save-excursion
(set-buffer (aref info 1))
***************
*** 810,816 ****
(nth 1 temp)))
(if (memq (car-safe val) '(calcFunc-evalto calcFunc-assign))
(calc-embedded-find-vars val))
! (aset info 10 vars-used)
(aset info 11 nil))))
(if new-info
(progn
--- 832,838 ----
(nth 1 temp)))
(if (memq (car-safe val) '(calcFunc-evalto calcFunc-assign))
(calc-embedded-find-vars val))
! (aset info 10 calc-embed-vars-used)
(aset info 11 nil))))
(if new-info
(progn
***************
*** 821,828 ****
(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))))
((eq (car x) 'calcFunc-evalto)
(calc-embedded-find-vars (nth 1 x)))
((eq (car x) 'calcFunc-assign)
--- 843,850 ----
(defun calc-embedded-find-vars (x)
(cond ((Math-primp x)
(and (eq (car-safe x) 'var)
! (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,846 ****
(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)))
(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 ((active (assq (aref calc-embedded-info 0) calc-embedded-active))
(args nil))
(save-excursion
--- 853,868 ----
(and (eq (car x) 'calcFunc-subscr)
(eq (car-safe (nth 1 x)) 'var)
(Math-primp (nth 2 x))
! (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 ((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,858 ****
(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))))
(calc-embedded-subst x))
(calc-normalize (math-evaluate-expr-rec x)))))
--- 872,880 ----
(calc-embedded-activate)
(setq active (assq (aref calc-embedded-info 0)
calc-embedded-active))))
! (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,909 ****
(defun calc-embedded-update (info which need-eval need-display
&optional str entry old-val)
! (let* ((prev-modes nil)
(open-plain calc-embedded-open-plain)
(close-plain calc-embedded-close-plain)
! (vars-used nil)
(evalled nil)
(val (aref info 8))
(old-eval (aref info 11)))
--- 922,931 ----
(defun calc-embedded-update (info which need-eval need-display
&optional str entry old-val)
! (let* ((calc-embed-prev-modes nil)
(open-plain calc-embedded-open-plain)
(close-plain calc-embedded-close-plain)
! (calc-embed-vars-used nil)
(evalled nil)
(val (aref info 8))
(old-eval (aref info 11)))
***************
*** 926,932 ****
(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 11 nil)
(if (or need-display (eq (car-safe val) 'calcFunc-evalto))
(let ((extra (if (eq calc-language 'big) 1 0)))
--- 948,954 ----
(if (or (eq need-eval 'eval) (eq (car-safe val) 'calcFunc-evalto))
(aset info 8 val))
(aset info 9 nil)
! (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,993 ****
(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)
(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)))))
(t
! (set (car (car prev-modes)) (cdr (car prev-modes)))))
! (setq prev-modes (cdr prev-modes))))))
--- 1000,1016 ----
(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 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-justify (cdr (car
calc-embed-prev-modes)))))
(t
! (set (car (car calc-embed-prev-modes))
! (cdr (car calc-embed-prev-modes)))))
! (setq calc-embed-prev-modes (cdr prev-modes))))))
- [Emacs-diffs] Changes to emacs/lisp/calc/calc-embed.el,
Jay Belanger <=