code: function getHelpManData(commandData, context) {
    // Filter out hidden parameters
    commandData.command.params = commandData.command.params.filter(function(param) {
      return !param.hidden;
    });
  
    addParamGroups(commandData.command);
    commandData.subcommands.forEach(addParamGroups);
  
    return {
      l10n: l10n.propertyLookup,
      onclick: context.update,
      ondblclick: context.updateExec,
      describe: function(item) {
        return item.manual || item.description;
      },
      getTypeDescription: function(param) {
        var input = '';
        if (param.defaultValue === undefined) {
          input = l10n.lookup('helpManRequired');
        }
        else if (param.defaultValue === null) {
          input = l10n.lookup('helpManOptional');
        }
        else {
          // We need defaultText to work the text version of defaultValue
          input = l10n.lookupFormat('helpManOptional');
          /*
          var val = param.type.stringify(param.defaultValue);
          input = Promise.resolve(val).then(function(defaultValue) {
            return l10n.lookupFormat('helpManDefault', [ defaultValue ]);
          }.bind(this));
          */
        }
  
        return Promise.resolve(input).then(function(defaultDescr) {
          return '(' + (param.type.name || param.type) + ', ' + defaultDescr + ')';
        }.bind(this));
      },
      getSynopsis: function(param) {
        var name = param.name + (param.short ? '|-' + param.short : '');
        if (param.option == null) {
          return param.defaultValue !== undefined ?
              '[' + name + ']' :
              '<' + name + '>';
        }
        else {
          return param.type === 'boolean' || param.type.name === 'boolean' ?
              '[--' + name + ']' :
              '[--' + name + ' ...]';
        }
      },
      command: commandData.command,
      subcommands: commandData.subcommands
    };
  }
docs: Get a data block for the help_man.html/help_man.txt templates