branch: elpa/casual
commit d6a890c70e9e94580964a7df1dd124d8269577a0
Merge: 8d9be3f509 56ef367eee
Author: Charles Choi <[email protected]>
Commit: GitHub <[email protected]>
Merge pull request #74 from kickingvegas/71-add-calc-from-hms-command
Re-layout Calc Conversions Menu
---
lisp/casual-calc-conversion.el | 37 ++++++++++++++++++---
lisp/casual-calc-settings.el | 3 +-
lisp/casual-calc-utils.el | 7 ++--
tests/test-casual-calc-conversion.el | 2 ++
tests/test-casual-calc-labels.el | 4 +--
tests/test-casual-calc-utils.el | 64 ++++++++++++++++++++++++++++++++++++
6 files changed, 107 insertions(+), 10 deletions(-)
diff --git a/lisp/casual-calc-conversion.el b/lisp/casual-calc-conversion.el
index 9f71d5d919..fee7b82e08 100644
--- a/lisp/casual-calc-conversion.el
+++ b/lisp/casual-calc-conversion.el
@@ -30,7 +30,9 @@
(transient-define-prefix casual-calc-conversions-tmenu ()
"Casual conversion functions menu."
- [["Conversions"
+ ["Conversions"
+
+ ["Angle"
("d" "To Degrees" calc-to-degrees
:description (lambda ()
(format "%s %s %s"
@@ -44,10 +46,35 @@
(casual-calc-unicode-get :degrees)
(casual-calc-unicode-get :to)
(casual-calc-unicode-get :radians)))
- :transient t)
- ("h" "To HMS" calc-to-hms :transient t)
- ("f" "To Float" calc-float :transient t)
- ("F" "To Fraction" calc-fraction :transient t)]]
+ :transient t)]
+
+ ["HMS"
+ ("h" "To ℎ𝑚𝑠" calc-to-hms
+ :description (lambda ()
+ (format "real %s %s"
+ (casual-calc-unicode-get :to)
+ (casual-calc-unicode-get :hms)))
+ :transient t)
+ ("H" "From ℎ𝑚𝑠" calc-from-hms
+ :description (lambda ()
+ (format "%s %s real"
+ (casual-calc-unicode-get :hms)
+ (casual-calc-unicode-get :to)))
+ :transient t)]
+
+ ["Numeric"
+ ("f" "To Float" calc-float
+ :description (lambda ()
+ (format "%s %s"
+ (casual-calc-unicode-get :to)
+ (casual-calc-unicode-get :float)))
+ :transient t)
+ ("F" "To Fraction" calc-fraction
+ :description (lambda ()
+ (format "%s %s"
+ (casual-calc-unicode-get :to)
+ (casual-calc-unicode-get :fraction)))
+ :transient t)]]
casual-calc-operators-group-row
diff --git a/lisp/casual-calc-settings.el b/lisp/casual-calc-settings.el
index 5a88f2175d..466a1f4315 100644
--- a/lisp/casual-calc-settings.el
+++ b/lisp/casual-calc-settings.el
@@ -100,7 +100,8 @@
("H" "ℎ𝑚𝑠 Format" calc-hms-notation
:description (lambda ()
(format
- "Set ℎ𝑚𝑠 Format (now %s)"
+ "Set %s Format (now %s)"
+ (casual-calc-unicode-get :hms)
(format calc-hms-format "" "" "")))
:transient t)]
diff --git a/lisp/casual-calc-utils.el b/lisp/casual-calc-utils.el
index a165047c8b..4cde3bc2e5 100644
--- a/lisp/casual-calc-utils.el
+++ b/lisp/casual-calc-utils.el
@@ -52,8 +52,11 @@
(:arcsin . '("𝑎𝑟𝑐𝑠𝑖𝑛" "arcsin"))
(:arccos . '("𝑎𝑟𝑐𝑐𝑜𝑠" "arccos"))
(:arctan . '("𝑎𝑟𝑐𝑡𝑎𝑛" "arctan"))
- (:degrees . '("°" "Degrees"))
- (:radians . '("𝑟𝑎𝑑" "Radians"))
+ (:degrees . '("°" "degrees"))
+ (:radians . '("𝑟𝑎𝑑" "radians"))
+ (:hms . '("ℎ𝑚𝑠" "HMS"))
+ (:float . '("𝑓𝑙𝑜𝑎𝑡" "float"))
+ (:fraction . '("𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛" "fraction"))
(:to . '("→" "to")))
"Unicode symbol DB to use for Calc Transient menus.")
diff --git a/tests/test-casual-calc-conversion.el
b/tests/test-casual-calc-conversion.el
index 7f57e54733..53a18b24ee 100644
--- a/tests/test-casual-calc-conversion.el
+++ b/tests/test-casual-calc-conversion.el
@@ -33,11 +33,13 @@
(((symbol-function #'calc-to-degrees) (lambda (x) (interactive)(print
"WARNING: override")))
((symbol-function #'calc-to-radians) (lambda (x) (interactive)(print
"WARNING: override")))
((symbol-function #'calc-to-hms) (lambda (x) (interactive)(print
"WARNING: override")))
+ ((symbol-function #'calc-from-hms) (lambda (x) (interactive)(print
"WARNING: override")))
((symbol-function #'calc-float) (lambda (x) (interactive)(print
"WARNING: override")))
((symbol-function #'calc-fraction) (lambda (x) (interactive)(print
"WARNING: override"))))
(let* ((test-vectors '(("d" . calc-to-degrees)
("r" . calc-to-radians)
("h" . calc-to-hms)
+ ("H" . calc-from-hms)
("f" . calc-float)
("F" . calc-fraction)))
(test-vectors (append test-vectors casualt-test-operators-group)))
diff --git a/tests/test-casual-calc-labels.el b/tests/test-casual-calc-labels.el
index d540be6d74..00fd826a78 100644
--- a/tests/test-casual-calc-labels.el
+++ b/tests/test-casual-calc-labels.el
@@ -89,9 +89,9 @@
(ert-deftest test-casual-calc-angle-mode-label ()
(casualt-calc-setup)
(setq calc-angle-mode 'deg)
- (should (equal (casual-calc-angle-mode-label) "Degrees"))
+ (should (equal (casual-calc-angle-mode-label) "degrees"))
(setq calc-angle-mode 'rad)
- (should (equal (casual-calc-angle-mode-label) "Radians"))
+ (should (equal (casual-calc-angle-mode-label) "radians"))
(setq calc-angle-mode 'hms)
(should (equal (casual-calc-angle-mode-label) "hms"))
(casualt-calc-breakdown t))
diff --git a/tests/test-casual-calc-utils.el b/tests/test-casual-calc-utils.el
index e77466b9fa..e419a4beb7 100644
--- a/tests/test-casual-calc-utils.el
+++ b/tests/test-casual-calc-utils.el
@@ -25,6 +25,70 @@
;;; Code:
(require 'ert)
(require 'casual-calc-test-utils)
+(require 'casual-calc)
+
+(ert-deftest test-casual-calc-unicode-get ()
+ (let ((casual-lib-use-unicode nil))
+ (should (string-equal (casual-calc-unicode-get :inv) "1/x"))
+ (should (string-equal (casual-calc-unicode-get :sqrt) "sqrt"))
+ (should (string-equal (casual-calc-unicode-get :change-sign) "+/-"))
+ (should (string-equal (casual-calc-unicode-get :power) "y^x"))
+ (should (string-equal (casual-calc-unicode-get :abs) "|x|"))
+ (should (string-equal (casual-calc-unicode-get :factorial) "!"))
+ (should (string-equal (casual-calc-unicode-get :percent) "%"))
+ (should (string-equal (casual-calc-unicode-get :percent-change) "%
change"))
+ (should (string-equal (casual-calc-unicode-get :pi) "pi"))
+ (should (string-equal (casual-calc-unicode-get :e) "e"))
+ (should (string-equal (casual-calc-unicode-get :ln) "ln"))
+ (should (string-equal (casual-calc-unicode-get :lnp1) "ln(x+1)"))
+ (should (string-equal (casual-calc-unicode-get :log10) "log10"))
+ (should (string-equal (casual-calc-unicode-get :log) "log"))
+ (should (string-equal (casual-calc-unicode-get :exp) "e^x"))
+ (should (string-equal (casual-calc-unicode-get :expm1) "e^x - 1"))
+ (should (string-equal (casual-calc-unicode-get :sin) "sin"))
+ (should (string-equal (casual-calc-unicode-get :cos) "cos"))
+ (should (string-equal (casual-calc-unicode-get :tan) "tan"))
+ (should (string-equal (casual-calc-unicode-get :stack) "Stack"))
+ (should (string-equal (casual-calc-unicode-get :arcsin) "arcsin"))
+ (should (string-equal (casual-calc-unicode-get :arccos) "arccos"))
+ (should (string-equal (casual-calc-unicode-get :arctan) "arctan"))
+ (should (string-equal (casual-calc-unicode-get :degrees) "degrees"))
+ (should (string-equal (casual-calc-unicode-get :radians) "radians"))
+ (should (string-equal (casual-calc-unicode-get :hms) "HMS"))
+ (should (string-equal (casual-calc-unicode-get :float) "float"))
+ (should (string-equal (casual-calc-unicode-get :fraction) "fraction"))
+ (should (string-equal (casual-calc-unicode-get :to) "to")))
+
+ (let ((casual-lib-use-unicode t))
+ (should (string-equal (casual-calc-unicode-get :inv) "1/𝑥"))
+ (should (string-equal (casual-calc-unicode-get :sqrt) "√"))
+ (should (string-equal (casual-calc-unicode-get :change-sign) "∓"))
+ (should (string-equal (casual-calc-unicode-get :power) "𝑦ˣ"))
+ (should (string-equal (casual-calc-unicode-get :abs) "|𝑥|"))
+ (should (string-equal (casual-calc-unicode-get :factorial) " !"))
+ (should (string-equal (casual-calc-unicode-get :percent) " ٪"))
+ (should (string-equal (casual-calc-unicode-get :percent-change) " Δ%"))
+ (should (string-equal (casual-calc-unicode-get :pi) "𝜋"))
+ (should (string-equal (casual-calc-unicode-get :e) "𝑒"))
+ (should (string-equal (casual-calc-unicode-get :ln) "𝑙𝑛"))
+ (should (string-equal (casual-calc-unicode-get :lnp1) "𝑙𝑛(𝑥+𝟣)"))
+ (should (string-equal (casual-calc-unicode-get :log10) "𝑙𝑜𝑔₁₀"))
+ (should (string-equal (casual-calc-unicode-get :log) "𝑙𝑜𝑔ₐ(𝑥)"))
+ (should (string-equal (casual-calc-unicode-get :exp) "𝑒ˣ"))
+ (should (string-equal (casual-calc-unicode-get :expm1) "𝑒ˣ-𝟣"))
+ (should (string-equal (casual-calc-unicode-get :sin) "𝑠𝑖𝑛"))
+ (should (string-equal (casual-calc-unicode-get :cos) "𝑐𝑜𝑠"))
+ (should (string-equal (casual-calc-unicode-get :tan) "𝑡𝑎𝑛"))
+ (should (string-equal (casual-calc-unicode-get :stack) "≣"))
+ (should (string-equal (casual-calc-unicode-get :arcsin) "𝑎𝑟𝑐𝑠𝑖𝑛"))
+ (should (string-equal (casual-calc-unicode-get :arccos) "𝑎𝑟𝑐𝑐𝑜𝑠"))
+ (should (string-equal (casual-calc-unicode-get :arctan) "𝑎𝑟𝑐𝑡𝑎𝑛"))
+ (should (string-equal (casual-calc-unicode-get :degrees) "°"))
+ (should (string-equal (casual-calc-unicode-get :radians) "𝑟𝑎𝑑"))
+ (should (string-equal (casual-calc-unicode-get :hms) "ℎ𝑚𝑠"))
+ (should (string-equal (casual-calc-unicode-get :float) "𝑓𝑙𝑜𝑎𝑡"))
+ (should (string-equal (casual-calc-unicode-get :fraction) "𝑓𝑟𝑎𝑐𝑡𝑖𝑜𝑛"))
+ (should (string-equal (casual-calc-unicode-get :to) "→"))))
(provide 'test-casual-calc-utils)
;;; test-casual-calc-utils.el ends here