diff -rup ../suggestedterms/suggestedterms.module ./suggestedterms.module
--- ../suggestedterms/suggestedterms.module	2008-10-10 03:58:17.000000000 +1000
+++ ./suggestedterms.module	2009-04-17 15:35:30.000000000 +1000
@@ -9,6 +9,9 @@ define('SUGGESTEDTERMS_SORT_NAME', 1);
 define('SUGGESTEDTERMS_SORT_POPULAR', 0);
 define('SUGGESTEDTERMS_SORT_RECENT', 2);
 
+define('SUGGESTEDTERMS_DISPLAY_ALL', 1);
+define('SUGGESTEDTERMS_DISPLAY_USED', 0);
+
 /**
  * Implementation of hook_help().
  */
@@ -62,21 +65,23 @@ function theme_suggestedterm($name) {
 * @return 
 *   A string containing the clickable spans for the suggestedterms module.
 */
-function _suggestedterms_build_suggestions($vid, $sort_order) {
+function _suggestedterms_build_suggestions($vid, $sort_order, $display_what) {
+  // use left join to display all entries, inner join to diaplay only used ones
+  $query_type = ($display_what == SUGGESTEDTERMS_DISPLAY_ALL) ? " LEFT " : " INNER ";
   // get total terms set by admin
   $total_terms = variable_get('suggestedterms_maximum_displayed', 5);
   // get sort order set by admin
   switch ($sort_order) {
     case SUGGESTEDTERMS_SORT_POPULAR:
-      $query = "SELECT t.name AS name, COUNT(t.name) AS total FROM {term_data} t INNER JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY total desc";
+      $query = "SELECT t.name AS name, COUNT(t.name) AS total FROM {term_data} t" . $query_type . "JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY total desc";
       break;
 
     case SUGGESTEDTERMS_SORT_RECENT:
-      $query = "SELECT t.name AS name FROM {term_data} t INNER JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY t.tid desc";
+      $query = "SELECT t.name AS name FROM {term_data} t" . $query_type . "JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY t.tid desc";
       break;
 
     default:
-      $query = "SELECT t.name AS name FROM {term_data} t INNER JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY t.name";
+      $query = "SELECT t.name AS name FROM {term_data} t" . $query_type . "JOIN {term_node} n ON (t.tid = n.tid) WHERE t.vid = %d GROUP BY t.name ORDER BY t.name";
       break;
   }
   $query_result = ($total_terms > 0) ? db_query_range($query, $vid, 0, $total_terms) : db_query($query, $vid);
@@ -94,6 +99,7 @@ function suggestedterms_form_alter(&$for
   if ((isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) && isset($form['taxonomy']['tags'])) {
     $path = drupal_get_path('module', 'suggestedterms');
     drupal_add_js($path . '/suggestedterms.js');
+    $display_what = variable_get('suggestedterms_display_all', SUGGESTEDTERMS_DISPLAY_ALL);
     // If multiple vocabularies, loop over each.
     foreach ($form['taxonomy']['tags'] as $vid => $thisindex) {
       // If free-tagging taxonomy is true, add new links for each free-tag textfield.
@@ -112,7 +118,7 @@ function suggestedterms_form_alter(&$for
           break;
       }
       // Build the suggested terms and set in description tag.
-      $form['taxonomy']['tags'][$vid]['#description'] .= "<br />\n". t($tag_description) . ': ' . _suggestedterms_build_suggestions($vid, $sort_order);
+      $form['taxonomy']['tags'][$vid]['#description'] .= "<br />\n". t($tag_description) . ': ' . _suggestedterms_build_suggestions($vid, $sort_order, $display_what);
     }
   }
 }
@@ -141,6 +147,16 @@ function suggestedterms_admin() {
       SUGGESTEDTERMS_SORT_RECENT => t('Most recently added'),
      ),
   );
+  $form['suggestedterms_display_all'] = array(
+    '#type' => 'radios',
+    '#title' => t('Which terms to display'),
+    '#default_value' => variable_get('suggestedterms_display_all', SUGGESTEDTERMS_DISPLAY_ALL),
+    '#description' => t("Whether to display all defined terms or only the ones previously used."),
+    '#options' => array(
+      SUGGESTEDTERMS_DISPLAY_USED => t('Previously-used terms'),
+      SUGGESTEDTERMS_DISPLAY_ALL => t('All terms'),
+     ),
+  );
 
   return system_settings_form($form);
 }
