lisp/gnus/gnus-icalendar.el: Fix for gnus-icalendar handling of empty appt locations; gnus-icalendar can update org entry for canceled appointments

This commit is contained in:
Jan Tatarik 2013-11-13 22:16:42 +00:00 committed by Katsumi Yamaoka
parent 1d43dba1a0
commit 0f755e302c
2 changed files with 36 additions and 4 deletions

View file

@ -1,3 +1,17 @@
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):

View file

@ -361,6 +361,11 @@ Return nil for non-recurring EVENT."
(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."
@ -378,7 +383,8 @@ Return nil for non-recurring 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))
@ -443,7 +449,7 @@ is searched."
(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))
@ -540,7 +546,7 @@ is searched."
(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)))
@ -591,7 +597,7 @@ is searched."
(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))))
@ -717,6 +723,18 @@ is searched."
(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)))