comparison lisp/calc/calc-store.el @ 88155:d7ddb3e565de

sync with trunk
author Henrik Enberg <henrik.enberg@telia.com>
date Mon, 16 Jan 2006 00:03:54 +0000
parents 0d8b17d428b5
children
comparison
equal deleted inserted replaced
88154:8ce476d3ba36 88155:d7ddb3e565de
1 ;;; calc-store.el --- value storage functions for Calc 1 ;;; calc-store.el --- value storage functions for Calc
2 2
3 ;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. 3 ;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004,
4 ;; 2005 Free Software Foundation, Inc.
4 5
5 ;; Author: David Gillespie <daveg@synaptics.com> 6 ;; Author: David Gillespie <daveg@synaptics.com>
6 ;; Maintainers: D. Goel <deego@gnufans.org> 7 ;; Maintainer: Jay Belanger <belanger@truman.edu>
7 ;; Colin Walters <walters@debian.org>
8 8
9 ;; This file is part of GNU Emacs. 9 ;; This file is part of GNU Emacs.
10 10
11 ;; GNU Emacs is distributed in the hope that it will be useful, 11 ;; GNU Emacs is distributed in the hope that it will be useful,
12 ;; but WITHOUT ANY WARRANTY. No author or distributor 12 ;; but WITHOUT ANY WARRANTY. No author or distributor
26 ;;; Commentary: 26 ;;; Commentary:
27 27
28 ;;; Code: 28 ;;; Code:
29 29
30 ;; This file is autoloaded from calc-ext.el. 30 ;; This file is autoloaded from calc-ext.el.
31
31 (require 'calc-ext) 32 (require 'calc-ext)
32
33 (require 'calc-macs) 33 (require 'calc-macs)
34
35 (defun calc-Need-calc-store () nil)
36
37 34
38 ;;; Memory commands. 35 ;;; Memory commands.
39 36
40 (defvar calc-store-keep nil) 37 (defvar calc-store-keep nil)
41 (defun calc-store (&optional var) 38 (defun calc-store (&optional var)
42 (interactive) 39 (interactive)
43 (let ((calc-store-keep t)) 40 (let ((calc-store-keep t))
44 (calc-store-into var))) 41 (calc-store-into var)))
45 42
46 (defvar calc-given-value-flag nil) 43 (defvar calc-given-value-flag nil)
44 (defvar calc-given-value)
45
47 (defun calc-store-into (&optional var) 46 (defun calc-store-into (&optional var)
48 (interactive) 47 (interactive)
49 (calc-wrapper 48 (calc-wrapper
50 (let ((calc-given-value nil) 49 (let ((calc-given-value nil)
51 (calc-given-value-flag 1)) 50 (calc-given-value-flag 1))
57 ( / . calc-store-div ) 56 ( / . calc-store-div )
58 ( ^ . calc-store-power ) 57 ( ^ . calc-store-power )
59 ( | . calc-store-concat ) )))) 58 ( | . calc-store-concat ) ))))
60 (if found 59 (if found
61 (funcall (cdr found)) 60 (funcall (cdr found))
62 (calc-store-value var (or calc-given-value (calc-top 1)) 61 (let ((msg
63 "" calc-given-value-flag) 62 (calc-store-value var (or calc-given-value (calc-top 1))
64 (message "Stored to variable \"%s\"" (calc-var-name var)))) 63 "" calc-given-value-flag)))
64 (message (concat "Stored to variable \"%s\"" msg)
65 (calc-var-name var)))))
65 (setq var (calc-is-assignments (calc-top 1))) 66 (setq var (calc-is-assignments (calc-top 1)))
66 (if var 67 (if var
67 (while var 68 (while var
68 (calc-store-value (car (car var)) (cdr (car var)) 69 (let ((msg
69 (if (not (cdr var)) "") 70 (calc-store-value (car (car var)) (cdr (car var))
70 (if (not (cdr var)) 1)) 71 (if (not (cdr var)) "")
72 (if (not (cdr var)) 1))))
73 (message (concat "Stored to variable \"%s\"" msg)
74 (calc-var-name (car (car var)))))
71 (setq var (cdr var)))))))) 75 (setq var (cdr var))))))))
72 76
73 (defun calc-store-plus (&optional var) 77 (defun calc-store-plus (&optional var)
74 (interactive) 78 (interactive)
75 (calc-store-binary var "+" '+)) 79 (calc-store-binary var "+" '+))
109 (defun calc-store-decr (n &optional var) 113 (defun calc-store-decr (n &optional var)
110 (interactive "p") 114 (interactive "p")
111 (calc-store-binary var "n" '- n)) 115 (calc-store-binary var "n" '- n))
112 116
113 (defun calc-store-value (var value tag &optional pop) 117 (defun calc-store-value (var value tag &optional pop)
114 (if var 118 (let ((msg ""))
115 (let ((old (calc-var-value var))) 119 (if var
116 (set var value) 120 (let ((old (calc-var-value var)))
117 (if pop (or calc-store-keep (calc-pop-stack pop))) 121 (set var value)
118 (calc-record-undo (list 'store (symbol-name var) old)) 122 (if pop (or calc-store-keep (calc-pop-stack pop)))
119 (if tag 123 (calc-record-undo (list 'store (symbol-name var) old))
120 (let ((calc-full-trail-vectors nil)) 124 (if tag
121 (calc-record value (format ">%s%s" tag (calc-var-name var))))) 125 (let ((calc-full-trail-vectors nil))
122 (and (memq var '(var-e var-i var-pi var-phi var-gamma)) 126 (calc-record value (format ">%s%s" tag (calc-var-name var)))))
123 (eq (car-safe old) 'special-const) 127 (cond
124 (message "(Note: Built-in definition of %s has been lost)" var)) 128 ((and (memq var '(var-e var-i var-pi var-phi var-gamma))
125 (and (memq var '(var-inf var-uinf var-nan)) 129 (eq (car-safe old) 'special-const))
126 (null old) 130 (setq msg (format " (Note: Built-in definition of %s has been lost)"
127 (message "(Note: %s has built-in meanings which may interfere)" 131 (calc-var-name var))))
128 var)) 132 ((and (memq var '(var-inf var-uinf var-nan))
129 (calc-refresh-evaltos var)))) 133 (null old))
134 (setq msg (format " (Note: %s has built-in meanings which may interfere)"
135 (calc-var-name var)))))
136 (calc-refresh-evaltos var)))
137 msg))
130 138
131 (defun calc-var-name (var) 139 (defun calc-var-name (var)
132 (if (symbolp var) (setq var (symbol-name var))) 140 (if (symbolp var) (setq var (symbol-name var)))
133 (if (string-match "\\`var-." var) 141 (if (string-match "\\`var-." var)
134 (substring var 4) 142 (substring var 4)
140 'num calc-simplify-mode)) 148 'num calc-simplify-mode))
141 (value (or val (calc-top 1)))) 149 (value (or val (calc-top 1))))
142 (or var (setq var (calc-read-var-name (format "Store %s: " tag)))) 150 (or var (setq var (calc-read-var-name (format "Store %s: " tag))))
143 (if var 151 (if var
144 (let ((old (calc-var-value var))) 152 (let ((old (calc-var-value var)))
145 (or old 153 (if (eq (car-safe old) 'special-const)
146 (error "No such variable: \"%s\"" (calc-var-name var))) 154 (error "\"%s\" is a special constant" (calc-var-name var)))
155 (if (not old)
156 (if (memq var '(var-inf var-uinf var-nan))
157 (error "\"%s\" is a special variable" (calc-var-name var))
158 (error "No such variable: \"%s\"" (calc-var-name var))))
147 (if (stringp old) 159 (if (stringp old)
148 (setq old (math-read-expr old))) 160 (setq old (math-read-expr old)))
149 (if (eq (car-safe old) 'error) 161 (if (eq (car-safe old) 'error)
150 (error "Bad format in variable contents: %s" (nth 2 old))) 162 (error "Bad format in variable contents: %s" (nth 2 old)))
151 (calc-store-value var 163 (calc-store-value var
152 (calc-normalize (if (calc-is-inverse) 164 (calc-normalize (if (calc-is-inverse)
153 (list func value old) 165 (list func value old)
154 (list func old value))) 166 (list func old value)))
155 tag (and (not val) 1)) 167 tag (and (not val) 1))
156 (message "Stored to variable \"%s\"" (calc-var-name var))))))) 168 (message "Variable \"%s\" changed" (calc-var-name var)))))))
157
158 (defun calc-read-var-name (prompt &optional calc-store-opers)
159 (setq calc-given-value nil
160 calc-aborted-prefix nil)
161 (let ((var (let ((minibuffer-completion-table obarray)
162 (minibuffer-completion-predicate 'boundp)
163 (minibuffer-completion-confirm t))
164 (read-from-minibuffer prompt "var-" calc-var-name-map nil))))
165 (setq calc-aborted-prefix "")
166 (and (not (equal var ""))
167 (not (equal var "var-"))
168 (if (string-match "\\`\\([-a-zA-Z0-9]+\\) *:?=" var)
169 (if (null calc-given-value-flag)
170 (error "Assignment is not allowed in this command")
171 (let ((svar (intern (substring var 0 (match-end 1)))))
172 (setq calc-given-value-flag 0
173 calc-given-value (math-read-expr
174 (substring var (match-end 0))))
175 (if (eq (car-safe calc-given-value) 'error)
176 (error "Bad format: %s" (nth 2 calc-given-value)))
177 (setq calc-given-value (math-evaluate-expr calc-given-value))
178 svar))
179 (intern var)))))
180 169
181 (defvar calc-var-name-map nil "Keymap for reading Calc variable names.") 170 (defvar calc-var-name-map nil "Keymap for reading Calc variable names.")
182 (if calc-var-name-map 171 (if calc-var-name-map
183 () 172 ()
184 (setq calc-var-name-map (copy-keymap minibuffer-local-completion-map)) 173 (setq calc-var-name-map (copy-keymap minibuffer-local-completion-map))
192 (lambda (x) 181 (lambda (x)
193 (define-key calc-var-name-map (char-to-string x) 182 (define-key calc-var-name-map (char-to-string x)
194 'calcVar-oper))) 183 'calcVar-oper)))
195 "+-*/^|")) 184 "+-*/^|"))
196 185
186 (defvar calc-store-opers)
187
188 (defun calc-read-var-name (prompt &optional calc-store-opers)
189 (setq calc-given-value nil
190 calc-aborted-prefix nil)
191 (let ((var (concat
192 "var-"
193 (let ((minibuffer-completion-table
194 (mapcar (lambda (x) (substring x 4))
195 (all-completions "var-" obarray)))
196 (minibuffer-completion-predicate
197 (lambda (x) (boundp (intern (concat "var-" x)))))
198 (minibuffer-completion-confirm t))
199 (read-from-minibuffer prompt nil calc-var-name-map nil)))))
200 (setq calc-aborted-prefix "")
201 (and (not (equal var "var-"))
202 (if (string-match "\\`\\([-a-zA-Z0-9]+\\) *:?=" var)
203 (if (null calc-given-value-flag)
204 (error "Assignment is not allowed in this command")
205 (let ((svar (intern (substring var 0 (match-end 1)))))
206 (setq calc-given-value-flag 0
207 calc-given-value (math-read-expr
208 (substring var (match-end 0))))
209 (if (eq (car-safe calc-given-value) 'error)
210 (error "Bad format: %s" (nth 2 calc-given-value)))
211 (setq calc-given-value (math-evaluate-expr calc-given-value))
212 svar))
213 (intern var)))))
214
197 (defun calcVar-digit () 215 (defun calcVar-digit ()
198 (interactive) 216 (interactive)
199 (if (calc-minibuffer-contains "var-\\'") 217 (if (calc-minibuffer-contains "\\'")
200 (if (eq calc-store-opers 0) 218 (if (eq calc-store-opers 0)
201 (beep) 219 (beep)
202 (insert "q") 220 (insert "q")
203 (self-insert-and-exit)) 221 (self-insert-and-exit))
204 (self-insert-command 1))) 222 (self-insert-command 1)))
205 223
206 (defun calcVar-oper () 224 (defun calcVar-oper ()
207 (interactive) 225 (interactive)
208 (if (and (eq calc-store-opers t) 226 (if (and (eq calc-store-opers t)
209 (calc-minibuffer-contains "var-\\'")) 227 (calc-minibuffer-contains "\\'"))
210 (progn 228 (progn
211 (erase-buffer) 229 (erase-buffer)
212 (self-insert-and-exit)) 230 (self-insert-and-exit))
213 (self-insert-command 1))) 231 (self-insert-command 1)))
214 232
222 (oper (or oper (calc-get-operator "Store Mapping"))) 240 (oper (or oper (calc-get-operator "Store Mapping")))
223 (nargs (car oper))) 241 (nargs (car oper)))
224 (or var (setq var (calc-read-var-name (format "Store Mapping %s: " 242 (or var (setq var (calc-read-var-name (format "Store Mapping %s: "
225 (nth 2 oper))))) 243 (nth 2 oper)))))
226 (if var 244 (if var
227 (let ((old (or (calc-var-value var) 245 (let ((old (calc-var-value var)))
228 (error "No such variable: \"%s\"" 246 (if (eq (car-safe old) 'special-const)
229 (calc-var-name var)))) 247 (error "\"%s\" is a special constant" (calc-var-name var)))
230 (calc-simplify-mode (if (eq calc-simplify-mode 'none) 248 (if (not old)
231 'num calc-simplify-mode)) 249 (if (memq var '(var-inf var-uinf var-nan))
232 (values (and (> nargs 1) 250 (error "\"%s\" is a special variable" (calc-var-name var))
233 (calc-top-list (1- nargs) (1+ calc-dollar-used))))) 251 (error "No such variable: \"%s\"" (calc-var-name var))))
234 (message "Working...") 252 (let ((calc-simplify-mode (if (eq calc-simplify-mode 'none)
235 (calc-set-command-flag 'clear-message) 253 'num calc-simplify-mode))
236 (if (stringp old) 254 (values (and (> nargs 1)
237 (setq old (math-read-expr old))) 255 (calc-top-list (1- nargs) (1+ calc-dollar-used)))))
238 (if (eq (car-safe old) 'error) 256 (message "Working...")
239 (error "Bad format in variable contents: %s" (nth 2 old))) 257 (calc-set-command-flag 'clear-message)
240 (setq values (if (calc-is-inverse) 258 (if (stringp old)
241 (append values (list old)) 259 (setq old (math-read-expr old)))
242 (append (list old) values))) 260 (if (eq (car-safe old) 'error)
243 (calc-store-value var 261 (error "Bad format in variable contents: %s" (nth 2 old)))
244 (calc-normalize (cons (nth 1 oper) values)) 262 (setq values (if (calc-is-inverse)
245 (nth 2 oper) 263 (append values (list old))
246 (+ calc-dollar-used (1- nargs)))))))) 264 (append (list old) values)))
265 (calc-store-value var
266 (calc-normalize (cons (nth 1 oper) values))
267 (nth 2 oper)
268 (+ calc-dollar-used (1- nargs)))
269 (message "Variable \"%s\" changed" (calc-var-name var))))))))
270
247 271
248 (defun calc-store-exchange (&optional var) 272 (defun calc-store-exchange (&optional var)
249 (interactive) 273 (interactive)
250 (calc-wrapper 274 (calc-wrapper
251 (let ((calc-given-value nil) 275 (let ((calc-given-value nil)
252 (calc-given-value-flag 1) 276 (calc-given-value-flag 1)
253 top) 277 top)
254 (or var (setq var (calc-read-var-name "Exchange with: "))) 278 (or var (setq var (calc-read-var-name "Exchange with: ")))
255 (if var 279 (if var
256 (let ((value (calc-var-value var))) 280 (let ((value (calc-var-value var)))
257 (or value
258 (error "No such variable: \"%s\"" (calc-var-name var)))
259 (if (eq (car-safe value) 'special-const) 281 (if (eq (car-safe value) 'special-const)
260 (error "%s is a special constant" var)) 282 (error "\"%s\" is a special constant" (calc-var-name var)))
283 (if (not value)
284 (if (memq var '(var-inf var-uinf var-nan))
285 (error "\"%s\" is a special variable" (calc-var-name var))
286 (error "No such variable: \"%s\"" (calc-var-name var))))
261 (setq top (or calc-given-value (calc-top 1))) 287 (setq top (or calc-given-value (calc-top 1)))
262 (calc-store-value var top nil) 288 (calc-store-value var top nil)
263 (calc-pop-push-record calc-given-value-flag 289 (calc-pop-push-record calc-given-value-flag
264 (concat "<>" (calc-var-name var)) value)))))) 290 (concat "<>" (calc-var-name var)) value))))))
265 291
360 386
361 (defun calc-recall-quick () 387 (defun calc-recall-quick ()
362 (interactive) 388 (interactive)
363 (calc-recall (intern (format "var-q%c" last-command-char)))) 389 (calc-recall (intern (format "var-q%c" last-command-char))))
364 390
391 (defun calc-copy-special-constant (&optional sconst var)
392 (interactive)
393 (let ((sc '(("")
394 ("e" . (special-const (math-e)))
395 ("pi" . (special-const (math-pi)))
396 ("i" . (special-const (math-imaginary 1)))
397 ("phi" . (special-const (math-phi)))
398 ("gamma" . (special-const (math-gamma-const))))))
399 (calc-wrapper
400 (or sconst (setq sconst (completing-read "Special constant: " sc nil t)))
401 (unless (string= sconst "")
402 (let ((value (cdr (assoc sconst sc))))
403 (or var (setq var (calc-read-var-name
404 (format "Copy special constant %s, to: "
405 sconst))))
406 (if var
407 (let ((msg (calc-store-value var value "")))
408 (message (concat "Special constant \"%s\" copied to \"%s\"" msg)
409 sconst (calc-var-name var)))))))))
410
365 (defun calc-copy-variable (&optional var1 var2) 411 (defun calc-copy-variable (&optional var1 var2)
366 (interactive) 412 (interactive)
367 (calc-wrapper 413 (calc-wrapper
368 (or var1 (setq var1 (calc-read-var-name "Copy variable: "))) 414 (or var1 (setq var1 (calc-read-var-name "Copy variable: ")))
369 (if var1 415 (if var1
370 (let ((value (calc-var-value var1))) 416 (let ((value (calc-var-value var1)))
371 (or value 417 (or value
372 (error "No such variable: \"%s\"" (calc-var-name var))) 418 (error "No such variable: \"%s\"" (calc-var-name var1)))
373 (or var2 (setq var2 (calc-read-var-name 419 (or var2 (setq var2 (calc-read-var-name
374 (format "Copy variable: %s, to: " var1)))) 420 (format "Copy variable: %s, to: "
421 (calc-var-name var1)))))
375 (if var2 422 (if var2
376 (calc-store-value var2 value "")))))) 423 (let ((msg (calc-store-value var2 value "")))
424 (message (concat "Variable \"%s\" copied to \"%s\"" msg)
425 (calc-var-name var1) (calc-var-name var2))))))))
377 426
378 (defvar calc-last-edited-variable nil) 427 (defvar calc-last-edited-variable nil)
379 (defun calc-edit-variable (&optional var) 428 (defun calc-edit-variable (&optional var)
380 (interactive) 429 (interactive)
381 (calc-wrapper 430 (calc-wrapper
382 (or var (setq var (calc-read-var-name 431 (or var (setq var (calc-read-var-name
383 (if calc-last-edited-variable 432 (if calc-last-edited-variable
384 (format "Edit: (default %s) " 433 (format "Edit (default %s): "
385 (calc-var-name calc-last-edited-variable)) 434 (calc-var-name calc-last-edited-variable))
386 "Edit: ")))) 435 "Edit: "))))
387 (or var (setq var calc-last-edited-variable)) 436 (or var (setq var calc-last-edited-variable))
388 (if var 437 (if var
389 (let* ((value (calc-var-value var))) 438 (let* ((value (calc-var-value var)))
390 (if (eq (car-safe value) 'special-const) 439 (if (eq (car-safe value) 'special-const)
391 (error "%s is a special constant" var)) 440 (error "%s is a special constant" var))
392 (setq calc-last-edited-variable var) 441 (setq calc-last-edited-variable var)
393 (calc-edit-mode (list 'calc-finish-stack-edit (list 'quote var)) 442 (calc-edit-mode (list 'calc-finish-stack-edit (list 'quote var))
394 t 443 t
395 (concat "Editing " (calc-var-name var))) 444 (concat "Editing variable `" (calc-var-name var) "'. "))
396 (and value 445 (and value
397 (insert (math-format-nice-expr value (frame-width)) "\n"))))) 446 (insert (math-format-nice-expr value (frame-width)) "\n")))))
398 (calc-show-edit-buffer)) 447 (calc-show-edit-buffer))
399 448
400 (defun calc-edit-Decls () 449 (defun calc-edit-Decls ()
475 (if (or (not (eq (car-safe row) 'var)) 524 (if (or (not (eq (car-safe row) 'var))
476 (not (eq (nth 2 row) var))) 525 (not (eq (nth 2 row) var)))
477 (setq rp nil))) 526 (setq rp nil)))
478 (not rp))))) 527 (not rp)))))
479 (calc-unread-command ?\C-a) 528 (calc-unread-command ?\C-a)
480 (setq decl (read-string (format "Declare: %s to be: " var) 529 (setq decl (read-string (format "Declare: %s to be: " (calc-var-name var))
481 (and rp 530 (and rp
482 (math-format-flat-expr (nth 2 (car dp)) 0)))) 531 (math-format-flat-expr (nth 2 (car dp)) 0))))
483 (setq decl (and (string-match "[^ \t]" decl) 532 (setq decl (and (string-match "[^ \t]" decl)
484 (math-read-exprs decl))) 533 (math-read-exprs decl)))
485 (if (eq (car-safe decl) 'error) 534 (if (eq (car-safe decl) 'error)
528 var-PlotData1 var-PlotData2 577 var-PlotData1 var-PlotData2
529 var-PlotData3 var-PlotData4 578 var-PlotData3 var-PlotData4
530 var-PlotData5 var-PlotData6 579 var-PlotData5 var-PlotData6
531 var-DUMMY)) 580 var-DUMMY))
532 581
582 ;; The variable calc-pv-pos is local to calc-permanent-variable, but
583 ;; used by calc-insert-permanent-variable, which is called by
584 ;; calc-permanent-variable.
585 (defvar calc-pv-pos)
586
533 (defun calc-permanent-variable (&optional var) 587 (defun calc-permanent-variable (&optional var)
534 (interactive) 588 (interactive)
535 (calc-wrapper 589 (calc-wrapper
536 (or var (setq var (calc-read-var-name "Save variable (default=all): "))) 590 (or var (setq var (calc-read-var-name "Save variable (default all): ")))
537 (let (pos) 591 (let (calc-pv-pos)
538 (and var (or (and (boundp var) (symbol-value var)) 592 (and var (or (and (boundp var) (symbol-value var))
539 (error "No such variable"))) 593 (error "No such variable")))
540 (set-buffer (find-file-noselect (substitute-in-file-name 594 (set-buffer (find-file-noselect (substitute-in-file-name
541 calc-settings-file))) 595 calc-settings-file)))
542 (if var 596 (if var
554 608
555 (defun calc-insert-permanent-variable (var) 609 (defun calc-insert-permanent-variable (var)
556 (goto-char (point-min)) 610 (goto-char (point-min))
557 (if (search-forward (concat "(setq " (symbol-name var) " '") nil t) 611 (if (search-forward (concat "(setq " (symbol-name var) " '") nil t)
558 (progn 612 (progn
559 (setq pos (point-marker)) 613 (setq calc-pv-pos (point-marker))
560 (forward-line -1) 614 (forward-line -1)
561 (if (looking-at ";;; Variable .* stored by Calc on ") 615 (if (looking-at ";;; Variable .* stored by Calc on ")
562 (progn 616 (progn
563 (delete-region (match-end 0) (progn (end-of-line) (point))) 617 (delete-region (match-end 0) (progn (end-of-line) (point)))
564 (insert (current-time-string)))) 618 (insert (current-time-string))))
565 (goto-char (- pos 8 (length (symbol-name var)))) 619 (goto-char (- calc-pv-pos 8 (length (symbol-name var))))
566 (forward-sexp 1) 620 (forward-sexp 1)
567 (backward-char 1) 621 (backward-char 1)
568 (delete-region pos (point))) 622 (delete-region calc-pv-pos (point)))
569 (goto-char (point-max)) 623 (goto-char (point-max))
570 (insert "\n;;; Variable \"" 624 (insert "\n;;; Variable \""
571 (symbol-name var) 625 (symbol-name var)
572 "\" stored by Calc on " 626 "\" stored by Calc on "
573 (current-time-string) 627 (current-time-string)
617 (defun calc-subscript (arg) 671 (defun calc-subscript (arg)
618 (interactive "P") 672 (interactive "P")
619 (calc-slow-wrapper 673 (calc-slow-wrapper
620 (calc-binary-op "sub" 'calcFunc-subscr arg))) 674 (calc-binary-op "sub" 'calcFunc-subscr arg)))
621 675
676 (provide 'calc-store)
677
678 ;;; arch-tag: 2fbfec82-a521-42ca-bcd8-4f254ae6313e
622 ;;; calc-store.el ends here 679 ;;; calc-store.el ends here