diff --git a/lisp/gnus-icalendar.el b/lisp/gnus-icalendar.el index 56c56f3dd466975da7b23edd257058ff63fb8bfd..12455aff8622101eb93f4378b0564c4f8dfcc0fd 100644 --- a/lisp/gnus-icalendar.el +++ b/lisp/gnus-icalendar.el @@ -52,6 +52,22 @@ ;;; ical-event ;;; +(defgroup gnus-icalendar nil + "Settings for inline display of iCalendar invitations." + :group 'gnus-article + :prefix "gnus-icalendar-") + +(defcustom gnus-icalendar-custom-tz nil + "Translate non-standard timezone names. + +Invitations might show with wrong start/end times when the ical +timestamps contain non-standard timezone names. If this happens, +you can tell gnus to translate the timezone name to something +gnus will recognize." + :type '(alist :key-type string :value-type string) + :group 'gnus-icalendar) + + (defclass gnus-icalendar-event () ((organizer :initarg :organizer :accessor gnus-icalendar-event:organizer @@ -143,7 +159,9 @@ (defun gnus-icalendar-event--decode-datefield (ical field) (let* ((date (icalendar--get-event-property ical field)) (date-props (icalendar--get-event-property-attributes ical field)) - (tz (plist-get date-props 'TZID))) + (tzid (plist-get date-props 'TZID)) + (tz (or (cdr (assoc tzid gnus-icalendar-custom-tz)) + tzid))) (date-to-time (timezone-make-date-arpa-standard date nil tz)))) @@ -639,11 +657,6 @@ is searched." ;;; gnus-icalendar ;;; -(defgroup gnus-icalendar nil - "Settings for inline display of iCalendar invitations." - :group 'gnus-article - :prefix "gnus-icalendar-") - (defcustom gnus-icalendar-reply-bufname "*CAL*" "Buffer used for building iCalendar invitation reply." :type '(string)