Index: modules/field/modules/text/text.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.module,v
retrieving revision 1.51
diff -u -p -r1.51 text.module
--- modules/field/modules/text/text.module	26 Mar 2010 17:14:45 -0000	1.51
+++ modules/field/modules/text/text.module	27 Mar 2010 13:53:39 -0000
@@ -590,3 +590,10 @@ function text_field_widget_error($elemen
   form_error($error_element, $error['message']);
 }
 
+/**
+ * Implements hook_filter_format_update().
+ */
+function text_field_format_update() {
+  // Clear the entire field cache to reflect changes to text formats.
+  cache_clear_all('*', 'cache_field', TRUE);
+}
Index: modules/filter/filter.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.admin.inc,v
retrieving revision 1.58
diff -u -p -r1.58 filter.admin.inc
--- modules/filter/filter.admin.inc	6 Mar 2010 19:40:21 -0000	1.58
+++ modules/filter/filter.admin.inc	27 Mar 2010 13:53:39 -0000
@@ -328,8 +328,13 @@ function filter_admin_delete($form, &$fo
  */
 function filter_admin_delete_submit($form, &$form_state) {
   $format = $form['#format'];
-  filter_format_delete($format);
-  drupal_set_message(t('Deleted text format %format.', array('%format' => $format->name)));
+  $status = filter_format_delete($format);
+  if ($status) {
+    drupal_set_message(t('Deleted text format %format.', array('%format' => $format->name)));
+  }
+  else {
+    drupal_set_message(t('Unable to delete text format %format, the format is currently in use.', array('%format', => $format->name)));
+  }
 
   $form_state['redirect'] = 'admin/config/content/formats';
 }
Index: modules/filter/filter.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v
retrieving revision 1.324
diff -u -p -r1.324 filter.module
--- modules/filter/filter.module	26 Mar 2010 17:14:45 -0000	1.324
+++ modules/filter/filter.module	27 Mar 2010 13:53:39 -0000
@@ -262,6 +262,13 @@ function filter_format_save(&$format) {
  *   The text format object to be deleted.
  */
 function filter_format_delete($format) {
+  $return = TRUE;
+  foreach (module_invoke_all('filter_format_usage') as $module => $usage) {
+    if ($usage) {
+      $return = FALSE;
+      continue;
+    }
+  }
   db_delete('filter_format')
     ->condition('format', $format->format)
     ->execute();
@@ -275,6 +282,7 @@ function filter_format_delete($format) {
 
   filter_formats_reset();
   cache_clear_all($format->format . ':', 'cache_filter', TRUE);
+  return $return;
 }
 
 /**
