diff -ruN -x Makefile.in -x configure evolution-1.4.5.orig/composer/e-msg-composer.c evolution-1.4.5/composer/e-msg-composer.c
--- evolution-1.4.5.orig/composer/e-msg-composer.c	Fri Sep 12 14:12:48 2003
+++ evolution-1.4.5/composer/e-msg-composer.c	Sat Jan 10 17:41:35 2004
@@ -102,6 +102,7 @@
 #include "Editor.h"
 #include "listener.h"
 
+/* when updating the control id, also update the default gconf value */
 #define GNOME_GTKHTML_EDITOR_CONTROL_ID "OAFIID:GNOME_GtkHTML_Editor:3.0"
 
 #define d(x) x
@@ -2411,6 +2412,8 @@
 	g_hash_table_destroy (composer->inline_images);
 	g_hash_table_destroy (composer->inline_images_by_url);
 	
+	g_free (composer->editor_oafiid);
+
 	g_free (composer->charset);
 	g_free (composer->mime_type);
 	g_free (composer->mime_body);
@@ -2727,6 +2730,7 @@
 e_msg_composer_load_config (EMsgComposer *composer)
 {
 	GConfClient *gconf;
+	GError *err = NULL;
 	
 	gconf = gconf_client_get_default ();
 	
@@ -2740,6 +2744,14 @@
 		gconf, "/apps/evolution/mail/composer/view/Bcc", NULL);
 	composer->view_subject = gconf_client_get_bool (
 		gconf, "/apps/evolution/mail/composer/view/Subject", NULL);
+	composer->editor_oafiid = gconf_client_get_string (
+		gconf, "/apps/evolution/mail/composer/editor_oafiid", &err);
+	/* if any error occurs reading the editor key, fallback to GtkHTML */
+	if (err) {
+		composer->editor_oafiid = g_strdup (GNOME_GTKHTML_EDITOR_CONTROL_ID);
+		g_error_free (err);
+	}
+	composer->catch_escape = TRUE;
 	
 	g_object_unref (gconf);
 }
