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)