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:
parent
1d43dba1a0
commit
0f755e302c
2 changed files with 36 additions and 4 deletions
|
@ -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):
|
||||
|
|
|
@ -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)))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue