--- a/mercurial/commands.py Wed Sep 21 13:00:47 2011 -0500
+++ b/mercurial/commands.py Wed Sep 21 13:00:48 2011 -0500
@@ -2709,61 +2709,52 @@
textwidth = min(ui.termwidth(), 80) - 2
+ def optrst(options):
+ data = []
+ multioccur = False
+ for option in options:
+ if len(option) == 5:
+ shortopt, longopt, default, desc, optlabel = option
+ else:
+ shortopt, longopt, default, desc = option
+ optlabel = _("VALUE") # default label
+
+ if _("DEPRECATED") in desc and not ui.verbose:
+ continue
+
+ so = ''
+ if shortopt:
+ so = '-' + shortopt
+ lo = '--' + longopt
+ if default:
+ desc += _(" (default: %s)") % default
+
+ if isinstance(default, list):
+ lo += " %s [+]" % optlabel
+ multioccur = True
+ elif (default is not None) and not isinstance(default, bool):
+ lo += " %s" % optlabel
+
+ data.append((so, lo, desc))
+
+ rst = minirst.maketable(data, 1)
+ if multioccur:
+ rst += _("\n[+] marked option can be specified multiple times")
+
+ return rst
+
# list all option lists
def opttext(optlist, width):
- out = []
- multioccur = False
+ rst = ''
+ if not optlist:
+ return ''
+
for title, options in optlist:
- out.append(("\n%s" % title, None))
- for option in options:
- if len(option) == 5:
- shortopt, longopt, default, desc, optlabel = option
- else:
- shortopt, longopt, default, desc = option
- optlabel = _("VALUE") # default label
-
- if _("DEPRECATED") in desc and not ui.verbose:
- continue
- if isinstance(default, list):
- numqualifier = " %s [+]" % optlabel
- multioccur = True
- elif (default is not None) and not isinstance(default, bool):
- numqualifier = " %s" % optlabel
- else:
- numqualifier = ""
- out.append(("%2s%s" %
- (shortopt and "-%s" % shortopt,
- longopt and " --%s%s" %
- (longopt, numqualifier)),
- "%s%s" % (desc,
- default
- and _(" (default: %s)") % default
- or "")))
- if multioccur:
- msg = _("\n[+] marked option can be specified multiple times")
- if ui.verbose and name != 'shortlist':
- out.append((msg, None))
- else:
- out.insert(-1, (msg, None))
-
- text = ""
- if out:
- colwidth = encoding.colwidth
- # normalize: (opt or message, desc or None, width of opt)
- entries = [desc and (opt, desc, colwidth(opt)) or (opt, None, 0)
- for opt, desc in out]
- hanging = max([e[2] for e in entries])
- for opt, desc, width in entries:
- if desc:
- initindent = ' %s%s ' % (opt, ' ' * (hanging - width))
- hangindent = ' ' * (hanging + 3)
- text += '%s\n' % (util.wrap(desc, width,
- initindent=initindent,
- hangindent=hangindent))
- else:
- text += "%s\n" % opt
-
- return text
+ rst += '\n%s\n\n' % title
+ rst += optrst(options)
+ rst += '\n'
+
+ return '\n' + minirst.format(rst, width)
def addglobalopts(optlist, aliases):
if ui.quiet: