From: David Edmondson <dme@dme.org>
Date: Wed, 12 May 2010 08:07:49 +0000 (+0100)
Subject: emacs: Render text/x-vcalendar parts.
X-Git-Tag: debian/0.6_254~152
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=7ca4db2b46dc843b8294d7ff44dced9f74c81c1e;p=notmuch-old

emacs: Render text/x-vcalendar parts.

Use code from icalendar.el to convert text/x-vcalendar parts to
something suitable for use with the Emacs diary.

Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
---

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index b2080032..72c87a1f 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -26,6 +26,7 @@
 (require 'message)
 (require 'mm-decode)
 (require 'mailcap)
+(require 'icalendar)
 
 (require 'notmuch-lib)
 (require 'notmuch-query)
@@ -371,6 +372,24 @@ current buffer, if possible."
 	(run-hook-with-args 'notmuch-show-insert-text/plain-hook depth))))
   t)
 
+(defun notmuch-show-insert-part-text/x-vcalendar (msg part content-type nth depth declared-type)
+  (notmuch-show-insert-part-header nth declared-type content-type (plist-get part :filename))
+  (insert (with-temp-buffer
+	    (insert (notmuch-show-get-bodypart-content msg part nth))
+	    (goto-char (point-min))
+	    (let ((file (make-temp-file "notmuch-ical"))
+		  result)
+	      (icalendar--convert-ical-to-diary
+	       (icalendar--read-element nil nil)
+	       file t)
+	      (set-buffer (get-file-buffer file))
+	      (setq result (buffer-substring (point-min) (point-max)))
+	      (set-buffer-modified-p nil)
+	      (kill-buffer (current-buffer))
+	      (delete-file file)
+	      result)))
+  t)
+
 (defun notmuch-show-insert-part-application/octet-stream (msg part content-type nth depth declared-type)
   ;; If we can deduce a MIME type from the filename of the attachment,
   ;; do so and pass it on to the handler for that type.