From: Peter Stephenson <pws@csr.com>
To: zsh-workers@sunsite.dk (Zsh hackers list)
Subject: PATCH: reformat date in calendar_add
Date: Tue, 19 Feb 2008 14:47:07 +0000 [thread overview]
Message-ID: <27587.1203432427@csr.com> (raw)
I thought I'd already added this and my .zshenv seemed to think so, too.
Index: Doc/Zsh/calsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/calsys.yo,v
retrieving revision 1.12
diff -u -r1.12 calsys.yo
--- Doc/Zsh/calsys.yo 1 Feb 2008 19:59:47 -0000 1.12
+++ Doc/Zsh/calsys.yo 19 Feb 2008 14:24:39 -0000
@@ -440,6 +440,10 @@
calendar file as it is already locked. These options will not usually be
needed by users.
+If the style tt(reformat-date) is true, the date and time of the
+new entry will be rewritten into the standard date format: see
+the descriptions of this style and the style tt(date-format).
+
The function can use a unique identifier stored with each event to ensure
that updates to existing events are treated correctly. The entry
should contain the word tt(UID), followed by whitespace, followed by
@@ -624,6 +628,14 @@
The style may be set to an empty string in which case a "done" file
will not be maintained.
)
+kindex(reformat-date)
+item(tt(reformat-date))(
+Boolean, used by tt(calendar_add). If it is true, the date and time
+of new entries added to the calendar will be reformatted to the format
+given by the style tt(date-format) or its default. Only the date and
+time of the event itself is reformatted; any subsidiary dates and times
+such as those associated with repeat and warning times are left alone.
+)
kindex(show-prog)
item(tt(show-prog))(
The programme run by tt(calendar) for showing events. It will
Index: Functions/Calendar/calendar_add
===================================================================
RCS file: /cvsroot/zsh/zsh/Functions/Calendar/calendar_add,v
retrieving revision 1.8
diff -u -r1.8 calendar_add
--- Functions/Calendar/calendar_add 7 Feb 2008 02:11:00 -0000 1.8
+++ Functions/Calendar/calendar_add 19 Feb 2008 14:24:39 -0000
@@ -8,6 +8,8 @@
emulate -L zsh
setopt extendedglob
+local context=":datetime:calendar_add:"
+
local calendar newfile REPLY lastline opt
local -a calendar_entries lockfiles reply
integer my_date done rstat nolock nobackup new_recurring old_recurring
@@ -33,17 +35,25 @@
shift $(( OPTIND - 1 ))
# Read the calendar file from the calendar-file style
-zstyle -s ':datetime:calendar_add:' calendar-file calendar ||
+zstyle -s $context calendar-file calendar ||
calendar=~/calendar
newfile=$calendar.new.$HOST.$$
-if ! calendar_parse "$*"; then
+local addline="$*"
+if ! calendar_parse $addline; then
print "$0: failed to parse date/time" >&2
return 1
fi
parse_new=("${(@kv)reply}")
(( my_date = $parse_new[time] ))
[[ -n $parse_new[rpttime] ]] && (( new_recurring = 1 ))
+if zstyle -t $context reformat-date; then
+ local datefmt
+ zstyle -s $context date-format datefmt ||
+ datefmt="%a %b %d %H:%M:%S %Z %Y"
+ strftime -s REPLY $datefmt $parse_new[time]
+ addline="$REPLY $parse_new[text1]"
+fi
# $calendar doesn't necessarily exist yet.
@@ -53,7 +63,7 @@
# Match a UID, a unique identifier for the entry inherited from
# text/calendar format.
local uidpat='(|*[[:space:]])UID[[:space:]]##(#b)([[:xdigit:]]##)(|[[:space:]]*)'
-if [[ "$*" = ${~uidpat} ]]; then
+if [[ $addline = ${~uidpat} ]]; then
my_uid=${(U)match[1]}
fi
@@ -82,7 +92,7 @@
calendar_parse $line || continue
parse_old=("${(@kv)reply}")
if (( ! done && ${parse_old[time]} > my_date )); then
- print -r -- "$*"
+ print -r -- $addline
(( done = 1 ))
fi
if [[ -n $parse_old[rpttime] ]]; then
@@ -119,13 +129,13 @@
fi
fi
fi
- if [[ $REPLY -eq $my_date && $line = "$*" ]]; then
+ if [[ $parse_old[time] -eq $my_date && $line = $addline ]]; then
(( done )) && continue # paranoia: shouldn't happen
(( done = 1 ))
fi
print -r -- $line
done
- (( done )) || print -r -- "$*"
+ (( done )) || print -r -- $addline
} >$newfile
if (( ! nobackup )); then
if ! mv $calendar $calendar.old; then
--
Peter Stephenson <pws@csr.com> Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070
reply other threads:[~2008-02-19 14:47 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=27587.1203432427@csr.com \
--to=pws@csr.com \
--cc=zsh-workers@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).