From 16193b5554daa42d69b12000082af97e6ad3fea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Fri, 13 Jun 2025 22:39:23 +0200 Subject: [PATCH] bug fix: recognize all-day events, improvment: view source with `v` --- src/awk/new.awk | 26 ++++++++++++++++++-------- src/awk/update.awk | 24 ++++++++++++++++-------- src/main.sh | 4 +++- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/awk/new.awk b/src/awk/new.awk index b322e00..267456d 100644 --- a/src/awk/new.awk +++ b/src/awk/new.awk @@ -49,17 +49,23 @@ END { # If nanoseconds are not 0, then we assume user enterd "tomorrow" or # something the like, and we make this a date entry, as opposed to a # date-time entry. + # Similalry, if the time is 00:00, we make this a date, as opposed to a + # date-time entry. gsub("\"", "\\\"", from) cmd = "date -d \"" from "\" +\"%N\""; + cmd | getline n + close(cmd) + n = n + 0 + cmd = "date -d \"" from "\" +\"%H%M\""; cmd | getline t close(cmd) t = t + 0 - if (t == 0) { - from_type = "DATE-TIME" - cmd = "date -d \"" from "\" +\"@%s\" | xargs date -u +\"%Y%m%dT%H%M00Z\" -d" - } else { + if (n != 0 || t == 0) { from_type = "DATE" cmd = "date -d \"" from "\" +\"%Y%m%d\""; + } else { + from_type = "DATE-TIME" + cmd = "date -d \"" from "\" +\"@%s\" | xargs date -u +\"%Y%m%dT%H%M00Z\" -d" } suc = cmd | getline from close(cmd) @@ -69,15 +75,19 @@ END { # gsub("\"", "\\\"", to) cmd = "date -d \"" to "\" +\"%N\""; + cmd | getline n + close(cmd) + n = n + 0 + cmd = "date -d \"" to "\" +\"%H%M\""; cmd | getline t close(cmd) t = t + 0 - if (t == 0) { - to_type = "DATE-TIME" - cmd = "date -d \"" to "\" +\"@%s\" | xargs date -u +\"%Y%m%dT%H%M00Z\" -d" - } else { + if (n != 0 || t == 0) { to_type = "DATE" cmd = "date -d \"" to "\" +\"%Y%m%d\""; + } else { + to_type = "DATE-TIME" + cmd = "date -d \"" to "\" +\"@%s\" | xargs date -u +\"%Y%m%dT%H%M00Z\" -d" } suc = cmd | getline to close(cmd) diff --git a/src/awk/update.awk b/src/awk/update.awk index 08b4461..8cc99dd 100644 --- a/src/awk/update.awk +++ b/src/awk/update.awk @@ -38,15 +38,19 @@ ENDFILE { # date-time entry. gsub("\"", "\\\"", from) cmd = "date -d \"" from "\" +\"%N\""; + cmd | getline n + close(cmd) + n = n + 0 + cmd = "date -d \"" from "\" +\"%H%M\""; cmd | getline t close(cmd) t = t + 0 - if (t == 0) { - from_type = "DATE-TIME" - cmd = "date -d \"" from "\" +\"@%s\" | xargs date -u +\"%Y%m%dT%H%M00Z\" -d" - } else { + if (n != 0 || t == 0) { from_type = "DATE" cmd = "date -d \"" from "\" +\"%Y%m%d\""; + } else { + from_type = "DATE-TIME" + cmd = "date -d \"" from "\" +\"@%s\" | xargs date -u +\"%Y%m%dT%H%M00Z\" -d" } suc = cmd | getline from close(cmd) @@ -56,15 +60,19 @@ ENDFILE { # gsub("\"", "\\\"", to) cmd = "date -d \"" to "\" +\"%N\""; + cmd | getline n + close(cmd) + n = n + 0 + cmd = "date -d \"" to "\" +\"%H%M\""; cmd | getline t close(cmd) t = t + 0 - if (t == 0) { - to_type = "DATE-TIME" - cmd = "date -d \"" to "\" +\"@%s\" | xargs date -u +\"%Y%m%dT%H%M00Z\" -d" - } else { + if (n != 0 || t == 0) { to_type = "DATE" cmd = "date -d \"" to "\" +\"%Y%m%d\""; + } else { + to_type = "DATE-TIME" + cmd = "date -d \"" to "\" +\"@%s\" | xargs date -u +\"%Y%m%dT%H%M00Z\" -d" } suc = cmd | getline to close(cmd) diff --git a/src/main.sh b/src/main.sh index f8dbee4..d2353fa 100755 --- a/src/main.sh +++ b/src/main.sh @@ -989,7 +989,7 @@ while true; do --with-nth='{6}' \ --accept-nth='1,2,3,4,5' \ --preview="$0 --preview-event {}" \ - --expect="ctrl-n,ctrl-alt-d,ctrl-t,ctrl-g,esc,backspace,q" \ + --expect="ctrl-n,ctrl-alt-d,ctrl-t,ctrl-g,esc,backspace,q,v" \ --bind="load:pos(1)+transform( echo change-border-label:🗓️ \$(date -d {1} +\"%A %e %B %Y\") )+transform( @@ -1033,6 +1033,8 @@ while true; do set -- "--set-tz" "--day" "$DISPLAY_DATE" elif [ "$key" = "esc" ] || [ "$key" = "backspace" ] || [ "$key" = "q" ]; then set -- "--week" "$DISPLAY_DATE" + elif [ "$key" = "v" ] && [ -f "$ROOT/$fpath" ]; then + $EDITOR "$ROOT/$fpath" elif [ -z "$key" ] && [ -n "$fpath" ]; then __edit "$start" "$end" "$fpath" set -- "--day" "$DISPLAY_DATE"