@@ -2825,7 +2837,9 @@
 static int
 composer_key_pressed (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
 {
-	if (event->keyval == GDK_Escape) {
+	EMsgComposer *composer = E_MSG_COMPOSER (widget);
+
+	if (event->keyval == GDK_Escape && composer->catch_escape) {
 		do_exit (E_MSG_COMPOSER (widget));
 		
 		g_signal_stop_emission_by_name (widget, "key-press-event");
@@ -2907,6 +2921,7 @@
 	CORBA_Environment ev;
 	GConfClient *gconf;
 	int vis;
+	gboolean editor_needs_escape = FALSE;
 	
 	composer = g_object_new (E_TYPE_MSG_COMPOSER, "win_name", _("Compose a message"), NULL);
 	gtk_window_set_title ((GtkWindow *) composer, _("Compose a message"));
@@ -2964,16 +2979,32 @@
 	
 	/* Editor component.  */
 	composer->editor = bonobo_widget_new_control (
-		GNOME_GTKHTML_EDITOR_CONTROL_ID,
+		composer->editor_oafiid,
 		bonobo_ui_component_get_container (composer->uic));
+
+	/* if activation of alternate editor failed, try falling back to the GtkHTML editor */
+	if (!composer->editor && strcmp (GNOME_GTKHTML_EDITOR_CONTROL_ID, composer->editor_oafiid)) {
+		composer->editor = bonobo_widget_new_control (
+			GNOME_GTKHTML_EDITOR_CONTROL_ID,
+			bonobo_ui_component_get_container (composer->uic));
+	}
+
+	/* if activation still failed, display the error message from the
+	 * _original_ activation attempt. */
 	if (!composer->editor) {
+		char * msg;
+
+		msg = g_strdup_printf (_("Could not create composer window:\n"
+				         "Unable to activate editor component\n"
+					 "%s.\n"
+					 "Please make sure you have the correct version\n"
+					 "of the editor installed.\n"), 
+					composer->editor_oafiid);
 		e_activation_failure_dialog (GTK_WINDOW (composer),
-					     _("Could not create composer window:\n"
-					       "Unable to activate HTML editor component.\n"
-					       "Please make sure you have the correct version\n"
-					       "of gtkhtml and libgtkhtml installed.\n"),
-					     GNOME_GTKHTML_EDITOR_CONTROL_ID,
+					     msg,
+					     composer->editor_oafiid,
 					     "IDL:Bonobo/Control:1.0");
+		g_free(msg);
 		gtk_object_destroy (GTK_OBJECT (composer));
 		return NULL;
 	}
@@ -3034,11 +3065,17 @@
 	
 	prepare_engine (composer);
 	if (composer->editor_engine == CORBA_OBJECT_NIL) {
+		char * msg;
+
+		msg = g_strdup_printf (_("Could not create composer window:\n"
+					"Unable to activate editor component\n"
+					"%s.\n"),
+					composer->editor_oafiid);
 		e_activation_failure_dialog (GTK_WINDOW (composer),
-					     _("Could not create composer window:\n"
-					       "Unable to activate HTML editor component."),
-					     GNOME_GTKHTML_EDITOR_CONTROL_ID,
+					     msg,
+					     composer->editor_oafiid,
 					     "IDL:GNOME/GtkHTML/Editor/Engine:1.0");
+		g_free(msg);
 		gtk_object_destroy (GTK_OBJECT (composer));
 		return NULL;
 	}
@@ -3051,6 +3088,9 @@
 		am = autosave_manager_new ();
 	
 	autosave_manager_register (am, composer);
+
+	bonobo_widget_get_property (BONOBO_WIDGET (composer->editor), "EditorNeedsEscape", TC_CORBA_boolean, &editor_needs_escape, NULL);
+	composer->catch_escape = !editor_needs_escape;
 	
 	return composer;
 }
diff -ruN -x Makefile.in -x configure evolution-1.4.5.orig/composer/e-msg-composer.h evolution-1.4.5/composer/e-msg-composer.h
--- evolution-1.4.5.orig/composer/e-msg-composer.h	Fri Sep 12 14:12:48 2003
+++ evolution-1.4.5/composer/e-msg-composer.h	Sat Jan 10 17:40:26 2004
@@ -68,6 +68,8 @@
 	
 	GtkWidget *address_dialog;
 	
+	char                    *editor_oafiid;
+	gboolean                 catch_escape;
 	Bonobo_PersistFile       persist_file_interface;
 	Bonobo_PersistStream     persist_stream_interface;
 	GNOME_GtkHTML_Editor_Engine  editor_engine;
diff -ruN -x Makefile.in -x configure evolution-1.4.5.orig/mail/evolution-mail.schemas evolution-1.4.5/mail/evolution-mail.schemas
--- evolution-1.4.5.orig/mail/evolution-mail.schemas	Wed Jun 25 11:46:28 2003
+++ evolution-1.4.5/mail/evolution-mail.schemas	Sat Jan 10 17:40:41 2004
@@ -74,6 +74,21 @@
     </schema>
 
     <schema>
+      <key>/schemas/apps/evolution/mail/composer/editor_oafiid</key>
+      <applyto>/apps/evolution/mail/composer/editor_oafiid</applyto>
+      <owner>evolution-mail</owner>
+      <type>string</type>
+      <default>OAFIID:GNOME_GtkHTML_Editor:3.1</default>
+      <locale name="C">
+         <short>Activation ID of editor control.</short>
+         <long>
+          Evolution uses the GtkHTML editor by default.  Change this
+          ID to use an alternate (compatible) editor.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
       <key>/schemas/apps/evolution/mail/composer/view/From</key>
       <applyto>/apps/evolution/mail/composer/view/From</applyto>
       <owner>evolution-mail</owner>
