Variable: diary-date-forms

diary-date-forms is a customizable variable defined in calendar.el.gz.

Value

((month "/" day "[^/0-9]") (month "/" day "/" year "[^0-9]")
 (monthname " *" day "[^,0-9]")
 (monthname " *" day ", *" year "[^0-9]") (dayname "\\W"))

Documentation

List of pseudo-patterns describing the forms of date used in the diary.

The patterns on the list must be MUTUALLY EXCLUSIVE and should not match any portion of the diary entry itself, just the date component.

A pseudo-pattern is a list of regular expressions and the keywords month, day, year, monthname, and dayname. The keyword monthname will match the name of the month (see calendar-month-name-array), capitalized or not, or its user-specified abbreviation (see calendar-month-abbrev-array), followed by a period or not; it will also match *. Similarly, dayname will match the name of the day (see calendar-day-name-array), capitalized or not, or its user-specified abbreviation (see calendar-day-abbrev-array), followed by a period or not. The keywords month, day, and year will match those numerical values, preceded by arbitrarily many zeros; they will also match *.

The matching of the diary entries with the date forms is done with the standard syntax table from Fundamental mode, but with the * changed so that it is a word constituent.

If, to be mutually exclusive, a pseudo-pattern must match a portion of the diary entry itself, the first element of the pattern MUST be backup. This directive causes the date recognizer to back up to the beginning of the current word of the diary entry, so in no case can the pattern match more than a portion of the first word of the diary entry.

For examples of three common styles, see diary-american-date-forms, diary-european-date-forms, and diary-iso-date-forms.

View in manual

Source Code

;; Defined in /usr/src/emacs/lisp/calendar/calendar.el.gz
(defcustom diary-date-forms (cond ((eq calendar-date-style 'iso)
                                   diary-iso-date-forms)
                                  ((eq calendar-date-style 'european)
                                   diary-european-date-forms)
                                  (t diary-american-date-forms))
  "List of pseudo-patterns describing the forms of date used in the diary.
The patterns on the list must be MUTUALLY EXCLUSIVE and should not match
any portion of the diary entry itself, just the date component.

A pseudo-pattern is a list of regular expressions and the keywords `month',
`day', `year', `monthname', and `dayname'.  The keyword `monthname' will
match the name of the month (see `calendar-month-name-array'), capitalized
or not, or its user-specified abbreviation (see `calendar-month-abbrev-array'),
followed by a period or not; it will also match `*'.  Similarly, `dayname'
will match the name of the day (see `calendar-day-name-array'), capitalized or
not, or its user-specified abbreviation (see `calendar-day-abbrev-array'),
followed by a period or not.  The keywords `month', `day', and `year' will
match those numerical values, preceded by arbitrarily many zeros; they will
also match `*'.

The matching of the diary entries with the date forms is done with the
standard syntax table from Fundamental mode, but with the `*' changed so
that it is a word constituent.

If, to be mutually exclusive, a pseudo-pattern must match a portion of the
diary entry itself, the first element of the pattern MUST be `backup'.  This
directive causes the date recognizer to back up to the beginning of the
current word of the diary entry, so in no case can the pattern match more than
a portion of the first word of the diary entry.

For examples of three common styles, see `diary-american-date-forms',
`diary-european-date-forms', and `diary-iso-date-forms'."
  :type '(repeat (choice (cons :tag "Backup"
                               :value (backup . nil)
                               (const backup)
                               (repeat (list :inline t :format "%v"
                                             (symbol :tag "Keyword")
                                             (choice symbol regexp))))
                         (repeat (list :inline t :format "%v"
                                       (symbol :tag "Keyword")
                                       (choice symbol regexp)))))
  :set-after '(calendar-date-style diary-iso-date-forms
                                   diary-european-date-forms
                                   diary-american-date-forms)
  :initialize 'custom-initialize-default
  :set (lambda (symbol value)
         (unless (equal value (default-value symbol))
           (custom-set-default symbol value)
           (setq diary-font-lock-keywords (diary-font-lock-keywords))
           ;; Need to redraw not just to get new font-locking, but also
           ;; to pick up any newly recognized entries.
           (and (diary-live-p)
                (diary))))
  :group 'diary)