diff --git a/lib/ics2org.el b/lib/ics2org.el index 797fe09..555c379 100644 --- a/lib/ics2org.el +++ b/lib/ics2org.el @@ -33,37 +33,15 @@ (defun ics2org (filename) "Convert ICS file `FILENAME' to Org event format and insert at point." (interactive) - (let (output-format - event-start - event-end - event-summary) - (if (not (file-exists-p filename)) - (error "File %s not found" filename)) - (progn - (find-file filename) - ;; Find start time - (goto-char (point-min)) - (re-search-forward "DTSTART:\\(.*\\)") - (setq event-start (date-to-time (match-string 1))) - ;; Find end time - (goto-char (point-min)) - (re-search-forward "DTEND:\\(.*\\)") - (setq event-end (date-to-time (match-string 1))) - ;; Get event summary / title - (goto-char (point-min)) - (re-search-forward "SUMMARY:\\(.*\\)") - (setq event-summary (match-string 1)) - (previous-buffer)) - ;; Set a default `output-format', but replace with - ;; `org-time-stamp-format' if available - (setq output-format "<%Y-%m-%d %a %H:%M>") - (if (fboundp 'org-time-stamp-format) - (setq output-format (org-time-stamp-format t nil))) - ;; Return a formatted `org-mode' entry using parsed data - (format "* %s\n%s--%s\n" - event-summary - (format-time-string output-format event-start) - (format-time-string output-format event-end)))) + (if (not (file-exists-p filename)) + (error "File %s not found" filename)) + (require 'gnus-icalendar) + (find-file filename) + (with-current-buffer "*scratch*" + (let ((event (gnus-icalendar-event-from-buffer (find-buffer-visiting filename)))) + (insert (format "* %s\n\n" (gnus-icalendar--format-summary-line (gnus-icalendar-event:summary event) + (gnus-icalendar-event:location event)))))) + ) (provide 'ics2org) ;;; ics2org.el ends here