Function: calculator-menu
calculator-menu is an interactive and byte-compiled function defined
in calculator.el.gz.
Signature
(calculator-menu ARG1)
Documentation
Calculator menu.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/calculator.el.gz
(defvar calculator-mode-map
(let ((map (make-sparse-keymap)))
(suppress-keymap map t)
(dolist (x '((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-open-paren "[")
(calculator-close-paren "]")
(calculator-op-or-exp "+" "-"
"<kp-add>" "<kp-subtract>")
(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")
(calculator-radix-output-mode "oD" "oH" "oX" "oO" "oB")
(calculator-rotate-displayer "'")
(calculator-rotate-displayer-back "\"")
(calculator-displayer-prev "{")
(calculator-displayer-next "}")
(calculator-saved-up "<up>" "C-p")
(calculator-saved-down "<down>" "C-n")
(calculator-quit "q" "C-g")
(calculator-enter "<enter>" "<linefeed>"
"<kp-enter>" "<return>"
"RET" "LFD")
(calculator-save-on-list "SPC" "<space>")
(calculator-clear-saved "C-c" "<C-delete>")
(calculator-save-and-quit "<C-return>" "<C-kp-enter>")
(calculator-paste "<insert>" "<S-insert>"
"<paste>" "<mouse-2>" "C-y")
(calculator-clear "<delete>" "DEL" "C-d")
(calculator-help "h" "?" "<f1>" "<help>")
(calculator-copy "<C-insert>" "<copy>")
(calculator-backspace "<backspace>")
))
;; reverse the keys so earlier definitions come last -- makes the
;; more sensible bindings visible in the menu
(dolist (k (reverse (cdr x)))
(calculator-define-key k (car x) map)))
(if calculator-bind-escape
(progn (calculator-define-key "ESC" 'calculator-quit map)
(calculator-define-key "<escape>" 'calculator-quit map))
(calculator-define-key "ESC ESC ESC" 'calculator-quit map))
;; make C-h work in text-mode
(unless window-system
(calculator-define-key "C-h" 'calculator-backspace map))
;; set up a menu
(when (and calculator-use-menu (not (boundp 'calculator-menu)))
(let ((radix-selectors
(mapcar (lambda (x)
`([,(nth 0 x)
(calculator-radix-mode ,(nth 2 x))
:style radio
:keys ,(nth 2 x)
:selected
(and
(eq calculator-input-radix ',(nth 1 x))
(eq calculator-output-radix ',(nth 1 x)))]
[,(concat (nth 0 x) " Input")
(calculator-radix-input-mode ,(nth 2 x))
:keys ,(concat "i" (downcase (nth 2 x)))
:style radio
:selected
(eq calculator-input-radix ',(nth 1 x))]
[,(concat (nth 0 x) " Output")
(calculator-radix-output-mode ,(nth 2 x))
:keys ,(concat "o" (downcase (nth 2 x)))
:style radio
:selected
(eq calculator-output-radix ',(nth 1 x))]))
'(("Decimal" nil "D")
("Binary" bin "B")
("Octal" oct "O")
("Hexadecimal" hex "H"))))
(op (lambda (name key)
`[,name (calculator-op ,key) :keys ,key])))
(easy-menu-define
calculator-menu map "Calculator menu."
`("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 () (message nil)))
;; the message from the menu will be visible,
;; couldn't make it go away...
(calculator))
:active (not calculator-electric-mode)]
["Normal mode"
(progn (setq calculator-restart-other-mode t)
(calculator-quit))
:active calculator-electric-mode]
"---"
("Functions"
,(funcall op "Repeat-right" ">")
,(funcall op "Repeat-left" "<")
"------General------"
,(funcall op "Reciprocal" ";")
,(funcall op "Log" "L")
,(funcall op "Square-root" "Q")
,(funcall op "Factorial" "!")
"------Trigonometric------"
,(funcall op "Sinus" "S")
,(funcall op "Cosine" "C")
,(funcall op "Tangent" "T")
,(funcall op "Inv-Sinus" "IS")
,(funcall op "Inv-Cosine" "IC")
,(funcall op "Inv-Tangent" "IT")
"------Bitwise------"
,(funcall op "Or" "|")
,(funcall op "Xor" "#")
,(funcall op "And" "&")
,(funcall op "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]
"---"
,(funcall op "List-total" "l")
,(funcall op "List-average" "v"))
("Registers"
["Get register" calculator-get-register]
["Set register" calculator-set-register])
("Modes"
["Radians"
(progn
(when (or calculator-input-radix calculator-output-radix)
(calculator-radix-mode "D"))
(when calculator-deg (calculator-dec/deg-mode)))
:keys "D"
:style radio
:selected (not (or calculator-input-radix
calculator-output-radix
calculator-deg))]
["Degrees"
(progn
(when (or calculator-input-radix calculator-output-radix)
(calculator-radix-mode "D"))
(unless calculator-deg (calculator-dec/deg-mode)))
:keys "D"
:style radio
:selected (and calculator-deg
(not (or calculator-input-radix
calculator-output-radix)))]
"---"
,@(mapcar 'car radix-selectors)
("Separate I/O"
,@(mapcar (lambda (x) (nth 1 x)) radix-selectors)
"---"
,@(mapcar (lambda (x) (nth 2 x)) radix-selectors)))
("Decimal Display"
,@(mapcar (lambda (d)
(vector (cadr d)
;; Note: inserts actual object here
`(calculator-rotate-displayer ',d)))
calculator-displayers)
"---"
["Change Prev Display" calculator-displayer-prev]
["Change Next Display" calculator-displayer-next])
"---"
["Copy+Quit" calculator-save-and-quit]
["Quit" calculator-quit]))))
map)
"The calculator key map.")