emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Complete temperature units in calc-convert-temperature


From: Mark Oteiza
Subject: [PATCH] Complete temperature units in calc-convert-temperature
Date: Fri, 19 Feb 2016 12:42:32 -0500
User-agent: Mutt/1.5.24+59 (b55c6a64a07b) (2015-08-30)

---
IIUC, user defined units cannot be temperatures, so deriving
a collection of temperature units from math-standard-units as opposed to
the generated math-units-tables should be fine.

diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 07d9ac9..525e3e2 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -565,7 +565,12 @@ If COMP or STD is non-nil, put that in the units table 
instead."
 (defun calc-convert-temperature (&optional old-units new-units)
   (interactive)
   (calc-slow-wrapper
-   (let ((expr (calc-top-n 1))
+   (let ((tempunits (delq nil
+                          (mapcar
+                           (lambda (x)
+                             (if (nth 3 x) (car x)))
+                           math-standard-units)))
+         (expr (calc-top-n 1))
         (uold nil)
         (uoldname nil)
         unew
@@ -580,15 +585,16 @@ If COMP or STD is non-nil, put that in the units table 
instead."
                                                     (car units)))))
                            (error "Not a pure temperature expression"))
                        (math-read-expr
-                        (setq uoldname (read-string
-                                        "Old temperature units: ")))))))
+                        (setq uoldname (completing-read
+                                        "Old temperature units: "
+                                         tempunits)))))))
      (when (eq (car-safe uold) 'error)
        (error "Bad format in units expression: %s" (nth 2 uold)))
      (or (math-units-in-expr-p expr nil)
         (setq expr (math-mul expr uold)))
      (setq defunits (math-get-default-units expr))
      (setq unew (or new-units
-                    (read-string
+                    (completing-read
                      (concat
                       (if uoldname
                           (concat "Old temperature units: "
@@ -599,7 +605,8 @@ If COMP or STD is non-nil, put that in the units table 
instead."
                           (concat " (default "
                                   defunits
                                   "): ")
-                        ": ")))))
+                        ": "))
+                     tempunits)))
      (setq unew (math-read-expr (if (string= unew "") defunits unew)))
      (when (eq (car-safe unew) 'error)
        (error "Bad format in units expression: %s" (nth 2 unew)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]