mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-06-14 04:21:24 +00:00
11 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
fff343c332 |
; Fix typos in iCalendar macro and recurrence docstrings
* lisp/calendar/icalendar-macs.el (ical:with-node-value) (ical:with-property, ical:with-param, ical:with-child-of): "evalutes" -> "evaluates". * lisp/calendar/icalendar-recur.el (icr:tz--get-updated-in): "occurence" -> "occurrence". Copyright-paperwork-exempt: yes |
||
|
|
70b79b3ed8 |
Rename `icalendar-recur' type and related functions
More context in Bug#80786 and: https://lists.gnu.org/archive/html/emacs-orgmode/2026-03/msg00286.html `icalendar-recur' as a type name for RRULE values was confusing and made the accessors for this type difficult to discover, because `icalendar-recur-' is also used as a prefix in icalendar-recur.el. This change renames the `icalendar-recur' type to `icalendar-rrule-value' and renames the accessor functions for these values appropriately. * lisp/calendar/icalendar-parser.el: Rename symbols as follows: (icalendar-recur): `icalendar-rrule-value' (icalendar-read-recur-rule-part): `icalendar-read-rrule-part' (icalendar-print-recur-rule-part): `icalendar-print-rrule-part' (icalendar-recur-rule-part): `icalendar-rrule-part' (icalendar-read-recur): `icalendar-read-rrule-value' (icalendar-print-recur): `icalendar-print-rrule-value' (icalendar--recur-value-types): `icalendar--rrule-value-types' (icalendar-recur-value-p): `icalendar-rrule-value-p' (icalendar-recur-freq): `icalendar-rrule-freq' (icalendar-recur-interval-size): `icalendar-rrule-interval-size' (icalendar-recur-until): `icalendar-rrule-until' (icalendar-recur-count): `icalendar-rrule-count' (icalendar-recur-weekstart): `icalendar-rrule-weekstart' (icalendar-recur-by*): `icalendar-rrule-by*'. (icalendar-rrule): (icalendar-index-insert): (icalendar-index-get): Update references. * lisp/calendar/icalendar-recur.el (icalendar-recur-find-interval): (icalendar-recur-nth-interval): (icalendar-recur-next-interval): (icalendar-recur-previous-interval): (icalendar-recur-refine-from-clauses): (icalendar-recur-recurrences-in-interval): (icalendar-recur-recurrences-in-window): (icalendar-recur-recurrences-to-count): (icalendar-recur-tz-observance-on): Update references. * lisp/calendar/diary-icalendar.el: Update references. * lisp/calendar/icalendar-shortdoc.el (icalendar): Update shortdoc examples. * lisp/gnus/gnus-icalendar.el: Update references. * test/lisp/calendar/diary-icalendar-tests.el: * test/lisp/calendar/icalendar-parser-tests.el: * test/lisp/calendar/icalendar-recur-tests.el: Update references in tests. |
||
|
|
4fcc8a473a | ; Spelling fixes. | ||
|
|
0326130e1b |
Add short documentation group for iCalendar lib
Define a short documentation group and document the major functions: * lisp/calendar/icalendar-shortdoc.el: New file. * lisp/calendar/diary-icalendar.el: * lisp/calendar/icalendar-ast.el: * lisp/calendar/icalendar-parser.el: * lisp/calendar/icalendar-recur.el: * lisp/calendar/icalendar-utils.el: Refer to icalendar-shortdoc.el in file commentary. * lisp/calendar/icalendar-macs.el: Ditto, and also mention the macros for binding values. * lisp/calendar/icalendar.el: Ditto, and also remove some obsolete commentary. Also make some improvements to documentation strings that the above changes revealed would be helpful: * lisp/calendar/icalendar-recur.el (icalendar-recur-recurrences-in-window-w/end-times): Fix broken ref. (icalendar-recur-current-tz-to-vtimezone): Clarify docstring. * lisp/calendar/icalendar-parser.el (icalendar-parse): Clarify docstring. (Bug#80727) |
||
|
|
6eea015337 |
Improve performance of icalendar-recur.el and its tests
As discussed in Bug#80520. * test/lisp/calendar/icalendar-recur-tests.el (icalendar-test-rrule-test-rfc5545-sec3.8.5.3/3) (icalendar-test-rrule-test-rfc5545-sec3.8.5.3/29) (icalendar-test-rrule-test-rfc5545-sec3.8.5.3/30) (icalendar-test-rrule-test-rfc5545-sec3.8.5.3/31) (icalendar-test-rrule-test-rfc5545-sec3.8.5.3/33) (icalendar-test-rrule-test-rfc5545-sec3.8.5.3/34) (icalendar-test-rrule-test-rfc5545-sec3.8.5.3/38): Mark tests expensive. Abstract the implementation of intervals in icalendar-recur.el. Don't store interval NEXT-LOW when it's the same as HIGH. This reduces allocations, and shaves about ~20% off the full test suite. * lisp/calendar/icalendar-recur.el (icalendar-recur-make-interval) (icalendar-recur-interval-low) (icalendar-recur-interval-high) (icalendar-recur-interval-next): Implement intervals and subintervals as vectors. Only store NEXT-LOW when it's non-nil. (icalendar-recur-find-absolute-interval) (icalendar-recur-find-daily-interval) (icalendar-recur-find-weekly-interval) (icalendar-recur-find-monthly-interval) (icalendar-recur-find-yearly-interval) (icalendar-recur-next-interval) (icalendar-recur-previous-interval) (icalendar-recur-refine-byyearday) (icalendar-recur-refine-byweekno) (icalendar-recur-refine-bymonth) (icalendar-recur-refine-bymonthday) (icalendar-recur-refine-byday) (icalendar-recur-refine-byhour) (icalendar-recur-refine-byminute) (icalendar-recur-refine-bysecond) (icalendar-recur-subintervals-to-date-times) (icalendar-recur-subintervals-to-dates) (icalendar-recur-recurrences-in-interval) (icalendar-recur-recurrences-in-window) (icalendar-recur--key-from-interval): Use new interval constructor and accessors. Don't generate NEXT-LOW when it's the same as HIGH. * lisp/calendar/icalendar-utils.el (icalendar-dates-until): Use new interval constructor and accessors. * test/lisp/calendar/icalendar-recur-tests.el (icalendar-test-recur-find-secondly-interval) (icalendar-test-recur-find-minutely-interval) (icalendar-test-recur-find-hourly-interval) (icalendar-test-recur-find-daily-interval-w/date) (icalendar-test-recur-find-daily-interval-w/date-time) (icalendar-test-recur-find-weekly-interval-w/date) (icalendar-test-recur-find-weekly-interval-w/date-time) (icalendar-test-recur-find-monthly-interval) (icalendar-test-recur-find-yearly-interval) (icalendar-test-recur-refine-byyearday) (icalendar-test-recur-refine-bymonth) (icalendar-test-recur-refine-bymonthday) (icalendar-test-recur-refine-byday) (icalendar-test-recur-refine-byhour) (icalendar-test-recur-refine-byminute) (icalendar-test-recur-refine-bysecond) (icalendar-test-recur-subintervals-to-dates) (icalendar-test-recur-subintervals-to-date-times) (icalendar-test-rrule-test): Use new interval constructor and accessors. Rearrange loops when refining subintervals, so that the loop always runs once but doesn't run a second no-op iteration. Astonishingly this cuts the running time of the full test suite by almost 50%. * lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byyearday) (icalendar-recur-refine-byweekno) (icalendar-recur-refine-bymonth) (icalendar-recur-refine-bymonthday) (icalendar-recur-refine-byday) (icalendar-recur-refine-byhour) (icalendar-recur-refine-byminute) (icalendar-recur-refine-bysecond): Tighten up loop bounds when refining subintervals. Improve performance of `icalendar-recur-tz-observance-on'. This also brings about a ~20% performance gain. * lisp/calendar/icalendar-recur.el (icalendar-recur-tz-observance-on): Eliminate calculation of previous interval recurrences when it's unnecessary. Add a cheap upper bound check to prevent fully computing recurrences for irrelevant observances. (icalendar-recur--w/in-locally-p): (icalendar-recur--w/in-abs-p): New helper functions for the upper bound check. Other more minor changes: Improve performance in `icalendar-recur-refine-byday' * lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byday): Avoid calculating Gregorian from absolute date unless it's necessary. Improve performance of BYSETPOS filtering in icalendar-recur.el: η-reduce `icalendar-recur-make-bysetpos-filter'. Thanks to Mattias Engdegård for the suggestion and implementation. * lisp/calendar/icalendar-recur.el (icalendar-recur-make-bysetpos-filter): Rename to `icalendar-recur-bysetpos-filter' and avoid `seq-map-indexed'. (icalendar-recur-recurrences-in-interval): Use new function. * test/lisp/calendar/icalendar-recur-tests.el (icalendar-test-recur-bysetpos-filter): Use new function. Improve sorting performance: Thanks to Mattias Engdegård for the suggestion and implementation. * lisp/calendar/icalendar-recur.el (icalendar-recur-refine-byyearday): (icalendar-recur-refine-byweekno): (icalendar-recur-refine-bymonthday): (icalendar-recur-refine-byday): Use :key instead of :lessp in `sort' calls. Eliminate `apply-partially' and `seq-take': Thanks to Mattias Engdegård for the suggestion and implementation. * lisp/calendar/icalendar-recur.el (icalendar-recur-recurrences-in-window): Eliminate `apply-partially'. (icalendar-recur-recurrences-in-interval): Eliminate `apply-partially' and replace `seq-take' with `take'. Reduce consing: * lisp/calendar/icalendar-recur.el (icalendar-recur-subintervals-to-dates): (icalendar-recur-recurrences-in-window): (icalendar-recur-recurrences-in-window-w/end-times): (icalendar-recur-recurrences-to-count): Replace `append' with `nconc'. Avoid a few uses of `seq-filter' in common functions in icalendar-ast.el: * lisp/calendar/icalendar-ast.el (icalendar-ast-node-children-of): Reimplement filter imperatively. |
||
|
|
8e3b20a702 | ; * lisp/calendar/icalendar-recur.el (eval-when-compile): Fix a typo. | ||
|
|
f0dbe25d4c |
Fix `diary-rrule' recurrence rule calculation (Bug#80460)
Thanks to TAKAHASHI Yoshio for reporting and for fixing one of the typos. In addition to the reported bug involving :include/:exclude, testing revealed that the provided RRULE COUNT clause was also not being handled correctly; this change also fixes that. * lisp/calendar/diary-icalendar.el (diary-rrule): Handle recurrence rules with a COUNT clause. * lisp/calendar/icalendar-recur.el (icalendar-recur-recurrences-in-interval): Fix a couple of typos that caused RDATE/EXDATE calculations to fail. * test/lisp/calendar/diary-icalendar-tests.el (diary-icalendar-test-rrule-bug-80460): New test for this bug. |
||
|
|
1e7dae37b8 |
lisp/calendar: Style changes
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. |
||
|
|
4db3be2001 |
Fix iCalendar macro (debug ...) forms and indentation
As discussed in Bug#74994. * lisp/calendar/icalendar-ast.el (icalendar-make-param) (icalendar-make-property, icalendar-make-component) (icalendar-make-node-from-templates) * lisp/calendar/icalendar-macs.el (icalendar-with-node-children) (icalendar-with-node-value, icalendar-with-param) (icalendar-with-child-of, icalendar-with-property-of): Remove extraneous arguments in (debug ...) forms. * lisp/calendar/icalendar-recur.el * lisp/calendar/diary-icalendar.el: Fix indentation of calls to them. Plus one other minor fix: * lisp/calendar/diary-icalendar.el (diary-icalendar-current-tz-to-vtimezone): Ignore unused error variable (fixes a byte compiler warning). |
||
|
|
74750e269b |
Some minor code improvements in iCalendar library
* lisp/calendar/icalendar-mode.el: Update file header. Fix error display in 'icalendar-errors-mode': * lisp/calendar/icalendar.el (icalendar-error-regexp): Fix to allow " *UNFOLDED:" prefix in buffer names. (Extra colon was breaking match.) (icalendar-format-error): Suppress this prefix preferentially in long buffer names. Add declarations to some iCalendar macros: * lisp/calendar/icalendar-macs.el (icalendar-with-node-value) (icalendar-with-child-of) (icalendar-with-param-of) (icalendar-with-node-children) (icalendar-with-node-value) (icalendar-with-param) * lisp/calendar/icalendar-ast.el (icalendar-make-property) (icalendar-make-component) (icalendar-make-node-from-templates): Add (declare ...) forms. Add `icalendar-trimp' to icalendar-utils.el: * lisp/calendar/icalendar-utils.el (icalendar-trimp): New function. * lisp/calendar/diary-icalendar.el (diary-icalendar-format-entry) (diary-icalendar-parse-attendees-and-organizer) (diary-icalendar-parse-location) (diary-icalendar-parse-url) (diary-icalendar-parse-uid): Use it to replace diary-icalendar--nonempty. (diary-icalendar--nonempty): Remove. Move VTIMEZONE creation to icalendar-recur.el: The following changes move `diary-icalendar-current-tz-to-vtimezone' and associated code to icalendar-recur.el. Library users are likely to need this function, so it makes sense to keep it with other time zone-related code in that file, instead of having them depend on diary-icalendar. * lisp/calendar/icalendar-recur.el (icalendar-tz-data-insufficient) (icalendar-tz-unsupported): New error types. (icalendar-recur-current-tz-to-vtimezone): Rename from `diary-icalendar-current-tz-to-vtimezone'; signal new error types. (icalendar-recur--tz-warning): Rename from `diary-icalendar--tz-warning'. (icalendar-recur--emacs-local-tzid): Rename from `diary-icalendar--emacs-local-tzid'. (icalendar-recur--tz-info-sexp-p): Rename from `diary-icalendar--tz-info-sexp-p'. * lisp/calendar/diary-icalendar.el (diary-icalendar-current-tz-to-vtimezone): Reimplement with `icalendar-recur-current-tz-to-vtimezone'. (diary-icalendar--tz-warning) (diary-icalendar--emacs-local-tzid) (diary-icalendar--tz-info-sexp-p): Renamed and moved; see above. (diary-time-zone-export-strategy): Update validation function name. |
||
|
|
c685cf336a |
Add full support for iCalendar (RFC5545) data
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. |