aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Belanger2005-01-11 05:06:00 +0000
committerJay Belanger2005-01-11 05:06:00 +0000
commit980bb32d09c795f419fc7c0b7525def865e3177a (patch)
tree74db058b386c03d9d56de9837ee03b038e10ccdc
parent9bcb9ab086fb6a5468bcba98299568f30518df82 (diff)
downloademacs-980bb32d09c795f419fc7c0b7525def865e3177a.tar.gz
emacs-980bb32d09c795f419fc7c0b7525def865e3177a.zip
(calc-reset): Reset when inside an embedded calculator; only reset when
point is inside a calculator.
-rw-r--r--lisp/calc/calc-ext.el82
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))))
1241(defun calc-reset (arg) 1241(defun calc-reset (arg)
1242 (interactive "P") 1242 (interactive "P")
1243 (setq arg (if arg (prefix-numeric-value arg) nil)) 1243 (setq arg (if arg (prefix-numeric-value arg) nil))
1244 (save-excursion 1244 (cond
1245 (or (eq major-mode 'calc-mode) 1245 ((and
1246 (calc-create-buffer)) 1246 calc-embedded-info
1247 (if calc-embedded-info 1247 (equal (aref calc-embedded-info 0) (current-buffer))
1248 (calc-embedded nil)) 1248 (<= (point) (aref calc-embedded-info 5))
1249 (unless (and arg (> (abs arg) 0)) 1249 (>= (point) (aref calc-embedded-info 4)))
1250 (setq calc-stack nil)) 1250 (let ((cbuf (aref calc-embedded-info 1))
1251 (setq calc-undo-list nil 1251 (calc-embedded-quiet t))
1252 calc-redo-list nil) 1252 (save-window-excursion
1253 (let (calc-stack calc-user-parse-tables calc-standard-date-formats 1253 (calc-embedded nil)
1254 calc-invocation-macro) 1254 (set-buffer cbuf)
1255 (mapcar (function (lambda (v) (set v nil))) calc-local-var-list) 1255 (calc-reset arg))
1256 (if (and arg (<= arg 0)) 1256 (calc-embedded nil)))
1257 (calc-mode-var-list-restore-default-values) 1257 ((eq major-mode 'calc-mode)
1258 (calc-mode-var-list-restore-saved-values))) 1258 (save-excursion
1259 (calc-set-language nil nil t) 1259 (unless (and arg (> (abs arg) 0))
1260 (calc-mode) 1260 (setq calc-stack nil))
1261 (calc-flush-caches t) 1261 (setq calc-undo-list nil
1262 (run-hooks 'calc-reset-hook)) 1262 calc-redo-list nil)
1263 (calc-wrapper 1263 (let (calc-stack calc-user-parse-tables calc-standard-date-formats
1264 (let ((win (get-buffer-window (current-buffer)))) 1264 calc-invocation-macro)
1265 (calc-realign 0) 1265 (mapcar (function (lambda (v) (set v nil))) calc-local-var-list)
1266 ;; Adjust the window height if the window is visible, but doesn't 1266 (if (and arg (<= arg 0))
1267 ;; take up the whole height of the frame. 1267 (calc-mode-var-list-restore-default-values)
1268 (if (and 1268 (calc-mode-var-list-restore-saved-values)))
1269 win 1269 (calc-set-language nil nil t)
1270 (< (window-height win) (1- (frame-height)))) 1270 (calc-mode)
1271 (let ((height (- (window-height win) 2))) 1271 (calc-flush-caches t)
1272 (set-window-point win (point)) 1272 (run-hooks 'calc-reset-hook))
1273 (or (= height calc-window-height) 1273 (calc-wrapper
1274 (let ((swin (selected-window))) 1274 (let ((win (get-buffer-window (current-buffer))))
1275 (select-window win) 1275 (calc-realign 0)
1276 (enlarge-window (- calc-window-height height)) 1276 ;; Adjust the window height if the window is visible, but doesn't
1277 (select-window swin))))))) 1277 ;; take up the whole height of the frame.
1278 (message "(Calculator reset)")) 1278 (if (and
1279 win
1280 (< (window-height win) (1- (frame-height))))
1281 (let ((height (- (window-height win) 2)))
1282 (set-window-point win (point))
1283 (or (= height calc-window-height)
1284 (let ((swin (selected-window)))
1285 (select-window win)
1286 (enlarge-window (- calc-window-height height))
1287 (select-window swin)))))))
1288 (message "(Calculator reset)"))
1289 (t
1290 (message "(Not inside a Calc buffer)"))))
1279 1291
1280;; What a pain; scroll-left behaves differently when called non-interactively. 1292;; What a pain; scroll-left behaves differently when called non-interactively.
1281(defun calc-scroll-left (n) 1293(defun calc-scroll-left (n)