diff --git a/README.md b/README.md index afca984..ced05ed 100644 --- a/README.md +++ b/README.md @@ -84,10 +84,12 @@ Here is the list of available keybindings: | `ctrl-alt-u` | week view | Go back one month | | `ctrl-alt-d` | week view | Go forth one month | | `ctrl-s` | week view | Run the synchronization command | -| `ctrl-l` | week view | Go to current week | +| `ctrl-r` | week view | Go to current week | | `ctrl-g` | week view | Goto date | | `enter` | day view | Open selected calendar entry in your favorite `$EDITOR` | | `ctrl-n` | day view | Make a new entry | +| `ctrl-l` | day view | Move to next day | +| `ctrl-h` | day view | Move to previous day | | `esc`, `backspace` or `q` | day view | Go back to week view | | `ctrl-s` | day view | Run the synchronization command | | `ctrl-alt-d` | day view | Delete selected entry | diff --git a/src/awk/dayview.awk b/src/awk/dayview.awk index c48c8e2..0814c0f 100644 --- a/src/awk/dayview.awk +++ b/src/awk/dayview.awk @@ -14,7 +14,7 @@ function slice(start, stop, desc) { } function hrline(hour) { hour = hour < 10 ? "0"hour : hour - print hour, "", "", "", FAINT hour ":00 ----------------------" OFF + print today, hour, "", "", "", FAINT hour ":00 ----------------------" OFF } function hrlines(start, stop, h, starth, stoph, tmp, i) { starth = substr(start, 1, 2) @@ -39,11 +39,11 @@ BEGIN { OFF = "\033[m" OFS = "|" } -$1 == "00:00" && $2 == "00:00" { print $1, $3, $4, $5, allday($6); next } -$1 == "00:00" { print $1, $3, $4, $5, endstoday($2, $6); next } +$1 == "00:00" && $2 == "00:00" { print today, $1, $3, $4, $5, allday($6); next } +$1 == "00:00" { print today, $1, $3, $4, $5, endstoday($2, $6); next } $1 ~ /^[0-9]{2}:[0-9]{2}$/ { daystart = hrlines($1, $2, daystart, starth, stoph, tmp, i) - print $1, $3, $4, $5, slice($1, $2, $6) + print today, $1, $3, $4, $5, slice($1, $2, $6) } END { hrlines(dayend":00", 0, daystart, starth, stoph, tmp, i) diff --git a/src/main.sh b/src/main.sh index 21420c4..6f04e11 100755 --- a/src/main.sh +++ b/src/main.sh @@ -162,8 +162,8 @@ __show_day() { "$AWK_PARSE" "$file" done }) + today=$(date -d "$DISPLAY_DATE" +"%D") if [ -n "$sef" ]; then - today=$(date -d "$DISPLAY_DATE" +"%D") sef=$(echo "$sef" | while IFS= read -r line; do set -- $line starttime="$1" @@ -194,7 +194,7 @@ __show_day() { echo "$s|$e|$starttime|$endtime|$fpath|$description" done) fi - echo "$sef" | sort -n | awk -v daystart="$DAY_START" -v dayend="$DAY_END" "$AWK_DAYVIEW" + echo "$sef" | sort -n | awk -v today="$today" -v daystart="$DAY_START" -v dayend="$DAY_END" "$AWK_DAYVIEW" } __list() { @@ -413,23 +413,27 @@ if [ "${1:-}" = "--day" ]; then --no-input \ --margin='20%,5%' \ --border='double' \ - --border-label="🗓️ $(date -d "$DISPLAY_DATE" +"%A %e %B %Y")" \ --color=label:bold:green \ --border-label-pos=3 \ --cycle \ --delimiter='|' \ - --with-nth='{5}' \ - --accept-nth='1,2,3,4' \ + --with-nth='{6}' \ + --accept-nth='2,3,4,5' \ --preview="$0 --preview {}" \ --expect="ctrl-n,esc,backspace,q" \ + --bind='load:transform(echo change-border-label:🗓️ $(date -d {1} +"%A %e %B %Y"))+transform(echo {} | grep \|\| || echo show-preview)' \ --bind='start:hide-preview' \ + --bind="ctrl-r:reload:$0 --show-day {1}" \ --bind='ctrl-j:down+hide-preview+transform:echo {} | grep \|\| || echo show-preview' \ --bind='ctrl-k:up+hide-preview+transform:echo {} | grep \|\| || echo show-preview' \ + --bind="ctrl-l:hide-preview+reload:$0 --show-day {1} '+1 day'" \ + --bind="ctrl-h:hide-preview+reload:$0 --show-day {1} '-1 day'" \ --bind="ctrl-s:execute($SYNC_CMD ; printf 'Press to continue.'; read -r tmp)" \ --bind="ctrl-alt-d:become($0 --delete {})" \ --bind="j:preview-down" \ --bind="k:preview-down" \ --bind="w:toggle-preview-wrap" + #--bind="ctrl-u:unbind(load)+reload:$0 --list {2} '-1 week'" \ ) key=$(echo "$selection" | head -1) line=$(echo "$selection" | tail -1) @@ -456,10 +460,10 @@ if [ "${1:-}" = "--date" ]; then fi if [ "${1:-}" = "--preview" ]; then - hour=$(echo "$2" | cut -d '|' -f 1) - start=$(echo "$2" | cut -d '|' -f 2) - end=$(echo "$2" | cut -d '|' -f 3) - fpath=$(echo "$2" | cut -d '|' -f 4 | sed "s/ /|/g") + hour=$(echo "$2" | cut -d '|' -f 2) + start=$(echo "$2" | cut -d '|' -f 3) + end=$(echo "$2" | cut -d '|' -f 4) + fpath=$(echo "$2" | cut -d '|' -f 5 | sed "s/ /|/g") if [ -n "$hour" ] && [ -n "$fpath" ]; then fpath="$ROOT/$fpath" start=$(__canonical_datetime "$start" "%a ") @@ -558,7 +562,7 @@ if [ "${1:-}" = "--preview-week" ]; then fi if [ "${1:-}" = "--delete" ]; then - fpath=$(echo "$2" | cut -d '|' -f 4 | sed "s/ /|/g") + fpath=$(echo "$2" | cut -d '|' -f 5 | sed "s/ /|/g") if [ -n "$fpath" ]; then fpath="$ROOT/$fpath" summary=$(awk -v field="SUMMARY" "$AWK_GET" "$fpath") @@ -592,6 +596,14 @@ DISPLAY_DATE=${DISPLAY_DATE:-today} DISPLAY_DATE=$(date -d "$DISPLAY_DATE" +"%D") DISPLAY_POS=$((8 - $(date -d "$DISPLAY_DATE" +"%u"))) +if [ "${1:-}" = "--show-day" ]; then + shift + DISPLAY_DATE=${*:-today} + DISPLAY_POS=$((8 - $(date -d "$DISPLAY_DATE" +"%u"))) + __show_day + exit +fi + if [ "${1:-}" = "--list" ]; then shift DISPLAY_DATE=${*:-today} @@ -633,7 +645,7 @@ selection=$( --bind="ctrl-alt-d:unbind(load)+reload:$0 --list {2} '+1 month'" \ --bind="ctrl-s:execute($SYNC_CMD ; printf 'Press to continue.'; read -r tmp)" \ --bind="ctrl-g:become($0 --goto)" \ - --bind="ctrl-l:rebind(load)+reload:$0 --list" + --bind="ctrl-r:rebind(load)+reload:$0 --list" ) key=$(echo "$selection" | head -1)