Index: modules/taxonomy/taxonomy.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.admin.inc,v
retrieving revision 1.81
diff -u -p -r1.81 taxonomy.admin.inc
--- modules/taxonomy/taxonomy.admin.inc	3 Nov 2009 05:27:18 -0000	1.81
+++ modules/taxonomy/taxonomy.admin.inc	6 Nov 2009 16:36:39 -0000
@@ -614,6 +614,7 @@ function taxonomy_form_term($form, &$for
   $edit += array(
     'name' => '',
     'description' => '',
+    'format' => filter_default_format(),
     'vocabulary_machine_name' => $vocabulary->machine_name,
     'tid' => NULL,
     'weight' => 0,
@@ -653,7 +654,9 @@ function taxonomy_form_term($form, &$for
     '#type' => 'textarea',
     '#title' => t('Description'),
     '#default_value' => $edit['description'],
-    '#description' => t('A description of the term. To be displayed on taxonomy/term pages and RSS feeds.'));
+    '#description' => t('A description of the term. To be displayed on taxonomy/term pages and RSS feeds.'),
+    '#text_format' => $edit['format'],
+  );
 
   $form['vocabulary_machine_name'] = array(
     '#type' => 'textfield',
@@ -768,6 +771,10 @@ function taxonomy_form_term_submit($form
     return;
   }
 
+  // Massage #text_format.
+  $form_state['values']['format'] = $form_state['values']['description_format'];
+  unset($form_state['values']['description_format']);
+
   $term = taxonomy_form_term_submit_builder($form, $form_state);
 
   $status = taxonomy_term_save($term);
Index: modules/taxonomy/taxonomy.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.install,v
retrieving revision 1.27
diff -u -p -r1.27 taxonomy.install
--- modules/taxonomy/taxonomy.install	16 Oct 2009 19:06:24 -0000	1.27
+++ modules/taxonomy/taxonomy.install	6 Nov 2009 16:34:21 -0000
@@ -50,6 +50,13 @@ function taxonomy_schema() {
         'description' => 'A description of the term.',
         'translatable' => TRUE,
       ),
+      'format' => array(
+        'type' => 'int',
+        'size' => 'small',
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'The {filter_format}.format of the description.',
+      ),
       'weight' => array(
         'type' => 'int',
         'not null' => TRUE,
@@ -407,3 +414,17 @@ function taxonomy_update_7005(&$sandbox)
    db_drop_table('taxonomy_term_node');
   }
 }
+
+/**
+ * Add vocabulary machine_name column.
+ */
+function taxonomy_update_7006() {
+  db_add_field('taxonomy_term_data', 'format', array(
+    'type' => 'int',
+    'size' => 'small',
+    'not null' => TRUE,
+    'default' => 0,
+    'description' => 'The {filter_format}.format of the description.',
+  ));
+}
+
Index: modules/taxonomy/taxonomy.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.pages.inc,v
retrieving revision 1.43
diff -u -p -r1.43 taxonomy.pages.inc
--- modules/taxonomy/taxonomy.pages.inc	24 Oct 2009 05:13:44 -0000	1.43
+++ modules/taxonomy/taxonomy.pages.inc	6 Nov 2009 17:14:48 -0000
@@ -33,14 +33,12 @@ function taxonomy_term_page($term) {
   field_attach_prepare_view('taxonomy_term', array($term->tid => $term), 'full');
   $build = array();
   $build += field_attach_view('taxonomy_term', $term);
-  if (!empty($term->description)) {
-    $build['term_description'] = array(
-      '#markup' => filter_xss_admin($term->description),
-      '#weight' => -1,
-      '#prefix' => '<div class="taxonomy-term-description">',
-      '#suffix' => '</div>',
-    );
-  }
+  $build['term_description'] = array(
+    '#markup' => check_markup($term->description, $term->format, '', TRUE),
+    '#weight' => -1,
+    '#prefix' => '<div class="taxonomy-term-description">',
+    '#suffix' => '</div>',
+  );
   if ($nids = taxonomy_select_nodes($term->tid, TRUE, variable_get('default_nodes_main', 10))) {
     $nodes = node_load_multiple($nids);
     $build += node_build_multiple($nodes);
@@ -69,8 +67,8 @@ function taxonomy_term_feed($term) {
   $channel['link'] = url('taxonomy/term/' . $term->tid, array('absolute' => TRUE));
   $channel['title'] = variable_get('site_name', 'Drupal') . ' - ' . $term->name;
   // Only display the description if we have a single term, to avoid clutter and confusion.
-  // HTML will be removed from feed description, so no need to filter here.
-  $channel['description'] = $term->description;
+  // HTML will be removed from feed description.
+  $channel['description'] = check_markup($term->description, $term->format, '', TRUE);
   $nids = taxonomy_select_nodes($term->tid, FALSE, variable_get('feed_default_items', 10));
 
   node_feed($nids, $channel);
Index: modules/taxonomy/taxonomy.tokens.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.tokens.inc,v
retrieving revision 1.3
diff -u -p -r1.3 taxonomy.tokens.inc
--- modules/taxonomy/taxonomy.tokens.inc	24 Oct 2009 05:13:44 -0000	1.3
+++ modules/taxonomy/taxonomy.tokens.inc	6 Nov 2009 17:18:19 -0000
@@ -115,7 +115,7 @@ function taxonomy_tokens($type, $tokens,
           break;
 
         case 'description':
-          $replacements[$original] = $sanitize ? filter_xss($term->description) : $term->description;
+          $replacements[$original] = $sanitize ? check_markup($term->description, $term->format, '', TRUE) : $term->description;
           break;
 
         case 'url':
