Commit | Line | Data |
---|---|---|
396dd4da BG |
1 | ;;; calc-menu.el --- a menu for Calc |
2 | ||
ba318903 | 3 | ;; Copyright (C) 2007-2014 Free Software Foundation, Inc. |
396dd4da BG |
4 | |
5 | ;; Maintainer: Jay Belanger <jay.p.belanger@gmail.com> | |
6 | ||
7 | ;; This file is part of GNU Emacs. | |
8 | ||
662c9c64 | 9 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
396dd4da | 10 | ;; it under the terms of the GNU General Public License as published by |
662c9c64 GM |
11 | ;; the Free Software Foundation, either version 3 of the License, or |
12 | ;; (at your option) any later version. | |
396dd4da BG |
13 | |
14 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | ;; GNU General Public License for more details. | |
18 | ||
19 | ;; You should have received a copy of the GNU General Public License | |
662c9c64 | 20 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
396dd4da BG |
21 | |
22 | ;;; Commentary: | |
23 | ||
24 | (defvar calc-arithmetic-menu | |
25 | (list "Arithmetic" | |
26 | (list "Basic" | |
c80e3b4a | 27 | ["-(1:)" calc-change-sign |
396dd4da | 28 | :keys "n" :active (>= (calc-stack-size) 1)] |
c80e3b4a | 29 | ["(2:) + (1:)" calc-plus |
396dd4da | 30 | :keys "+" :active (>= (calc-stack-size) 2)] |
c80e3b4a | 31 | ["(2:) - (1:)" calc-minus |
396dd4da | 32 | :keys "-" :active (>= (calc-stack-size) 2)] |
c80e3b4a | 33 | ["(2:) * (1:)" calc-times |
396dd4da | 34 | :keys "*" :active (>= (calc-stack-size) 2)] |
c80e3b4a | 35 | ["(2:) / (1:)" calc-divide |
396dd4da | 36 | :keys "/" :active (>= (calc-stack-size) 2)] |
c80e3b4a | 37 | ["(2:) ^ (1:)" calc-power |
396dd4da | 38 | :keys "^" :active (>= (calc-stack-size) 2)] |
c80e3b4a | 39 | ["(2:) ^ (1/(1:))" |
396dd4da BG |
40 | (progn |
41 | (require 'calc-ext) | |
42 | (let ((calc-inverse-flag t)) | |
43 | (call-interactively 'calc-power))) | |
44 | :keys "I ^" | |
45 | :active (>= (calc-stack-size) 2) | |
46 | :help "The (1:)th root of (2:)"] | |
c80e3b4a PE |
47 | ["abs(1:)" |
48 | (progn | |
396dd4da BG |
49 | (require 'calc-arith) |
50 | (call-interactively 'calc-abs)) | |
51 | :keys "A" | |
52 | :active (>= (calc-stack-size) 1) | |
53 | :help "Absolute value"] | |
54 | ["1/(1:)" | |
55 | (progn | |
56 | (require 'calc-arith) | |
57 | (call-interactively 'calc-inv)) | |
58 | :keys "&" | |
59 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 60 | ["sqrt(1:)" |
396dd4da BG |
61 | (progn |
62 | (require 'calc-math) | |
63 | (call-interactively 'calc-sqrt)) | |
64 | :keys "Q" | |
65 | :active (>= (calc-stack-size) 1)] | |
66 | ["idiv(2:,1:)" | |
67 | (progn | |
68 | (require 'calc-arith) | |
69 | (call-interactively 'calc-idiv)) | |
70 | :keys "\\" | |
71 | :active (>= (calc-stack-size) 2) | |
72 | :help "The integer quotient of (2:) over (1:)"] | |
c80e3b4a | 73 | ["(2:) mod (1:)" |
396dd4da BG |
74 | (progn |
75 | (require 'calc-misc) | |
76 | (call-interactively 'calc-mod)) | |
77 | :keys "%" | |
78 | :active (>= (calc-stack-size) 2) | |
79 | :help "The remainder when (2:) is divided by (1:)"]) | |
80 | (list "Rounding" | |
c80e3b4a | 81 | ["floor(1:)" |
396dd4da BG |
82 | (progn |
83 | (require 'calc-arith) | |
84 | (call-interactively 'calc-floor)) | |
85 | :keys "F" | |
86 | :active (>= (calc-stack-size) 1) | |
87 | :help "The greatest integer less than or equal to (1:)"] | |
c80e3b4a | 88 | ["ceiling(1:)" |
396dd4da BG |
89 | (progn |
90 | (require 'calc-arith) | |
91 | (call-interactively 'calc-ceiling)) | |
92 | :keys "I F" | |
93 | :active (>= (calc-stack-size) 1) | |
94 | :help "The smallest integer greater than or equal to (1:)"] | |
c80e3b4a | 95 | ["round(1:)" |
396dd4da BG |
96 | (progn |
97 | (require 'calc-arith) | |
98 | (call-interactively 'calc-round)) | |
99 | :keys "R" | |
100 | :active (>= (calc-stack-size) 1) | |
101 | :help "The nearest integer to (1:)"] | |
c80e3b4a | 102 | ["truncate(1:)" |
396dd4da BG |
103 | (progn |
104 | (require 'calc-arith) | |
105 | (call-interactively 'calc-trunc)) | |
106 | :keys "I R" | |
107 | :active (>= (calc-stack-size) 1) | |
108 | :help "The integer part of (1:)"]) | |
109 | (list "Complex Numbers" | |
110 | ["Re(1:)" | |
111 | (progn | |
112 | (require 'calc-cplx) | |
113 | (call-interactively 'calc-re)) | |
114 | :keys "f r" | |
115 | :active (>= (calc-stack-size) 1)] | |
116 | ["Im(1:)" | |
117 | (progn | |
118 | (require 'calc-cplx) | |
119 | (call-interactively 'calc-im)) | |
120 | :keys "f i" | |
121 | :active (>= (calc-stack-size) 1)] | |
122 | ["conj(1:)" | |
123 | (progn | |
124 | (require 'calc-cplx) | |
125 | (call-interactively 'calc-conj)) | |
126 | :keys "J" | |
127 | :active (>= (calc-stack-size) 1) | |
128 | :help "The complex conjugate of (1:)"] | |
129 | ["length(1:)" | |
130 | (progn (require 'calc-arith) | |
131 | (call-interactively 'calc-abs)) | |
132 | :keys "A" | |
133 | :active (>= (calc-stack-size) 1) | |
134 | :help "The length (absolute value) of (1:)"] | |
135 | ["arg(1:)" | |
136 | (progn | |
137 | (require 'calc-cplx) | |
138 | (call-interactively 'calc-argument)) | |
139 | :keys "G" | |
140 | :active (>= (calc-stack-size) 1) | |
141 | :help "The argument (polar angle) of (1:)"]) | |
142 | (list "Conversion" | |
c80e3b4a | 143 | ["Convert (1:) to a float" |
396dd4da BG |
144 | (progn |
145 | (require 'calc-ext) | |
146 | (call-interactively 'calc-float)) | |
147 | :keys "c f" | |
148 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 149 | ["Convert (1:) to a fraction" |
396dd4da BG |
150 | (progn |
151 | (require 'calc-ext) | |
152 | (call-interactively 'calc-fraction)) | |
153 | :keys "c F" | |
154 | :active (>= (calc-stack-size) 1)]) | |
155 | (list "Binary" | |
c80e3b4a | 156 | ["Set word size" |
396dd4da BG |
157 | (progn |
158 | (require 'calc-bin) | |
159 | (call-interactively 'calc-word-size)) | |
160 | :keys "b w"] | |
c80e3b4a | 161 | ["Clip (1:) to word size" |
396dd4da BG |
162 | (progn |
163 | (require 'calc-bin) | |
164 | (call-interactively 'calc-clip)) | |
165 | :keys "b c" | |
166 | :active (>= (calc-stack-size) 1) | |
167 | :help "Reduce (1:) modulo 2^wordsize"] | |
c80e3b4a | 168 | ["(2:) and (1:)" |
396dd4da BG |
169 | (progn |
170 | (require 'calc-bin) | |
171 | (call-interactively 'calc-and)) | |
172 | :keys "b a" | |
173 | :active (>= (calc-stack-size) 2) | |
174 | :help "Bitwise AND [modulo 2^wordsize]"] | |
175 | ["(2:) or (1:)" | |
176 | (progn | |
177 | (require 'calc-bin) | |
178 | (call-interactively 'calc-or)) | |
179 | :keys "b o" | |
180 | :active (>= (calc-stack-size) 2) | |
181 | :help "Bitwise inclusive OR [modulo 2^wordsize]"] | |
182 | ["(2:) xor (1:)" | |
c80e3b4a | 183 | (progn |
396dd4da BG |
184 | (require 'calc-bin) |
185 | (call-interactively 'calc-xor)) | |
186 | :keys "b x" | |
187 | :active (>= (calc-stack-size) 2) | |
188 | :help "Bitwise exclusive OR [modulo 2^wordsize]"] | |
c80e3b4a | 189 | ["diff(2:,1:)" |
396dd4da BG |
190 | (progn |
191 | (require 'calc-bin) | |
192 | (call-interactively 'calc-diff)) | |
193 | :keys "b d" | |
194 | :active (>= (calc-stack-size) 2) | |
195 | :help "Bitwise difference [modulo 2^wordsize]"] | |
196 | ["not (1:)" | |
197 | (progn | |
198 | (require 'calc-bin) | |
199 | (call-interactively 'calc-not)) | |
200 | :keys "b n" | |
201 | :active (>= (calc-stack-size) 1) | |
202 | :help "Bitwise NOT [modulo 2^wordsize]"] | |
203 | ["left shift(1:)" | |
204 | (progn | |
205 | (require 'calc-bin) | |
206 | (call-interactively 'calc-lshift-binary)) | |
207 | :keys "b l" | |
208 | :active (>= (calc-stack-size) 1) | |
209 | :help "Shift (1:)[modulo 2^wordsize] one bit left"] | |
210 | ["right shift(1:)" | |
211 | (progn | |
212 | (require 'calc-bin) | |
213 | (call-interactively 'calc-rshift-binary)) | |
214 | :keys "b r" | |
215 | :active (>= (calc-stack-size) 1) | |
216 | :help "Shift (1:)[modulo 2^wordsize] one bit right, putting 0s on the left"] | |
217 | ["arithmetic right shift(1:)" | |
218 | (progn | |
219 | (require 'calc-bin) | |
220 | (call-interactively 'calc-rshift-arith)) | |
221 | :keys "b R" | |
222 | :active (>= (calc-stack-size) 1) | |
223 | :help "Shift (1:)[modulo 2^wordsize] one bit right, duplicating the leftmost bit"] | |
224 | ["rotate(1:)" | |
225 | (progn | |
226 | (require 'calc-bin) | |
227 | (call-interactively 'calc-rotate-binary)) | |
228 | :keys "b t" | |
229 | :active (>= (calc-stack-size) 1) | |
230 | :help "Rotate (1:)[modulo 2^wordsize] one bit left"]) | |
231 | "-------" | |
232 | ["Help on Arithmetic" | |
233 | (calc-info-goto-node "Arithmetic")]) | |
234 | "Menu for Calc's arithmetic functions.") | |
235 | ||
236 | (defvar calc-scientific-function-menu | |
237 | (list "Scientific Functions" | |
238 | (list "Constants" | |
239 | ["pi" | |
240 | (progn | |
241 | (require 'calc-math) | |
242 | (call-interactively 'calc-pi)) | |
243 | :keys "P"] | |
244 | ["e" | |
245 | (progn | |
246 | (require 'calc-math) | |
247 | (let ((calc-hyperbolic-flag t)) | |
248 | (call-interactively 'calc-pi))) | |
249 | :keys "H P"] | |
250 | ["phi" | |
251 | (progn | |
252 | (require 'calc-math) | |
253 | (let ((calc-inverse-flag t) | |
254 | (calc-hyperbolic-flag t)) | |
255 | (call-interactively 'calc-pi))) | |
256 | :keys "I H P" | |
257 | :help "The golden ratio"] | |
258 | ["gamma" | |
259 | (progn | |
260 | (require 'calc-math) | |
261 | (let ((calc-inverse-flag t)) | |
262 | (call-interactively 'calc-pi))) | |
263 | :keys "I P" | |
264 | :help "Euler's constant"]) | |
265 | (list "Logs and Exps" | |
c80e3b4a PE |
266 | ["ln(1:)" |
267 | (progn | |
268 | (require 'calc-math) | |
269 | (call-interactively 'calc-ln)) | |
396dd4da BG |
270 | :keys "L" |
271 | :active (>= (calc-stack-size) 1) | |
272 | :help "The natural logarithm"] | |
c80e3b4a | 273 | ["e^(1:)" |
396dd4da BG |
274 | (progn |
275 | (require 'calc-math) | |
276 | (call-interactively 'calc-exp)) | |
277 | :keys "E" | |
278 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 279 | ["log(1:) [base 10]" |
396dd4da BG |
280 | (progn |
281 | (require 'calc-math) | |
282 | (call-interactively 'calc-log10)) | |
283 | :keys "H L" | |
284 | :active (>= (calc-stack-size) 1) | |
285 | :help "The common logarithm"] | |
c80e3b4a | 286 | ["10^(1:)" |
396dd4da BG |
287 | (progn |
288 | (require 'calc-math) | |
289 | (let ((calc-inverse-flag t)) | |
290 | (call-interactively 'calc-log10))) | |
291 | :keys "I H L" | |
292 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 293 | ["log(2:) [base(1:)]" |
396dd4da BG |
294 | (progn |
295 | (require 'calc-math) | |
296 | (call-interactively 'calc-log)) | |
297 | :keys "B" | |
298 | :active (>= (calc-stack-size) 2) | |
299 | :help "The logarithm with an arbitrary base"] | |
c80e3b4a PE |
300 | ["(2:) ^ (1:)" |
301 | calc-power | |
396dd4da BG |
302 | :keys "^" |
303 | :active (>= (calc-stack-size) 2)]) | |
304 | (list "Trigonometric Functions" | |
c80e3b4a | 305 | ["sin(1:)" |
396dd4da BG |
306 | (progn |
307 | (require 'calc-math) | |
308 | (call-interactively 'calc-sin)) | |
309 | :keys "S" | |
310 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 311 | ["cos(1:)" |
396dd4da BG |
312 | (progn |
313 | (require 'calc-math) | |
314 | (call-interactively 'calc-cos)) | |
315 | :keys "C" | |
316 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 317 | ["tan(1:)" |
396dd4da BG |
318 | (progn |
319 | (require 'calc-math) | |
320 | (call-interactively 'calc-tan)) | |
321 | :keys "T" | |
322 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 323 | ["arcsin(1:)" |
396dd4da BG |
324 | (progn |
325 | (require 'calc-math) | |
326 | (call-interactively 'calc-arcsin)) | |
327 | :keys "I S" | |
328 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 329 | ["arccos(1:)" |
396dd4da BG |
330 | (progn |
331 | (require 'calc-math) | |
332 | (call-interactively 'calc-arccos)) | |
333 | :keys "I C" | |
334 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 335 | ["arctan(1:)" |
396dd4da BG |
336 | (progn |
337 | (require 'calc-math) | |
338 | (call-interactively 'calc-arctan)) | |
339 | :keys "I T" | |
340 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 341 | ["arctan2(2:,1:)" |
396dd4da BG |
342 | (progn |
343 | (require 'calc-math) | |
344 | (call-interactively 'calc-arctan2)) | |
345 | :keys "f T" | |
346 | :active (>= (calc-stack-size) 2)] | |
347 | "--Angle Measure--" | |
348 | ["Radians" | |
349 | (progn | |
350 | (require 'calc-math) | |
351 | (calc-radians-mode)) | |
352 | :keys "m r" | |
353 | :style radio | |
354 | :selected (eq calc-angle-mode 'rad)] | |
355 | ["Degrees" | |
356 | (progn | |
357 | (require 'calc-math) | |
358 | (calc-degrees-mode)) | |
359 | :keys "m d" | |
360 | :style radio | |
361 | :selected (eq calc-angle-mode 'deg)] | |
362 | ["HMS" | |
363 | (progn | |
364 | (require 'calc-math) | |
365 | (calc-hms-mode)) | |
366 | :keys "m h" | |
367 | :style radio | |
368 | :selected (eq calc-angle-mode 'hms)]) | |
369 | (list "Hyperbolic Functions" | |
c80e3b4a | 370 | ["sinh(1:)" |
396dd4da BG |
371 | (progn |
372 | (require 'calc-math) | |
373 | (call-interactively 'calc-sinh)) | |
374 | :keys "H S" | |
375 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 376 | ["cosh(1:)" |
396dd4da BG |
377 | (progn |
378 | (require 'calc-math) | |
379 | (call-interactively 'calc-cosh)) | |
380 | :keys "H C" | |
381 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 382 | ["tanh(1:)" |
396dd4da BG |
383 | (progn |
384 | (require 'calc-math) | |
385 | (call-interactively 'calc-tanh)) | |
386 | :keys "H T" | |
387 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 388 | ["arcsinh(1:)" |
396dd4da BG |
389 | (progn |
390 | (require 'calc-math) | |
391 | (call-interactively 'calc-arcsinh)) | |
392 | :keys "I H S" | |
393 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 394 | ["arccosh(1:)" |
396dd4da BG |
395 | (progn |
396 | (require 'calc-math) | |
397 | (call-interactively 'calc-arccosh)) | |
398 | :keys "I H C" | |
399 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 400 | ["arctanh(1:)" |
396dd4da BG |
401 | (progn |
402 | (require 'calc-math) | |
403 | (call-interactively 'calc-arctanh)) | |
404 | :keys "I H T" | |
405 | :active (>= (calc-stack-size) 1)]) | |
406 | (list "Advanced Math Functions" | |
c80e3b4a | 407 | ["Gamma(1:)" |
396dd4da BG |
408 | (progn |
409 | (require 'calc-comb) | |
410 | (call-interactively 'calc-gamma)) | |
411 | :keys "f g" | |
412 | :active (>= (calc-stack-size) 1) | |
413 | :help "The Euler Gamma function"] | |
c80e3b4a | 414 | ["GammaP(2:,1:)" |
396dd4da BG |
415 | (progn |
416 | (require 'calc-funcs) | |
417 | (call-interactively 'calc-inc-gamma)) | |
418 | :keys "f G" | |
419 | :active (>= (calc-stack-size) 2) | |
420 | :help "The lower incomplete Gamma function"] | |
c80e3b4a | 421 | ["Beta(2:,1:)" |
396dd4da BG |
422 | (progn |
423 | (require 'calc-funcs) | |
424 | (call-interactively 'calc-beta)) | |
425 | :keys "f b" | |
426 | :active (>= (calc-stack-size) 2) | |
427 | :help "The Euler Beta function"] | |
c80e3b4a | 428 | ["BetaI(3:,2:,1:)" |
396dd4da BG |
429 | (progn |
430 | (require 'calc-funcs) | |
431 | (call-interactively 'calc-inc-beta)) | |
432 | :keys "f B" | |
433 | :active (>= (calc-stack-size) 3) | |
434 | :help "The incomplete Beta function"] | |
435 | ["erf(1:)" | |
436 | (progn | |
437 | (require 'calc-funcs) | |
438 | (call-interactively 'calc-erf)) | |
439 | :keys "f e" | |
440 | :active (>= (calc-stack-size) 1) | |
441 | :help "The error function"] | |
c80e3b4a | 442 | ["BesselJ(2:,1:)" |
396dd4da BG |
443 | (progn |
444 | (require 'calc-funcs) | |
445 | (call-interactively 'calc-bessel-J)) | |
446 | :keys "f j" | |
447 | :active (>= (calc-stack-size) 2) | |
448 | :help "The Bessel function of the first kind (of order (2:))"] | |
c80e3b4a | 449 | ["BesselY(2:,1:)" |
396dd4da BG |
450 | (progn |
451 | (require 'calc-funcs) | |
452 | (call-interactively 'calc-bessel-Y)) | |
453 | :keys "f y" | |
454 | :active (>= (calc-stack-size) 2) | |
455 | :help "The Bessel function of the second kind (of order (2:))"]) | |
456 | (list "Combinatorial Functions" | |
c80e3b4a | 457 | ["gcd(2:,1:)" |
396dd4da BG |
458 | (progn |
459 | (require 'calc-comb) | |
460 | (call-interactively 'calc-gcd)) | |
461 | :keys "k g" | |
462 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a | 463 | ["lcm(2:,1:)" |
396dd4da BG |
464 | (progn |
465 | (require 'calc-comb) | |
466 | (call-interactively 'calc-lcm)) | |
467 | :keys "k l" | |
468 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a | 469 | ["factorial(1:)" |
396dd4da BG |
470 | (progn |
471 | (require 'calc-comb) | |
472 | (call-interactively 'calc-factorial)) | |
473 | :keys "!" | |
474 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 475 | ["(2:) choose (1:)" |
396dd4da BG |
476 | (progn |
477 | (require 'calc-comb) | |
478 | (call-interactively 'calc-choose)) | |
479 | :keys "k c" | |
480 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a | 481 | ["permutations(2:,1:)" |
396dd4da BG |
482 | (progn |
483 | (require 'calc-comb) | |
484 | (call-interactively 'calc-perm)) | |
485 | :keys "H k c" | |
486 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a | 487 | ["Primality test for (1:)" |
396dd4da BG |
488 | (progn |
489 | (require 'calc-comb) | |
490 | (call-interactively 'calc-prime-test)) | |
491 | :keys "k p" | |
492 | :active (>= (calc-stack-size) 1) | |
493 | :help "For large (1:), a probabilistic test"] | |
c80e3b4a | 494 | ["Factor (1:) into primes" |
396dd4da BG |
495 | (progn |
496 | (require 'calc-comb) | |
497 | (call-interactively 'calc-prime-factors)) | |
498 | :keys "k f" | |
499 | :active (>= (calc-stack-size) 1)] | |
500 | ["Next prime after (1:)" | |
501 | (progn | |
502 | (require 'calc-comb) | |
503 | (call-interactively 'calc-next-prime)) | |
504 | :keys "k n" | |
505 | :active (>= (calc-stack-size) 1)] | |
506 | ["Previous prime before (1:)" | |
507 | (progn | |
508 | (require 'calc-comb) | |
509 | (call-interactively 'calc-prev-prime)) | |
510 | :keys "I k n" | |
511 | :active (>= (calc-stack-size) 1)] | |
512 | ["phi(1:)" | |
513 | (progn | |
514 | (require 'calc-comb) | |
515 | (call-interactively 'calc-totient)) | |
516 | :keys "k n" | |
517 | :active (>= (calc-stack-size) 1) | |
518 | :help "Euler's totient function"] | |
519 | ["random(1:)" | |
520 | (progn | |
521 | (require 'calc-comb) | |
522 | (call-interactively 'calc-random)) | |
523 | :keys "k r" | |
524 | :active (>= (calc-stack-size) 1) | |
525 | :help "A random number >=1 and < (1:)"]) | |
526 | "----" | |
527 | ["Help on Scientific Functions" | |
528 | (calc-info-goto-node "Scientific Functions")]) | |
529 | "Menu for Calc's scientific functions.") | |
c80e3b4a | 530 | |
396dd4da BG |
531 | (defvar calc-algebra-menu |
532 | (list "Algebra" | |
533 | (list "Simplification" | |
c80e3b4a | 534 | ["Simplify (1:)" |
396dd4da BG |
535 | (progn |
536 | (require 'calc-alg) | |
537 | (call-interactively 'calc-simplify)) | |
538 | :keys "a s" | |
539 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 540 | ["Simplify (1:) with extended rules" |
396dd4da BG |
541 | (progn |
542 | (require 'calc-alg) | |
543 | (call-interactively 'calc-simplify-extended)) | |
544 | :keys "a e" | |
545 | :active (>= (calc-stack-size) 1) | |
546 | :help "Apply possibly unsafe simplifications"]) | |
547 | (list "Manipulation" | |
c80e3b4a | 548 | ["Expand formula (1:)" |
396dd4da BG |
549 | (progn |
550 | (require 'calc-alg) | |
551 | (call-interactively 'calc-expand-formula)) | |
552 | :keys "a \"" | |
553 | :active (>= (calc-stack-size) 1) | |
554 | :help "Expand (1:) into its defining formula, if possible"] | |
c80e3b4a | 555 | ["Evaluate variables in (1:)" |
396dd4da BG |
556 | (progn |
557 | (require 'calc-ext) | |
558 | (call-interactively 'calc-evaluate)) | |
559 | :keys "=" | |
560 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 561 | ["Make substitution in (1:)" |
396dd4da BG |
562 | (progn |
563 | (require 'calc-alg) | |
564 | (call-interactively 'calc-substitute)) | |
565 | :keys "a b" | |
566 | :active (>= (calc-stack-size) 1) | |
c80e3b4a | 567 | :help |
396dd4da BG |
568 | "Substitute all occurrences of a sub-expression with a new sub-expression"]) |
569 | (list "Polynomials" | |
c80e3b4a | 570 | ["Factor (1:)" |
396dd4da BG |
571 | (progn |
572 | (require 'calc-alg) | |
573 | (call-interactively 'calc-factor)) | |
574 | :keys "a f" | |
575 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 576 | ["Collect terms in (1:)" |
396dd4da BG |
577 | (progn |
578 | (require 'calc-alg) | |
c80e3b4a | 579 | (call-interactively 'calc-collect)) |
396dd4da BG |
580 | :keys "a c" |
581 | :active (>= (calc-stack-size) 1) | |
582 | :help "Arrange as a polynomial in a given variable"] | |
c80e3b4a | 583 | ["Expand (1:)" |
396dd4da BG |
584 | (progn |
585 | (require 'calc-alg) | |
586 | (call-interactively 'calc-expand)) | |
587 | :keys "a x" | |
588 | :active (>= (calc-stack-size) 1) | |
589 | :help "Apply distributive law everywhere"] | |
c80e3b4a | 590 | ["Find roots of (1:)" |
396dd4da BG |
591 | (progn |
592 | (require 'calcalg2) | |
593 | (call-interactively 'calc-poly-roots)) | |
594 | :keys "a P" | |
595 | :active (>= (calc-stack-size) 1)]) | |
596 | (list "Calculus" | |
c80e3b4a | 597 | ["Differentiate (1:)" |
396dd4da BG |
598 | (progn |
599 | (require 'calcalg2) | |
600 | (call-interactively 'calc-derivative)) | |
601 | :keys "a d" | |
602 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 603 | ["Integrate (1:) [indefinite]" |
396dd4da BG |
604 | (progn |
605 | (require 'calcalg2) | |
606 | (call-interactively 'calc-integral)) | |
607 | :keys "a i" | |
608 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 609 | ["Integrate (1:) [definite]" |
396dd4da BG |
610 | (progn |
611 | (require 'calcalg2) | |
612 | (let ((var (read-string "Integration variable: "))) | |
c80e3b4a | 613 | (calc-tabular-command 'calcFunc-integ "Integration" |
396dd4da BG |
614 | "intg" nil var nil nil))) |
615 | :keys "C-u a i" | |
616 | :active (>= (calc-stack-size) 1)] | |
617 | ["Integrate (1:) [numeric]" | |
618 | (progn | |
619 | (require 'calcalg2) | |
620 | (call-interactively 'calc-num-integral)) | |
621 | :keys "a I" | |
622 | :active (>= (calc-stack-size) 1) | |
623 | :help "Integrate using the open Romberg method"] | |
c80e3b4a | 624 | ["Taylor expand (1:)" |
396dd4da BG |
625 | (progn |
626 | (require 'calcalg2) | |
627 | (call-interactively 'calc-taylor)) | |
628 | :keys "a t" | |
629 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 630 | ["Minimize (2:) [initial guess = (1:)]" |
396dd4da BG |
631 | (progn |
632 | (require 'calcalg3) | |
633 | (call-interactively 'calc-find-minimum)) | |
634 | :keys "a N" | |
635 | :active (>= (calc-stack-size) 2) | |
636 | :help "Find a local minimum"] | |
c80e3b4a | 637 | ["Maximize (2:) [initial guess = (1:)]" |
396dd4da BG |
638 | (progn |
639 | (require 'calcalg3) | |
640 | (call-interactively 'calc-find-maximum)) | |
641 | :keys "a X" | |
642 | :active (>= (calc-stack-size) 2) | |
643 | :help "Find a local maximum"]) | |
644 | (list "Solving" | |
c80e3b4a | 645 | ["Solve equation (1:)" |
396dd4da BG |
646 | (progn |
647 | (require 'calcalg2) | |
648 | (call-interactively 'calc-solve-for)) | |
649 | :keys "a S" | |
650 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 651 | ["Solve equation (2:) numerically [initial guess = (1:)]" |
396dd4da BG |
652 | (progn |
653 | (require 'calcalg3) | |
654 | (call-interactively 'calc-find-root)) | |
655 | :keys "a R" | |
656 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a | 657 | ["Find roots of polynomial (1:)" |
396dd4da BG |
658 | (progn |
659 | (require 'calcalg2) | |
660 | (call-interactively 'calc-poly-roots)) | |
661 | :keys "a P" | |
662 | :active (>= (calc-stack-size) 1)]) | |
663 | (list "Curve Fitting" | |
c80e3b4a | 664 | ["Fit (1:)=[x values, y values] to a curve" |
396dd4da BG |
665 | (progn |
666 | (require 'calcalg3) | |
667 | (call-interactively 'calc-curve-fit)) | |
668 | :keys "a F" | |
669 | :active (>= (calc-stack-size) 1)]) | |
670 | "----" | |
671 | ["Help on Algebra" | |
672 | (calc-info-goto-node "Algebra")]) | |
673 | "Menu for Calc's algebraic facilities.") | |
674 | ||
675 | ||
676 | (defvar calc-graphics-menu | |
677 | (list "Graphics" | |
c80e3b4a | 678 | ["Graph 2D [(1:)= y values, (2:)= x values]" |
396dd4da BG |
679 | (progn |
680 | (require 'calc-graph) | |
681 | (call-interactively 'calc-graph-fast)) | |
682 | :keys "g f" | |
683 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a | 684 | ["Graph 3D [(1:)= z values, (2:)= y values, (3:)= x values]" |
396dd4da BG |
685 | (progn |
686 | (require 'calc-graph) | |
687 | (call-interactively 'calc-graph-fast-3d)) | |
688 | :keys "g F" | |
689 | :active (>= (calc-stack-size) 3)] | |
690 | "----" | |
691 | ["Help on Graphics" | |
692 | (calc-info-goto-node "Graphics")]) | |
693 | "Menu for Calc's graphics.") | |
694 | ||
695 | ||
696 | (defvar calc-vectors-menu | |
697 | (list "Matrices/Vectors" | |
698 | (list "Matrices" | |
c80e3b4a | 699 | ["(2:) + (1:)" calc-plus |
396dd4da | 700 | :keys "+" :active (>= (calc-stack-size) 2)] |
c80e3b4a | 701 | ["(2:) - (1:)" calc-minus |
396dd4da | 702 | :keys "-" :active (>= (calc-stack-size) 2)] |
c80e3b4a | 703 | ["(2:) * (1:)" calc-times |
396dd4da BG |
704 | :keys "*" :active (>= (calc-stack-size) 2)] |
705 | ["(1:)^(-1)" | |
706 | (progn | |
707 | (require 'calc-arith) | |
708 | (call-interactively 'calc-inv)) | |
709 | :keys "&" | |
710 | :active (>= (calc-stack-size) 1)] | |
711 | ["Create an identity matrix" | |
c80e3b4a | 712 | (progn |
396dd4da BG |
713 | (require 'calc-vec) |
714 | (call-interactively 'calc-ident)) | |
715 | :keys "v i"] | |
c80e3b4a | 716 | ["transpose(1:)" |
396dd4da BG |
717 | (progn |
718 | (require 'calc-vec) | |
719 | (call-interactively 'calc-transpose)) | |
720 | :keys "v t" | |
721 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 722 | ["det(1:)" |
396dd4da BG |
723 | (progn |
724 | (require 'calc-mtx) | |
725 | (call-interactively 'calc-mdet)) | |
726 | :keys "V D" | |
727 | :active (>= (calc-stack-size) 1)] | |
728 | ["trace(1:)" | |
729 | (progn | |
730 | (require 'calc-mtx) | |
731 | (call-interactively 'calc-mtrace)) | |
732 | :keys "V T" | |
733 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 734 | ["LUD decompose (1:)" |
396dd4da BG |
735 | (progn |
736 | (require 'calc-mtx) | |
737 | (call-interactively 'calc-mlud)) | |
738 | :keys "V L" | |
739 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 740 | ["Extract a row from (1:)" |
396dd4da BG |
741 | (progn |
742 | (require 'calc-vec) | |
743 | (call-interactively 'calc-mrow)) | |
744 | :keys "v r" | |
745 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 746 | ["Extract a column from (1:)" |
396dd4da BG |
747 | (progn |
748 | (require 'calc-vec) | |
749 | (call-interactively 'calc-mcol)) | |
750 | :keys "v c" | |
751 | :active (>= (calc-stack-size) 1)]) | |
752 | (list "Vectors" | |
753 | ["Extract the first element of (1:)" | |
754 | (progn | |
755 | (require 'calc-vec) | |
756 | (call-interactively 'calc-head)) | |
757 | :keys "v h" | |
758 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 759 | ["Extract an element from (1:)" |
396dd4da BG |
760 | (progn |
761 | (require 'calc-vec) | |
762 | (call-interactively 'calc-mrow)) | |
763 | :keys "v r" | |
764 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 765 | ["Reverse (1:)" |
396dd4da BG |
766 | (progn |
767 | (require 'calc-vec) | |
768 | (call-interactively 'calc-reverse-vector)) | |
769 | :keys "v v" | |
770 | :active (>= (calc-stack-size) 1)] | |
771 | ["Unpack (1:)" | |
772 | (progn | |
773 | (require 'calc-vec) | |
774 | (call-interactively 'calc-unpack)) | |
775 | :keys "v u" | |
776 | :active (>= (calc-stack-size) 1) | |
777 | :help "Separate the elements of (1:)"] | |
c80e3b4a | 778 | ["(2:) cross (1:)" |
396dd4da BG |
779 | (progn |
780 | (require 'calc-vec) | |
781 | (call-interactively 'calc-cross)) | |
782 | :keys "V C" | |
783 | :active (>= (calc-stack-size) 2) | |
784 | :help "The cross product in R^3"] | |
c80e3b4a PE |
785 | ["(2:) dot (1:)" |
786 | calc-mult | |
396dd4da BG |
787 | :keys "*" |
788 | :active (>= (calc-stack-size) 2) | |
789 | :help "The dot product"] | |
c80e3b4a | 790 | ["Map a function across (1:)" |
396dd4da BG |
791 | (progn |
792 | (require 'calc-map) | |
793 | (call-interactively 'calc-map)) | |
794 | :keys "V M" | |
795 | :active (>= (calc-stack-size) 1) | |
796 | :help "Apply a function to each element"]) | |
797 | (list "Vectors As Sets" | |
c80e3b4a | 798 | ["Remove duplicates from (1:)" |
396dd4da BG |
799 | (progn |
800 | (require 'calc-vec) | |
801 | (call-interactively 'calc-remove-duplicates)) | |
802 | :keys "V +" | |
803 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 804 | ["(2:) union (1:)" |
396dd4da BG |
805 | (progn |
806 | (require 'calc-vec) | |
807 | (call-interactively 'calc-set-union)) | |
808 | :keys "V V" | |
809 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a | 810 | ["(2:) intersect (1:)" |
396dd4da BG |
811 | (progn |
812 | (require 'calc-vec) | |
813 | (call-interactively 'calc-set-intersect)) | |
814 | :keys "V ^" | |
815 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a | 816 | ["(2:) \\ (1:)" |
396dd4da BG |
817 | (progn |
818 | (require 'calc-vec) | |
819 | (call-interactively 'calc-set-difference)) | |
820 | :keys "V -" | |
821 | :help "Set difference" | |
822 | :active (>= (calc-stack-size) 2)]) | |
823 | (list "Statistics On Vectors" | |
c80e3b4a | 824 | ["length(1:)" |
396dd4da BG |
825 | (progn |
826 | (require 'calc-stat) | |
827 | (call-interactively 'calc-vector-count)) | |
828 | :keys "u #" | |
829 | :active (>= (calc-stack-size) 1) | |
830 | :help "The number of data values"] | |
c80e3b4a | 831 | ["sum(1:)" |
396dd4da BG |
832 | (progn |
833 | (require 'calc-stat) | |
834 | (call-interactively 'calc-vector-sum)) | |
835 | :keys "u +" | |
836 | :active (>= (calc-stack-size) 1) | |
837 | :help "The sum of the data values"] | |
c80e3b4a | 838 | ["max(1:)" |
396dd4da BG |
839 | (progn |
840 | (require 'calc-stat) | |
c80e3b4a | 841 | (call-interactively 'calc-vector-max)) |
396dd4da BG |
842 | :keys "u x" |
843 | :active (>= (calc-stack-size) 1) | |
844 | :help "The maximum of the data values"] | |
c80e3b4a | 845 | ["min(1:)" |
396dd4da BG |
846 | (progn |
847 | (require 'calc-stat) | |
c80e3b4a | 848 | (call-interactively 'calc-vector-min)) |
396dd4da BG |
849 | :keys "u N" |
850 | :active (>= (calc-stack-size) 1) | |
c80e3b4a PE |
851 | :help "The minimum of the data values"] |
852 | ["mean(1:)" | |
396dd4da BG |
853 | (progn |
854 | (require 'calc-stat) | |
855 | (call-interactively 'calc-vector-mean)) | |
856 | :keys "u M" | |
857 | :active (>= (calc-stack-size) 1) | |
858 | :help "The average (arithmetic mean) of the data values"] | |
859 | ["mean(1:) with error" | |
860 | (progn | |
861 | (require 'calc-stat) | |
862 | (call-interactively 'calc-vector-mean-error)) | |
863 | :keys "I u M" | |
864 | :active (>= (calc-stack-size) 1) | |
865 | :help "The average (arithmetic mean) of the data values as an error form"] | |
c80e3b4a | 866 | ["sdev(1:)" |
396dd4da BG |
867 | (progn |
868 | (require 'calc-stat) | |
869 | (call-interactively 'calc-vector-sdev)) | |
870 | :keys "u S" | |
871 | :active (>= (calc-stack-size) 1) | |
872 | :help "The sample sdev, sqrt[sum((values - mean)^2)/(N-1)]"] | |
c80e3b4a | 873 | ["variance(1:)" |
396dd4da BG |
874 | (progn |
875 | (require 'calc-stat) | |
876 | (call-interactively 'calc-vector-variance)) | |
877 | :keys "H u S" | |
878 | :active (>= (calc-stack-size) 1) | |
879 | :help "The sample variance, sum((values - mean)^2)/(N-1)"] | |
c80e3b4a | 880 | ["population sdev(1:)" |
396dd4da BG |
881 | (progn |
882 | (require 'calc-stat) | |
883 | (call-interactively 'calc-vector-pop-sdev)) | |
884 | :keys "I u S" | |
885 | :active (>= (calc-stack-size) 1) | |
886 | :help "The population sdev, sqrt[sum((values - mean)^2)/N]"] | |
c80e3b4a | 887 | ["population variance(1:)" |
396dd4da BG |
888 | (progn |
889 | (require 'calc-stat) | |
890 | (call-interactively 'calc-vector-pop-variance)) | |
891 | :keys "H I u S" | |
892 | :active (>= (calc-stack-size) 1) | |
893 | :help "The population variance, sum((values - mean)^2)/N"] | |
894 | ["median(1:)" | |
895 | (progn | |
896 | (require 'calc-stat) | |
897 | (call-interactively 'calc-vector-median)) | |
898 | :keys "H u M" | |
899 | :active (>= (calc-stack-size) 1) | |
900 | :help "The median of the data values"] | |
901 | ["harmonic mean(1:)" | |
902 | (progn | |
903 | (require 'calc-stat) | |
904 | (call-interactively 'calc-vector-harmonic-mean)) | |
905 | :keys "H I u M" | |
906 | :active (>= (calc-stack-size) 1)] | |
907 | ["geometric mean(1:)" | |
908 | (progn | |
909 | (require 'calc-stat) | |
910 | (call-interactively 'calc-vector-geometric-mean)) | |
911 | :keys "u G" | |
912 | :active (>= (calc-stack-size) 1)] | |
913 | ["arithmetic-geometric mean(1:)" | |
914 | (progn | |
915 | (require 'calc-stat) | |
916 | (let ((calc-hyperbolic-flag t)) | |
917 | (call-interactively 'calc-vector-geometric-mean))) | |
918 | :keys "H u G" | |
919 | :active (>= (calc-stack-size) 1)] | |
2804e0bd JB |
920 | ;; ["RMS(1:)" |
921 | ;; (progn (require 'calc-arith) | |
922 | ;; (call-interactively 'calc-abs)) | |
923 | ;; :keys "A" | |
924 | ;; :active (>= (calc-stack-size) 1) | |
925 | ;; :help "The root-mean-square, or quadratic mean"] | |
926 | ) | |
396dd4da BG |
927 | ["Abbreviate long vectors" |
928 | (progn | |
929 | (require 'calc-mode) | |
930 | (call-interactively 'calc-full-vectors)) | |
931 | :keys "v ." | |
932 | :style toggle | |
933 | :selected (not calc-full-vectors)] | |
934 | "----" | |
935 | ["Help on Matrices/Vectors" | |
936 | (calc-info-goto-node "Matrix Functions")]) | |
937 | "Menu for Calc's vector and matrix functions.") | |
938 | ||
939 | (defvar calc-units-menu | |
940 | (list "Units" | |
c80e3b4a | 941 | ["Convert units in (1:)" |
396dd4da BG |
942 | (progn |
943 | (require 'calc-units) | |
944 | (call-interactively 'calc-convert-units )) | |
945 | :keys "u c" | |
946 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 947 | ["Convert temperature in (1:)" |
396dd4da BG |
948 | (progn |
949 | (require 'calc-units) | |
950 | (call-interactively 'calc-convert-temperature)) | |
951 | :keys "u t" | |
952 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 953 | ["Simplify units in (1:)" |
396dd4da BG |
954 | (progn |
955 | (require 'calc-units) | |
956 | (call-interactively 'calc-simplify-units)) | |
957 | :keys "u s" | |
958 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 959 | ["View units table" |
396dd4da BG |
960 | (progn |
961 | (require 'calc-units) | |
962 | (call-interactively 'calc-view-units-table)) | |
963 | :keys "u V"] | |
1fe275ee JB |
964 | (list "Logarithmic Units" |
965 | ["Convert (1:) to dB (power)" | |
966 | (progn | |
967 | (require 'calc-units) | |
968 | (call-interactively 'calc-db)) | |
969 | :keys "l d" | |
970 | :active (>= (calc-stack-size) 1)] | |
971 | ["Convert (2:) to dB (power) with reference level (1:)" | |
972 | (progn | |
973 | (require 'calc-units) | |
974 | (let ((calc-option-flag t)) | |
975 | (call-interactively 'calc-db))) | |
976 | :keys "O l d" | |
977 | :active (>= (calc-stack-size) 2)] | |
978 | ["Convert (1:) to Np (power)" | |
979 | (progn | |
980 | (require 'calc-units) | |
981 | (call-interactively 'calc-np)) | |
982 | :keys "l n" | |
983 | :active (>= (calc-stack-size) 1)] | |
984 | ["Convert (2:) to Np (power) with reference level (1:)" | |
985 | (progn | |
986 | (require 'calc-units) | |
987 | (let ((calc-option-flag t)) | |
988 | (call-interactively 'calc-np))) | |
989 | :keys "O l n" | |
990 | :active (>= (calc-stack-size) 2)] | |
991 | ["Convert (1:) to power quantity" | |
992 | (progn | |
993 | (require 'calc-units) | |
994 | (call-interactively 'calc-lu-quant)) | |
995 | :keys "l q" | |
996 | :active (>= (calc-stack-size) 1)] | |
997 | ["Convert (2:) to power quantity with reference level (1:)" | |
998 | (progn | |
999 | (require 'calc-units) | |
1000 | (let ((calc-option-flag t)) | |
1001 | (call-interactively 'calc-lu-quant))) | |
1002 | :keys "O l q" | |
1003 | :active (>= (calc-stack-size) 2)] | |
1004 | "----" | |
1005 | ["Convert (1:) to dB (field)" | |
1006 | (progn | |
1007 | (require 'calc-units) | |
1008 | (let ((calc-hyperbolic-flag t)) | |
1009 | (call-interactively 'calc-db))) | |
1010 | :keys "H l d" | |
1011 | :active (>= (calc-stack-size) 1)] | |
1012 | ["Convert (2:) to dB (field) with reference level (1:)" | |
1013 | (progn | |
1014 | (require 'calc-units) | |
1015 | (let ((calc-option-flag t) | |
1016 | (calc-hyperbolic-flag t)) | |
1017 | (call-interactively 'calc-db))) | |
1018 | :keys "O H l d" | |
1019 | :active (>= (calc-stack-size) 2)] | |
1020 | ["Convert (1:) to Np (field)" | |
1021 | (progn | |
1022 | (require 'calc-units) | |
1023 | (let ((calc-hyperbolic-flag t)) | |
1024 | (call-interactively 'calc-np))) | |
1025 | :keys "H l n" | |
1026 | :active (>= (calc-stack-size) 1)] | |
1027 | ["Convert (2:) to Np (field) with reference level (1:)" | |
1028 | (progn | |
1029 | (require 'calc-units) | |
1030 | (let ((calc-option-flag t) | |
1031 | (calc-hyperbolic-flag t)) | |
1032 | (call-interactively 'calc-np))) | |
1033 | :keys "O H l d" | |
1034 | :active (>= (calc-stack-size) 2)] | |
1035 | ["Convert (1:) to field quantity" | |
1036 | (progn | |
1037 | (require 'calc-units) | |
1038 | (let ((calc-hyperbolic-flag t)) | |
1039 | (call-interactively 'calc-lu-quant))) | |
1040 | :keys "H l q" | |
1041 | :active (>= (calc-stack-size) 1)] | |
1042 | ["Convert (2:) to field quantity with reference level (1:)" | |
1043 | (progn | |
1044 | (require 'calc-units) | |
1045 | (let ((calc-option-flag t) | |
1046 | (calc-hyperbolic-flag)) | |
1047 | (call-interactively 'calc-lu-quant))) | |
1048 | :keys "O H l q" | |
1049 | :active (>= (calc-stack-size) 2)]) | |
1050 | (list "Musical Notes" | |
1051 | ["Convert (1:) to scientific pitch notation" | |
1052 | (progn | |
1053 | (require 'calc-units) | |
1054 | (call-interactively 'calc-spn)) | |
1055 | :keys "l s" | |
1056 | :active (>= (calc-stack-size) 1)] | |
1057 | ["Convert (1:) to midi number" | |
1058 | (progn | |
1059 | (require 'calc-units) | |
1060 | (call-interactively 'calc-midi)) | |
1061 | :keys "l m" | |
1062 | :active (>= (calc-stack-size) 1)] | |
1063 | ["Convert (1:) to frequency" | |
1064 | (progn | |
1065 | (require 'calc-units) | |
1066 | (call-interactively 'calc-freq)) | |
1067 | :keys "l f" | |
1068 | :active (>= (calc-stack-size) 1)]) | |
396dd4da BG |
1069 | "----" |
1070 | ["Help on Units" | |
1071 | (calc-info-goto-node "Units")]) | |
1072 | "Menu for Calc's units functions.") | |
1073 | ||
1074 | (defvar calc-variables-menu | |
1075 | (list "Variables" | |
c80e3b4a | 1076 | ["Store (1:) into a variable" |
396dd4da BG |
1077 | (progn |
1078 | (require 'calc-store) | |
1079 | (call-interactively 'calc-store)) | |
1080 | :keys "s s" | |
1081 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 1082 | ["Recall a variable value" |
396dd4da BG |
1083 | (progn |
1084 | (require 'calc-store) | |
1085 | (call-interactively 'calc-recall )) | |
1086 | :keys "s r"] | |
c80e3b4a | 1087 | ["Edit the value of a variable" |
396dd4da BG |
1088 | (progn |
1089 | (require 'calc-store) | |
1090 | (call-interactively 'calc-edit-variable)) | |
1091 | :keys "s e"] | |
c80e3b4a | 1092 | ["Exchange (1:) with a variable value" |
396dd4da BG |
1093 | (progn |
1094 | (require 'calc-store) | |
1095 | (call-interactively 'calc-store-exchange)) | |
1096 | :keys "s x" | |
1097 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 1098 | ["Clear variable value" |
396dd4da BG |
1099 | (progn |
1100 | (require 'calc-store) | |
1101 | (call-interactively 'calc-unstore)) | |
1102 | :keys "s u"] | |
c80e3b4a | 1103 | ["Evaluate variables in (1:)" |
396dd4da BG |
1104 | (progn |
1105 | (require 'calc-ext) | |
1106 | (call-interactively 'calc-evaluate)) | |
1107 | :keys "=" | |
1108 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 1109 | ["Evaluate (1:), assigning a value to a variable" |
396dd4da BG |
1110 | (progn |
1111 | (require 'calc-store) | |
1112 | (call-interactively 'calc-let)) | |
1113 | :keys "s l" | |
1114 | :active (>= (calc-stack-size) 1) | |
1115 | :help "Evaluate (1:) under a temporary assignment of a variable"] | |
1116 | "----" | |
1117 | ["Help on Variables" | |
1118 | (calc-info-goto-node "Store and Recall")]) | |
1119 | "Menu for Calc's variables.") | |
1120 | ||
1121 | (defvar calc-stack-menu | |
1122 | (list "Stack" | |
c80e3b4a PE |
1123 | ["Remove (1:)" |
1124 | calc-pop | |
396dd4da BG |
1125 | :keys "DEL" |
1126 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a PE |
1127 | ["Switch (1:) and (2:)" |
1128 | calc-roll-down | |
396dd4da BG |
1129 | :keys "TAB" |
1130 | :active (>= (calc-stack-size) 2)] | |
c80e3b4a PE |
1131 | ["Duplicate (1:)" |
1132 | calc-enter | |
396dd4da BG |
1133 | :keys "RET" |
1134 | :active (>= (calc-stack-size) 1)] | |
c80e3b4a | 1135 | ["Edit (1:)" |
396dd4da BG |
1136 | (progn |
1137 | (require 'calc-yank) | |
1138 | (call-interactively calc-edit)) | |
1139 | :keys "`" | |
1140 | :active (>= (calc-stack-size) 1)] | |
1141 | "----" | |
1142 | ["Help on Stack" | |
1143 | (calc-info-goto-node "Stack and Trail")]) | |
1144 | "Menu for Calc's stack functions.") | |
1145 | ||
1146 | (defvar calc-errors-menu | |
1147 | (list "Undo" | |
c80e3b4a | 1148 | ["Undo" |
396dd4da BG |
1149 | (progn |
1150 | (require 'calc-undo) | |
1151 | (call-interactively 'calc-undo)) | |
1152 | :keys "U"] | |
c80e3b4a | 1153 | ["Redo" |
396dd4da BG |
1154 | (progn |
1155 | (require 'calc-undo) | |
1156 | (call-interactively 'calc-redo)) | |
1157 | :keys "D"] | |
1158 | "----" | |
1159 | ["Help on Undo" | |
1160 | (progn | |
1161 | (calc-info-goto-node "Introduction") | |
1162 | (Info-goto-node "Undo"))])) | |
1163 | ||
1164 | (defvar calc-modes-menu | |
1165 | (list "Modes" | |
c80e3b4a | 1166 | ["Precision" |
396dd4da BG |
1167 | (progn |
1168 | (require 'calc-ext) | |
1169 | (call-interactively 'calc-precision)) | |
1170 | :keys "p" | |
1171 | :help "Set the precision for floating point calculations"] | |
1172 | ["Fraction mode" | |
1173 | (progn | |
1174 | (require 'calc-frac) | |
1175 | (call-interactively 'calc-frac-mode)) | |
1176 | :keys "m f" | |
1177 | :style toggle | |
1178 | :selected calc-prefer-frac | |
1179 | :help "Leave integer quotients as fractions"] | |
1180 | ["Symbolic mode" | |
1181 | (lambda () | |
1182 | (interactive) | |
1183 | (require 'calc-mode) | |
1184 | (calc-symbolic-mode nil)) | |
1185 | :keys "m s" | |
1186 | :style toggle | |
1187 | :selected calc-symbolic-mode | |
1188 | :help "Leave functions producing inexact answers in symbolic form"] | |
1189 | ["Infinite mode" | |
1190 | (lambda () | |
1191 | (interactive) | |
1192 | (require 'calc-mode) | |
1193 | (calc-infinite-mode nil)) | |
1194 | :keys "m i" | |
1195 | :style toggle | |
1196 | :selected calc-infinite-mode | |
1197 | :help "Let expressions like 1/0 produce infinite results"] | |
1198 | ["Abbreviate long vectors" | |
1199 | (progn | |
1200 | (require 'calc-mode) | |
1201 | (call-interactively 'calc-full-vectors)) | |
1202 | :keys "v ." | |
1203 | :style toggle | |
1204 | :selected (not calc-full-vectors)] | |
0fc50303 JB |
1205 | (list "Simplification" |
1206 | ["No simplification mode" | |
1207 | (progn | |
1208 | (require 'calc-mode) | |
1209 | (calc-no-simplify-mode t)) | |
1210 | :keys "m O" | |
1211 | :style radio | |
1212 | :selected (eq calc-simplify-mode 'none) | |
1213 | :help "No simplifications are done automatically"] | |
1214 | ["Numeric simplification mode" | |
1215 | (progn | |
1216 | (require 'calc-mode) | |
1217 | (calc-num-simplify-mode t)) | |
1218 | :keys "m N" | |
1219 | :style radio | |
1220 | :selected (eq calc-simplify-mode 'num) | |
1221 | :help "Only numeric simplifications are done automatically"] | |
1222 | ["Basic simplification mode" | |
1223 | (progn | |
1224 | (require 'calc-mode) | |
1225 | (calc-basic-simplify-mode t)) | |
1226 | :keys "m I" | |
1227 | :style radio | |
1228 | :selected (eq calc-simplify-mode nil) | |
1229 | :help "Only basic simplifications are done automatically"] | |
1230 | ["Binary simplification mode" | |
1231 | (progn | |
1232 | (require 'calc-mode) | |
1233 | (calc-bin-simplify-mode t)) | |
1234 | :keys "m B" | |
1235 | :style radio | |
1236 | :selected (eq calc-simplify-mode 'binary) | |
1237 | :help "Basic simplifications with binary clipping are done automatically"] | |
1238 | ["Algebraic simplification mode" | |
1239 | (progn | |
1240 | (require 'calc-mode) | |
1241 | (calc-alg-simplify-mode t)) | |
1242 | :keys "m A" | |
1243 | :style radio | |
1244 | :selected (eq calc-simplify-mode 'alg) | |
1245 | :help "Standard algebraic simplifications are done automatically"] | |
1246 | ["Extended simplification mode" | |
1247 | (progn | |
1248 | (require 'calc-mode) | |
1249 | (calc-ext-simplify-mode t)) | |
1250 | :keys "m E" | |
1251 | :style radio | |
1252 | :selected (eq calc-simplify-mode 'ext) | |
1253 | :help "Extended (unsafe) simplifications are done automatically"] | |
1254 | ["Units simplification mode" | |
1255 | (progn | |
1256 | (require 'calc-mode) | |
1257 | (calc-units-simplify-mode t)) | |
1258 | :keys "m U" | |
1259 | :style radio | |
1260 | :selected (eq calc-simplify-mode 'units) | |
1261 | :help "Algebraic and unit simplifications are done automatically"]) | |
396dd4da BG |
1262 | (list "Angle Measure" |
1263 | ["Radians" | |
1264 | (progn | |
1265 | (require 'calc-math) | |
1266 | (call-interactively 'calc-radians-mode)) | |
1267 | :keys "m r" | |
1268 | :style radio | |
1269 | :selected (eq calc-angle-mode 'rad)] | |
1270 | ["Degrees" | |
1271 | (progn | |
1272 | (require 'calc-math) | |
1273 | (call-interactively 'calc-degrees-mode)) | |
1274 | :keys "m d" | |
1275 | :style radio | |
1276 | :selected (eq calc-angle-mode 'deg)] | |
1277 | ["HMS" | |
1278 | (progn | |
1279 | (require 'calc-math) | |
1280 | (call-interactively 'calc-hms-mode)) | |
1281 | :keys "m h" | |
1282 | :style radio | |
1283 | :selected (eq calc-angle-mode 'hms)]) | |
1284 | (list "Radix" | |
1285 | ["Decimal" | |
1286 | (progn | |
1287 | (require 'calc-bin) | |
1288 | (call-interactively 'calc-decimal-radix)) | |
1289 | :keys "d 0" | |
1290 | :style radio | |
f3550dac JB |
1291 | :selected (and (= calc-number-radix 10) |
1292 | (not calc-twos-complement-mode))] | |
396dd4da BG |
1293 | ["Binary" |
1294 | (progn | |
1295 | (require 'calc-bin) | |
1296 | (call-interactively 'calc-binary-radix)) | |
1297 | :keys "d 2" | |
1298 | :style radio | |
f3550dac JB |
1299 | :selected (and (= calc-number-radix 2) |
1300 | (not calc-twos-complement-mode))] | |
396dd4da BG |
1301 | ["Octal" |
1302 | (progn | |
1303 | (require 'calc-bin) | |
1304 | (call-interactively 'calc-octal-radix)) | |
1305 | :keys "d 8" | |
1306 | :style radio | |
f3550dac JB |
1307 | :selected (and (= calc-number-radix 8) |
1308 | (not calc-twos-complement-mode))] | |
396dd4da BG |
1309 | ["Hexadecimal" |
1310 | (progn | |
1311 | (require 'calc-bin) | |
1312 | (call-interactively 'calc-hex-radix)) | |
1313 | :keys "d 6" | |
1314 | :style radio | |
f3550dac JB |
1315 | :selected (and (= calc-number-radix 16) |
1316 | (not calc-twos-complement-mode))] | |
396dd4da BG |
1317 | ["Other" |
1318 | (progn | |
1319 | (require 'calc-bin) | |
1320 | (call-interactively 'calc-radix)) | |
1321 | :keys "d r" | |
1322 | :style radio | |
f3550dac JB |
1323 | :selected (and |
1324 | (not calc-twos-complement-mode) | |
1325 | (not | |
1326 | (or | |
1327 | (= calc-number-radix 10) | |
1328 | (= calc-number-radix 2) | |
1329 | (= calc-number-radix 8) | |
1330 | (= calc-number-radix 16))))] | |
1331 | ["--Two's Complement--" | |
1332 | (lambda () ()) | |
1333 | :style radio | |
1334 | :selected nil] | |
1335 | ["Binary" | |
1336 | (progn | |
1337 | (require 'calc-bin) | |
c80e3b4a | 1338 | (call-interactively |
f3550dac JB |
1339 | (lambda () (interactive) (calc-binary-radix t)))) |
1340 | :keys "C-u d 2" | |
1341 | :style radio | |
1342 | :selected (and (= calc-number-radix 2) | |
1343 | calc-twos-complement-mode)] | |
1344 | ["Octal" | |
1345 | (progn | |
1346 | (require 'calc-bin) | |
1347 | (call-interactively | |
1348 | (lambda () (interactive) (calc-octal-radix t)))) | |
1349 | :keys "C-u d 8" | |
1350 | :style radio | |
1351 | :selected (and (= calc-number-radix 8) | |
1352 | calc-twos-complement-mode)] | |
1353 | ["Hexadecimal" | |
1354 | (progn | |
1355 | (require 'calc-bin) | |
1356 | (call-interactively | |
1357 | (lambda () (interactive) (calc-hex-radix t)))) | |
1358 | :keys "C-u d 6" | |
1359 | :style radio | |
1360 | :selected (and (= calc-number-radix 16) | |
1361 | calc-twos-complement-mode)]) | |
396dd4da BG |
1362 | (list "Float Format" |
1363 | ["Normal" | |
1364 | (progn | |
1365 | (require 'calc-mode) | |
1366 | (call-interactively 'calc-normal-notation)) | |
1367 | :keys "d n" | |
1368 | :style radio | |
1369 | :selected (eq (car-safe calc-float-format) 'float)] | |
1370 | ["Fixed point" | |
1371 | (progn | |
1372 | (require 'calc-mode) | |
1373 | (call-interactively 'calc-fix-notation)) | |
1374 | :keys "d f" | |
1375 | :style radio | |
1376 | :selected (eq (car-safe calc-float-format) 'fix)] | |
1377 | ["Scientific notation" | |
1378 | (progn | |
1379 | (require 'calc-mode) | |
1380 | (call-interactively 'calc-sci-notation)) | |
1381 | :keys "d s" | |
1382 | :style radio | |
1383 | :selected (eq (car-safe calc-float-format) 'sci)] | |
1384 | ["Engineering notation" | |
1385 | (progn | |
1386 | (require 'calc-mode) | |
1387 | (call-interactively 'calc-eng-notation)) | |
1388 | :keys "d e" | |
1389 | :style radio | |
1390 | :selected (eq (car-safe calc-float-format) 'eng)]) | |
c80e3b4a | 1391 | (list "Complex Format" |
396dd4da BG |
1392 | ["Default" |
1393 | (progn | |
1394 | (require 'calc-cplx) | |
1395 | (calc-complex-notation)) | |
1396 | :style radio | |
1397 | :selected (not calc-complex-format) | |
1398 | :keys "d c" | |
1399 | :help "Display complex numbers as ordered pairs."] | |
1400 | ["i notation" | |
1401 | (progn | |
1402 | (require 'calc-cplx) | |
1403 | (calc-i-notation)) | |
1404 | :style radio | |
1405 | :selected (eq calc-complex-format 'i) | |
1406 | :keys "d i" | |
1407 | :help "Display complex numbers as a+bi."] | |
1408 | ["j notation" | |
1409 | (progn | |
1410 | (require 'calc-cplx) | |
1411 | (calc-i-notation)) | |
1412 | :style radio | |
1413 | :selected (eq calc-complex-format 'j) | |
1414 | :keys "d j" | |
1415 | :help "Display complex numbers as a+bj."] | |
1416 | ["Other" | |
1417 | (calc-complex-notation) | |
1418 | :style radio | |
1419 | :selected (and calc-complex-format | |
1420 | (not (eq calc-complex-format 'i)) | |
1421 | (not (eq calc-complex-format 'j))) | |
1422 | :active nil] | |
1423 | "----" | |
1424 | ["Polar mode" | |
1425 | (progn | |
1426 | (require 'calc-cplx) | |
1427 | (calc-polar-mode nil)) | |
1428 | :style toggle | |
1429 | :selected (eq calc-complex-mode 'polar) | |
1430 | :keys "m p" | |
1431 | :help "Prefer polar form for complex numbers."]) | |
1432 | (list "Algebraic" | |
1433 | ["Normal" | |
1434 | (progn | |
1435 | (require 'calc-mode) | |
1436 | (cond | |
1437 | (calc-incomplete-algebraic-mode | |
1438 | (calc-algebraic-mode t)) | |
1439 | (calc-algebraic-mode | |
1440 | (calc-algebraic-mode nil)))) | |
1441 | :style radio | |
1442 | :selected (not calc-algebraic-mode)] | |
1443 | ["Algebraic mode" | |
1444 | (progn | |
1445 | (require 'calc-mode) | |
1446 | (if (or | |
1447 | calc-incomplete-algebraic-mode | |
1448 | (not calc-algebraic-mode)) | |
1449 | (calc-algebraic-mode nil))) | |
1450 | :keys "m a" | |
1451 | :style radio | |
1452 | :selected (and calc-algebraic-mode | |
1453 | (not calc-incomplete-algebraic-mode)) | |
1454 | :help "Keys which start numeric entry also start algebraic entry"] | |
1455 | ["Incomplete algebraic mode" | |
1456 | (progn | |
1457 | (require 'calc-mode) | |
1458 | (unless calc-incomplete-algebraic-mode | |
1459 | (calc-algebraic-mode t))) | |
1460 | :keys "C-u m a" | |
1461 | :style radio | |
1462 | :selected calc-incomplete-algebraic-mode | |
1463 | :help "Only ( and [ begin algebraic entry"] | |
1464 | ["Total algebraic mode" | |
1465 | (progn | |
1466 | (require 'calc-mode) | |
1467 | (unless (eq calc-algebraic-mode 'total) | |
1468 | (calc-total-algebraic-mode nil))) | |
1469 | :keys "m t" | |
1470 | :style radio | |
1471 | :selected (eq calc-algebraic-mode 'total) | |
1472 | :help "All regular letters and punctuation begin algebraic entry"]) | |
0fc50303 JB |
1473 | (list "Matrix" |
1474 | ["Off" | |
1475 | (progn | |
1476 | (require 'calc-mode) | |
1477 | (calc-matrix-mode -1)) | |
1478 | :style radio | |
1479 | :selected (eq calc-matrix-mode nil) | |
1480 | :help "Variables are not assumed to be matrix or scalar"] | |
1481 | ["Matrix mode" | |
1482 | (progn | |
1483 | (require 'calc-mode) | |
1484 | (calc-matrix-mode -2)) | |
1485 | :style radio | |
1486 | :selected (eq calc-matrix-mode 'matrix) | |
1487 | :help "Variables are assumed to be matrices"] | |
1488 | ["Square matrix mode" | |
1489 | (progn | |
1490 | (require 'calc-mode) | |
1491 | (calc-matrix-mode '(4))) | |
1492 | :style radio | |
1493 | :selected (eq calc-matrix-mode 'sqmatrix) | |
1494 | :help "Variables are assumed to be square matrices"] | |
1495 | ["Dimensioned matrix mode" | |
1496 | (let ((dim (string-to-number (read-from-minibuffer "Dimension: ")))) | |
1497 | (if (natnump dim) | |
1498 | (progn | |
1499 | (require 'calc-mode) | |
1500 | (calc-matrix-mode dim)) | |
1501 | (error "The dimension must be a positive integer"))) | |
1502 | :style radio | |
1503 | :selected (and (integerp calc-matrix-mode) (> calc-matrix-mode 0)) | |
1504 | :help "Variables are assumed to be NxN matrices"] | |
b5e94c8e | 1505 | ["Scalar mode" |
0fc50303 JB |
1506 | (progn |
1507 | (require 'calc-mode) | |
1508 | (calc-matrix-mode 0)) | |
1509 | :style radio | |
1510 | :selected (eq calc-matrix-mode 'scalar) | |
1511 | :help "Variables are assumed to be scalars"]) | |
396dd4da BG |
1512 | (list "Language" |
1513 | ["Normal" | |
1514 | (progn | |
1515 | (require 'calc-lang) | |
1516 | (call-interactively 'calc-normal-language)) | |
1517 | :keys "d N" | |
1518 | :style radio | |
1519 | :selected (eq calc-language nil)] | |
1520 | ["Big" | |
1521 | (progn | |
1522 | (require 'calc-lang) | |
1523 | (call-interactively 'calc-big-language)) | |
1524 | :keys "d B" | |
1525 | :style radio | |
1526 | :selected (eq calc-language 'big) | |
1527 | :help "Use textual approximations to various mathematical notations"] | |
1528 | ["Flat" | |
1529 | (progn | |
1530 | (require 'calc-lang) | |
1531 | (call-interactively 'calc-flat-language)) | |
1532 | :keys "d O" | |
1533 | :style radio | |
1534 | :selected (eq calc-language 'flat) | |
1535 | :help "Write matrices on a single line"] | |
1536 | ["C" | |
1537 | (progn | |
1538 | (require 'calc-lang) | |
1539 | (call-interactively 'calc-c-language)) | |
1540 | :keys "d C" | |
1541 | :style radio | |
1542 | :selected (eq calc-language 'c)] | |
1543 | ["Pascal" | |
1544 | (progn | |
1545 | (require 'calc-lang) | |
1546 | (call-interactively 'calc-pascal-language)) | |
1547 | :keys "d P" | |
1548 | :style radio | |
1549 | :selected (eq calc-language 'pascal)] | |
1550 | ["Fortran" | |
1551 | (progn | |
1552 | (require 'calc-lang) | |
1553 | (call-interactively 'calc-fortran-language)) | |
1554 | :keys "d F" | |
1555 | :style radio | |
1556 | :selected (eq calc-language 'fortran)] | |
1557 | ["TeX" | |
1558 | (progn | |
1559 | (require 'calc-lang) | |
1560 | (call-interactively 'calc-tex-language)) | |
1561 | :keys "d T" | |
1562 | :style radio | |
1563 | :selected (eq calc-language 'tex)] | |
1564 | ["LaTeX" | |
1565 | (progn | |
1566 | (require 'calc-lang) | |
1567 | (call-interactively 'calc-latex-language)) | |
1568 | :keys "d L" | |
1569 | :style radio | |
1570 | :selected (eq calc-language 'latex)] | |
1571 | ["Eqn" | |
1572 | (progn | |
1573 | (require 'calc-lang) | |
1574 | (call-interactively 'calc-eqn-language)) | |
1575 | :keys "d E" | |
1576 | :style radio | |
1577 | :selected (eq calc-language 'eqn)] | |
1578 | ["Yacas" | |
1579 | (progn | |
1580 | (require 'calc-lang) | |
1581 | (call-interactively 'calc-yacas-language)) | |
1582 | :keys "d Y" | |
1583 | :style radio | |
1584 | :selected (eq calc-language 'yacas)] | |
1585 | ["Maxima" | |
1586 | (progn | |
1587 | (require 'calc-lang) | |
1588 | (call-interactively 'calc-maxima-language)) | |
1589 | :keys "d X" | |
1590 | :style radio | |
1591 | :selected (eq calc-language 'maxima)] | |
1592 | ["Giac" | |
1593 | (progn | |
1594 | (require 'calc-lang) | |
1595 | (call-interactively 'calc-giac-language)) | |
1596 | :keys "d A" | |
1597 | :style radio | |
1598 | :selected (eq calc-language 'giac)] | |
1599 | ["Mma" | |
1600 | (progn | |
1601 | (require 'calc-lang) | |
1602 | (call-interactively 'calc-mathematica-language)) | |
1603 | :keys "d M" | |
1604 | :style radio | |
1605 | :selected (eq calc-language 'math)] | |
1606 | ["Maple" | |
1607 | (progn | |
1608 | (require 'calc-lang) | |
1609 | (call-interactively 'calc-maple-language)) | |
1610 | :keys "d W" | |
1611 | :style radio | |
1612 | :selected (eq calc-language 'maple)]) | |
1613 | "----" | |
1614 | ["Save mode settings" calc-save-modes :keys "m m"] | |
1615 | "----" | |
1616 | ["Help on Modes" | |
1617 | (calc-info-goto-node "Mode settings")]) | |
1618 | "Menu for Calc's mode settings.") | |
1619 | ||
1620 | (defvar calc-help-menu | |
1621 | (list "Help" | |
c80e3b4a | 1622 | ["Manual" |
396dd4da BG |
1623 | calc-info |
1624 | :keys "h i"] | |
c80e3b4a PE |
1625 | ["Tutorial" |
1626 | calc-tutorial | |
396dd4da | 1627 | :keys "h t"] |
c80e3b4a PE |
1628 | ["Summary" |
1629 | calc-info-summary | |
396dd4da BG |
1630 | :keys "h s"] |
1631 | "----" | |
c80e3b4a | 1632 | ["Help on Help" |
396dd4da BG |
1633 | (progn |
1634 | (calc-info-goto-node "Introduction") | |
1635 | (Info-goto-node "Help Commands"))]) | |
1636 | "Menu for Calc's help functions.") | |
1637 | ||
445f95e2 GM |
1638 | ;; Needed to make this file loadable in isolation. |
1639 | ;; Another option would be to use calc-load-hook. | |
1640 | (require 'calc) | |
396dd4da BG |
1641 | |
1642 | (easy-menu-define | |
1643 | calc-menu | |
1644 | calc-mode-map | |
1645 | "Menu for Calc." | |
1646 | (list "Calc" | |
1647 | :visible '(eq major-mode 'calc-mode) | |
1648 | calc-arithmetic-menu | |
1649 | calc-scientific-function-menu | |
1650 | calc-algebra-menu | |
1651 | calc-graphics-menu | |
1652 | calc-vectors-menu | |
1653 | calc-units-menu | |
1654 | calc-variables-menu | |
1655 | calc-stack-menu | |
1656 | calc-errors-menu | |
1657 | calc-modes-menu | |
1658 | calc-help-menu | |
c80e3b4a | 1659 | ["Reset" |
396dd4da BG |
1660 | (progn |
1661 | (require 'calc-ext) | |
1662 | (call-interactively 'calc-reset)) | |
1663 | :help "Reset Calc to its initial state"] | |
1664 | ["Quit" calc-quit])) | |
1665 | ||
1666 | (provide 'calc-menu) |