Function: calc-do-keypad

calc-do-keypad is an autoloaded and byte-compiled function defined in calc-keypd.el.gz.

Signature

(calc-do-keypad &optional FULL-DISPLAY INTERACTIVE)

Source Code

;; Defined in /usr/src/emacs/lisp/calc/calc-keypd.el.gz
(defun calc-do-keypad (&optional full-display interactive)
  (calc-create-buffer)
  (let ((calcbuf (current-buffer)))
    (unless (bufferp calc-keypad-buffer)
      (set-buffer (setq calc-keypad-buffer (get-buffer-create "*Calc Keypad*")))
      (calc-keypad-mode)
      (setq calc-main-buffer calcbuf)
      (calc-keypad-redraw)
      (calc-trail-buffer))
    (let ((width 29)
	  (height 17)
	  win old-win)
      (if (setq win (get-buffer-window "*Calculator*"))
	  (delete-window win))
      (if (setq win (get-buffer-window "*Calc Trail*"))
	  (if (one-window-p)
	      (switch-to-buffer (other-buffer))
	    (delete-window win)))
      (if (setq win (get-buffer-window calc-keypad-buffer))
	  (progn
	    (bury-buffer "*Calculator*")
	    (bury-buffer "*Calc Trail*")
	    (bury-buffer calc-keypad-buffer)
	    (if (one-window-p)
		(switch-to-buffer (other-buffer))
	      (delete-window win)))
	(setq calc-was-keypad-mode t
	      old-win (get-largest-window))
	(if (or (< (window-height old-win) (+ height 6))
		(< (window-width old-win) (+ width 15))
		full-display)
	    (delete-other-windows old-win))
	(if (< (window-height old-win) (+ height 4))
	    (error "Screen is not tall enough for this mode"))
	(if full-display
	    (progn
	      (setq win (split-window old-win (- (window-height old-win)
						 height 1)))
	      (set-window-buffer old-win (calc-trail-buffer))
	      (set-window-buffer win calc-keypad-buffer)
	      (set-window-start win 1)
	      (setq win (split-window win (+ width 7) t))
	      (set-window-buffer win calcbuf))
	  (if (or t  ; left-side keypad not yet fully implemented
		  (< (with-current-buffer (window-buffer old-win)
		       (current-column))
		     (/ (window-width) 2)))
	      (setq win (split-window old-win (- (window-width old-win)
						 width 2)
				      t))
	    (setq old-win (split-window old-win (+ width 2) t)))
	  (set-window-buffer win calc-keypad-buffer)
	  (set-window-start win 1)
	  (split-window win (- (window-height win) height 1))
	  (set-window-buffer win calcbuf))
	(select-window old-win)
	(message "Welcome to GNU Emacs Calc!  Use the left and right mouse buttons")
	(run-hooks 'calc-keypad-start-hook)
	(and calc-keypad-said-hello interactive
	     (progn
	       (sit-for 2)
	       (message "")))
	(setq calc-keypad-said-hello t)))
    (setq calc-keypad-input nil)))