Function: calculator
calculator is an autoloaded, interactive and byte-compiled function
defined in calculator.el.gz.
Signature
(calculator)
Documentation
Run the Emacs calculator.
See the documentation for calculator-mode for more information.
Probably introduced at or before Emacs version 21.1.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/calculator.el.gz
;;;###autoload
(defun calculator ()
"Run the Emacs calculator.
See the documentation for `calculator-mode' for more information."
(interactive)
(when calculator-restart-other-mode
(setq calculator-electric-mode (not calculator-electric-mode)))
(when calculator-initial-operators
(calculator-add-operators calculator-initial-operators)
(setq calculator-initial-operators nil)
;; don't change this since it is a customization variable,
;; its set function will add any new operators
(calculator-add-operators calculator-user-operators))
(setq calculator-buffer (get-buffer-create "*calculator*"))
(if calculator-electric-mode
(save-window-excursion
(require 'electric) (message nil) ; hide load message
(let ((old-buf (window-buffer (minibuffer-window)))
(echo-keystrokes 0)
(garbage-collection-messages nil)) ; no gc msg when electric
(set-window-buffer (minibuffer-window) calculator-buffer)
(select-window (minibuffer-window))
(calculator-reset)
(calculator-update-display)
(use-local-map calculator-mode-map)
(run-hooks 'calculator-mode-hook)
(unwind-protect
(catch 'calculator-done
(Electric-command-loop
'calculator-done
;; can't use 'noprompt, bug in electric.el
(lambda () 'noprompt)
nil
(lambda (_x _y) (calculator-update-display))))
(set-window-buffer (minibuffer-window) old-buf)
(kill-buffer calculator-buffer))))
(progn
(cond
((not (get-buffer-window calculator-buffer))
(let ((window-min-height 2))
;; maybe leave two lines for our window because of the
;; normal `raised' mode line
(select-window (split-window-below
(if (calculator-need-3-lines) -3 -2)))
(switch-to-buffer calculator-buffer)))
((not (eq (current-buffer) calculator-buffer))
(select-window (get-buffer-window calculator-buffer))))
(calculator-mode)
(setq buffer-read-only t)
(calculator-reset)
(message "Hit `?' For a quick help screen.")))
(when (and calculator-restart-other-mode calculator-electric-mode)
(calculator)))