From: Jan Tatarik Date: Wed, 13 Nov 2013 22:16:42 +0000 (+0000) Subject: lisp/gnus/gnus-icalendar.el: Fix for gnus-icalendar handling of empty appt locations... X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~839 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0f755e302c3a14eb116fb1c0bad7b8d803c88747;p=emacs.git lisp/gnus/gnus-icalendar.el: Fix for gnus-icalendar handling of empty appt locations; gnus-icalendar can update org entry for canceled appointments --- diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index cfdf6c9063e..e47573d5d6b 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,17 @@ +2013-11-13 Jan Tatarik + + * 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 + + * 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 * gnus-icalendar.el (gnus-icalendar-event-from-ical): diff --git a/lisp/gnus/gnus-icalendar.el b/lisp/gnus/gnus-icalendar.el index f3b62381b47..064ba84cadc 100644 --- a/lisp/gnus/gnus-icalendar.el +++ b/lisp/gnus/gnus-icalendar.el @@ -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)))