* lisp/calendar/calendar.el (calendar-month-edges): Fix typo.
(calendar-total-months): New variable.
(calendar-get-month-range, calendar-get-date-range)
(calendar--month-overlap-p, calendar-month-visible-p)
(calendar-nongregorian-date-visible-p): New functions.
(calendar-nongregorian-visible-p): Declare obsolete.
(calendar-recompute-layout-variables, calendar-generate):
Replace fixed month numbers with 'calendar-total-months'.
(calendar-cursor-to-date, calendar-date-is-visible-p): Support
the calendar with more than three months.
(calendar-mode): Make some variables buffer-local to allow
calendar-mode buffers showing different number of months.
(calendar-mode-map): Use new command names.
* lisp/calendar/cal-move.el (calendar-goto-today): Always move
the cursor to today's date.
(calendar--show-month-at-edge): New function.
(calendar-recenter, calendar-forward-day): Support the calendar
with more than three months.
(calendar-forward-month, calendar-end-of-month)
(calendar-beginning-of-year, calendar-end-of-year): Place the
new month at the edge instead of the second month segment, to
prevent the cursor from jumping back and forth. This is
consistent with the behavior of calendar-forward-day/week.
(calendar-scroll-left): Maintain the relative position of the
cursor with respect to the window, when the old date is out of
view.
(calendar-scroll-left-three-months)
(calendar-scroll-right-three-months): Replace the fixed month
number with the actual number of months. Rename ...
(calendar-scroll-calendar-left, calendar-scroll-calendar-right):
... to new commands. Make old names as aliases and mark them
obsolete.
(calendar-show-more-months, calendar-show-fewer-months): New
commands.
* lisp/calendar/cal-menu.el (cal-menu-holiday-window-suffix):
Use the actual date range instead of three months.
(cal-menu-scroll-menu, cal-menu-global-mouse-menu): Use new
command names and update description.
* lisp/calendar/holidays.el (holidays, list-holidays)
(calendar-check-holidays, holiday-in-range): Use
calendar-total-months.
(calendar-list-holidays, holiday-fixed, holiday-float)
(holiday-sexp): Replace displayed-year/month with the actual
calendar range.
(holiday-after, holiday-easter-etc-abs)
(holiday-greek-orthodox-easter-abs): New functions.
(holiday-advent, holiday-easter-etc)
(holiday-greek-orthodox-easter): Look up holidays in all visible
years instead of current displayed-year.
* lisp/calendar/solar.el (solar-equinoxes-solstices): Search
equinoxes and solstices in all visible months.
(solar-equinoxes-solstices-1): New function.
* lisp/calendar/lunar.el (lunar-phase-list): Add optional
argument.
(calendar-lunar-phases): Use visible calendar range.
* lisp/calendar/cal-china.el (holiday-chinese-new-year)
(holiday-chinese-winter-solstice, holiday-chinese-qingming)
(holiday-chinese): Replace displayed-year/month with the actual
calendar range, and look up holidays in all visible years.
* lisp/calendar/cal-julian.el (holiday-julian): Use
calendar-nongregorian-date-visible-p because there may exist
more than one corresponding dates when the calendar shows more
months.
* lisp/calendar/cal-bahai.el (holiday-bahai): Support calendar
with more than three months.
(holiday-bahai-new-year, holiday-bahai-twin-holy-birthdays):
Look up holidays in all visible years.
(holiday-bahai-new-year-1, holiday-bahai-twin-holy-birthdays-1):
New functions.
* lisp/calendar/cal-hebrew.el (calendar-hebrew-date-is-visible-p)
(holiday-hebrew, calendar-hebrew-mark-date-pattern): Support
calendar with more than three months, in which more than one
holidays may exist.
(holiday-hebrew-rosh-hashanah-1, holiday-hebrew-hanukkah-1)
(holiday-hebrew-passover-1): New functions.
(holiday-hebrew-rosh-hashanah, holiday-hebrew-hanukkah)
(holiday-hebrew-passover, holiday-hebrew-tisha-b-av): Look up
holidays in all visible years.
* lisp/calendar/cal-islam.el (holiday-islamic): Support calendar
with more than three months.
(holiday-islamic-new-year): Find holidays in all visible years.
* lisp/calendar/diary-lib.el (diary-mark-sexp-entries)
(calendar-mark-days-named, calendar-mark-date-pattern)
(calendar-mark-complex): Use the displayed range instead of the
three-month range.
(calendar-mark-1): Fix marking dates in calendar with more than
three months.
* test/lisp/calendar/holidays-tests.el
(holidays-test-holiday-easter-etc, holidays-test--get-holidays)
(holidays-test-more-months): New test file.
* doc/emacs/calendar.texi: Mention new commands and update
related description.
* etc/NEWS: Announce new commands. (bug#80099)
Fix some misuses of `defconst` and `%s`, avoid uses of the old
dynbound dialect of `eval`, delete redundant `:group` arguments,
and prefer #' to quote function names.
And stop creating alists for completion tables since lists of
strings work just as well.
* lisp/calendar/appt.el: Delete redundant `:group` arguments.
Prefer #' to quote function names.
* lisp/calendar/cal-hebrew.el (solar-time-string): Declare function.
(calendar-hebrew-read-date, calendar-hebrew-list-yahrzeits):
* lisp/calendar/cal-persia.el (calendar-persian-read-date):
* lisp/calendar/cal-mayan.el (calendar-mayan-read-haab-date)
(calendar-mayan-read-tzolkin-date):
* lisp/calendar/cal-julian.el (calendar-julian-goto-date):
* lisp/calendar/cal-islam.el (calendar-islamic-read-date):
* lisp/calendar/cal-coptic.el (calendar-coptic-read-date):
* lisp/calendar/cal-bahai.el (calendar-bahai-read-date):
Completion tables can be lists of strings for decades.
* lisp/calendar/cal-china.el: Delete redundant `:group` arguments.
(calendar-chinese-zodiac-sign-on-or-after)
(calendar-chinese-new-moon-on-or-after): Use lexical dialect also
for `eval`.
* lisp/calendar/cal-dst.el: Delete redundant `:group` arguments.
Use lexical dialect also for `eval`.
* lisp/calendar/cal-html.el: Delete redundant `:group` arguments.
* lisp/calendar/cal-menu.el: Prefer #' to quote function names.
* lisp/calendar/cal-tex.el: Delete redundant `:group` arguments.
(cal-tex-weekly-common): Use lexical dialect also for `eval`.
* lisp/calendar/calendar.el (calendar-mode-map):
Prefer #' to quote function names.
* lisp/calendar/diary-icalendar.el (di:rrule-sexp-to-recurrence)
(di:other-sexp-to-recurrence): Use lexical dialect also for `eval`.
* lisp/calendar/diary-lib.el: Delete redundant `:group` arguments.
Prefer #' to quote function names.
(diary-sexp-entry, diary-offset, diary-remind): Use lexical dialect
also for `eval`.
* lisp/calendar/icalendar-macs.el (ical:define-param): Fix misuse of
`%s` in `format`.
* lisp/calendar/icalendar-parser.el (ical:value-types)
(ical:param-types, ical:property-types, ical:component-types):
Don't use `defconst` on variables we mutate.
* lisp/calendar/icalendar-recur.el (icr:current-tz-to-vtimezone)
(icr:current-tz-to-vtimezone): Use lexical dialect also for `eval`.
* lisp/calendar/icalendar.el: Delete redundant `:group` arguments.
* lisp/calendar/lunar.el: Prefer #' to quote function names.
* lisp/calendar/solar.el (solar-sunrise-sunset-string)
(calendar-sunrise-sunset-month): Use lexical dialect also for `eval`.
* lisp/calendar/timeclock.el: Prefer #' to quote function names.
* lisp/calendar/calendar.el (calendar-buffer): Define it as a
variable.
* lisp/calendar/diary-lib.el (diary-mark-entries): Set
'calendar-buffer' as a string. (bug#79994)
Thanks to Stefan Monnier for the comments in Bug#74994 leading to most
of these changes.
Improvements in diary-icalendar.el and related changes:
* lisp/calendar/diary-icalendar.el
(icalendar-save-binary-atttachment): Rename to
`diary-icalendar-save-binary-attachment'. Document internal require.
(diary-icalendar-attendee-skeleton-command): Rename to
`diary-icalendar-attendee-format-function'.
(diary-icalendar-vevent-skeleton-command): Rename to
`diary-icalendar-vevent-format-function'.
(diary-icalendar-vjournal-skeleton-command): Rename to
`diary-icalendar-vjournal-format-function'.
(diary-icalendar-vtodo-skeleton-command): Rename to
`diary-icalendar-vtodo-format-function'.
* doc/emacs/calendar.texi (Diary iCalendar Import)
* lisp/calendar/icalendar.el (icalendar-import-format)
(icalendar-import-format-summary, icalendar-import-format-description)
(icalendar-import-format-location, icalendar-import-format-organizer)
(icalendar-import-format-url, icalendar-import-format-uid)
(icalendar-import-format-status, icalendar-import-format-class): Update
references to renamed functions.
(diary-icalendar-attendee-format-function): Fix quoted function name.
(diary-icalendar-attendee-format-function)
(diary-icalendar-vevent-format-function)
(diary-icalendar-vjournal-format-function)
(diary-icalendar-vtodo-format-function)
(diary-icalendar-after-mailcap-viewer-hook): Improve docstrings.
(diary-icalendar-skip-addresses-regexp): Ensure default value is a
regexp.
(diary-icalendar-description-regexp): Fix :type declaration to agree
with default.
(diary-icalendar-format-date): Replace unnecessary `calendar-dlet' with
`dlet'.
(diary-icalendar-vevent-format-function)
(diary-icalendar-vjournal-format-function)
(diary-icalendar-vtodo-format-function)
(diary-icalendar-format-entry)
(diary-icalendar-import-buffer-to-buffer)
(diary-icalendar--entry-import)
(diary-icalendar-import-buffer)
(diary-icalendar-import-file): Change "non-marking" to "nonmarking" in
variable names for consistency (cf. `diary-nonmarking-symbol').
(diary-icalendar-attendee-skeleton): Remove unnecessary call to
`skeleton-insert'.
(diary-icalendar-vevent-skeleton)
(diary-icalendar-vjournal-skeleton)
(diary-icalendar-vtodo-skeleton): Don't insert return values of `let'
forms.
(diary-icalendar-parse-entry): Call
`diary-icalendar-other-properties-parser' with type and properties as
arguments, instead of dynamic binding.
(diary-icalendar-other-properties-parser): Document the new calling
convention.
* test/lisp/calendar/diary-icalendar-tests.el
(diary-icalendar-test-parse-@-location): Accept the new arguments.
Clarify `declare-function' usage:
* lisp/calendar/icalendar-parser.el (icalendar-read-time)
(icalendar-period-end, icalendar-parse-calendar)
(icalendar-index-insert, icalendar-index-get)
* lisp/calendar/icalendar-ast.el (icalendar-printable-value-type-symbol-p)
(icalendar-ast-node-valid-value-p)
* lisp/calendar/icalendar-utils.el (icalendar-date-time-add)
(icalendar-dates-until, icalendar-date-time-variant): Move
`declare-function' forms to corresponding `require' forms.
Improve debugging with icalendar-ast.el macros:
* lisp/calendar/icalendar-ast.el
(icalendar-make-value-node-of): Add explanatory comment to require.
(icalendar--make-param--list, icalendar--make-param--nonlist)
(icalendar--make-property--list, icalendar--make-property--nonlist): New
functions.
(icalendar-make-param, icalendar-make-property): Use them to reduce code
generated by these macros. Add (declare (debug ...)) forms.
(icalendar-make-component, icalendar-make-node-from-templates):
Add (declare (debug ...)) forms.
* test/lisp/calendar/icalendar-ast-tests.el: New file.
Various other minor changes:
* lisp/calendar/icalendar-macs.el (icalendar-define-type): Improve
docstring.
(icalendar-define-property): Fix deprecation warning: replace 'any' with
'not-newline' in rx definition.
*
test/lisp/calendar/icalendar-recur-tests.el (icalendar-test-rrule-test):
Pass tags on to `ert-deftest' and mark several tests as expensive.
* lisp/calendar/calendar.el (diary-date-insertion-form): Remove
constants from :set-after list.
* lisp/calendar/diary-lib.el (diary-time-regexp): Clarify FIXME comment.
* lisp/calendar/icalendar-parser.el
(icalendar-x-name): Fix indentation.
(icalendar-cal-address): Improve docstring.
This is a fix for Bug#74994 that replaces the existing support
in icalendar.el. It implements a full parser, recurrence rule
and time zone calculations, diary import and export, and a
major mode with syntax highlighting for iCalendar data. It
obsoletes most of the code in icalendar.el.
In addition to Bug#74994, the proposal to update Emacs' iCalendar
support was discussed on emacs-devel in this thread:
https://lists.gnu.org/archive/html/emacs-devel/2024-10/msg00425.html
icalendar.el pre-dates the current standard (RFC5545), contains numerous
bugs, is not well documented, and could not easily be updated or
extended; starting fresh was the simplest path to creating an iCalendar
library that other Emacs applications and packages can rely on. It was
decided to leave icalendar.el's code in place for posterity, but declare
it obsolete. Most of the changes in icalendar.el simply consist of such
declarations. The old To Do list has also been deleted.
A few changes in icalendar.el, however, consist of new code for
library-wide functions and options, especially error handling. In
particular:
* lisp/calendar/icalendar.el: Log iCalendar library errors in a single
buffer.
(icalendar-errors-mode): New mode for it.
(icalendar-uid-format): Change the default value to "%h", a hash
value (for privacy).
(icalendar-make-uid): New function, to replace 'icalendar--create-uid'.
(icalendar-debug-level, icalendar-vcalendar-prodid): New option.
(icalendar-vcalendar-version): New constant.
* lisp/calendar/icalendar.el (icalendar-import-format)
(icalendar-import-format-summary, icalendar-import-format-description)
(icalendar-import-format-location, icalendar-import-format-organizer)
(icalendar-import-format-url, icalendar-import-format-uid)
(icalendar-import-format-status, icalendar-import-format-class)
(icalendar-recurring-start-year, icalendar-export-hidden-diary-entries)
(icalendar-export-sexp-enumerate-all, icalendar-export-alarms,
icalendar-debug, icalendar--weekday-array, icalendar--dmsg)
(icalendar--get-unfolded-buffer icalendar--clean-up-line-endings)
(icalendar--rris, icalendar--read-element)
(icalendar--get-event-property, icalendar--get-event-properties)
(icalendar--get-event-property-attributes)
(icalendar--get-children, icalendar--all-events, icalendar--split-value)
(icalendar--convert-tz-offset, icalendar--parse-vtimezone)
(icalendar--get-most-recent-observance)
(icalendar--convert-all-timezones, icalendar--find-time-zone)
(icalendar--decode-isodatetime)
(icalendar--decode-isoduration, icalendar--add-decoded-times)
(icalendar--datetime-to-american-date)
(icalendar--datetime-to-european-date, icalendar--datetime-to-iso-date)
(icalendar--datetime-to-diary-date, icalendar--datetime-to-colontime)
(icalendar--get-month-number, icalendar--get-weekday-number)
(icalendar--get-weekday-numbers, icalendar--get-weekday-abbrev)
(icalendar--date-to-isodate, icalendar--datestring-to-isodate)
(icalendar--diarytime-to-isotime, icalendar--convert-string-for-export)
(icalendar--convert-string-for-import, icalendar-export-file)
(icalendar-export-region, icalendar--create-uid)
(icalendar--parse-summary-and-rest, icalendar--create-ical-alarm)
(icalendar--do-create-ical-alarm, icalendar--convert-ordinary-to-ical)
(icalendar-first-weekday-of-year, icalendar--convert-weekly-to-ical)
(icalendar--convert-yearly-to-ical, icalendar--convert-sexp-to-ical)
(icalendar--convert-block-to-ical, icalendar--convert-float-to-ical)
(icalendar--convert-date-to-ical, icalendar--convert-cyclic-to-ical)
(icalendar--convert-anniversary-to-ical, icalendar-import-file)
(icalendar-import-buffer, icalendar--format-ical-event)
(icalendar--convert-to-ical, icalendar--convert-ical-to-diary)
(icalendar--convert-recurring-to-diary)
(icalendar--convert-non-recurring-all-day-to-diary)
(icalendar--convert-non-recurring-not-all-day-to-diary)
(icalendar--add-diary-entry, icalendar-import-format-sample): Mark them
as obsolete.
In addition to the changes above, the new iCalendar library consists of
the following:
* lisp/calendar/diary-icalendar.el:
* lisp/calendar/icalendar-ast.el:
* lisp/calendar/icalendar-macs.el:
* lisp/calendar/icalendar-mode.el:
* lisp/calendar/icalendar-parser.el:
* lisp/calendar/icalendar-recur.el:
* lisp/calendar/icalendar-utils.el: New files
A few changes were made to existing files dealing with the calendar and
diary:
* lisp/calendar/calendar.el (calendar-date-from-day-of-year): New
function, extracted from calendar-goto-day-of-year.
* lisp/calendar/cal-move.el (calendar-goto-day-of-year): Use it.
* lisp/calendar/cal-dst.el (calendar-dst-find-data): Improve docstring.
* lisp/calendar/calendar.el (diary-date-insertion-form): New option.
(diary-american-date-insertion-form, diary-european-date-insertion-form)
(diary-iso-date-insertion-form): New constants.
* lisp/calendar/diary-lib.el (diary-insert-entry): Use the new
'diary-date-insertion-form' option.
(diary-time-regexp): Add FIXME to an existing comment.
The user-facing aspects of the above changes are documented in the Emacs
manual and the NEWS file:
* doc/emacs/calendar.texi (Diary Conversion): Update manual section to
describe the new importer and exporter.
* doc/emacs/emacs.texi (Detailed node listing): Update to include the
new nodes in docs/emacs/calendar.texi.
* etc/NEWS: Briefly describe the new library, major mode, and options.
The remainder of the changes apply to test files.
The following changes introduce new test files related to the new diary
importer and exporter:
* test/lisp/calendar/diary-icalendar-tests.el (Diary import and export):
Tests for diary-icalendar. In addition to new tests for the exporter,
the existing import tests for icalendar.el have been ported here; these
use the existing iCalendar files in
test/lisp/calendar/icalendar-resources. (A few new input .ics files
have also been added to this directory; see below.)
* test/lisp/calendar/diary-icalendar-resources: New directory containing
expected outputs for the import tests in diary-icalendar-tests.el.
(These have the same or similar names to the output files for the old
importer, in test/lisp/calendar/icalendar-resources, but different
contents. Thus they live in a new directory.)
* test/lisp/calendar/icalendar-resources/import-legacy-function.ics: New
input file to test backward compatibility of the new importer with a
function as the value of 'icalendar-import-format', now obsolete.
* test/lisp/calendar/icalendar-resources/import-legacy-vars.ics: New
input file to test backward compatibility of the new importer with
values for options provided by icalendar.el which are now obsolete.
* test/lisp/calendar/icalendar-resources/import-with-attachment.ics: New
input file to test import of base64-encoded attachments.
* icalendar-resources/import-time-format-12hr-blank.ics: New input file
to test import with a custom value of 'diary-icalendar-time-format'.
Two other new test files provide unit tests for the main functions of
the library:
* test/lisp/calendar/icalendar-parser-tests.el (Parser): Tests for
icalendar-parser. Most of these are derived from examples in RFC5545,
to ensure the parser implements the standard.
* test/lisp/calendar/icalendar-recur-tests.el (Recurrence rules): Tests
for icalendar-recur. Most of these are derived from examples in RFC5545,
to ensure the recurrence rule interpreter implements the standard.
A few of the existing test files for icalendar.el have also been
modified. Besides the specific changes mentioned below, the modified
.ics files also now use CR-LF line endings, as required by RFC5545:
* test/lisp/calendar/icalendar-tests.el (icalendar-deftest-obsolete):
New macro.
* test/lisp/calendar/icalendar-resources/import-non-recurring-all-day.ics:
Correct a malformed VALUE parameter.
* test/lisp/calendar/icalendar-resources/import-rrule-anniversary.ics:
Correct representation of a recurring event.
*
test/lisp/calendar/icalendar-resources/import-rrule-daily-with-exceptions.ics:
Add a required VALUE parameter.
* test/lisp/calendar/icalendar-resources/import-rrule-daily.ics:
* test/lisp/calendar/icalendar-resources/import-rrule-monthly-no-end.ics:
* test/lisp/calendar/icalendar-resources/import-rrule-monthly-with-end.ics:
* test/lisp/calendar/icalendar-resources/import-rrule-weekly.ics:
Correct a malformed RRULE property.
* lisp/calendar/calendar.el (calendar-get-buffer): New function.
(calendar-mode-line-format): Support displaying non-default
calendar buffer name.
(calendar-exit): Handle non-default calendar buffer separately.
(calendar-generate-window): Update mode-line after cursor
motion (bug#79994).
(calendar-redraw, calendar-update-mode-line, calendar-unmark)
(calendar-mark-visible-date):
* lisp/calendar/cal-hebrew.el (calendar-hebrew-mark-date-pattern)
(calendar-hebrew-list-yahrzeits):
* lisp/calendar/diary-lib.el (diary-mark-sexp-entries)
(calendar-mark-days-named, calendar-mark-date-pattern)
(calendar-mark-1): Replace 'calendar-buffer' with the new
function or current calendar buffer.
(diary-mark-entries): Record current calendar buffer (bug#79994).
Bug#78967.
(calendar-mode): Init new variables with user options.
* lisp/calendar/calendar.el (calendar-generate-window)
(calendar-unmark):
* lisp/calendar/diary-lib.el (diary-mark-entries)
(diary-redraw-calendar):
* lisp/calendar/holidays.el (calendar-mark-holidays): Use new
variables.
* etc/NEWS: Document the change.
* lisp/calendar/cal-bahai.el (calendar-bahai-read-date):
* lisp/calendar/cal-china.el (calendar-chinese-goto-date):
* lisp/calendar/cal-coptic.el (calendar-coptic-read-date):
* lisp/calendar/cal-french.el (calendar-french-goto-date):
* lisp/calendar/cal-hebrew.el (calendar-hebrew-read-date):
* lisp/calendar/cal-islam.el (calendar-islamic-read-date):
* lisp/calendar/cal-iso.el (calendar-iso-read-date):
* lisp/calendar/cal-julian.el (calendar-julian-goto-date)
(calendar-astro-goto-day-number):
* lisp/calendar/cal-mayan.el (calendar-mayan-read-haab-date)
(calendar-mayan-read-tzolkin-date):
* lisp/calendar/cal-persia.el (calendar-persian-read-date):
* lisp/calendar/diary-lib.el (diary-insert-cyclic-entry): Use
first day as default.
* lisp/calendar/cal-hebrew.el (calendar-hebrew-list-yahrzeits):
Set the default of end-year as start-year plus ten years.
* lisp/calendar/diary-lib.el (diary-nongregorian-listing-hook)
(diary-nongregorian-marking-hook): Add Chinese functions to the
list of variable's options. (Bug#74498)
cae528457c ; Add 2023 to copyright years.
b394359261 Improve documentation of 'isearch-open-overlay-temporary'
ab3210e709 Document 'use-package' in the 2 main manuals
# Conflicts:
# etc/refcards/ru-refcard.tex
# lib/explicit_bzero.c
# m4/explicit_bzero.m4
* doc/emacs/calendar.texi: Document the change.
* lisp/calendar/diary-lib.el (diary-offset):
* test/lisp/calendar/icalendar-tests.el: Add a test (bug#50195).
Change `dlet` so that it has binding semantics like `let` because that
is what a user would expect and it allows a corresponding `dlet*` to
be added later should the need arise. Fortunately the change has no
effect where it is currently used.
* lisp/subr.el (dlet): Work like let.
* lisp/calendar/cal-bahai.el (calendar-bahai-date-string):
* lisp/calendar/cal-coptic.el (calendar-coptic-date-string):
* lisp/calendar/cal-dst.el (calendar-time-zone-daylight-rules)
(calendar-dst-starts, dst-in-effect):
* lisp/calendar/cal-persia.el (calendar-persian-date-string):
* lisp/calendar/calendar.el (calendar-dlet, calendar-generate-month)
(calendar-update-mode-line, calendar-date-string):
* lisp/calendar/diary-lib.el (diary-list-entries-2)
(diary-list-entries, diary-mark-entries-1, diary-sexp-entry)
(diary-remind, diary-font-lock-date-forms, diary-fancy-date-pattern):
* lisp/calendar/holidays.el (holiday-sexp):
* lisp/calendar/icalendar.el (icalendar--convert-float-to-ical):
* lisp/calendar/solar.el (solar-time-string):
* lisp/calendar/todo-mode.el (todo-date-pattern)
(todo-edit-item--header, todo-convert-legacy-date-time)
(todo-read-date):
Rename `calendar-dlet*` to `calendar-dlet` since it uses `dlet`.
* lisp/calendar/diary-lib.el (diary-face-attrs): The attributes
don't have to be at the end of the line -- there may be ##warntime
or other comments (bug#19965).
* lisp/calendar/diary-lib.el (diary-fancy-display): Insert the
heading with the correct face, so that it doesn't have to be
re-matched later (which is generally impossible) (bug#13072).
(diary-fancy-date-pattern, diary-fancy-date-matcher): Make obsolete.
(diary-fancy-font-lock-keywords): Don't use.
(diary-fancy-font-lock-fontify-region-function): Don't use.
186152ba40 Pacify gcc -Wunused-function on Ubuntu 18.04.3
4cd143aded Fix copyright years by hand
365e01cc9f Update copyright year to 2020
cd2c156163 ; * etc/NEWS: Make the description of XDG fallback more ac...
# Conflicts:
# etc/NEWS
# etc/refcards/ru-refcard.tex
Problem reported by Mattias Engdegård in:
https://lists.gnu.org/r/emacs-devel/2019-08/msg00085.html
* lisp/calendar/diary-lib.el (diary-glob-file-regexp-prefix):
Omit unnecessary ‘\’ before ordinary char.
* lisp/cedet/inversion.el (inversion-decoders):
* lisp/org/ob-haskell.el (org-babel-haskell-export-to-lhs):
Omit unnecessary ‘?’ after nullable pattern.
* lisp/org/org-capture.el (org-capture-fill-template):
Match upper-case as well as lower-case letters.
* lisp/progmodes/cc-mode.el (c-before-change-check-unbalanced-strings)
(c-after-change-mark-abnormal-strings):
Simplify ‘.|\r’ to ‘.’.
* lisp/progmodes/gdb-mi.el (gdb-jsonify-buffer):
Put ‘-’ at end of bracket expression.
* lisp/calendar/diary-lib.el (diary-make-entry): Add
omit-trailing-space parameter. Add do-not-show parameter to
allow not showing diary file buffer.
* lisp/calendar/icalendar.el (icalendar--add-diary-entry): Remove
workaround to omit trailing space in diary entry. Have
diary-make-entry not display the diary file buffer. (Bug#35645)
(calendar-generate-window): Remove unused variable `day'.
(calendar-generate-month): Use calendar-dlet* to provide the dynbind
vars promised by the respective docstrings.
(calendar-update-mode-line): Use calendar-dlet* to provide `date' to
calendar-mode-line-format. Don't call `eval' here since it's called in
calendar-string-spread anyway!
(calendar-date-string): Use calendar-dlet* to provide the dynbind
vars promised by the docstring of calendar-date-display-form.
* lisp/calendar/diary-lib.el (diary--date-string): Rename from date-string.