?
Current Path : /usr/share/emacs/24.3/lisp/ |
Linux gator3171.hostgator.com 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64 |
Current File : //usr/share/emacs/24.3/lisp/calculator.elc |
;ELC ;;; Compiled by mockbuild@buildfarm06-new.corp.cloudlinux.com on Fri Oct 11 10:06:12 2024 ;;; from file /builddir/build/BUILD/emacs-24.3/lisp/calculator.el ;;; in Emacs version 24.3.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301\302\303\304\305\306\307\310\311\310\312&\210\313\314\302\315\316\317\310\301&\210\313\320\321\322\316\317\310\301&\210\313\323\302\324\316\317\310\301&\210\313\325\326\327\316\330\310\301&\210\313\331\332\333\316\334\310\301&\210\313\335\336\337\316\340\310\301&\210\313\341\321\342\316\317\310\301&\210\313\343\344\345\316\340\310\301&\210\313\346\347\350\316\334\310\301&\210\313\351\321\352\316\353\310\301&\210\313\354\355\356\310\301%\210\313\357\360\361\316\362\310\301&\210\313\363\321\364\316\317\310\301&\210\313\365\302\366\316\317\310\301&\210\313\367\302\370\316\317\310\301&\210\313\371\302\372\316\373\310\301&\210\313\374\302\375\316\376\377\201@ \310\301& \210\313\201A \302\201B \316\201C \310\301&\207" [custom-declare-group calculator nil "Simple Emacs calculator." :prefix "calculator" :version "21.1" :group tools applications custom-declare-variable calculator-electric-mode "Run `calculator' electrically, in the echo area.\nElectric mode saves some place but changes the way you interact with the\ncalculator." :type boolean calculator-use-menu t "Make `calculator' create a menu.\nNote that this requires easymenu. Must be set before loading." calculator-bind-escape "If non-nil, set escape to exit the calculator." calculator-unary-style 'postfix "Value is either 'prefix or 'postfix.\nThis determines the default behavior of unary operators." (choice (const prefix) (const postfix)) calculator-prompt "Calc=%s> " "The prompt used by the Emacs calculator.\nIt should contain a \"%s\" somewhere that will indicate the i/o radices;\nthis will be a two-character string as described in the documentation\nfor `calculator-mode'." string calculator-number-digits 3 "The calculator's number of digits used for standard display.\nUsed by the `calculator-standard-display' function - it will use the\nformat string \"%.NC\" where this number is N and C is a character given\nat runtime." integer calculator-radix-grouping-mode "Use digit grouping in radix output mode.\nIf this is set, chunks of `calculator-radix-grouping-digits' characters\nwill be separated by `calculator-radix-grouping-separator' when in radix\noutput mode is active (determined by `calculator-output-radix')." calculator-radix-grouping-digits 4 "The number of digits used for grouping display in radix modes.\nSee `calculator-radix-grouping-mode'." calculator-radix-grouping-separator "'" "The separator used in radix grouping display.\nSee `calculator-radix-grouping-mode'." calculator-remove-zeros "Non-nil value means delete all redundant zero decimal digits.\nIf this value is not t, and not nil, redundant zeros are removed except\nfor one and if it is nil, nothing is removed.\nUsed by the `calculator-remove-zeros' function." (choice (const t) (const leave-decimal) (const nil)) calculator-displayer '(std 110) "A displayer specification for numerical values.\nThis is the displayer used to show all numbers in an expression. Result\nvalues will be displayed according to the first element of\n`calculator-displayers'.\n\nThe displayer is a symbol, a string or an expression. A symbol should\nbe the name of a one-argument function, a string is used with a single\nargument and an expression will be evaluated with the variable `num'\nbound to whatever should be displayed. If it is a function symbol, it\nshould be able to handle special symbol arguments, currently 'left and\n'right which will be sent by special keys to modify display parameters\nassociated with the displayer function (for example to change the number\nof digits displayed).\n\nAn exception to the above is the case of the list (std C) where C is a\ncharacter, in this case the `calculator-standard-displayer' function\nwill be used with this character for a format string." calculator-displayers '(((std 110) "Standard display, decimal point or scientific") (calculator-eng-display "Eng display") ((std 102) "Standard display, decimal point") ((std 101) "Standard display, scientific") ("%S" "Emacs printer")) "A list of displayers.\nEach element is a list of a displayer and a description string. The\nfirst element is the one which is currently used, this is for the display\nof result values not values in expressions. A displayer specification\nis the same as the values that can be stored in `calculator-displayer'.\n\n`calculator-rotate-displayer' rotates this list." sexp calculator-paste-decimals "If non-nil, convert pasted integers so they have a decimal point.\nThis makes it possible to paste big integers since they will be read as\nfloats, otherwise the Emacs reader will fail on them." calculator-copy-displayer "If non-nil, this is any value that can be used for\n`calculator-displayer', to format a string before copying it with\n`calculator-copy'. If nil, then `calculator-displayer's normal value is\nused." calculator-2s-complement "If non-nil, show negative numbers in 2s complement in radix modes.\nOtherwise show as a negative number." calculator-mode-hook "List of hook functions for `calculator-mode' to run.\nNote: if `calculator-electric-mode' is on, then this hook will get\nactivated in the minibuffer - in that case it should not do much more\nthan local key settings and other effects that will change things\noutside the scope of calculator related code." hook calculator-user-registers "An association list of user-defined register bindings.\nEach element in this list is a list of a character and a number that\nwill be stored in that character's register.\n\nFor example, use this to define the golden ratio number:\n (setq calculator-user-registers '((?g . 1.61803398875)))\nbefore you load calculator." (repeat (cons character number)) :set #[(_ val) "\303\301!\203 \304 \"\211\207" [val calculator-registers calculator-user-registers boundp append] 3] calculator-user-operators "A list of additional operators.\nThis is a list in the same format as specified in the documentation for\n`calculator-operators', that you can use to bind additional calculator\noperators. It is probably not a good idea to modify this value with\n`customize' since it is too complex...\n\nExamples:\n\n* A very simple one, adding a postfix \"x-to-y\" conversion keys, using\n t as a prefix key:\n\n (setq calculator-user-operators\n '((\"tf\" cl-to-fr (+ 32 (/ (* X 9) 5)) 1)\n (\"tc\" fr-to-cl (/ (* (- X 32) 5) 9) 1)\n (\"tp\" kg-to-lb (/ X 0.453592) 1)\n (\"tk\" lb-to-kg (* X 0.453592) 1)\n (\"tF\" mt-to-ft (/ X 0.3048) 1)\n (\"tM\" ft-to-mt (* X 0.3048) 1)))\n\n* Using a function-like form is very simple, X for an argument (Y the\n second in case of a binary operator), TX is a truncated version of X\n and F does a recursive call, Here is a [very inefficient] Fibonacci\n number calculation:\n\n (add-to-list 'calculator-user-operators\n '(\"F\" fib (if (<= TX 1)\n 1\n (+ (F (- TX 1)) (F (- TX 2)))) 0))\n\n Note that this will be either postfix or prefix, according to\n `calculator-unary-style'." (repeat (list string symbol sexp integer integer))] 12) #@418 A list of initial operators. This is a list in the same format as `calculator-operators'. Whenever `calculator' starts, it looks at the value of this variable, and if it is not empty, its contents is prepended to `calculator-operators' and the appropriate key bindings are made. This variable is then reset to nil. Don't use this if you want to add user-defined operators, use `calculator-user-operators' instead. (defvar calculator-initial-operators '(("=" = identity 1 -1) (nobind "+" + + 2 4) (nobind "-" - - 2 4) (nobind "+" + + -1 9) (nobind "-" - - -1 9) ("(" \( identity -1 -1) (")" \) identity 1 10) ("|" or (logior TX TY) 2 2) ("#" xor (logxor TX TY) 2 2) ("&" and (logand TX TY) 2 3) ("*" * * 2 5) ("/" / / 2 5) ("\\" div (/ TX TY) 2 5) ("%" rem (% TX TY) 2 5) ("L" log log 2 6) ("S" sin (sin DX) x 6) ("C" cos (cos DX) x 6) ("T" tan (tan DX) x 6) ("IS" asin (D (asin X)) x 6) ("IC" acos (D (acos X)) x 6) ("IT" atan (D (atan X)) x 6) ("Q" sqrt sqrt x 7) ("^" ^ calculator-expt 2 7) ("!" ! calculator-fact x 7) (";" 1/ (/ 1 X) 1 7) ("_" - - 1 8) ("~" ~ (lognot TX) x 8) (">" repR calculator-repR 1 8) ("<" repL calculator-repL 1 8) ("v" avg (/ (apply '+ L) (length L)) 0 8) ("l" tot (apply '+ L) 0 8)) (#$ . 7709)) #@1235 The calculator operators, each a list with: 1. The key that is bound to for this operation (usually a string); 2. The displayed symbol for this function; 3. The function symbol, or a form that uses the variables `X' and `Y', (if it is a binary operator), `TX' and `TY' (truncated integer versions), `DX' (converted to radians if degrees mode is on), `D' (function for converting radians to degrees if deg mode is on), `L' (list of saved values), `F' (function for recursive iteration calls) and evaluates to the function value - these variables are capital; 4. The function's arity, optional, one of: 2 => binary, -1 => prefix unary, +1 => postfix unary, 0 => a 0-arg operator func, non-number => postfix/prefix as determined by `calculator-unary-style' (the default); 5. The function's precedence - should be in the range of 1 (lowest) to 9 (highest) (optional, defaults to 1); It it possible have a unary prefix version of a binary operator if it comes later in this list. If the list begins with the symbol 'nobind, then no key binding will take place - this is only useful for predefined keys. Use `calculator-user-operators' to add operators to this list, see its documentation for an example. (defvar calculator-operators nil (#$ . 8945)) #@43 Stack contents - operations and operands. (defvar calculator-stack nil (#$ . 10231)) #@45 Current number being entered (as a string). (defvar calculator-curnum nil (#$ . 10322)) #@50 Cons of the stack and its string representation. (defvar calculator-stack-display nil (#$ . 10416)) #@69 A table to convert input characters to corresponding radix symbols. (defvar calculator-char-radix '((68) (66 . bin) (79 . oct) (72 . hex) (88 . hex)) (#$ . 10522)) #@66 The mode for display, one of: nil (decimal), 'bin, 'oct or 'hex. (defvar calculator-output-radix nil (#$ . 10692)) #@64 The mode for input, one of: nil (decimal), 'bin, 'oct or 'hex. (defvar calculator-input-radix nil (#$ . 10813)) #@66 Non-nil if trig functions operate on degrees instead of radians. (defvar calculator-deg nil (#$ . 10931)) #@35 A list of saved values collected. (defvar calculator-saved-list nil (#$ . 11043)) #@42 The pointer to the current saved number. (defvar calculator-saved-ptr 0 (#$ . 11131)) #@60 Bound to t when a value should be added to the saved-list. (defvar calculator-add-saved nil (#$ . 11223)) #@68 When non-nil, we see something that the next digit should replace. (defvar calculator-display-fragile nil (#$ . 11335)) #@32 The current calculator buffer. (defvar calculator-buffer nil (#$ . 11461)) #@50 Internal value used by `calculator-eng-display'. (defvar calculator-eng-extra nil (#$ . 11542)) #@50 Internal value used by `calculator-eng-display'. (defvar calculator-eng-tmp-show nil (#$ . 11644)) #@98 The last binary operation and its arguments. Used for repeating operations in calculator-repR/L. (defvar calculator-last-opXY nil (#$ . 11749)) #@53 The association list of calculator register values. (defvar calculator-registers (byte-code "\303\304 B\305\nBD\"\207" [calculator-user-registers float-e float-pi append 101 112] 5) (#$ . 11899)) #@23 Saved global key map. (defvar calculator-saved-global-map nil (#$ . 12102)) #@57 Used to hack restarting with the electric mode changed. (defvar calculator-restart-other-mode nil (#$ . 12184)) #@25 The calculator key map. (defvar calculator-mode-map (byte-code "\306 \307\310\"\210\311\312\313#\210\311\314\313#\210\315 @@\316 @A!\n\2032 \311\n@#\210\nA\211\204$ * A\211\204 )\f\203N \311\317\320#\210\311\321\320#\210\202T \311\322\320#\210 \204^ \311\323\324#\210@\203n\325\326!\204n\327\330\331\"\332AB\333\313!\210\334\326\335\336\337\340\341\342\340\343\344\340\345A\346\347\"A\350\351\"\352A\353\354\"A\355\356\"A\357\360\"A\361\362\"\363A\364\365\"A\366\367\"A\370\371\"A\372\373\"A\374\375\"A\376\377\"\201D A\201E \201F \"A\201G \201H \"A\201I \201J \"A\201K \201L \"\257\201M \201N \201O \201P \201Q \201R \340A\201S \201T \"A\201U \201V \"\257 \201W \201X \201Y \201Z \340\201[ \327\201\\ B\"\201] \201[ \327\201^ B\"\201_ \327\201` B\"#BC\"BBBB\201a \201[ \327\201b C\"\201c \"B\201d BBBBBBBBBBBBBB$\210*)\207" [map p keys func calculator-bind-escape window-system make-sparse-keymap suppress-keymap t define-key "i" nil "o" ((calculator-open-paren "[") (calculator-close-paren "]") (calculator-op-or-exp "+" "-" [kp-add] [kp-subtract]) (calculator-digit "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c" "d" "f" [kp-0] [kp-1] [kp-2] [kp-3] [kp-4] [kp-5] [kp-6] [kp-7] [kp-8] [kp-9]) (calculator-op [kp-divide] [kp-multiply]) (calculator-decimal "." [kp-decimal]) (calculator-exp "e") (calculator-dec/deg-mode "D") (calculator-set-register "s") (calculator-get-register "g") (calculator-radix-mode "H" "X" "O" "B") (calculator-radix-input-mode "id" "ih" "ix" "io" "ib" "iD" "iH" "iX" "iO" "iB") (calculator-radix-output-mode "od" "oh" "ox" "oo" "ob" "oD" "oH" "oX" "oO" "oB") (calculator-rotate-displayer "'") (calculator-rotate-displayer-back "\"") (calculator-displayer-prev "{") (calculator-displayer-next "}") (calculator-saved-up [up] [16]) (calculator-saved-down [down] [14]) (calculator-quit "q" [7]) (calculator-enter [enter] [linefeed] [kp-enter] [return] [13] [10]) (calculator-save-on-list " " [space]) (calculator-clear-saved [3] [(control delete)]) (calculator-save-and-quit [(control return)] [(control kp-enter)]) (calculator-paste [insert] [(shift insert)] [paste] [mouse-2] [25]) (calculator-clear [delete] [127] [4]) (calculator-help [104] [63] [f1] [help]) (calculator-copy [(control insert)] [copy]) (calculator-backspace [backspace])) reverse [27] calculator-quit [escape] [27 27 27] [8] calculator-backspace boundp calculator-menu mapcar #[(x) "\301@\302\3038D\304\305\306\3038\307\310\311\312\313A@DE\311\314\313A@DEE&\301@\315P\316\3038D\306\317\3038\227P\304\305\307\311\312\313A@DE&\301@\320P\321\3038D\306\322\3038\227P\304\305\307\311\314\313A@DE&E\207" [x vector calculator-radix-mode 2 :style radio :keys :selected and eq calculator-input-radix quote calculator-output-radix " Input" calculator-radix-input-mode "i" " Output" calculator-radix-output-mode "o"] 14] (("Decimal" nil "D") ("Binary" bin "B") ("Octal" oct "O") ("Hexadecimal" hex "H")) #[(name key) "\302\303 D\304 $\207" [name key vector calculator-op :keys] 5] (lambda (#1=#:def-tmp-var) (defvar calculator-menu #1# #2="Calculator menu.")) easy-menu-do-define #2# "Calculator" ["Help" (let ((last-command 'calculator-help)) (calculator-help)) :keys "?"] "---" ["Copy" calculator-copy] ["Paste" calculator-paste] ["Electric mode" (progn (calculator-quit) (setq calculator-restart-other-mode t) (run-with-timer 0.1 nil (lambda nil (message nil))) (calculator)) :active (not calculator-electric-mode)] ["Normal mode" (progn (setq calculator-restart-other-mode t) (calculator-quit)) :active calculator-electric-mode] "Functions" "Repeat-right" ">" "Repeat-left" "<" "------General------" "Reciprocal" ";" "Log" "L" "Square-root" "Q" "Factorial" "!" "------Trigonometric------" "Sinus" "S" "Cosine" "C" "Tangent" "T" "Inv-Sinus" "IS" "Inv-Cosine" "IC" "Inv-Tangent" "IT" calculator-use-menu op radix-selectors calculator-displayers "------Bitwise------" "Or" "|" "Xor" "#" "And" "&" "Not" "~" "Saved List" ["Eval+Save" calculator-save-on-list] ["Prev number" calculator-saved-up] ["Next number" calculator-saved-down] ["Delete current" calculator-clear :active (and calculator-display-fragile calculator-saved-list (= (car calculator-stack) (nth calculator-saved-ptr calculator-saved-list)))] ["Delete all" calculator-clear-saved] "List-total" "l" "List-average" "v" ("Registers" ["Get register" calculator-get-register] ["Set register" calculator-set-register]) "Modes" ["Radians" (progn (and (or calculator-input-radix calculator-output-radix) (calculator-radix-mode "D")) (and calculator-deg (calculator-dec/deg-mode))) :keys "D" :style radio :selected (not (or calculator-input-radix calculator-output-radix calculator-deg))] ["Degrees" (progn (and (or calculator-input-radix calculator-output-radix) (calculator-radix-mode "D")) (or calculator-deg (calculator-dec/deg-mode))) :keys "D" :style radio :selected (and calculator-deg (not (or calculator-input-radix calculator-output-radix)))] append car "Separate I/O" #[(x) "A@\207" [x] 1] ("---") #[(x) "\3018\207" [x 2] 2] "Decimal Display" #[(d) "\302\211A@)\303\304DD\"\207" [d x vector calculator-rotate-displayer quote] 6] ("---" ["Change Prev Display" calculator-displayer-prev] ["Change Next Display" calculator-displayer-next]) ("---" ["Copy+Quit" calculator-save-and-quit] ["Quit" calculator-quit])] 36) (#$ . 12302)) (byte-code "\300\301N\204 \302\300\301\303\304!#\210\305\306!\204 \302\306\307\310#\210\300\207" [calculator-mode-hook variable-documentation put purecopy "Hook run when entering Calculator mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp calculator-mode-map definition-name calculator-mode] 5) (defvar calculator-mode-map (make-sparse-keymap)) (byte-code "\300\301N\204 \302\300\301\303\304!#\210\305\306!\204 \302\306\307\310#\210\300\207" [calculator-mode-map variable-documentation put purecopy "Keymap for `calculator-mode'." boundp calculator-mode-syntax-table definition-name calculator-mode] 5) (defvar calculator-mode-syntax-table (make-syntax-table)) (byte-code "\300\301N\204 \302\300\301\303\304!#\210\302\305\306\307#\207" [calculator-mode-syntax-table variable-documentation put purecopy "Syntax table for `calculator-mode'." calculator-mode-abbrev-table definition-name calculator-mode] 5) (defvar calculator-mode-abbrev-table (progn (define-abbrev-table 'calculator-mode-abbrev-table nil) calculator-mode-abbrev-table)) (byte-code "\300\301N\204 \302\300\301\303\304!#\210\302\305\306\307#\207" [calculator-mode-abbrev-table variable-documentation put purecopy "Abbrev table for `calculator-mode'." calculator-mode derived-mode-parent nil] 5) #@4828 A [not so] simple calculator for Emacs. This calculator is used in the same way as other popular calculators like xcalc or calc.exe - but using an Emacs interface. Expressions are entered using normal infix notation, parens are used as normal. Unary functions are usually postfix, but some depends on the value of `calculator-unary-style' (if the style for an operator below is specified, then it is fixed, otherwise it depends on this variable). `+' and `-' can be used as either binary operators or prefix unary operators. Numbers can be entered with exponential notation using `e', except when using a non-decimal radix mode for input (in this case `e' will be the hexadecimal digit). If the result of a calculation is too large (out of range for Emacs), the value of "inf" is returned. Here are the editing keys: * `RET' `=' evaluate the current expression * `C-insert' copy the whole current expression to the `kill-ring' * `C-return' evaluate, save result the `kill-ring' and exit * `insert' paste a number if the one was copied (normally) * `delete' `C-d' clear last argument or whole expression (hit twice) * `backspace' delete a digit or a previous expression element * `h' `?' pop-up a quick reference help * `ESC' `q' exit (`ESC' can be used if `calculator-bind-escape' is non-nil, otherwise use three consecutive `ESC's) These operators are pre-defined: * `+' `-' `*' `/' the common binary operators * `\' `%' integer division and reminder * `_' `;' postfix unary negation and reciprocal * `^' `L' binary operators for x^y and log(x) in base y * `Q' `!' unary square root and factorial * `S' `C' `T' unary trigonometric operators - sin, cos and tan * `|' `#' `&' `~' bitwise operators - or, xor, and, not The trigonometric functions can be inverted if prefixed with an `I', see below for the way to use degrees instead of the default radians. Two special postfix unary operators are `>' and `<': whenever a binary operator is performed, it is remembered along with its arguments; then `>' (`<') will apply the same operator with the same right (left) argument. hex/oct/bin modes can be set for input and for display separately. Another toggle-able mode is for using degrees instead of radians for trigonometric functions. The keys to switch modes are (`X' is shortcut for `H'): * `D' switch to all-decimal mode, or toggle degrees/radians * `B' `O' `H' `X' binary/octal/hexadecimal modes for input & display * `i' `o' followed by one of `D' `B' `O' `H' `X' (case insensitive) sets only the input or display radix mode The prompt indicates the current modes: * "D=": degrees mode; * "?=": (? is B/O/H) this is the radix for both input and output; * "=?": (? is B/O/H) the display radix (when input is decimal); * "??": (? is D/B/O/H) 1st char for input radix, 2nd for display. Also, the quote key can be used to switch display modes for decimal numbers (double-quote rotates back), and the two brace characters ("{" and "}" change display parameters that these displayers use (if they handle such). If output is using any radix mode, then these keys toggle digit grouping mode and the chunk size. Values can be saved for future reference in either a list of saved values, or in registers. The list of saved values is useful for statistics operations on some collected data. It is possible to navigate in this list, and if the value shown is the current one on the list, an indication is displayed as "[N]" if this is the last number and there are N numbers, or "[M/N]" if the M-th value is shown. * `SPC' evaluate the current value as usual, but also adds the result to the list of saved values * `l' `v' computes total / average of saved values * `up' `C-p' browse to the previous value in the list * `down' `C-n' browse to the next value in the list * `delete' `C-d' remove current value from the list (if it is on it) * `C-delete' `C-c' delete the whole list Registers are variable-like place-holders for values: * `s' followed by a character attach the current value to that character * `g' followed by a character fetches the attached value There are many variables that can be used to customize the calculator. Some interesting customization variables are: * `calculator-electric-mode' use only the echo-area electrically. * `calculator-unary-style' set most unary ops to pre/postfix style. * `calculator-user-registers' to define user-preset registers. * `calculator-user-operators' to add user-defined operators. See the documentation for these variables, and "calculator.el" for more information. \{calculator-mode-map} This mode runs the hook `calculator-mode-hook', as the final step during initialization. (defalias 'calculator-mode #[nil "\306\300!\210\307\310 \210\311\312\313!\210\314\f!\210 )\315\316!\207" [delay-mode-hooks major-mode mode-name calculator-mode-map calculator-mode-syntax-table calculator-mode-abbrev-table make-local-variable t kill-all-local-variables calculator-mode "Calculator" use-local-map set-syntax-table run-mode-hooks calculator-mode-hook local-abbrev-table] 2 (#$ . 19019) nil]) #@93 Run the Emacs calculator. See the documentation for `calculator-mode' for more information. (defalias 'calculator #[nil "\203 ?\n\203 \306\n!\210\307\306!\210\310\311! \203k \312 \313\216\314\315!\210\316\307!\210\307\211\317\3072345\320\321 \f\"\210\322\321 !\210\323 \210\324 \210\325 4\326 5\326 6\327\307!\210\3307!\210\331\332!\210\333\216\334\335\215\210.\2024\336\f!\204\3378\322\340\341\342!\203\343\342\344!\345\"9\342\346!:\343:\345\";9\250\203\244 ;\250\203\244 ;9W\206\265 ;\247\205\265 ;\250?\205\265 ;\347W?\2059\250\203\315 ;\250\203\315 ;9V\206;\247\203\340 ;\250\204\340 ;\347V\206\343:\350\"<\343<\351\"=<\205\375 =?\206\375 =\317V*\206\343\342\346!\352\"+\203\353\202\354!!\210\355\f!\210)\202'p\f=\204'\322\336\f!!\210\356 \210\357>\323 \210\316\360!\210\205> \205>\361 \207" [calculator-restart-other-mode calculator-electric-mode calculator-initial-operators calculator-user-operators calculator-buffer #1=#:wconfig calculator-add-operators nil get-buffer-create "*calculator*" current-window-configuration ((set-window-configuration #1#)) require electric message 0 set-window-buffer minibuffer-window select-window calculator-reset calculator-update-display current-local-map current-global-map use-local-map use-global-map run-hooks calculator-mode-hook ((byte-code "\203 \303\304\215\210\305 !\210\306\n!\207" [calculator-buffer old-l-map old-g-map calculator-done (calculator-quit) use-local-map use-global-map] 2)) calculator-done (byte-code "\300\301\302\303\304$\207" [Electric-command-loop calculator-done #[nil "\300\207" [noprompt] 1] nil #[(x y) "\300 \207" [calculator-update-display] 1]] 5) get-buffer-window 2 split-window-below fboundp face-attr-construct plist-get default :height mode-line 1 :box :line-width :overline -3 -2 switch-to-buffer calculator-mode t "Hit `?' For a quick help screen." calculator garbage-collection-messages echo-keystrokes old-l-map old-g-map calculator-saved-global-map calculator-mode-map window-min-height dh mf mh bx lh buffer-read-only] 5 (#$ . 24264) nil]) #@57 Same as `message', but special handle of electric mode. (defalias 'calculator-message #[(string &rest arguments) "\303\304 #\210\n\205 \305\306!\210\304\307!\207" [string arguments calculator-electric-mode apply message sit-for 1 nil] 4 (#$ . 26369)]) #@33 Return OP's arity, 2, +1 or -1. (defalias 'calculator-op-arity #[(op) "\3038\206 \304\211\247\203 \202 \n\305=\203 \306\202 \307)\207" [op arity calculator-unary-style 3 x postfix 1 -1] 3 (#$ . 26629)]) #@83 Return OP's precedence for reducing when inserting into the stack. Defaults to 1. (defalias 'calculator-op-prec #[(op) "\3018\206 \302\207" [op 4 1] 2 (#$ . 26846)]) #@173 This function handles operator addition. Adds MORE-OPS to `calculator-operator', called initially to handle `calculator-initial-operators' and `calculator-user-operators'. (defalias 'calculator-add-operators #[(more-ops) "\306 \203] @@\307=\204C \310 @@T\211\nGW\203<