private boolean save_processor_prefs(Preferences prefs)
   {
      //
      // markdown processor preferences
      //

      // First, remove any old processors from the preferences.
      try
      {
         Preferences md_prefs = prefs.node(MD_PROCESSORS_NODE);
         md_prefs.removeNode();
         md_prefs.flush();
      }
      catch(BackingStoreException ex)
      {
         Joculus.showError(UIStrings.ERROR_WRITE_SETTINGS_FAILED + "\n" + ex.getMessage());
         return false;
      }

      // add the currently-defined processors
      prefs = prefs.node(MD_PROCESSORS_NODE);
      for(ExternalProcessor ep : md_processors)
      {
         prefs = prefs.node(ep.name);
         prefs.put(this.MD_PROCESSOR_PATH, (ep.path == null) ? "" : ep.path);
         prefs.put(this.MD_PROCESSOR_OPTIONS, (ep.options == null) ? "" : ep.options);
         prefs = prefs.parent();
      }
      
      // move back out to the prefs node that was passed in.
      prefs = prefs.parent();

      // set the current processor.
      prefs.put(CUR_MD_PROCESSOR_NAME, cur_processor.name);
      
      return true;
   }