Index: gedit/gedit-tab.c
===================================================================
--- gedit/gedit-tab.c	(revision 5435)
+++ gedit/gedit-tab.c	(working copy)
@@ -1942,6 +1942,11 @@
 	g_return_if_fail (GEDIT_IS_TAB (tab));
 	g_return_if_fail ((tab->priv->state == GEDIT_TAB_STATE_NORMAL) ||
 			  (tab->priv->state == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
+	
+	if (tab->priv->state == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION)
+	{
+		set_message_area (tab, NULL);
+	}
 
 	doc = gedit_tab_get_document (tab);
 	g_return_if_fail (GEDIT_IS_DOCUMENT (doc));
Index: gedit/gedit-io-error-message-area.c
===================================================================
--- gedit/gedit-io-error-message-area.c	(revision 5435)
+++ gedit/gedit-io-error-message-area.c	(working copy)
@@ -129,7 +129,6 @@
 
 	gedit_message_area_set_contents (GEDIT_MESSAGE_AREA (message_area),
 					 hbox_content);
-	return message_area;
 }
 
 static GtkWidget *
Index: gedit/gedit-commands-file.c
===================================================================
--- gedit/gedit-commands-file.c	(revision 5435)
+++ gedit/gedit-commands-file.c	(working copy)
@@ -1079,6 +1079,26 @@
 	g_list_free (docs);
 }
 
+static void
+revert_with_statusbar_flash (GeditWindow   *window,
+			     GeditTab *tab)
+{
+	GeditDocument *doc;
+	gchar *docname;
+
+	doc = gedit_tab_get_document (tab);
+	docname = gedit_document_get_short_name_for_display (doc);
+
+	gedit_statusbar_flash_message (GEDIT_STATUSBAR (window->priv->statusbar),
+				        window->priv->generic_message_cid,
+				       _("Reverting the document '%s'\342\200\246"),
+				       docname);
+
+	g_free (docname);
+
+	_gedit_tab_revert (tab);
+}
+
 /* File revert */
 static void
 revert_dialog_response_cb (GtkDialog     *dialog,
@@ -1086,8 +1106,6 @@
 			   GeditWindow   *window)
 {
 	GeditTab *tab;
-	GeditDocument *doc;
-	gchar *docname;
 
 	gedit_debug (DEBUG_COMMANDS);
 
@@ -1105,18 +1123,9 @@
 		return;
 	}
 
-	doc = gedit_tab_get_document (tab);
-	docname = gedit_document_get_short_name_for_display (doc);
-
-	gedit_statusbar_flash_message (GEDIT_STATUSBAR (window->priv->statusbar),
-				        window->priv->generic_message_cid,
-				       _("Reverting the document '%s'\342\200\246"),
-				       docname);
-
-	g_free (docname);
 	gtk_widget_destroy (GTK_WIDGET (dialog));
 
-	_gedit_tab_revert (tab);
+	revert_with_statusbar_flash (window, tab);
 }
 
 static GtkWidget *
@@ -1245,6 +1254,7 @@
 	GeditDocument  *doc;
 	GtkWidget      *dialog;
 	GtkWindowGroup *wg;
+	GeditTab       *tab;
 
 	gedit_debug (DEBUG_COMMANDS);
 
@@ -1252,20 +1262,30 @@
 	g_return_if_fail (doc != NULL);
 	g_return_if_fail (!gedit_document_is_untitled (doc));
 
-	dialog = revert_dialog (window, doc);
+	tab = gedit_window_get_active_tab (window);
 
-	wg = gedit_window_get_group (window);
+	/* are we displaying a notification that the file changed on disk ? */
+	if (gedit_tab_get_state (tab) == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION)
+	{	/* YES => directly revert, don't ask confirmation */
+		revert_with_statusbar_flash (window, tab);
+	}
+	else
+	{	/* NO => warn the user of loosing his changes */
+		dialog = revert_dialog (window, doc);
 
-	gtk_window_group_add_window (wg, GTK_WINDOW (dialog));
+		wg = gedit_window_get_group (window);
 
-	gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+		gtk_window_group_add_window (wg, GTK_WINDOW (dialog));
 
-	g_signal_connect (dialog,
-			  "response",
-			  G_CALLBACK (revert_dialog_response_cb),
-			  window);
+		gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
 
-	gtk_widget_show (dialog);
+		g_signal_connect (dialog,
+				  "response",
+				  G_CALLBACK (revert_dialog_response_cb),
+				  window);
+
+		gtk_widget_show (dialog);
+	}
 }
 
 /* Close tab */
