branch: elpa/casual
commit 6b4d3d9d1dea00eca4f21d41d270b1ab66dc2385
Author: Charles Choi <[email protected]>
Commit: Charles Choi <[email protected]>

    Added timezone planner command for times
    
    - Added casual-timezone-planner-current-time to copy both local and remote 
time.
    - Changed Unicode symbol to ⨀ for current hour.
---
 docs/images/casual-timezone-planner-screenshot.png | Bin 607908 -> 458462 bytes
 lisp/casual-timezone-utils.el                      |  45 ++++++++++++++-------
 tests/test-casual-timezone-utils.el                |   3 ++
 3 files changed, 34 insertions(+), 14 deletions(-)

diff --git a/docs/images/casual-timezone-planner-screenshot.png 
b/docs/images/casual-timezone-planner-screenshot.png
index 3ad70cb208..78cf0fff96 100644
Binary files a/docs/images/casual-timezone-planner-screenshot.png and 
b/docs/images/casual-timezone-planner-screenshot.png differ
diff --git a/lisp/casual-timezone-utils.el b/lisp/casual-timezone-utils.el
index be10f02d5e..f8e0a5b364 100644
--- a/lisp/casual-timezone-utils.el
+++ b/lisp/casual-timezone-utils.el
@@ -30,7 +30,7 @@
 (defconst casual-timezone-unicode-db
   '((:previous . '("↑" "Previous"))
     (:next . '("↓" "Next"))
-    (:current . '("🕰️" "Current Hour")))
+    (:current . '("⨀" "Current Hour")))
 
   "Unicode symbol DB to use for Timezone Transient menus.")
 
@@ -174,13 +174,13 @@ The format of the timestamp is defined in the variable
          (datestamp (nth 0 parse-ts))
          (timestamp (nth 1 parse-ts))
          ;; (local-tz (nth 1 (current-time-zone)))
-         (local-time
+         (index-time
           (format-time-string
            casual-timezone-convert-datestamp-format
            (date-to-time (concat datestamp "T" timestamp ":00" " " tzcode)))))
-    (kill-new local-time)
-    (message local-time)
-    local-time))
+    (kill-new index-time)
+    (message index-time)
+    index-time))
 
 (defun casual-timezone-offset-8601 (offset)
   "Compute OFFSET for ISO 8601 date."
@@ -204,6 +204,7 @@ The format of the timestamp is defined in the variable
 (defvar-keymap casual-timezone-planner-mode-map
   "C-o" #'casual-timezone-planner-tmenu
   "." #'casual-timezone-jump-to-relative-now
+  "t" #'casual-timezone-planner-current-time
   "l" #'casual-timezone-planner-current-local
   "r" #'casual-timezone-planner-current-remote
   "p" #'previous-line
@@ -292,7 +293,9 @@ customized via the variable 
`casual-timezone-working-hours-range'."
 The format of the timestamp is defined in the variable
 `casual-timezone-datestamp-format'."
   (interactive)
-  (casual-timezone-planner--copy-current 0))
+  (let ((result (casual-timezone-planner--format-current-index 0)))
+    (kill-new result)
+    (message result)))
 
 (defun casual-timezone-planner-current-remote ()
   "Copy remote time on current line to `kill-ring'.
@@ -300,23 +303,36 @@ The format of the timestamp is defined in the variable
 The format of the timestamp is defined in the variable
 `casual-timezone-datestamp-format'."
   (interactive)
-  (casual-timezone-planner--copy-current 1))
+  (let ((result (casual-timezone-planner--format-current-index 1)))
+    (kill-new result)
+    (message result)))
 
-(defun casual-timezone-planner--copy-current (arg)
+(defun casual-timezone-planner-current-time ()
+  "Copy times on current line to `kill-ring'.
+
+The format of the timestamp is defined in the variable
+`casual-timezone-datestamp-format'."
+  (interactive)
+  (let* ((local (casual-timezone-planner--format-current-index 0))
+         (remote (casual-timezone-planner--format-current-index 1))
+         (result (format "%s, %s" local remote)))
+    (kill-new result)
+    (message result)))
+
+(defun casual-timezone-planner--format-current-index (arg)
   "Copy element with ARG index in current vtable object into `kill-ring'."
   (unless (vtable-current-table) (error "No planner table"))
 
   (let* ((name (vtable-column (vtable-current-table) arg))
          (obj (vtable-current-object))
-         (local-time (nth arg obj))
+         (index-time (nth arg obj))
          (result (format
                   "%s - %s"
                   name
                   (format-time-string
                    casual-timezone-datestamp-format
-                   local-time))))
-    (kill-new result)
-    (message result)))
+                   index-time))))
+    result))
 
 (defun casual-timezone-jump-to-relative-now ()
   "Jump to current relative hour in timezone planner view.
@@ -334,8 +350,8 @@ This command is used for the planner generated by
 
           (while table-data
             (let* ((obj (car table-data))
-                   (local-time (car obj)))
-              (if (< local-time now)
+                   (index-time (car obj)))
+              (if (< index-time now)
                   (setq idxObj obj)))
             (setq table-data (cdr table-data)))
           (vtable-goto-object idxObj)))))
@@ -386,6 +402,7 @@ This formats the output result using the customizable 
variables
      :transient t)]
 
    ["Copy Time"
+    ("t" "Time" casual-timezone-planner-current-time)
     ("l" "Local" casual-timezone-planner-current-local)
     ("r" "Remote" casual-timezone-planner-current-remote)]
 
diff --git a/tests/test-casual-timezone-utils.el 
b/tests/test-casual-timezone-utils.el
index ed5c2ddd53..a9f8c6c74b 100644
--- a/tests/test-casual-timezone-utils.el
+++ b/tests/test-casual-timezone-utils.el
@@ -42,6 +42,7 @@
     (cl-letf ((casualt-mock #'casual-timezone-jump-to-relative-now)
               (casualt-mock #'previous-line)
               (casualt-mock #'next-line)
+              (casualt-mock #'casual-timezone-planner-current-time)
               (casualt-mock #'casual-timezone-planner-current-local)
               (casualt-mock #'casual-timezone-planner-current-remote)
               (casualt-mock #'casual-timezone-planner)
@@ -51,6 +52,7 @@
              '((:binding "." :command casual-timezone-jump-to-relative-now)
                (:binding "p" :command previous-line)
                (:binding "n" :command next-line)
+               (:binding "t" :command casual-timezone-planner-current-time)
                (:binding "l" :command casual-timezone-planner-current-local)
                (:binding "r" :command casual-timezone-planner-current-remote)
                (:binding "z" :command casual-timezone-planner)
@@ -96,6 +98,7 @@
   (let ((test-map casual-timezone-planner-mode-map))
     (should (eq (keymap-lookup test-map "C-o") 
#'casual-timezone-planner-tmenu))
     (should (eq (keymap-lookup test-map ".") 
#'casual-timezone-jump-to-relative-now))
+    (should (eq (keymap-lookup test-map "t") 
#'casual-timezone-planner-current-time))
     (should (eq (keymap-lookup test-map "l") 
#'casual-timezone-planner-current-local))
     (should (eq (keymap-lookup test-map "r") 
#'casual-timezone-planner-current-remote))
     (should (eq (keymap-lookup test-map "p") #'previous-line))

Reply via email to