=== modified file 'exportables.module'
--- exportables.module	2009-11-28 18:29:48 +0000
+++ exportables.module	2010-01-27 12:55:01 +0000
@@ -924,7 +924,7 @@
 
   return array(
     $type_info['hook name'] => $output,
-    'enable'  => "  exportables_sync('$type', '$module');",
-    'disable' => "  exportables_unsync('$type', '$module');",
+    //'enable'  => "  exportables_sync('$type', '$module');",
+    //'disable' => "  exportables_unsync('$type', '$module');",
   );
 }

=== modified file 'modules/taxonomy.inc'
--- modules/taxonomy.inc	2009-11-28 18:29:48 +0000
+++ modules/taxonomy.inc	2010-01-26 16:48:34 +0000
@@ -19,9 +19,63 @@
     'storage type'      => 'array',
   );
 
+  $exportables['taxonomy_term'] = array(
+    'hook name'         => 'taxonomy_default_terms',
+    'load function'     => '_exportables_taxonomy_get_term',
+    'save function'     => '_exportables_taxonomy_save_term',
+    'delete function'   => 'taxonomy_del_term',
+    'load all function' => '_exportables_taxonomy_get_terms',
+    'id property'       => 'tid',
+    'title property'    => 'name',
+    'storage type'      => 'array',
+  );
+
   return $exportables;
 }
 
+function _exportables_taxonomy_vocabulary_load($vid) {
+  $vocabulary = taxonomy_vocabulary_load($vid);
+  exportables_machine_get('taxonomy_vocabulary', $vocabulary);
+  return $vocabulary;
+}
+
+function _exportables_taxonomy_fix_term($term) {
+  if (isset($term->vid) && !isset($term->vocabulary)) {
+    $term->vocabulary = _exportables_taxonomy_vocabulary_load($term->vid)->machine;
+  }
+
+  return $term;
+}
+
+function _exportables_taxonomy_unfix_term(&$term) {
+  if (isset($term['vocabulary'])) {
+    $term['vid'] = exportables_machine_load_id('taxonomy_vocabulary', $term['vocabulary']);
+    unset($term['vocabulary']);
+  }
+
+  return $term;
+}
+
+function _exportables_taxonomy_get_terms() {
+  $result = db_query('SELECT * FROM {term_data}');
+  while ($term = db_fetch_object($result)) {
+    $terms[] = _exportables_taxonomy_fix_term($term);
+  }
+  return $terms;
+}
+
+function _exportables_taxonomy_get_term($tid) {
+  $term = taxonomy_get_term($tid);
+  $term = _exportables_taxonomy_fix_term($term);
+  return $term;
+}
+
+function _exportables_taxonomy_save_term(&$term) {
+  _exportables_taxonomy_unfix_term($term);
+  unset($term['tid']);
+  return taxonomy_save_term($term);
+}
+
 /*
 function taxonomy_taxonomy_default_vocabularies() {
   $vocabularies = array();
@@ -54,9 +108,17 @@
       'features_source' => TRUE,
       'file' => drupal_get_path('module', 'exportables') .'/modules/taxonomy.inc',
     ),
+    'taxonomy_term' => array(
+      'default_hook' => 'taxonomy_default_terms',
+      'default_file' => FEATURES_DEFAULTS_INCLUDED,
+      'features_source' => TRUE,
+      'file' => drupal_get_path('module', 'exportables') .'/modules/taxonomy.inc',
+    ),
   );
 }
 
+// ---------- VOCABULARIES FEATURE INTEGRATION ----------
+
 /**
  * Implementation of hook_features_export().
  */
@@ -71,7 +133,8 @@
   // then loop through the data again so we can add taxonomy-specific
   // dependency components to the pipe
   foreach ($data as $type) {
-    $vocabulary = taxonomy_vocabulary_load(exportables_machine_load_id('taxonomy_vocabulary', $type));
+    $vid = exportables_machine_load_id('taxonomy_vocabulary', $type);
+    $vocabulary = taxonomy_vocabulary_load($vid);
     if ($vocabulary) {
       // if this vocabulary is used by a specific node type, add a pipe for it
       foreach ($vocabulary->nodes as $node_type => $node_type_id) {
@@ -96,3 +159,41 @@
 function taxonomy_vocabulary_features_export_render($module, $data) {
   return _exportables_features_export_render('taxonomy_vocabulary', $module, $data);
 }
+
+// ---------- TERMS FEATURE INTEGRATION ----------
+
+/**
+ * Implementation of hook_features_export().
+ */
+function taxonomy_term_features_export($data, &$export, $module_name = '') {
+  // first do the standard exportables export
+  $pipe = _exportables_features_export('taxonomy_term', $data, $export, $module_name);
+
+  // then loop through the data again so we can add taxonomy-specific
+  // dependency components to the pipe
+  foreach ($data as $type) {
+    $term = taxonomy_get_term(exportables_machine_load_id('taxonomy_term', $type));
+    if ($term) {
+      $vocabulary = taxonomy_vocabulary_load($term->vid);
+      $pipe['taxonomy_vocabulary'][] = exportables_machine_get('taxonomy_vocabulary', $vocabulary);
+    }
+  }
+
+  return $pipe;
+}
+
+/**
+ * Implementation of hook_features_export_options().
+ */
+function taxonomy_term_features_export_options() {
+  return _exportables_features_export_options('taxonomy_term');
+}
+
+/**
+ * Implementation of hook_features_export_render().
+ */
+function taxonomy_term_features_export_render($module, $data) {
+  return _exportables_features_export_render('taxonomy_term', $module, $data);
+}
+
+

