diff options
| author | Colin Walters | 2001-11-19 07:34:59 +0000 |
|---|---|---|
| committer | Colin Walters | 2001-11-19 07:34:59 +0000 |
| commit | 1e253dcb115e9c30fbc190427f26e9a1da332f65 (patch) | |
| tree | 098b9a60e4c9dd3a26b223055e6ac8e42b5b3b6d | |
| parent | 12f1951a27a8c671d74d68540398a0adf674946f (diff) | |
| download | emacs-1e253dcb115e9c30fbc190427f26e9a1da332f65.tar.gz emacs-1e253dcb115e9c30fbc190427f26e9a1da332f65.zip | |
(calc-keypad-mode): New.
(calc-do-keypad): Use it.
(calc-keypad-map): Move into `calc-keypad-mode'.
Change all toplevel `setq' forms to `defvar' forms, and move them
before their first use. Use `when', `unless'. Remove trailing
periods from error forms. Add description and headers suggested by
Emacs Lisp coding conventions.
| -rw-r--r-- | lisp/calc/calc-keypd.el | 447 |
1 files changed, 221 insertions, 226 deletions
diff --git a/lisp/calc/calc-keypd.el b/lisp/calc/calc-keypd.el index 550ba4e7f50..834736a3cf1 100644 --- a/lisp/calc/calc-keypd.el +++ b/lisp/calc/calc-keypd.el | |||
| @@ -1,6 +1,9 @@ | |||
| 1 | ;; Calculator for GNU Emacs, part II [calc-keypd.el] | 1 | ;;; calc-keypd.el --- mouse-capable keypad input for Calc |
| 2 | |||
| 2 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc. |
| 3 | ;; Written by Dave Gillespie, daveg@synaptics.com. | 4 | |
| 5 | ;; Author: David Gillespie <daveg@synaptics.com> | ||
| 6 | ;; Maintainer: Colin Walters <walters@debian.org> | ||
| 4 | 7 | ||
| 5 | ;; This file is part of GNU Emacs. | 8 | ;; This file is part of GNU Emacs. |
| 6 | 9 | ||
| @@ -19,6 +22,9 @@ | |||
| 19 | ;; file named COPYING. Among other things, the copyright notice | 22 | ;; file named COPYING. Among other things, the copyright notice |
| 20 | ;; and this notice must be preserved on all copies. | 23 | ;; and this notice must be preserved on all copies. |
| 21 | 24 | ||
| 25 | ;;; Commentary: | ||
| 26 | |||
| 27 | ;;; Code: | ||
| 22 | 28 | ||
| 23 | 29 | ||
| 24 | ;; This file is autoloaded from calc-ext.el. | 30 | ;; This file is autoloaded from calc-ext.el. |
| @@ -29,9 +35,6 @@ | |||
| 29 | (defun calc-Need-calc-keypd () nil) | 35 | (defun calc-Need-calc-keypd () nil) |
| 30 | 36 | ||
| 31 | 37 | ||
| 32 | |||
| 33 | ;;; Pictorial interface to Calc using a mouse. | ||
| 34 | |||
| 35 | (defvar calc-keypad-buffer nil) | 38 | (defvar calc-keypad-buffer nil) |
| 36 | (defvar calc-keypad-menu 0) | 39 | (defvar calc-keypad-menu 0) |
| 37 | (defvar calc-keypad-full-layout nil) | 40 | (defvar calc-keypad-full-layout nil) |
| @@ -39,30 +42,216 @@ | |||
| 39 | (defvar calc-keypad-prev-input nil) | 42 | (defvar calc-keypad-prev-input nil) |
| 40 | (defvar calc-keypad-said-hello nil) | 43 | (defvar calc-keypad-said-hello nil) |
| 41 | 44 | ||
| 42 | (defvar calc-keypad-map nil) | 45 | ;;; |----+----+----+----+----+----| |
| 43 | (unless calc-keypad-map | 46 | ;;; | ENTER |+/- |EEX |UNDO| <- | |
| 44 | (let ((map (make-sparse-keymap))) | 47 | ;;; |-----+---+-+--+--+-+---++----| |
| 45 | (define-key map " " 'calc-keypad-press) | 48 | ;;; | INV | 7 | 8 | 9 | / | |
| 46 | (define-key map (kbd "RET") 'calc-keypad-press) | 49 | ;;; |-----+-----+-----+-----+-----| |
| 47 | (define-key map (kbd "TAB") 'calc-keypad-menu) | 50 | ;;; | HYP | 4 | 5 | 6 | * | |
| 48 | (define-key map "q" 'calc-keypad-off) | 51 | ;;; |-----+-----+-----+-----+-----| |
| 49 | (define-key map [(mouse-3)] 'calc-keypad-right-click) | 52 | ;;; |EXEC | 1 | 2 | 3 | - | |
| 50 | (define-key map [(mouse-2)] 'calc-keypad-middle-click) | 53 | ;;; |-----+-----+-----+-----+-----| |
| 51 | (define-key map [(mouse-1)] 'calc-keypad-left-click) | 54 | ;;; | OFF | 0 | . | PI | + | |
| 52 | (setq calc-keypad-map map))) | 55 | ;;; |-----+-----+-----+-----+-----| |
| 56 | (defvar calc-keypad-layout | ||
| 57 | '( ( ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over ) | ||
| 58 | ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over ) | ||
| 59 | ( "+/-" calc-change-sign calc-inv (progn -4 calc-pack) ) | ||
| 60 | ( "EEX" ("e") (progn calc-num-prefix calc-pack-interval) | ||
| 61 | (progn -5 calc-pack) ) | ||
| 62 | ( "UNDO" calc-undo calc-redo calc-last-args ) | ||
| 63 | ( "<-" calc-pop (progn 0 calc-pop) | ||
| 64 | (progn calc-num-prefix calc-pop) ) ) | ||
| 65 | ( ( "INV" calc-inverse ) | ||
| 66 | ( "7" ("7") calc-round ) | ||
| 67 | ( "8" ("8") (progn 2 calc-clean-num) ) | ||
| 68 | ( "9" ("9") calc-float ) | ||
| 69 | ( "/" calc-divide (progn calc-inverse calc-power) ) ) | ||
| 70 | ( ( "HYP" calc-hyperbolic ) | ||
| 71 | ( "4" ("4") calc-ln calc-log10 ) | ||
| 72 | ( "5" ("5") calc-exp calc-exp10 ) | ||
| 73 | ( "6" ("6") calc-abs ) | ||
| 74 | ( "*" calc-times calc-power ) ) | ||
| 75 | ( ( "EXEC" calc-keypad-execute ) | ||
| 76 | ( "1" ("1") calc-arcsin calc-sin ) | ||
| 77 | ( "2" ("2") calc-arccos calc-cos ) | ||
| 78 | ( "3" ("3") calc-arctan calc-tan ) | ||
| 79 | ( "-" calc-minus calc-conj ) ) | ||
| 80 | ( ( "OFF" calc-keypad-off ) | ||
| 81 | ( "0" ("0") calc-imaginary ) | ||
| 82 | ( "." (".") calc-precision ) | ||
| 83 | ( "PI" calc-pi ) | ||
| 84 | ( "+" calc-plus calc-sqrt ) ) )) | ||
| 85 | |||
| 86 | (defvar calc-keypad-menus '( calc-keypad-math-menu | ||
| 87 | calc-keypad-funcs-menu | ||
| 88 | calc-keypad-binary-menu | ||
| 89 | calc-keypad-vector-menu | ||
| 90 | calc-keypad-modes-menu | ||
| 91 | calc-keypad-user-menu ) ) | ||
| 92 | |||
| 93 | ;;; |----+----+----+----+----+----| | ||
| 94 | ;;; |FLR |CEIL|RND |TRNC|CLN2|FLT | | ||
| 95 | ;;; |----+----+----+----+----+----| | ||
| 96 | ;;; | LN |EXP | |ABS |IDIV|MOD | | ||
| 97 | ;;; |----+----+----+----+----+----| | ||
| 98 | ;;; |SIN |COS |TAN |SQRT|y^x |1/x | | ||
| 99 | |||
| 100 | (defvar calc-keypad-math-menu | ||
| 101 | '( ( ( "FLR" calc-floor ) | ||
| 102 | ( "CEIL" calc-ceiling ) | ||
| 103 | ( "RND" calc-round ) | ||
| 104 | ( "TRNC" calc-trunc ) | ||
| 105 | ( "CLN2" (progn 2 calc-clean-num) ) | ||
| 106 | ( "FLT" calc-float ) ) | ||
| 107 | ( ( "LN" calc-ln ) | ||
| 108 | ( "EXP" calc-exp ) | ||
| 109 | ( "" nil ) | ||
| 110 | ( "ABS" calc-abs ) | ||
| 111 | ( "IDIV" calc-idiv ) | ||
| 112 | ( "MOD" calc-mod ) ) | ||
| 113 | ( ( "SIN" calc-sin ) | ||
| 114 | ( "COS" calc-cos ) | ||
| 115 | ( "TAN" calc-tan ) | ||
| 116 | ( "SQRT" calc-sqrt ) | ||
| 117 | ( "y^x" calc-power ) | ||
| 118 | ( "1/x" calc-inv ) ) )) | ||
| 119 | |||
| 120 | ;;; |----+----+----+----+----+----| | ||
| 121 | ;;; |IGAM|BETA|IBET|ERF |BESJ|BESY| | ||
| 122 | ;;; |----+----+----+----+----+----| | ||
| 123 | ;;; |IMAG|CONJ| RE |ATN2|RAND|RAGN| | ||
| 124 | ;;; |----+----+----+----+----+----| | ||
| 125 | ;;; |GCD |FACT|DFCT|BNOM|PERM|NXTP| | ||
| 126 | |||
| 127 | (defvar calc-keypad-funcs-menu | ||
| 128 | '( ( ( "IGAM" calc-inc-gamma ) | ||
| 129 | ( "BETA" calc-beta ) | ||
| 130 | ( "IBET" calc-inc-beta ) | ||
| 131 | ( "ERF" calc-erf ) | ||
| 132 | ( "BESJ" calc-bessel-J ) | ||
| 133 | ( "BESY" calc-bessel-Y ) ) | ||
| 134 | ( ( "IMAG" calc-imaginary ) | ||
| 135 | ( "CONJ" calc-conj ) | ||
| 136 | ( "RE" calc-re calc-im ) | ||
| 137 | ( "ATN2" calc-arctan2 ) | ||
| 138 | ( "RAND" calc-random ) | ||
| 139 | ( "RAGN" calc-random-again ) ) | ||
| 140 | ( ( "GCD" calc-gcd calc-lcm ) | ||
| 141 | ( "FACT" calc-factorial calc-gamma ) | ||
| 142 | ( "DFCT" calc-double-factorial ) | ||
| 143 | ( "BNOM" calc-choose ) | ||
| 144 | ( "PERM" calc-perm ) | ||
| 145 | ( "NXTP" calc-next-prime calc-prev-prime ) ) )) | ||
| 146 | |||
| 147 | ;;; |----+----+----+----+----+----| | ||
| 148 | ;;; |AND | OR |XOR |NOT |LSH |RSH | | ||
| 149 | ;;; |----+----+----+----+----+----| | ||
| 150 | ;;; |DEC |HEX |OCT |BIN |WSIZ|ARSH| | ||
| 151 | ;;; |----+----+----+----+----+----| | ||
| 152 | ;;; | A | B | C | D | E | F | | ||
| 153 | |||
| 154 | (defvar calc-keypad-binary-menu | ||
| 155 | '( ( ( "AND" calc-and calc-diff ) | ||
| 156 | ( "OR" calc-or ) | ||
| 157 | ( "XOR" calc-xor ) | ||
| 158 | ( "NOT" calc-not calc-clip ) | ||
| 159 | ( "LSH" calc-lshift-binary calc-rotate-binary ) | ||
| 160 | ( "RSH" calc-rshift-binary ) ) | ||
| 161 | ( ( "DEC" calc-decimal-radix ) | ||
| 162 | ( "HEX" calc-hex-radix ) | ||
| 163 | ( "OCT" calc-octal-radix ) | ||
| 164 | ( "BIN" calc-binary-radix ) | ||
| 165 | ( "WSIZ" calc-word-size ) | ||
| 166 | ( "ARSH" calc-rshift-arith ) ) | ||
| 167 | ( ( "A" ("A") ) | ||
| 168 | ( "B" ("B") ) | ||
| 169 | ( "C" ("C") ) | ||
| 170 | ( "D" ("D") ) | ||
| 171 | ( "E" ("E") ) | ||
| 172 | ( "F" ("F") ) ) )) | ||
| 173 | |||
| 174 | ;;; |----+----+----+----+----+----| | ||
| 175 | ;;; |SUM |PROD|MAX |MAP*|MAP^|MAP$| | ||
| 176 | ;;; |----+----+----+----+----+----| | ||
| 177 | ;;; |INV |DET |TRN |IDNT|CRSS|"x" | | ||
| 178 | ;;; |----+----+----+----+----+----| | ||
| 179 | ;;; |PACK|UNPK|INDX|BLD |LEN |... | | ||
| 180 | |||
| 181 | (defvar calc-keypad-vector-menu | ||
| 182 | '( ( ( "SUM" calc-vector-sum calc-vector-alt-sum calc-vector-mean ) | ||
| 183 | ( "PROD" calc-vector-product nil calc-vector-sdev ) | ||
| 184 | ( "MAX" calc-vector-max calc-vector-min calc-vector-median ) | ||
| 185 | ( "MAP*" (lambda () (interactive) | ||
| 186 | (calc-map '(2 calcFunc-mul "*"))) ) | ||
| 187 | ( "MAP^" (lambda () (interactive) | ||
| 188 | (calc-map '(2 calcFunc-pow "^"))) ) | ||
| 189 | ( "MAP$" calc-map-stack ) ) | ||
| 190 | ( ( "MINV" calc-inv ) | ||
| 191 | ( "MDET" calc-mdet ) | ||
| 192 | ( "MTRN" calc-transpose calc-conj-transpose ) | ||
| 193 | ( "IDNT" (progn calc-num-prefix calc-ident) ) | ||
| 194 | ( "CRSS" calc-cross ) | ||
| 195 | ( "\"x\"" "\excalc-algebraic-entry\rx\r" | ||
| 196 | "\excalc-algebraic-entry\ry\r" | ||
| 197 | "\excalc-algebraic-entry\rz\r" | ||
| 198 | "\excalc-algebraic-entry\rt\r") ) | ||
| 199 | ( ( "PACK" calc-pack ) | ||
| 200 | ( "UNPK" calc-unpack ) | ||
| 201 | ( "INDX" (progn calc-num-prefix calc-index) "\C-u\excalc-index\r" ) | ||
| 202 | ( "BLD" (progn calc-num-prefix calc-build-vector) ) | ||
| 203 | ( "LEN" calc-vlength ) | ||
| 204 | ( "..." calc-full-vectors ) ) )) | ||
| 205 | |||
| 206 | ;;; |----+----+----+----+----+----| | ||
| 207 | ;;; |FLT |FIX |SCI |ENG |GRP | | | ||
| 208 | ;;; |----+----+----+----+----+----| | ||
| 209 | ;;; |RAD |DEG |FRAC|POLR|SYMB|PREC| | ||
| 210 | ;;; |----+----+----+----+----+----| | ||
| 211 | ;;; |SWAP|RLL3|RLL4|OVER|STO |RCL | | ||
| 212 | |||
| 213 | (defvar calc-keypad-modes-menu | ||
| 214 | '( ( ( "FLT" calc-normal-notation | ||
| 215 | (progn calc-num-prefix calc-normal-notation) ) | ||
| 216 | ( "FIX" (progn 2 calc-fix-notation) | ||
| 217 | (progn calc-num-prefix calc-fix-notation) ) | ||
| 218 | ( "SCI" calc-sci-notation | ||
| 219 | (progn calc-num-prefix calc-sci-notation) ) | ||
| 220 | ( "ENG" calc-eng-notation | ||
| 221 | (progn calc-num-prefix calc-eng-notation) ) | ||
| 222 | ( "GRP" calc-group-digits "\C-u-3\excalc-group-digits\r" ) | ||
| 223 | ( "" nil ) ) | ||
| 224 | ( ( "RAD" calc-radians-mode ) | ||
| 225 | ( "DEG" calc-degrees-mode ) | ||
| 226 | ( "FRAC" calc-frac-mode ) | ||
| 227 | ( "POLR" calc-polar-mode ) | ||
| 228 | ( "SYMB" calc-symbolic-mode ) | ||
| 229 | ( "PREC" calc-precision ) ) | ||
| 230 | ( ( "SWAP" calc-roll-down ) | ||
| 231 | ( "RLL3" (progn 3 calc-roll-up) (progn 3 calc-roll-down) ) | ||
| 232 | ( "RLL4" (progn 4 calc-roll-up) (progn 4 calc-roll-down) ) | ||
| 233 | ( "OVER" calc-over ) | ||
| 234 | ( "STO" calc-keypad-store ) | ||
| 235 | ( "RCL" calc-keypad-recall ) ) )) | ||
| 236 | |||
| 237 | (define-derived-mode calc-keypad-mode fundamental-mode "Calculator" | ||
| 238 | "Major mode for Calc keypad input." | ||
| 239 | (define-key calc-keypad-mode-map " " 'calc-keypad-press) | ||
| 240 | (define-key calc-keypad-mode-map (kbd "RET") 'calc-keypad-press) | ||
| 241 | (define-key calc-keypad-mode-map (kbd "TAB") 'calc-keypad-menu) | ||
| 242 | (define-key calc-keypad-mode-map "q" 'calc-keypad-off) | ||
| 243 | (define-key calc-keypad-mode-map [(mouse-3)] 'calc-keypad-right-click) | ||
| 244 | (define-key calc-keypad-mode-map [(mouse-2)] 'calc-keypad-middle-click) | ||
| 245 | (define-key calc-keypad-mode-map [(mouse-1)] 'calc-keypad-left-click) | ||
| 246 | (put 'calc-keypad-mode 'mode-class 'special) | ||
| 247 | (make-local-variable 'calc-main-buffer)) | ||
| 53 | 248 | ||
| 54 | (defun calc-do-keypad (&optional full-display interactive) | 249 | (defun calc-do-keypad (&optional full-display interactive) |
| 55 | (calc-create-buffer) | 250 | (calc-create-buffer) |
| 56 | (let ((calcbuf (current-buffer))) | 251 | (let ((calcbuf (current-buffer))) |
| 57 | (unless (and calc-keypad-buffer | 252 | (unless (bufferp calc-keypad-buffer) |
| 58 | (buffer-name calc-keypad-buffer)) | 253 | (set-buffer (setq calc-keypad-buffer (get-buffer-create "*Calc Keypad*"))) |
| 59 | (setq calc-keypad-buffer (get-buffer-create "*Calc Keypad*")) | 254 | (calc-keypad-mode) |
| 60 | (set-buffer calc-keypad-buffer) | ||
| 61 | (use-local-map calc-keypad-map) | ||
| 62 | (setq major-mode 'calc-keypad) | ||
| 63 | (setq mode-name "Calculator") | ||
| 64 | (put 'calc-keypad 'mode-class 'special) | ||
| 65 | (make-local-variable 'calc-main-buffer) | ||
| 66 | (setq calc-main-buffer calcbuf) | 255 | (setq calc-main-buffer calcbuf) |
| 67 | (calc-keypad-redraw) | 256 | (calc-keypad-redraw) |
| 68 | (calc-trail-buffer)) | 257 | (calc-trail-buffer)) |
| @@ -114,7 +303,7 @@ | |||
| 114 | (split-window win (- (window-height win) height 1)) | 303 | (split-window win (- (window-height win) height 1)) |
| 115 | (set-window-buffer win calcbuf)) | 304 | (set-window-buffer win calcbuf)) |
| 116 | (select-window old-win) | 305 | (select-window old-win) |
| 117 | (message "Welcome to GNU Emacs Calc! Use the left and right mouse buttons.") | 306 | (message "Welcome to GNU Emacs Calc! Use the left and right mouse buttons") |
| 118 | (run-hooks 'calc-keypad-start-hook) | 307 | (run-hooks 'calc-keypad-start-hook) |
| 119 | (and calc-keypad-said-hello interactive | 308 | (and calc-keypad-said-hello interactive |
| 120 | (progn | 309 | (progn |
| @@ -193,16 +382,15 @@ | |||
| 193 | 382 | ||
| 194 | (defun calc-keypad-press () | 383 | (defun calc-keypad-press () |
| 195 | (interactive) | 384 | (interactive) |
| 196 | (or (eq major-mode 'calc-keypad) | 385 | (unless (eq major-mode 'calc-keypad-mode) |
| 197 | (error "Must be in *Calc Keypad* buffer for this command")) | 386 | (error "Must be in *Calc Keypad* buffer for this command")) |
| 198 | (let* ((row (save-excursion | 387 | (let* ((row (save-excursion |
| 199 | (beginning-of-line) | 388 | (beginning-of-line) |
| 200 | (count-lines (point-min) (point)))) | 389 | (count-lines (point-min) (point)))) |
| 201 | (y (/ row 2)) | 390 | (y (/ row 2)) |
| 202 | (x (/ (current-column) (if (>= y 4) 6 5))) | 391 | (x (/ (current-column) (if (>= y 4) 6 5))) |
| 203 | radix frac inv | 392 | radix frac inv |
| 204 | (hyp (save-excursion | 393 | (hyp (with-current-buffer calc-main-buffer |
| 205 | (set-buffer calc-main-buffer) | ||
| 206 | (setq radix calc-number-radix | 394 | (setq radix calc-number-radix |
| 207 | frac calc-prefer-frac | 395 | frac calc-prefer-frac |
| 208 | inv calc-inverse-flag) | 396 | inv calc-inverse-flag) |
| @@ -363,7 +551,7 @@ | |||
| 363 | 551 | ||
| 364 | (defun calc-keypad-menu () | 552 | (defun calc-keypad-menu () |
| 365 | (interactive) | 553 | (interactive) |
| 366 | (unless (eq major-mode 'calc-keypad) | 554 | (unless (eq major-mode 'calc-keypad-mode) |
| 367 | (error "Must be in *Calc Keypad* buffer for this command")) | 555 | (error "Must be in *Calc Keypad* buffer for this command")) |
| 368 | (while (progn (setq calc-keypad-menu (% (1+ calc-keypad-menu) | 556 | (while (progn (setq calc-keypad-menu (% (1+ calc-keypad-menu) |
| 369 | (length calc-keypad-menus))) | 557 | (length calc-keypad-menus))) |
| @@ -372,7 +560,7 @@ | |||
| 372 | 560 | ||
| 373 | (defun calc-keypad-menu-back () | 561 | (defun calc-keypad-menu-back () |
| 374 | (interactive) | 562 | (interactive) |
| 375 | (or (eq major-mode 'calc-keypad) | 563 | (or (eq major-mode 'calc-keypad-mode) |
| 376 | (error "Must be in *Calc Keypad* buffer for this command")) | 564 | (error "Must be in *Calc Keypad* buffer for this command")) |
| 377 | (while (progn (setq calc-keypad-menu (% (1- (+ calc-keypad-menu | 565 | (while (progn (setq calc-keypad-menu (% (1- (+ calc-keypad-menu |
| 378 | (length calc-keypad-menus))) | 566 | (length calc-keypad-menus))) |
| @@ -391,7 +579,7 @@ | |||
| 391 | (defun calc-pack-interval (mode) | 579 | (defun calc-pack-interval (mode) |
| 392 | (interactive "p") | 580 | (interactive "p") |
| 393 | (if (or (< mode 0) (> mode 3)) | 581 | (if (or (< mode 0) (> mode 3)) |
| 394 | (error "Open/close code should be in the range from 0 to 3.")) | 582 | (error "Open/close code should be in the range from 0 to 3")) |
| 395 | (calc-pack (- -6 mode))) | 583 | (calc-pack (- -6 mode))) |
| 396 | 584 | ||
| 397 | (defun calc-keypad-execute () | 585 | (defun calc-keypad-execute () |
| @@ -424,197 +612,4 @@ | |||
| 424 | (error "Not a Calc command: %s" (key-description keys))))) | 612 | (error "Not a Calc command: %s" (key-description keys))))) |
| 425 | 613 | ||
| 426 | 614 | ||
| 427 | ;;; |----+----+----+----+----+----| | ||
| 428 | ;;; | ENTER |+/- |EEX |UNDO| <- | | ||
| 429 | ;;; |-----+---+-+--+--+-+---++----| | ||
| 430 | ;;; | INV | 7 | 8 | 9 | / | | ||
| 431 | ;;; |-----+-----+-----+-----+-----| | ||
| 432 | ;;; | HYP | 4 | 5 | 6 | * | | ||
| 433 | ;;; |-----+-----+-----+-----+-----| | ||
| 434 | ;;; |EXEC | 1 | 2 | 3 | - | | ||
| 435 | ;;; |-----+-----+-----+-----+-----| | ||
| 436 | ;;; | OFF | 0 | . | PI | + | | ||
| 437 | ;;; |-----+-----+-----+-----+-----| | ||
| 438 | |||
| 439 | (defvar calc-keypad-layout | ||
| 440 | '( ( ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over ) | ||
| 441 | ( "ENTER" calc-enter calc-roll-down calc-roll-up calc-over ) | ||
| 442 | ( "+/-" calc-change-sign calc-inv (progn -4 calc-pack) ) | ||
| 443 | ( "EEX" ("e") (progn calc-num-prefix calc-pack-interval) | ||
| 444 | (progn -5 calc-pack) ) | ||
| 445 | ( "UNDO" calc-undo calc-redo calc-last-args ) | ||
| 446 | ( "<-" calc-pop (progn 0 calc-pop) | ||
| 447 | (progn calc-num-prefix calc-pop) ) ) | ||
| 448 | ( ( "INV" calc-inverse ) | ||
| 449 | ( "7" ("7") calc-round ) | ||
| 450 | ( "8" ("8") (progn 2 calc-clean-num) ) | ||
| 451 | ( "9" ("9") calc-float ) | ||
| 452 | ( "/" calc-divide (progn calc-inverse calc-power) ) ) | ||
| 453 | ( ( "HYP" calc-hyperbolic ) | ||
| 454 | ( "4" ("4") calc-ln calc-log10 ) | ||
| 455 | ( "5" ("5") calc-exp calc-exp10 ) | ||
| 456 | ( "6" ("6") calc-abs ) | ||
| 457 | ( "*" calc-times calc-power ) ) | ||
| 458 | ( ( "EXEC" calc-keypad-execute ) | ||
| 459 | ( "1" ("1") calc-arcsin calc-sin ) | ||
| 460 | ( "2" ("2") calc-arccos calc-cos ) | ||
| 461 | ( "3" ("3") calc-arctan calc-tan ) | ||
| 462 | ( "-" calc-minus calc-conj ) ) | ||
| 463 | ( ( "OFF" calc-keypad-off ) | ||
| 464 | ( "0" ("0") calc-imaginary ) | ||
| 465 | ( "." (".") calc-precision ) | ||
| 466 | ( "PI" calc-pi ) | ||
| 467 | ( "+" calc-plus calc-sqrt ) ) )) | ||
| 468 | |||
| 469 | (defvar calc-keypad-menus '( calc-keypad-math-menu | ||
| 470 | calc-keypad-funcs-menu | ||
| 471 | calc-keypad-binary-menu | ||
| 472 | calc-keypad-vector-menu | ||
| 473 | calc-keypad-modes-menu | ||
| 474 | calc-keypad-user-menu ) ) | ||
| 475 | |||
| 476 | ;;; |----+----+----+----+----+----| | ||
| 477 | ;;; |FLR |CEIL|RND |TRNC|CLN2|FLT | | ||
| 478 | ;;; |----+----+----+----+----+----| | ||
| 479 | ;;; | LN |EXP | |ABS |IDIV|MOD | | ||
| 480 | ;;; |----+----+----+----+----+----| | ||
| 481 | ;;; |SIN |COS |TAN |SQRT|y^x |1/x | | ||
| 482 | |||
| 483 | (defvar calc-keypad-math-menu | ||
| 484 | '( ( ( "FLR" calc-floor ) | ||
| 485 | ( "CEIL" calc-ceiling ) | ||
| 486 | ( "RND" calc-round ) | ||
| 487 | ( "TRNC" calc-trunc ) | ||
| 488 | ( "CLN2" (progn 2 calc-clean-num) ) | ||
| 489 | ( "FLT" calc-float ) ) | ||
| 490 | ( ( "LN" calc-ln ) | ||
| 491 | ( "EXP" calc-exp ) | ||
| 492 | ( "" nil ) | ||
| 493 | ( "ABS" calc-abs ) | ||
| 494 | ( "IDIV" calc-idiv ) | ||
| 495 | ( "MOD" calc-mod ) ) | ||
| 496 | ( ( "SIN" calc-sin ) | ||
| 497 | ( "COS" calc-cos ) | ||
| 498 | ( "TAN" calc-tan ) | ||
| 499 | ( "SQRT" calc-sqrt ) | ||
| 500 | ( "y^x" calc-power ) | ||
| 501 | ( "1/x" calc-inv ) ) )) | ||
| 502 | |||
| 503 | ;;; |----+----+----+----+----+----| | ||
| 504 | ;;; |IGAM|BETA|IBET|ERF |BESJ|BESY| | ||
| 505 | ;;; |----+----+----+----+----+----| | ||
| 506 | ;;; |IMAG|CONJ| RE |ATN2|RAND|RAGN| | ||
| 507 | ;;; |----+----+----+----+----+----| | ||
| 508 | ;;; |GCD |FACT|DFCT|BNOM|PERM|NXTP| | ||
| 509 | |||
| 510 | (defvar calc-keypad-funcs-menu | ||
| 511 | '( ( ( "IGAM" calc-inc-gamma ) | ||
| 512 | ( "BETA" calc-beta ) | ||
| 513 | ( "IBET" calc-inc-beta ) | ||
| 514 | ( "ERF" calc-erf ) | ||
| 515 | ( "BESJ" calc-bessel-J ) | ||
| 516 | ( "BESY" calc-bessel-Y ) ) | ||
| 517 | ( ( "IMAG" calc-imaginary ) | ||
| 518 | ( "CONJ" calc-conj ) | ||
| 519 | ( "RE" calc-re calc-im ) | ||
| 520 | ( "ATN2" calc-arctan2 ) | ||
| 521 | ( "RAND" calc-random ) | ||
| 522 | ( "RAGN" calc-random-again ) ) | ||
| 523 | ( ( "GCD" calc-gcd calc-lcm ) | ||
| 524 | ( "FACT" calc-factorial calc-gamma ) | ||
| 525 | ( "DFCT" calc-double-factorial ) | ||
| 526 | ( "BNOM" calc-choose ) | ||
| 527 | ( "PERM" calc-perm ) | ||
| 528 | ( "NXTP" calc-next-prime calc-prev-prime ) ) )) | ||
| 529 | |||
| 530 | ;;; |----+----+----+----+----+----| | ||
| 531 | ;;; |AND | OR |XOR |NOT |LSH |RSH | | ||
| 532 | ;;; |----+----+----+----+----+----| | ||
| 533 | ;;; |DEC |HEX |OCT |BIN |WSIZ|ARSH| | ||
| 534 | ;;; |----+----+----+----+----+----| | ||
| 535 | ;;; | A | B | C | D | E | F | | ||
| 536 | |||
| 537 | (defvar calc-keypad-binary-menu | ||
| 538 | '( ( ( "AND" calc-and calc-diff ) | ||
| 539 | ( "OR" calc-or ) | ||
| 540 | ( "XOR" calc-xor ) | ||
| 541 | ( "NOT" calc-not calc-clip ) | ||
| 542 | ( "LSH" calc-lshift-binary calc-rotate-binary ) | ||
| 543 | ( "RSH" calc-rshift-binary ) ) | ||
| 544 | ( ( "DEC" calc-decimal-radix ) | ||
| 545 | ( "HEX" calc-hex-radix ) | ||
| 546 | ( "OCT" calc-octal-radix ) | ||
| 547 | ( "BIN" calc-binary-radix ) | ||
| 548 | ( "WSIZ" calc-word-size ) | ||
| 549 | ( "ARSH" calc-rshift-arith ) ) | ||
| 550 | ( ( "A" ("A") ) | ||
| 551 | ( "B" ("B") ) | ||
| 552 | ( "C" ("C") ) | ||
| 553 | ( "D" ("D") ) | ||
| 554 | ( "E" ("E") ) | ||
| 555 | ( "F" ("F") ) ) )) | ||
| 556 | |||
| 557 | ;;; |----+----+----+----+----+----| | ||
| 558 | ;;; |SUM |PROD|MAX |MAP*|MAP^|MAP$| | ||
| 559 | ;;; |----+----+----+----+----+----| | ||
| 560 | ;;; |INV |DET |TRN |IDNT|CRSS|"x" | | ||
| 561 | ;;; |----+----+----+----+----+----| | ||
| 562 | ;;; |PACK|UNPK|INDX|BLD |LEN |... | | ||
| 563 | |||
| 564 | (defvar calc-keypad-vector-menu | ||
| 565 | '( ( ( "SUM" calc-vector-sum calc-vector-alt-sum calc-vector-mean ) | ||
| 566 | ( "PROD" calc-vector-product nil calc-vector-sdev ) | ||
| 567 | ( "MAX" calc-vector-max calc-vector-min calc-vector-median ) | ||
| 568 | ( "MAP*" (lambda () (interactive) | ||
| 569 | (calc-map '(2 calcFunc-mul "*"))) ) | ||
| 570 | ( "MAP^" (lambda () (interactive) | ||
| 571 | (calc-map '(2 calcFunc-pow "^"))) ) | ||
| 572 | ( "MAP$" calc-map-stack ) ) | ||
| 573 | ( ( "MINV" calc-inv ) | ||
| 574 | ( "MDET" calc-mdet ) | ||
| 575 | ( "MTRN" calc-transpose calc-conj-transpose ) | ||
| 576 | ( "IDNT" (progn calc-num-prefix calc-ident) ) | ||
| 577 | ( "CRSS" calc-cross ) | ||
| 578 | ( "\"x\"" "\excalc-algebraic-entry\rx\r" | ||
| 579 | "\excalc-algebraic-entry\ry\r" | ||
| 580 | "\excalc-algebraic-entry\rz\r" | ||
| 581 | "\excalc-algebraic-entry\rt\r") ) | ||
| 582 | ( ( "PACK" calc-pack ) | ||
| 583 | ( "UNPK" calc-unpack ) | ||
| 584 | ( "INDX" (progn calc-num-prefix calc-index) "\C-u\excalc-index\r" ) | ||
| 585 | ( "BLD" (progn calc-num-prefix calc-build-vector) ) | ||
| 586 | ( "LEN" calc-vlength ) | ||
| 587 | ( "..." calc-full-vectors ) ) )) | ||
| 588 | |||
| 589 | ;;; |----+----+----+----+----+----| | ||
| 590 | ;;; |FLT |FIX |SCI |ENG |GRP | | | ||
| 591 | ;;; |----+----+----+----+----+----| | ||
| 592 | ;;; |RAD |DEG |FRAC|POLR|SYMB|PREC| | ||
| 593 | ;;; |----+----+----+----+----+----| | ||
| 594 | ;;; |SWAP|RLL3|RLL4|OVER|STO |RCL | | ||
| 595 | |||
| 596 | (defvar calc-keypad-modes-menu | ||
| 597 | '( ( ( "FLT" calc-normal-notation | ||
| 598 | (progn calc-num-prefix calc-normal-notation) ) | ||
| 599 | ( "FIX" (progn 2 calc-fix-notation) | ||
| 600 | (progn calc-num-prefix calc-fix-notation) ) | ||
| 601 | ( "SCI" calc-sci-notation | ||
| 602 | (progn calc-num-prefix calc-sci-notation) ) | ||
| 603 | ( "ENG" calc-eng-notation | ||
| 604 | (progn calc-num-prefix calc-eng-notation) ) | ||
| 605 | ( "GRP" calc-group-digits "\C-u-3\excalc-group-digits\r" ) | ||
| 606 | ( "" nil ) ) | ||
| 607 | ( ( "RAD" calc-radians-mode ) | ||
| 608 | ( "DEG" calc-degrees-mode ) | ||
| 609 | ( "FRAC" calc-frac-mode ) | ||
| 610 | ( "POLR" calc-polar-mode ) | ||
| 611 | ( "SYMB" calc-symbolic-mode ) | ||
| 612 | ( "PREC" calc-precision ) ) | ||
| 613 | ( ( "SWAP" calc-roll-down ) | ||
| 614 | ( "RLL3" (progn 3 calc-roll-up) (progn 3 calc-roll-down) ) | ||
| 615 | ( "RLL4" (progn 4 calc-roll-up) (progn 4 calc-roll-down) ) | ||
| 616 | ( "OVER" calc-over ) | ||
| 617 | ( "STO" calc-keypad-store ) | ||
| 618 | ( "RCL" calc-keypad-recall ) ) )) | ||
| 619 | |||
| 620 | ;;; calc-keypd.el ends here | 615 | ;;; calc-keypd.el ends here |