Index: em-format.c
===================================================================
--- em-format.c	(revision 34224)
+++ em-format.c	(working copy)
@@ -224,6 +224,42 @@ em_format_class_add_handler(EMFormatClas
 	g_hash_table_insert(emfc->type_handlers, info->mime_type, info);
 }
 
+struct _class_handlers {
+	EMFormatClass *old;
+	EMFormatClass *new;
+};	
+static void
+merge_missing (gpointer key, gpointer value, gpointer userdata)
+{
+	struct _class_handlers *classes = (struct _class_handlers *) userdata;
+	EMFormatHandler *info, *oldinfo;
+	
+	oldinfo = (EMFormatHandler *) value;
+	info = g_hash_table_lookup (classes->new->type_handlers, key);
+	if (!info) {
+		/* Might be from a plugin;
+		 * FIXME: Ugliest of all code, I have ever written*/
+		g_hash_table_insert (classes->new->type_handlers, key, value);
+	}
+
+}
+
+void
+em_format_merge_handler(EMFormat *new, EMFormat *old)
+{
+	EMFormatClass *oldc = (EMFormatClass *)G_OBJECT_GET_CLASS(old);
+	EMFormatClass *newc = (EMFormatClass *)G_OBJECT_GET_CLASS(new);
+	struct _class_handlers fclasses;
+
+	fclasses.old = oldc;
+	fclasses.new = newc;
+
+	g_hash_table_foreach (oldc->type_handlers, merge_missing, &fclasses);
+
+//	d(printf("adding format handler to '%s' '%s'\n", 	g_type_name_from_class((GTypeClass *)emfc), info->mime_type));
+//	info->old = g_hash_table_lookup(emfc->type_handlers, info->mime_type);
+//	g_hash_table_insert(emfc->type_handlers, info->mime_type, info);
+}
 /**
  * em_format_class_remove_handler:
  * @emfc: 
Index: em-folder-view.c
===================================================================
--- em-folder-view.c	(revision 34224)
+++ em-folder-view.c	(working copy)
@@ -2193,6 +2193,9 @@ em_folder_view_print (EMFolderView *emfv
 	em_format_set_session (
 		(EMFormat *) efhp,
 		((EMFormat *) emfv->preview)->session);
+	em_format_merge_handler ((EMFormat *) efhp,
+		(EMFormat *) emfv->preview);
+
 	em_format_html_print_message (
 		efhp, emfv->folder, uids->pdata[0]);
 	g_object_unref (efhp);
