Jeff Miller <jmiller(a)cablespeed.com> writes:
I will be committing theses changes this weekend.
Jeff
ChangeLog addition:
2006-08-18 Jeff Miller <jeff.miller(a)xemacs.org>
Further syncs with Emacs CVS
2002-11-08 John Wiegley <johnw(a)gnu.org>
* calendar/timeclock.el (timeclock-modeline-display): Use assq as
well as memq to find `global-mode-string' within
`mode-line-format'. The structure of that variable has changed in
21.3.
Hello Jeff, thanks for taking over maintainership of calendar for XEmacs!
Here are a few issues I would like to bring up.
1.
My local calendar workspace shows many conflicts stemming from
whitespace diffs.
It appears that the repository contains quite a bit of end-of-line
whitespace in the caleandar sources.
Other conflicts stem from mixed SPACE and TAB indenting, again in the
repository.
I use following hook to adapt to current tabs indentation mode for
each file:
(defun apa-find-file-hook ()
"Adrian's hook to set up editing customizations based on buffer-file-name and
file content."
(save-excursion
;; Only use indent-tabs-mode, if the buffer already has
;; some.
;; simplified in #emacs on 2004-11-02 with bojohan.
(setq indent-tabs-mode
(and (search-forward-regexp "^\t" nil t) t))))
2.
You're using indented ChangeLog entries for your syncing.
I have not found any other use of indented ChangeLog entries (for
syncing activity) in all of the XEmacs packages repository.
I'm concerned about commiting to introduce this practice lightly.
(info "(standards)Change Log Concepts")
does not mention this practice either.
Usually it is just mentioned in the ChangeLog what is being synced to.
3.
In my previous sync work I have spend a lot of time marking any
XEmacs-related changes I made.
This is very useful (and often the only thing to go by) in future sync
activity, in order to evaluate discrepancies.
4.
I'm having a hard time understanding the local changes in my
workspace, so anything of the above that you could address would be
helpful.
The ChangeLog style is not a problem in evaluating my local conflicts
and changes, but the indentation style, the EOL whitespace, and the
missing
;; XEmacs change
markers are.
I am attaching my current cvs-diffs as of today and would be greatful
for any of these you may be able to resolve.
Hopefully I will be able to chip in with a few contributions of my own
(I have some timeclock.el improvements in the queue).
Thanks in advance!
Adrian
2002-08-30 Edward M. Reingold <reingold(a)emr.cs.iit.edu>
* calendar/diary-lib.el (diary-mail-entries): Don't overwrite
user's value of diary-list-include-blanks, but generate message
instead if there are no entries.
2002-08-06 Sam Steingold <sds(a)gnu.org>
* calendar/diary-lib.el (diary-mail-entries):
(diary-modified, diary-entries-list, displayed-year)
(displayed-month, entry, date, number, date-string, d-file)
(original-date): Defvar without binding to avoid compiler warnings.
* calendar/diary-lib.el (diary-mail-entries): Use `compose-mail'
and `mail-user-agent' instead of straight sendmail.
2002-07-22 Alan Shutko <ats(a)acm.org>
* calendar/solar.el (diary-sabbath-candles): Add optional MARK
parameter, specifying what face or character to use in the
calendar display. These will now return (MARK . ENTRY).
* calendar/lunar.el (diary-phases-of-moon): Add optional MARK
parameter, specifying what face or character to use in the
calendar display. These will now return (MARK . ENTRY).
* calendar/cal-hebrew.el (diary-omer, diary-yahrzeit)
(diary-rosh-hodesh, diary-parasha, diary-parasha): Add optional
MARK parameter, specifying what face or character to use in the
calendar display. These will now return (MARK . ENTRY).
* calendar/diary-lib.el (mark-sexp-diary-entries): Retrieve mark
from diary-sexp-entry and pass it to mark-visible-calendar-date.
(list-sexp-diary-entries): Update doc string for new docs for ....
If diary-sexp-entry returns a cons, only add the text to the diary
list.
(diary-sexp-entry): Allow sexps to return a cons of the form (MARK
. STRING) to specify what face or character mark should be used in
the calendar display.
(diary-date, diary-block, diary-float, diary-anniversary)
(diary-cyclic): Add optional MARK parameter, specifying what face
or character to use in the calendar display. These will now
return (MARK . ENTRY).
* calendar/diary-lib.el (check-calendar-holidays, diary-iso-date)
(calendar-holiday-list, diary-french-date, diary-mayan-date)
(diary-julian-date, diary-astro-day-number, diary-chinese-date)
(diary-islamic-date, list-islamic-diary-entries)
(mark-islamic-diary-entries, mark-islamic-calendar-date-pattern)
(diary-hebrew-date, diary-omer, diary-yahrzeit, diary-parasha)
(diary-rosh-hodesh, list-hebrew-diary-entries)
(mark-hebrew-diary-entries, mark-hebrew-calendar-date-pattern)
(diary-coptic-date, diary-persian-date, diary-phases-of-moon)
(diary-sunrise-sunset, diary-sabbath-candles):
Remove interactive flag from autoloads.
2002-07-13 Glenn Morris <gmorris(a)ast.cam.ac.uk>
* calendar/timeclock.el (timeclock-in): Handle the case where no
log file exists (ie the very first call).
2002-04-22 Edward M. Reingold <reingold(a)emr.cs.iit.edu>
* diary-lib.el (include-other-diary-files): Allow modifying
included buffer, to turn off selective display.
calendar source patch:
Diff command: cvs -q diff -uN
Files affected: timeclock.el solar.el lunar.el diary-lib.el cal-hebrew.el
Index: cal-hebrew.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/calendar/cal-hebrew.el,v
retrieving revision 1.5
diff -u -b -w -u -r1.5 cal-hebrew.el
--- cal-hebrew.el 2006/08/04 20:23:50 1.5
+++ cal-hebrew.el 2006/08/19 00:02:18
@@ -898,9 +898,12 @@
"Hebrew calendar equivalent of date diary entry."
(format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string
date)))
-(defun diary-omer ()
+(defun diary-omer (&optional mark)
"Omer count diary entry.
-Entry applies if date is within 50 days after Passover."
+Entry applies if date is within 50 days after Passover.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(let* ((passover
(calendar-absolute-from-hebrew
(list 1 15 (+ (extract-calendar-year date) 3760))))
@@ -908,6 +911,7 @@
(week (/ omer 7))
(day (% omer 7)))
(if (and (> omer 0) (< omer 50))
+ (cons mark
(format "Day %d%s of the omer (until sunset)"
omer
(if (zerop week)
@@ -918,15 +922,18 @@
(if (zerop day)
""
(format " and %d day%s"
- day (if (= day 1) "" "s")))))))))
+ day (if (= day 1) "" "s"))))))))))
-(defun diary-yahrzeit (death-month death-day death-year)
+(defun diary-yahrzeit (death-month death-day death-year &optional mark)
"Yahrzeit diary entry--entry applies if date is yahrzeit or the day before.
Parameters are DEATH-MONTH, DEATH-DAY, DEATH-YEAR; the diary entry is assumed
to be the name of the person. Date of death is on the *civil* calendar;
although the date of death is specified by the civil calendar, the proper
Hebrew calendar yahrzeit is determined. If `european-calendar-style' is t, the
-order of the parameters is changed to DEATH-DAY, DEATH-MONTH, DEATH-YEAR."
+order of the parameters is changed to DEATH-DAY, DEATH-MONTH, DEATH-YEAR.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(let* ((h-date (calendar-hebrew-from-absolute
(calendar-absolute-from-gregorian
(if european-calendar-style
@@ -940,6 +947,7 @@
(diff (- yr h-year))
(y (hebrew-calendar-yahrzeit h-date yr)))
(if (and (> diff 0) (or (= y d) (= y (1+ d))))
+ (cons mark
(format "Yahrzeit of %s%s: %d%s anniversary"
entry
(if (= y d) "" " (evening)")
@@ -947,11 +955,14 @@
(cond ((= (% diff 10) 1) "st")
((= (% diff 10) 2) "nd")
((= (% diff 10) 3) "rd")
- (t "th"))))))
+ (t "th")))))))
-(defun diary-rosh-hodesh ()
+(defun diary-rosh-hodesh (&optional mark)
"Rosh Hodesh diary entry.
-Entry applies if date is Rosh Hodesh, the day before, or the Saturday before."
+Entry applies if date is Rosh Hodesh, the day before, or the Saturday before.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(let* ((d (calendar-absolute-from-gregorian date))
(h-date (calendar-hebrew-from-absolute d))
(h-month (extract-calendar-month h-date))
@@ -967,6 +978,7 @@
(h-yesterday (extract-calendar-day
(calendar-hebrew-from-absolute (1- d)))))
(if (or (= h-day 30) (and (= h-day 1) (/= h-month 7)))
+ (cons mark
(format
"Rosh Hodesh %s"
(if (= h-day 30)
@@ -978,8 +990,9 @@
(aref h-month-names h-month))
(if (= h-yesterday 30)
(format "%s (second day)" this-month)
- this-month)))
+ this-month))))
(if (= (% d 7) 6);; Saturday--check for Shabbat Mevarchim
+ (cons mark
(cond ((and (> h-day 22) (/= h-month 6) (= 29 last-day))
(format "Mevarchim Rosh Hodesh %s (%s)"
(aref h-month-names
@@ -995,17 +1008,21 @@
"tomorrow"
(aref calendar-day-name-array (- 29 h-day)))
(aref calendar-day-name-array
- (% (- 30 h-day) 7)))))
+ (% (- 30 h-day) 7))))))
(if (and (= h-day 29) (/= h-month 6))
+ (cons mark
(format "Erev Rosh Hodesh %s"
(aref h-month-names
(if (= h-month
(hebrew-calendar-last-month-of-year
h-year))
- 0 h-month))))))))
+ 0 h-month)))))))))
+
+(defun diary-parasha (&optional mark)
+ "Parasha diary entry--entry applies if date is a Saturday.
-(defun diary-parasha ()
- "Parasha diary entry--entry applies if date is a Saturday."
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(let ((d (calendar-absolute-from-gregorian date)))
(if (= (% d 7) 6);; Saturday
(let*
@@ -1034,6 +1051,7 @@
(/ (- d first-saturday) 7))
(parasha (aref year-format saturday)))
(if parasha
+ (cons mark
(format
"Parashat %s"
(if (listp parasha);; Israel differs from diaspora
@@ -1043,7 +1061,7 @@
(hebrew-calendar-parasha-name (cdr parasha)))
(format "%s (Israel)"
(hebrew-calendar-parasha-name (cdr parasha))))
- (hebrew-calendar-parasha-name parasha))))))))
+ (hebrew-calendar-parasha-name parasha)))))))))
(defvar hebrew-calendar-parashiot-names
["Bereshith" "Noah" "Lech L'cha"
"Vayera" "Hayei Sarah" "Toledoth"
Index: diary-lib.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/calendar/diary-lib.el,v
retrieving revision 1.6
diff -u -b -w -u -r1.6 diary-lib.el
--- diary-lib.el 2006/08/04 20:23:50 1.6
+++ diary-lib.el 2006/08/19 00:02:18
@@ -91,108 +91,83 @@
(autoload 'check-calendar-holidays "holidays"
"Check the list of holidays for any that occur on DATE.
The value returned is a list of strings of relevant holiday descriptions.
-The holidays are those in the list `calendar-holidays'."
- t)
+The holidays are those in the list `calendar-holidays'.")
(autoload 'calendar-holiday-list "holidays"
"Form the list of holidays that occur on dates in the calendar window.
-The holidays are those in the list `calendar-holidays'."
- t)
+The holidays are those in the list `calendar-holidays'.")
(autoload 'diary-french-date "cal-french"
- "French calendar equivalent of date diary entry."
- t)
+ "French calendar equivalent of date diary entry.")
(autoload 'diary-mayan-date "cal-mayan"
- "Mayan calendar equivalent of date diary entry."
- t)
+ "Mayan calendar equivalent of date diary entry.")
(autoload 'diary-iso-date "cal-iso"
- "ISO calendar equivalent of date diary entry."
- t)
+ "ISO calendar equivalent of date diary entry.")
(autoload 'diary-julian-date "cal-julian"
- "Julian calendar equivalent of date diary entry."
- t)
+ "Julian calendar equivalent of date diary entry.")
(autoload 'diary-astro-day-number "cal-julian"
- "Astronomical (Julian) day number diary entry."
- t)
+ "Astronomical (Julian) day number diary entry.")
(autoload 'diary-chinese-date "cal-china"
- "Chinese calendar equivalent of date diary entry."
- t)
+ "Chinese calendar equivalent of date diary entry.")
(autoload 'diary-islamic-date "cal-islam"
- "Islamic calendar equivalent of date diary entry."
- t)
+ "Islamic calendar equivalent of date diary entry.")
(autoload 'list-islamic-diary-entries "cal-islam"
- "Add any Islamic date entries from the diary file to
`diary-entries-list'."
- t)
+ "Add any Islamic date entries from the diary file to
`diary-entries-list'.")
(autoload 'mark-islamic-diary-entries "cal-islam"
- "Mark days in the calendar window that have Islamic date diary entries."
- t)
+ "Mark days in the calendar window that have Islamic date diary entries.")
(autoload 'mark-islamic-calendar-date-pattern "cal-islam"
- "Mark dates in calendar window that conform to Islamic date
MONTH/DAY/YEAR."
- t)
+ "Mark dates in calendar window that conform to Islamic date
MONTH/DAY/YEAR.")
(autoload 'diary-hebrew-date "cal-hebrew"
- "Hebrew calendar equivalent of date diary entry."
- t)
+ "Hebrew calendar equivalent of date diary entry.")
(autoload 'diary-omer "cal-hebrew"
- "Omer count diary entry."
- t)
+ "Omer count diary entry.")
(autoload 'diary-yahrzeit "cal-hebrew"
- "Yahrzeit diary entry--entry applies if date is yahrzeit or the day
before."
- t)
+ "Yahrzeit diary entry--entry applies if date is yahrzeit or the day
before.")
(autoload 'diary-parasha "cal-hebrew"
- "Parasha diary entry--entry applies if date is a Saturday."
- t)
+ "Parasha diary entry--entry applies if date is a Saturday.")
(autoload 'diary-rosh-hodesh "cal-hebrew"
- "Rosh Hodesh diary entry."
- t)
+ "Rosh Hodesh diary entry.")
(autoload 'list-hebrew-diary-entries "cal-hebrew"
- "Add any Hebrew date entries from the diary file to
`diary-entries-list'."
- t)
+ "Add any Hebrew date entries from the diary file to
`diary-entries-list'.")
(autoload 'mark-hebrew-diary-entries "cal-hebrew"
- "Mark days in the calendar window that have Hebrew date diary entries."
- t)
+ "Mark days in the calendar window that have Hebrew date diary entries.")
(autoload 'mark-hebrew-calendar-date-pattern "cal-hebrew"
- "Mark dates in calendar window that conform to Hebrew date
MONTH/DAY/YEAR."
- t)
+ "Mark dates in calendar window that conform to Hebrew date
MONTH/DAY/YEAR.")
(autoload 'diary-coptic-date "cal-coptic"
- "Coptic calendar equivalent of date diary entry."
- t)
+ "Coptic calendar equivalent of date diary entry.")
(autoload 'diary-ethiopic-date "cal-coptic"
- "Ethiopic calendar equivalent of date diary entry."
- t)
+ "Ethiopic calendar equivalent of date diary entry.")
(autoload 'diary-persian-date "cal-persia"
- "Persian calendar equivalent of date diary entry."
- t)
+ "Persian calendar equivalent of date diary entry.")
-(autoload 'diary-phases-of-moon "lunar" "Moon phases diary
entry." t)
+(autoload 'diary-phases-of-moon "lunar" "Moon phases diary
entry.")
(autoload 'diary-sunrise-sunset "solar"
- "Local time of sunrise and sunset as a diary entry."
- t)
+ "Local time of sunrise and sunset as a diary entry.")
(autoload 'diary-sabbath-candles "solar"
"Local time of candle lighting diary entry--applies if date is a Friday.
-No diary entry if there is no sunset on that date."
- t)
+No diary entry if there is no sunset on that date.")
(defvar diary-syntax-table (copy-syntax-table (standard-syntax-table))
"The syntax table used when parsing dates in the diary file.
@@ -202,6 +177,17 @@
(modify-syntax-entry ?* "w" diary-syntax-table)
(modify-syntax-entry ?: "w" diary-syntax-table)
+(defvar diary-modified)
+(defvar diary-entries-list)
+(defvar displayed-year)
+(defvar displayed-month)
+(defvar entry)
+(defvar date)
+(defvar number)
+(defvar date-string)
+(defvar d-file)
+(defvar original-date)
+
;;;###autoload
(defun list-diary-entries (date number)
"Create and display a buffer containing the relevant lines in diary-file.
@@ -239,8 +225,8 @@
(if (< 0 number)
(let* ((original-date date);; save for possible use in the hooks
- (old-diary-syntax-table)
- (diary-entries-list)
+ old-diary-syntax-table
+ diary-entries-list
(date-string (calendar-date-string date))
(d-file (substitute-in-file-name diary-file)))
(message "Preparing diary...")
@@ -389,7 +375,8 @@
(list-diary-entries original-date number)))
(save-excursion
(set-buffer (find-buffer-visiting diary-file))
- (subst-char-in-region (point-min) (point-max) ?\^M ?\n t)
+ (let ((inhibit-read-only t))
+ (subst-char-in-region (point-min) (point-max) ?\^M ?\n t))
(setq selective-display nil)
(set-buffer-modified-p diary-modified)))
(beep)
@@ -644,13 +631,13 @@
(if ndays ndays diary-mail-days))
(set-buffer fancy-diary-buffer)
(buffer-substring (point-min) (point-max)))))
- (mail)
- (mail-to) (insert diary-mail-addr)
- (mail-subject) (insert "Diary entries generated "
- (calendar-date-string (calendar-current-date)))
- (mail-text) (insert text)
- (mail-send-and-exit nil)))
-
+ (compose-mail diary-mail-addr
+ (if (string-equal text "")
+ "No entries found"
+ (concat "Diary entries generated "
+ (calendar-date-string (calendar-current-date)))))
+ (insert text)
+ (funcall (get mail-user-agent 'sendfunc))))
(defun diary-name-pattern (string-array &optional fullname)
"Convert a STRING-ARRAY, an array of strings to a pattern.
@@ -811,7 +798,8 @@
(m)
(y)
(first-date)
- (last-date))
+ (last-date)
+ (mark))
(save-excursion
(set-buffer calendar-buffer)
(setq m displayed-month)
@@ -859,10 +847,12 @@
(while (string-match "[\^M]" entry)
(aset entry (match-beginning 0) ?\n )))
(calendar-for-loop date from first-date to last-date do
- (if (diary-sexp-entry sexp entry
- (calendar-gregorian-from-absolute date))
+ (if (setq mark (diary-sexp-entry sexp entry
+ (calendar-gregorian-from-absolute date)))
(mark-visible-calendar-date
- (calendar-gregorian-from-absolute date))))))))
+ (calendar-gregorian-from-absolute date)
+ (if (consp mark)
+ (car mark)))))))))
(defun mark-included-diary-files ()
"Mark the diary entries from other diary files with those of the diary file.
@@ -965,9 +955,9 @@
:version "20.3")
(defun diary-entry-time (s)
- "Time at the beginning of the string S in a military-style integer. For
-example, returns 1325 for 1:25pm. Returns `diary-unknown-time' (default value
--9999) if no time is recognized. The recognized forms are XXXX, X:XX, or
+ "Return time at the beginning of the string S as a military-style integer.
+For example, returns 1325 for 1:25pm.
+Returns `diary-unknown-time' (default value -9999) if no time is recognized. The
recognized forms are XXXX, X:XX, or
XX:XX (military time), and XXam, XXAM, XXpm, XXPM, XX:XXam, XX:XXAM XX:XXpm,
or XX:XXPM."
(let ((case-fold-search nil))
@@ -1022,27 +1012,34 @@
A number of built-in functions are available for this type of diary entry:
- %%(diary-date MONTH DAY YEAR) text
+ %%(diary-date MONTH DAY YEAR &optional MARK) text
Entry applies if date is MONTH, DAY, YEAR if
`european-calendar-style' is nil, and DAY, MONTH, YEAR if
`european-calendar-style' is t. DAY, MONTH, and YEAR
can be lists of integers, the constant t, or an integer.
- The constant t means all values.
+ The constant t means all values. An optional parameter
+ MARK specifies a face or single-character string to use
+ when highlighting the day in the calendar.
- %%(diary-float MONTH DAYNAME N &optional DAY) text
+
+ %%(diary-float MONTH DAYNAME N &optional DAY MARK) text
Entry will appear on the Nth DAYNAME of MONTH.
(DAYNAME=0 means Sunday, 1 means Monday, and so on;
if N is negative it counts backward from the end of
the month. MONTH can be a list of months, a single
month, or t to specify all months. Optional DAY means
Nth DAYNAME of MONTH on or after/before DAY. DAY defaults
- to 1 if N>0 and the last day of the month if N<0.
+ to 1 if N>0 and the last day of the month if N<0. An
+ optional parameter MARK specifies a face or single-character
+ string to use when highlighting the day in the calendar.
- %%(diary-block M1 D1 Y1 M2 D2 Y2) text
+ %%(diary-block M1 D1 Y1 M2 D2 Y2 &optional MARK) text
Entry will appear on dates between M1/D1/Y1 and M2/D2/Y2,
inclusive. (If `european-calendar-style' is t, the
order of the parameters should be changed to D1, M1, Y1,
- D2, M2, Y2.)
+ D2, M2, Y2.) An optional parameter MARK specifies a face
+ or single-character string to use when highlighting the
+ day in the calendar.
%%(diary-countdown BEFORE AFTER M1 D1 Y1) text
Entry will appear on dates between BEFORE days before
@@ -1051,7 +1048,7 @@
parameters should be changed to BEFORE, AFTER, D1, M1,
Y1.)
- %%(diary-anniversary MONTH DAY YEAR) text
+ %%(diary-anniversary MONTH DAY YEAR &optional MARK) text
Entry will appear on anniversary dates of MONTH DAY, YEAR.
(If `european-calendar-style' is t, the order of the
parameters should be changed to DAY, MONTH, YEAR.) Text
@@ -1059,16 +1056,20 @@
of years since the MONTH DAY, YEAR and %s will be replaced
by the ordinal ending of that number (that is, `st', `nd',
`rd' or `th', as appropriate. The anniversary of February
- 29 is considered to be March 1 in a non-leap year.
+ 29 is considered to be March 1 in a non-leap year. An
+ optional parameter MARK specifies a face or single-character
+ string to use when highlighting the day in the calendar.
- %%(diary-cyclic N MONTH DAY YEAR) text
+ %%(diary-cyclic N MONTH DAY YEAR &optional MARK) text
Entry will appear every N days, starting MONTH DAY, YEAR.
(If `european-calendar-style' is t, the order of the
parameters should be changed to N, DAY, MONTH, YEAR.) Text
can contain %d or %d%s; %d will be replaced by the number
of repetitions since the MONTH DAY, YEAR and %s will
be replaced by the ordinal ending of that number (that is,
- `st', `nd', `rd' or `th', as appropriate.
+ `st', `nd', `rd' or `th', as appropriate. An optional
+ parameter MARK specifies a face or single-character string
+ to use when highlighting the day in the calendar.
%%(diary-remind SEXP DAYS &optional MARKING) text
Entry is a reminder for diary sexp SEXP. DAYS is either a
@@ -1193,7 +1194,11 @@
(let ((diary-entry (diary-sexp-entry sexp entry date)))
(if diary-entry
(subst-char-in-region line-start (point) ?\^M ?\n t))
- (add-to-diary-list date diary-entry specifier)
+ (add-to-diary-list date
+ (if (consp diary-entry)
+ (cdr diary-entry)
+ diary-entry)
+ specifier)
(setq entry-found (or entry-found diary-entry)))))
entry-found))
@@ -1217,18 +1222,22 @@
lines)))
diary-file sexp)
(sleep-for 2))))))
- (if (stringp result)
- result
- (if result
- entry
- nil))))
+ (cond ((stringp result) result)
+ ((and (consp result)
+ (stringp (cdr result))) result)
+ (result entry)
+ (t nil))))
+
-(defun diary-date (month day year)
+(defun diary-date (month day year &optional mark)
"Specific date(s) diary entry.
Entry applies if date is MONTH, DAY, YEAR if `european-calendar-style' is nil,
and DAY, MONTH, YEAR if `european-calendar-style' is t. DAY, MONTH, and YEAR
can be lists of integers, the constant t, or an integer. The constant t means
-all values."
+all values.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(let* ((dd (if european-calendar-style
month
day))
@@ -1250,12 +1259,16 @@
(eq year t)))
entry)))
-(defun diary-block (m1 d1 y1 m2 d2 y2)
+(defun diary-block (m1 d1 y1 m2 d2 y2 &optional mark )
"Block diary entry.
Entry applies if date is between, or on one of, two dates.
The order of the parameters is
M1, D1, Y1, M2, D2, Y2 if `european-calendar-style' is nil, and
-D1, M1, Y1, D2, M2, Y2 if `european-calendar-style' is t."
+D1, M1, Y1, D2, M2, Y2 if `european-calendar-style' is t.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
+
(let ((date1 (calendar-absolute-from-gregorian
(if european-calendar-style
(list d1 m1 y1)
@@ -1266,7 +1279,7 @@
(list m2 d2 y2))))
(d (calendar-absolute-from-gregorian date)))
(if (and (<= date1 d) (<= d date2))
- entry)))
+ (cons mark entry))))
(defun diary-countdown (before after m1 d1 y1)
"Countdown diary entry.
@@ -1290,13 +1303,15 @@
diff (if (= diff 1) "" "s")) entry))
(t nil))))
-(defun diary-float (month dayname n &optional day)
+(defun diary-float (month dayname n &optional day mark)
"Floating diary entry--entry applies if date is the nth dayname of month.
Parameters are MONTH, DAYNAME, N. MONTH can be a list of months, the constant
t, or an integer. The constant t means all months. If N is negative, count
backward from the end of the month.
-An optional parameter DAY means the Nth DAYNAME on or after/before MONTH DAY."
+An optional parameter DAY means the Nth DAYNAME on or after/before MONTH DAY.
+Optional MARK specifies a face or single-character string to use when
+highlighting the day in the calendar."
;; This is messy because the diary entry may apply, but the date on which it
;; is based can be in a different month/year. For example, asking for the
;; first Monday after December 30. For large values of |n| the problem is
@@ -1350,10 +1365,10 @@
1
(calendar-last-day-of-month m2 y2)))
d2)))))
- entry))))
+ (cons mark entry)))))
-(defun diary-anniversary (month day year)
+(defun diary-anniversary (month day year &optional mark)
"Anniversary diary entry.
Entry applies if date is the anniversary of MONTH, DAY, YEAR if
`european-calendar-style' is nil, and DAY, MONTH, YEAR if
@@ -1361,7 +1376,10 @@
%d will be replaced by the number of years since the MONTH DAY, YEAR and the
%s will be replaced by the ordinal ending of that number (that is, `st', `nd',
`rd' or `th', as appropriate. The anniversary of February 29 is considered
-to be March 1 in non-leap years."
+to be March 1 in non-leap years.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(let* ((d (if european-calendar-style
month
day))
@@ -1374,15 +1392,18 @@
(setq m 3
d 1))
(if (and (> diff 0) (calendar-date-equal (list m d y) date))
- (format entry diff (diary-ordinal-suffix diff)))))
+ (cons mark (format entry diff (diary-ordinal-suffix diff))))))
-(defun diary-cyclic (n month day year)
+(defun diary-cyclic (n month day year &optional mark)
"Cycle diary entry--entry applies every N days starting at MONTH, DAY, YEAR.
If `european-calendar-style' is t, parameters are N, DAY, MONTH, YEAR.
ENTRY can contain `%d' or `%d%s'; the %d will be replaced by the number of
repetitions since the MONTH DAY, YEAR and %s will be replaced by the
ordinal ending of that number (that is, `st', `nd', `rd' or `th', as
-appropriate."
+appropriate.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(let* ((d (if european-calendar-style
month
day))
@@ -1394,7 +1415,7 @@
(list m d year))))
(cycle (/ diff n)))
(if (and (>= diff 0) (zerop (% diff n)))
- (format entry cycle (diary-ordinal-suffix cycle)))))
+ (cons mark (format entry cycle (diary-ordinal-suffix cycle))))))
(defun diary-ordinal-suffix (n)
"Ordinal suffix for N. (That is, `st', `nd', `rd', or `th', as
appropriate.)"
Index: lunar.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/calendar/lunar.el,v
retrieving revision 1.5
diff -u -b -w -u -r1.5 lunar.el
--- lunar.el 2006/07/31 02:38:09 1.5
+++ lunar.el 2006/08/19 00:02:18
@@ -238,8 +238,11 @@
(displayed-year (extract-calendar-year date)))
(calendar-phases-of-moon))))
-(defun diary-phases-of-moon ()
- "Moon phases diary entry."
+(defun diary-phases-of-moon (&optional mark)
+ "Moon phases diary entry.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(let* ((index (* 4
(truncate
(* 12.3685
@@ -252,8 +255,8 @@
(setq index (1+ index))
(setq phase (lunar-phase index)))
(if (calendar-date-equal (car phase) date)
- (concat (lunar-phase-name (car (cdr (cdr phase)))) " "
- (car (cdr phase))))))
+ (cons mark (concat (lunar-phase-name (car (cdr (cdr phase)))) " "
+ (car (cdr phase)))))))
;; For the Chinese calendar the calculations for the new moon need to be more
Index: solar.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/calendar/solar.el,v
retrieving revision 1.7
diff -u -b -w -u -r1.7 solar.el
--- solar.el 2006/08/04 20:23:51 1.7
+++ solar.el 2006/08/19 00:02:18
@@ -922,9 +922,12 @@
:type 'integer
:version "21.1")
-(defun diary-sabbath-candles ()
+(defun diary-sabbath-candles (&optional mark)
"Local time of candle lighting diary entry--applies if date is a Friday.
-No diary entry if there is no sunset on that date."
+No diary entry if there is no sunset on that date.
+
+An optional parameter MARK specifies a face or single-character string to
+use when highlighting the day in the calendar."
(if (not (and calendar-latitude calendar-longitude calendar-time-zone))
(solar-setup))
(if (= (% (calendar-absolute-from-gregorian date) 7) 5);; Friday
@@ -934,8 +937,9 @@
(/ diary-sabbath-candles-minutes 60.0))
(cdr sunset)))))
(if sunset
+ (cons mark
(format "%s Sabbath candle lighting"
- (apply 'solar-time-string light))))))
+ (apply 'solar-time-string light)))))))
(defun solar-equinoxes/solstices (k year)
"Date of equinox/solstice K for YEAR.
Index: timeclock.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/calendar/timeclock.el,v
retrieving revision 1.2
diff -u -b -w -u -r1.2 timeclock.el
--- timeclock.el 2006/08/01 01:52:15 1.2
+++ timeclock.el 2006/08/19 00:02:19
@@ -277,12 +277,12 @@
(> (prefix-numeric-value arg) 0)
(not timeclock-modeline-display))))
(if on-p
- (let ((list-entry (memq 'global-mode-string
- mode-line-format)))
+ (let ((list-entry (or (memq 'global-mode-string mode-line-format)
+ ;; In Emacs 21.3 we must use assq
+ (assq 'global-mode-string mode-line-format))))
(unless (or (null list-entry)
(memq 'timeclock-mode-string mode-line-format))
- (setcdr list-entry
- (cons 'timeclock-mode-string
+ (setcdr list-entry (cons 'timeclock-mode-string
(cdr list-entry))))
(unless (memq 'timeclock-update-modeline timeclock-event-hook)
(add-hook 'timeclock-event-hook 'timeclock-update-modeline))
@@ -342,9 +342,11 @@
(error "You've already clocked in!")
(unless timeclock-last-event
(timeclock-reread-log))
- (unless (equal (timeclock-time-to-date
+ ;; Either no log file, or day has rolled over.
+ (unless (and timeclock-last-event
+ (equal (timeclock-time-to-date
(cadr timeclock-last-event))
- (timeclock-time-to-date (current-time)))
+ (timeclock-time-to-date (current-time))))
(let ((workday (or (and (numberp arg) arg)
(and arg 0)
(and timeclock-get-workday-function
@@ -353,7 +355,7 @@
(run-hooks 'timeclock-first-in-hook)
;; settle the discrepancy for the new day
(setq timeclock-discrepancy
- (- timeclock-discrepancy workday))
+ (- (or timeclock-discrepancy 0) workday))
(if (not (= workday timeclock-workday))
(timeclock-log "h" (and (numberp arg)
(number-to-string arg))))))
--
Adrian Aichner
mailto:adrian@xemacs.org
http://www.xemacs.org/