diff options
| author | Jay Belanger <jay.p.belanger@gmail.com> | 2005-01-11 05:06:00 +0000 | 
|---|---|---|
| committer | Jay Belanger <jay.p.belanger@gmail.com> | 2005-01-11 05:06:00 +0000 | 
| commit | 980bb32d09c795f419fc7c0b7525def865e3177a (patch) | |
| tree | 74db058b386c03d9d56de9837ee03b038e10ccdc | |
| parent | 9bcb9ab086fb6a5468bcba98299568f30518df82 (diff) | |
| download | emacs-980bb32d09c795f419fc7c0b7525def865e3177a.tar.gz | |
(calc-reset): Reset when inside an embedded calculator; only reset when
point is inside a calculator.
| -rw-r--r-- | lisp/calc/calc-ext.el | 82 | 
1 files changed, 47 insertions, 35 deletions
| diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el index 2806db82b13..280c3ca634b 100644 --- a/lisp/calc/calc-ext.el +++ b/lisp/calc/calc-ext.el @@ -1241,41 +1241,53 @@ calc-kill calc-kill-region calc-yank))))  (defun calc-reset (arg)    (interactive "P")    (setq arg (if arg (prefix-numeric-value arg) nil)) -  (save-excursion -    (or (eq major-mode 'calc-mode) -	(calc-create-buffer)) -    (if calc-embedded-info -	(calc-embedded nil)) -    (unless (and arg (> (abs arg) 0)) -      (setq calc-stack nil)) -    (setq calc-undo-list nil -	  calc-redo-list nil) -    (let (calc-stack calc-user-parse-tables calc-standard-date-formats -		     calc-invocation-macro) -      (mapcar (function (lambda (v) (set v nil))) calc-local-var-list) -      (if (and arg (<= arg 0)) -          (calc-mode-var-list-restore-default-values) -        (calc-mode-var-list-restore-saved-values))) -    (calc-set-language nil nil t) -    (calc-mode) -    (calc-flush-caches t) -    (run-hooks 'calc-reset-hook)) -  (calc-wrapper -   (let ((win (get-buffer-window (current-buffer)))) -     (calc-realign 0) -     ;; Adjust the window height if the window is visible, but doesn't -     ;; take up the whole height of the frame. -     (if (and -          win -          (< (window-height win) (1- (frame-height)))) -	 (let ((height (- (window-height win) 2))) -	   (set-window-point win (point)) -	   (or (= height calc-window-height) -	       (let ((swin (selected-window))) -		 (select-window win) -		 (enlarge-window (- calc-window-height height)) -		 (select-window swin))))))) -  (message "(Calculator reset)")) +  (cond +   ((and +     calc-embedded-info +     (equal (aref calc-embedded-info 0) (current-buffer)) +     (<= (point) (aref calc-embedded-info 5)) +     (>= (point) (aref calc-embedded-info 4))) +    (let ((cbuf (aref calc-embedded-info 1)) +          (calc-embedded-quiet t)) +      (save-window-excursion +        (calc-embedded nil) +        (set-buffer cbuf) +        (calc-reset arg)) +      (calc-embedded nil))) +   ((eq major-mode 'calc-mode) +    (save-excursion +      (unless (and arg (> (abs arg) 0)) +        (setq calc-stack nil)) +      (setq calc-undo-list nil +            calc-redo-list nil) +      (let (calc-stack calc-user-parse-tables calc-standard-date-formats +                       calc-invocation-macro) +        (mapcar (function (lambda (v) (set v nil))) calc-local-var-list) +        (if (and arg (<= arg 0)) +            (calc-mode-var-list-restore-default-values) +          (calc-mode-var-list-restore-saved-values))) +      (calc-set-language nil nil t) +      (calc-mode) +      (calc-flush-caches t) +      (run-hooks 'calc-reset-hook)) +    (calc-wrapper +     (let ((win (get-buffer-window (current-buffer)))) +       (calc-realign 0) +       ;; Adjust the window height if the window is visible, but doesn't +       ;; take up the whole height of the frame. +       (if (and +            win +            (< (window-height win) (1- (frame-height)))) +           (let ((height (- (window-height win) 2))) +             (set-window-point win (point)) +             (or (= height calc-window-height) +                 (let ((swin (selected-window))) +                   (select-window win) +                   (enlarge-window (- calc-window-height height)) +                   (select-window swin))))))) +    (message "(Calculator reset)")) +   (t +    (message "(Not inside a Calc buffer)"))))  ;; What a pain; scroll-left behaves differently when called non-interactively.  (defun calc-scroll-left (n) | 
