diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Functions/Calendar/calendar | 25 |
2 files changed, 18 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog index 003de9c54..7ad83b2e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2010-03-19 Peter Stephenson <pws@csr.com> + * unposted: Functions/Calendar/calendar: update previous + change also to perform calendar_show in current shell since + it interacts better with zle for use with sched. + * 27808: Completion/Unix/Type/_files: Use // parameter substitution instead of :gs. This form is consistent with the rest of the file and has handled quoting correctly for longer. @@ -12934,5 +12938,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.4938 $ +* $Revision: 1.4939 $ ***************************************************** diff --git a/Functions/Calendar/calendar b/Functions/Calendar/calendar index a7aa08595..bbfa9ffb0 100644 --- a/Functions/Calendar/calendar +++ b/Functions/Calendar/calendar @@ -42,8 +42,6 @@ if [[ -n $warnstr ]]; then fi fi -local myschedcmds="${TMPPREFIX:-/tmp/zsh}.sched.$$" - [[ -f $calendar ]] || return 1 # We're not using getopts because we want +... to refer to a @@ -255,6 +253,10 @@ if (( verbose )); then fi fi +local mycmds="${TMPPREFIX:-/tmp/zsh}.calendar_cmds.$$" +touch $mycmds +chmod 600 $mycmds + # start of subshell for OS file locking ( # start of block for following always to clear up lockfiles. @@ -322,14 +324,15 @@ fi showline=${showline%%[[:space:]]#} if (( showall || (t >= start && (remaining || t <= stop || icount < showcount)) )) then - $showprog $start $stop "$showline" + print -r -- ${(qq)showprog} $start $stop ${(qq)showline} >>$mycmds (( icount++ )) # Doesn't count as "shown" unless the event has now passed. (( t <= EPOCHSECONDS )) && (( shown = 1 )) elif [[ -n $sched ]]; then (( tsched = t - mywarntime )) if (( tsched >= start && tsched <= stop)); then - $showprog $start $stop "due in ${mywarnstr}: $showline" + showline="due in ${mywarnstr}: $showline" + print -r -- ${(qq)showprog} $start $stop ${(qq)showline} >>$mycmds elif (( tsched < start )); then # We haven't actually shown it, but it's in the past, # so treat it the same. Should probably rename this variable. @@ -398,12 +401,12 @@ fi i=${"${(@)zsh_scheduled_events#*:*:}"[(I)calendar -s*]} { (( i )) && print sched -$i - print $sched $next calendar "${calopts[@]}" $next $next - } >$myschedcmds + print -r -- ${(qq)sched} $next calendar "${calopts[@]}" $next $next + } >>$mycmds else - $showprog $start $stop \ -"No more calendar events: calendar not rescheduled. + showline="No more calendar events: calendar not rescheduled. Run \"calendar -s\" again if you add to it." + print -r -- ${(qq)showprog} $start $stop ${(qq)showline} >>$mycmds fi fi @@ -433,8 +436,6 @@ Old calendar left in $calendar.old." >&2 exit $rstat ) && { # Tasks that need to be in the current shell - if [[ -f $myschedcmds ]]; then - . $myschedcmds - rm -f $myschedcmds - fi + [[ -s $mycmds ]] && . $mycmds + rm -f $mycmds } |