diff options
| author | Jay Belanger | 2005-01-11 05:06:00 +0000 |
|---|---|---|
| committer | Jay Belanger | 2005-01-11 05:06:00 +0000 |
| commit | 980bb32d09c795f419fc7c0b7525def865e3177a (patch) | |
| tree | 74db058b386c03d9d56de9837ee03b038e10ccdc | |
| parent | 9bcb9ab086fb6a5468bcba98299568f30518df82 (diff) | |
| download | emacs-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.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)))) | |||
| 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) |