+2013-11-13 Jan Tatarik <jan.tatarik@gmail.com>
+
+ * gnus-icalendar.el (gnus-icalendar-event:sync-to-org)
+ (gnus-icalendar-event:inline-org-buttons): Allow for appointment
+ cancellations to be synced to org if the original appt has an org
+ outline.
+
+2013-11-13 Jan Tatarik <jan.tatarik@gmail.com>
+
+ * gnus-icalendar.el (gnus-icalendar--format-summary-line)
+ (gnus-icalendar-event->org-entry)
+ (gnus-icalendar--update-org-event)
+ (gnus-icalendar-event->gnus-calendar): Fix empty location handling.
+
2013-11-12 Jan Tatarik <jan.tatarik@gmail.com>
* gnus-icalendar.el (gnus-icalendar-event-from-ical):
(format "<%s %s-%s%s>" start-date start-time end-time repeat)
(format "<%s %s>--<%s %s>" start-date start-time end-date end-time))))
+(defun gnus-icalendar--format-summary-line (summary &optional location)
+ (if location
+ (format "%s (%s)" summary location)
+ (format "%s" summary)))
+
;; TODO: make the template customizable
(defmethod gnus-icalendar-event->org-entry ((event gnus-icalendar-event) reply-status)
"Return string with new `org-mode' entry describing EVENT."
("RRULE" . ,(gnus-icalendar-event:recur event))
("REPLY" . ,reply))))
- (insert (format "* %s (%s)\n\n" summary location))
+ (insert (format "* %s\n\n"
+ (gnus-icalendar--format-summary-line summary location)))
(mapc (lambda (prop)
(org-entry-put (point) (car prop) (cdr prop)))
props))
(headline (delq nil (list
(org-entry-get (point) "TODO")
(when priority (format "[#%s]" priority))
- (format "%s (%s)" summary location)
+ (gnus-icalendar--format-summary-line summary location)
(org-entry-get (point) "TAGS")))))
(re-search-forward "^\\*+ " (line-end-position))
(gnus-icalendar--update-org-event event reply-status)
(gnus-icalendar:org-event-save event reply-status)))
-(defmethod gnus-icalendar-event:sync-to-org ((event gnus-icalendar-event-cancel))
+(defmethod gnus-icalendar-event:sync-to-org ((event gnus-icalendar-event-cancel) reply-status)
(when (gnus-icalendar-find-org-event-file event)
(gnus-icalendar--cancel-org-event event)))
(with-slots (organizer summary description location recur uid method rsvp) event
(let ((headers `(("Summary" ,summary)
- ("Location" ,location)
+ ("Location" ,(or location ""))
("Time" ,(gnus-icalendar-event:org-timestamp event))
("Organizer" ,organizer)
("Method" ,method))))
(when org-entry-exists-p
`("Show Org Entry" gnus-icalendar--show-org-event ,event))))))
+
+(defmethod gnus-icalendar-event:inline-org-buttons ((event gnus-icalendar-event-cancel))
+ (let ((org-entry-exists-p (gnus-icalendar-find-org-event-file event)))
+
+ (delq nil (list
+ `("Show Agenda" gnus-icalendar-show-org-agenda ,event)
+ (when org-entry-exists-p
+ `("Update Org Entry" gnus-icalendar-sync-event-to-org ,event))
+ (when org-entry-exists-p
+ `("Show Org Entry" gnus-icalendar--show-org-event ,event))))))
+
+
(defun gnus-icalendar-mm-inline (handle)
(let ((event (gnus-icalendar-event-from-handle handle gnus-icalendar-identities)))