diff --git a/src/main.sh b/src/main.sh index 0256972..0b8473a 100755 --- a/src/main.sh +++ b/src/main.sh @@ -449,6 +449,30 @@ if [ "${1:-}" = "--preview" ]; then exit fi +month_previous() { + month="$1" + year="$2" + if [ "$month" -eq 1 ]; then + month=12 + year=$((year - 1)) + else + month=$((month - 1)) + fi + echo "$month $year" +} + +month_next() { + month="$1" + year="$2" + if [ "$month" -eq 12 ]; then + month=1 + year=$((year + 1)) + else + month=$((month + 1)) + fi + echo "$month $year" +} + if [ "${1:-}" = "--preview-week" ]; then sign=$(echo "$2" | cut -d '|' -f 1) if [ "$sign" = "+" ]; then @@ -461,23 +485,27 @@ if [ "${1:-}" = "--preview-week" ]; then year_cur=$1 month_cur=$2 day_cur=$3 - # Previous month - if [ "$month" -eq 1 ]; then - month_pre=12 - year_pre=$((year - 1)) - else - month_pre=$((month - 1)) - year_pre=$year - fi - # Next month - if [ "$month" -eq 12 ]; then - month_nex=1 - year_nex=$((year + 1)) - else - month_nex=$((month + 1)) - year_nex=$year - fi + # Previous months + set -- $(month_previous "$month" "$year") + month_pre="$1" + year_pre="$2" + set -- $(month_previous "$month_pre" "$year_pre") + month_pre2="$1" + year_pre2="$2" + # Next months + set -- $(month_next "$month" "$year") + month_nex="$1" + year_nex="$2" + set -- $(month_next "$month_nex" "$year_nex") + month_nex2="$1" + year_nex2="$2" + set -- $(month_next "$month_nex2" "$year_nex2") + month_nex3="$1" + year_nex3="$2" # Highlight today + if [ "$month_pre2" -eq "$month_cur" ] && [ "$year_pre2" -eq "$year_cur" ]; then + var_pre2=$day_cur + fi if [ "$month_pre" -eq "$month_cur" ] && [ "$year_pre" -eq "$year_cur" ]; then var_pre=$day_cur fi @@ -487,11 +515,20 @@ if [ "${1:-}" = "--preview-week" ]; then if [ "$month_nex" -eq "$month_cur" ] && [ "$year_nex" -eq "$year_cur" ]; then var_nex=$day_cur fi + if [ "$month_nex2" -eq "$month_cur" ] && [ "$year_nex2" -eq "$year_cur" ]; then + var_nex2=$day_cur + fi + if [ "$month_nex3" -eq "$month_cur" ] && [ "$year_nex3" -eq "$year_cur" ]; then + var_nex3=$day_cur + fi # show ( + cal "$month_pre2" "$year_pre2" | awk -v cur="${var_pre2:-}" "$AWK_CAL" cal "$month_pre" "$year_pre" | awk -v cur="${var_pre:-}" "$AWK_CAL" cal "$month" "$year" | awk -v cur="${var:-}" -v day="$day" "$AWK_CAL" cal "$month_nex" "$year_nex" | awk -v cur="${var_nex:-}" "$AWK_CAL" + cal "$month_nex2" "$year_nex2" | awk -v cur="${var_nex2:-}" "$AWK_CAL" + cal "$month_nex3" "$year_nex3" | awk -v cur="${var_nex3:-}" "$AWK_CAL" ) | awk '{ l[NR%8] = l[NR%8] " " $0 } END {for (i in l) if (i>0) print l[i] }' fi exit