Function: math-build-units-table-buffer
math-build-units-table-buffer is an autoloaded and byte-compiled
function defined in calc-units.el.gz.
Signature
(math-build-units-table-buffer ENTER-BUFFER)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-units.el.gz
(defun math-build-units-table-buffer (enter-buffer)
(if (not (and math-units-table math-units-table-buffer-valid
(get-buffer "*Units Table*")))
(let ((buf (get-buffer-create "*Units Table*"))
(uptr (math-build-units-table))
(calc-language (if (eq calc-language 'big) nil calc-language))
(calc-float-format '(float 0))
(calc-group-digits nil)
(calc-number-radix 10)
(calc-twos-complement-mode nil)
(calc-point-char ".")
(std nil)
u name shadowed)
(save-excursion
(message "Formatting units table...")
(set-buffer buf)
(let ((inhibit-read-only t))
(erase-buffer)
(insert "Calculator Units Table:\n\n")
(insert "(All definitions are exact unless marked with an asterisk (*).)\n\n")
(insert "Unit Type Definition Description\n\n")
(dolist (u uptr)
(setq name (nth 2 u))
(when (eq (car u) 'm)
(setq std t))
(setq shadowed (and std (assq (car u) math-additional-units)))
(when (and name
(> (length name) 1)
(eq (aref name 0) ?\*))
(unless (eq uptr math-units-table)
(insert "\n"))
(setq name (substring name 1)))
(insert " ")
(and shadowed (insert "("))
(insert (symbol-name (car u)))
(and shadowed (insert ")"))
(if (nth 3 u)
(progn
(indent-to 10)
(insert (symbol-name (nth 3 u))))
(or std
(progn
(indent-to 10)
(insert "U"))))
(indent-to 14)
(and shadowed (insert "("))
(if (nth 5 u)
(insert (nth 5 u))
(if (nth 1 u)
(insert (math-format-value (nth 1 u) 80))
(insert (symbol-name (car u)))))
(and shadowed (insert ")"))
(indent-to 41)
(insert " ")
(when name
(insert name))
(if shadowed
(insert " (redefined above)")
(unless (nth 1 u)
(insert " (base unit)")))
(insert "\n"))
(insert "\n\nUnit Prefix Table:\n\n")
(setq uptr math-unit-prefixes)
(while uptr
(setq u (car uptr))
(insert " " (char-to-string (car u)))
(if (equal (nth 1 u) (nth 1 (nth 1 uptr)))
(insert " " (char-to-string (car (car (setq uptr (cdr uptr)))))
" ")
(insert " "))
(insert "10^" (int-to-string (nth 2 (nth 1 u))))
(indent-to 15)
(insert " " (nth 2 u) "\n")
(while (eq (car (car (setq uptr (cdr uptr)))) 0)))
(insert "\n\n")
(insert
(format-message
(concat
"(**) When in TeX or LaTeX display mode, the TeX specific unit\n"
"names will not use the `tex' prefix; the unit name for a\n"
"TeX point will be `pt' instead of `texpt', for example.\n"
"To avoid conflicts, the unit names for pint and parsec will\n"
"be `pint' and `parsec' instead of `pt' and `pc'."))))
(special-mode)
(message "Formatting units table...done"))
(setq math-units-table-buffer-valid t)
(let ((oldbuf (current-buffer)))
(set-buffer buf)
(goto-char (point-min))
(set-buffer oldbuf))
(if enter-buffer
(pop-to-buffer buf)
(display-buffer buf)))
(if enter-buffer
(pop-to-buffer (get-buffer "*Units Table*"))
(display-buffer (get-buffer "*Units Table*")))))