branch: elpa/casual
commit af374b09850b2656968bbd3d766f092c39626f53
Merge: d8a174c70b 35a9a75358
Author: Charles Choi <[email protected]>
Commit: GitHub <[email protected]>

    Merge pull request #113 from kickingvegas/104-calculate-percent-of
    
    UI Change: Rebind of β€˜%’ in Casual Calc Main Menu.
---
 docs/images/casual-calc-tmenu.png   | Bin 370428 -> 385045 bytes
 lisp/casual-calc-financial.el       |   3 ++-
 lisp/casual-calc-utils.el           |  25 ++++++++++++++++++++++++-
 lisp/casual-calc.el                 |   4 +---
 tests/test-casual-calc-financial.el |   3 ++-
 tests/test-casual-calc-utils.el     |   2 +-
 tests/test-casual-calc.el           |   2 +-
 7 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/docs/images/casual-calc-tmenu.png 
b/docs/images/casual-calc-tmenu.png
index f052332369..c9ebd3a382 100644
Binary files a/docs/images/casual-calc-tmenu.png and 
b/docs/images/casual-calc-tmenu.png differ
diff --git a/lisp/casual-calc-financial.el b/lisp/casual-calc-financial.el
index 659900126c..176aa6ea37 100644
--- a/lisp/casual-calc-financial.el
+++ b/lisp/casual-calc-financial.el
@@ -41,7 +41,8 @@
     ("r" "Rate of Returnβ€Ί" casual-calc-fin-rate-of-return-tmenu)]
 
    ["Percentages"
-    ("%" "%" calc-percent :transient t)
+    ("%" "π‘Žπ‘%" casual-calc--percent-of :transient t)
+    ("P" "%" casual-calc--percent :transient t)
     ("c" "β†’%" calc-convert-percent :transient t)
     ("D" "Ξ”%" calc-percent-change :transient t)
     ("=" "=" calc-evaluate :transient t)]
diff --git a/lisp/casual-calc-utils.el b/lisp/casual-calc-utils.el
index 4cde3bc2e5..be72c1786f 100644
--- a/lisp/casual-calc-utils.el
+++ b/lisp/casual-calc-utils.el
@@ -35,7 +35,7 @@
     (:power . '("𝑦ˣ" "y^x"))
     (:abs . '("|π‘₯|" "|x|"))
     (:factorial . '(" !" "!"))
-    (:percent . '(" Ωͺ" "%"))
+    (:percent . '("%" "%"))
     (:percent-change . '(" Ξ”%" "% change"))
     (:pi . '("πœ‹" "pi"))
     (:e . '("𝑒" "e"))
@@ -145,5 +145,28 @@ plain ASCII-range string."
           (casual-calc-undo-suffix)
           (casual-lib-quit-all)])
 
+
+(defun casual-calc--percent-of ()
+  "Apply percentage at top of stack (1:) to value above it (2:).
+
+Given an example stack:
+
+    2: a
+    1: b
+
+Executing this function will leave the resultant values on the
+stack:
+
+    2: a
+    1: a * b%
+
+The result in (1:) can then be added or subtracted from (2:)."
+  (interactive)
+  (calc-percent)
+  (calc-roll-up 2)
+  (calc-enter 1)
+  (calc-roll-up 3)
+  (calc-times 2))
+
 (provide 'casual-calc-utils)
 ;;; casual-calc-utils.el ends here
diff --git a/lisp/casual-calc.el b/lisp/casual-calc.el
index b7d61fd314..b21f114367 100644
--- a/lisp/casual-calc.el
+++ b/lisp/casual-calc.el
@@ -85,9 +85,7 @@
     ("!" " !" casual-calc--factorial
      :description (lambda () (casual-calc-unicode-get :factorial))
      :transient t)
-    ("%" " Ωͺ" casual-calc--percent
-     :description (lambda () (casual-calc-unicode-get :percent))
-     :transient t)
+    ("%" "π‘Žπ‘%" casual-calc--percent-of :transient t)
     ("D" " Ξ”%" casual-calc--percent-change
      :description (lambda () (casual-calc-unicode-get :percent-change))
      :transient t)]
diff --git a/tests/test-casual-calc-financial.el 
b/tests/test-casual-calc-financial.el
index 75bbd26877..81fa176dee 100644
--- a/tests/test-casual-calc-financial.el
+++ b/tests/test-casual-calc-financial.el
@@ -186,7 +186,8 @@
                            ("t" . casual-calc-fin-periods-to-target-tmenu)
                            ("r" . casual-calc-fin-rate-of-return-tmenu)
 
-                           ("%" . calc-percent)
+                           ("%" . casual-calc--percent-of)
+                           ("P" . casual-calc--percent)
                            ("c" . calc-convert-percent)
                            ("D" . calc-percent-change)
                            ("=" . calc-evaluate)
diff --git a/tests/test-casual-calc-utils.el b/tests/test-casual-calc-utils.el
index e419a4beb7..870b6c4300 100644
--- a/tests/test-casual-calc-utils.el
+++ b/tests/test-casual-calc-utils.el
@@ -66,7 +66,7 @@
     (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) "%"))
     (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) "𝑒"))
diff --git a/tests/test-casual-calc.el b/tests/test-casual-calc.el
index 277df8be8c..470708986c 100644
--- a/tests/test-casual-calc.el
+++ b/tests/test-casual-calc.el
@@ -57,7 +57,7 @@
                         ("=" . casual-calc--evaluate)
                         ("A" . casual-calc--abs)
                         ("!" . casual-calc--factorial)
-                        ("%" . casual-calc--percent)
+                        ("%" . casual-calc--percent-of)
                         ("D" . casual-calc--percent-change)
                         ("p" . casual-calc--pi)
                         ("e" . casual-calc--e-constant)

Reply via email to