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))