branch: elpa/casual
commit 3f067e0a4b90be3807c62e91a28aa250c1d7515a
Author: Charles Choi <[email protected]>
Commit: Charles Choi <[email protected]>
Add interactive date insertion to calc
- Adds command casual-calc-push-timestamp to casual-calc-time-tmenu.
- Redesign casual-calc-time-tmenu
---
lisp/casual-calc-time.el | 28 ++++++++++++++++++++++++----
tests/test-casual-calc-time.el | 2 ++
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/lisp/casual-calc-time.el b/lisp/casual-calc-time.el
index e5e501ff0f..17948f48b5 100644
--- a/lisp/casual-calc-time.el
+++ b/lisp/casual-calc-time.el
@@ -24,19 +24,39 @@
;;; Code:
(require 'calc)
+(require 'calc-forms)
+(require 'org)
(require 'transient)
(require 'casual-lib)
(require 'casual-calc-utils)
+(defun casual-calc-push-timestamp ()
+ "Push timestamp on stack using `org-read-date' interface."
+ (interactive)
+ (unless (derived-mode-p 'calc-mode) (error "Not in calc mode"))
+ (let* ((ts (org-read-date t nil nil nil nil
+ (format-time-string
+ "%H:%M"
+ (current-time))))
+ (calc-ts (math-parse-date ts)))
+ (calc-push calc-ts)))
+
(transient-define-prefix casual-calc-time-tmenu ()
"Casual time functions menu."
- [["Time"
+ ["Time"
+ ["Stack"
("n" "Now" calc-now :transient t)
+ ("t" "Timestamp" casual-calc-push-timestamp :transient t)]
+
+ ["Functions"
("f" "First Day of›" casual-calc-first-day-tmenu)
("i" "Increment Month" calc-inc-month :transient t)
- ("u" "To/From Unix Time" calc-unix-time :transient t)
- ("a" "Add Business Days" calc-business-days-plus :transient t)
- ("s" "Subtract Business Days" calc-business-days-minus :transient t)]
+ ("u" "To/From Unix Time" calc-unix-time :transient t)]
+
+ ["Business Days"
+ ("a" "Add" calc-business-days-plus :transient t)
+ ("s" "Subtract" calc-business-days-minus :transient t)]
+
casual-calc-operators-group]
casual-calc-navigation-group)
diff --git a/tests/test-casual-calc-time.el b/tests/test-casual-calc-time.el
index 5d062ff0c1..923b1918dd 100644
--- a/tests/test-casual-calc-time.el
+++ b/tests/test-casual-calc-time.el
@@ -32,10 +32,12 @@
(cl-letf
(((symbol-function #'calc-now) (lambda (x) (interactive)(print "WARNING:
override")))
((symbol-function #'calc-inc-month) (lambda (x) (interactive)(print
"WARNING: override")))
+ ((symbol-function #'casual-calc-push-timestamp) (lambda (x)
(interactive)(print "WARNING: override")))
((symbol-function #'calc-unix-time) (lambda (x) (interactive)(print
"WARNING: override")))
((symbol-function #'calc-business-days-plus) (lambda (x)
(interactive)(print "WARNING: override")))
((symbol-function #'calc-business-days-minus) (lambda (x)
(interactive)(print "WARNING: override"))))
(let* ((test-vectors '(("n" . calc-now)
+ ("t" . casual-calc-push-timestamp)
("f" . casual-calc-first-day-tmenu)
("i" . calc-inc-month)
("u" . calc-unix-time)