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)

Reply via email to