emacs-diffs
[Top][All Lists]
Advanced

[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))))))
  
  
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]