Commit 4dd618ff authored by Sam Steingold's avatar Sam Steingold

(diary-entry-compare): When times are identical, compare the entries

parent a01b7831
2001-10-05 Sam Steingold <>
* calendar/diary-lib.el (diary-entry-compare): When times are
identical, compare the entries lexicographically.
2001-10-06 Miles Bader <>
* rfn-eshadow.el (rfn-eshadow-update-overlay): Use
......@@ -17,12 +22,12 @@
`off' and used nil to mean `unspecified'. Remove `unspecified'
choices from all attributes (unspecified is handled by the parent
* cus-edit.el (custom-face-edit-convert-widget)
* cus-edit.el (custom-face-edit-convert-widget)
(custom-face-edit-deactivate, custom-face-edit-activate)
(custom-face-edit-delete, custom-face-edit-attribute-tag):
New functions.
(custom-face-edit): Specify a custom :convert-widget.
(custom-pre-filter-face-spec, custom-post-filter-face-spec):
(custom-pre-filter-face-spec, custom-post-filter-face-spec):
Don't pass in default filters that map between `nil' and `off' and
`unspecified' and `nil'.
......@@ -54,7 +59,7 @@
(minibuffer-contents-no-properties, delete-minibuffer-contents):
Functions removed (now subrs).
(minibuffer-prompt-width): Use `minibuffer-prompt-end'.
* minibuf-eldef.el (minibuf-eldef-setup-minibuffer)
(minibuf-eldef-update-minibuffer): Use `minibuffer-' functions
instead of calling `field-' functions directly.
......@@ -331,7 +331,7 @@ These hooks have the following distinct roles:
(setq d (cdr d)))
(or entry-found
(not diary-list-include-blanks)
(setq diary-entries-list
(setq diary-entries-list
(append diary-entries-list
(list (list date "" "")))))
(setq date
......@@ -597,7 +597,7 @@ is created."
(defcustom diary-mail-addr
(defcustom diary-mail-addr
(if (boundp 'user-mail-address) user-mail-address nil)
"*Email address that `diary-mail-entries' will send email to."
:group 'diary
......@@ -626,7 +626,7 @@ emacs -batch \\
-eval \"(setq diary-mail-days 3 \\
european-calendar-style t \\
diary-mail-addr \\\"\\\" )\" \\
-l diary-lib -f diary-mail-entries
-l diary-lib -f diary-mail-entries
at -f 0200 tomorrow
You may have to tweak the syntax of the `at' command to suit your
......@@ -947,8 +947,11 @@ A value of 0 in any position of the pattern is a wildcard."
"Returns t if E1 is earlier than E2."
(or (calendar-date-compare e1 e2)
(and (calendar-date-equal (car e1) (car e2))
(< (diary-entry-time (car (cdr e1)))
(diary-entry-time (car (cdr e2)))))))
(let* ((ts1 (cadr e1)) (t1 (diary-entry-time ts1))
(ts2 (cadr e2)) (t2 (diary-entry-time ts2)))
(or (< t1 t2)
(and (= t1 t2)
(string-lessp ts1 ts2)))))))
(defcustom diary-unknown-time
......@@ -959,7 +962,7 @@ after those with times."
:type 'integer
:group 'diary
: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
......@@ -967,19 +970,19 @@ example, returns 1325 for 1:25pm. Returns `diary-unknown-time' (default value
XX:XX (military time), and XXam, XXAM, XXpm, XXPM, XX:XXam, XX:XXAM XX:XXpm,
or XX:XXPM."
(let ((case-fold-search nil))
(cond ((string-match;; Military time
(cond ((string-match ; Military time
"\\`[ \t\n\\^M]*\\([0-9]?[0-9]\\):?\\([0-9][0-9]\\)\\(\\>\\|[^ap]\\)" s)
(+ (* 100 (string-to-int
(substring s (match-beginning 1) (match-end 1))))
(string-to-int (substring s (match-beginning 2) (match-end 2)))))
((string-match;; Hour only XXam or XXpm
((string-match ; Hour only XXam or XXpm
"\\`[ \t\n\\^M]*\\([0-9]?[0-9]\\)\\([ap]\\)m\\>" s)
(+ (* 100 (% (string-to-int
(substring s (match-beginning 1) (match-end 1)))
(if (equal ?a (downcase (aref s (match-beginning 2))))
0 1200)))
((string-match;; Hour and minute XX:XXam or XX:XXpm
((string-match ; Hour and minute XX:XXam or XX:XXpm
"\\`[ \t\n\\^M]*\\([0-9]?[0-9]\\):\\([0-9][0-9]\\)\\([ap]\\)m\\>" s)
(+ (* 100 (% (string-to-int
(substring s (match-beginning 1) (match-end 1)))
......@@ -987,9 +990,7 @@ or XX:XXPM."
(string-to-int (substring s (match-beginning 2) (match-end 2)))
(if (equal ?a (downcase (aref s (match-beginning 3))))
0 1200)))
(t diary-unknown-time))));; Unrecognizable
;; Unrecognizable
(t diary-unknown-time)))) ; Unrecognizable
(defun list-sexp-diary-entries (date)
"Add sexp entries for DATE from the diary file to `diary-entries-list'.
......@@ -1126,7 +1127,7 @@ A number of built-in functions are available for this type of diary entry:
will appear on the proper Hebrew-date anniversary and on the
day before. (If `european-calendar-style' is t, the order
of the parameters should be changed to DAY, MONTH, YEAR.)
Diary entries will be made on the dates of Rosh Hodesh on
the Hebrew calendar. Note that since there is no text, it
......@@ -1382,7 +1383,7 @@ appropriate."
"*Pseudo-pattern giving form of reminder messages in the fancy diary
Used by the function `diary-remind', a pseudo-pattern is a list of
expressions that can involve the keywords `days' (a number), `date' (a list of
month, day, year), and `diary-entry' (a string)."
......@@ -1428,7 +1429,7 @@ marked on the calendar."
"Add the entry (DATE STRING SPECIFIER) to `diary-entries-list'.
Do nothing if DATE or STRING is nil."
(and date string
(setq diary-entries-list
(setq diary-entries-list
(append diary-entries-list (list (list date string specifier))))))
(defun make-diary-entry (string &optional nonmarking file)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment