##// END OF EJS Templates
help: move option text display into a helper function
Matt Mackall -
r15023:157a2944 default
parent child Browse files
Show More
@@ -2589,9 +2589,66 b' def help_(ui, name=None, unknowncmd=Fals'
2589
2589
2590 Returns 0 if successful.
2590 Returns 0 if successful.
2591 """
2591 """
2592
2592 optlist = []
2593 optlist = []
2593 textwidth = min(ui.termwidth(), 80) - 2
2594 textwidth = min(ui.termwidth(), 80) - 2
2594
2595
2596 # list all option lists
2597 def opttext(optlist, width):
2598 out = []
2599 multioccur = False
2600 for title, options in optlist:
2601 out.append(("\n%s" % title, None))
2602 for option in options:
2603 if len(option) == 5:
2604 shortopt, longopt, default, desc, optlabel = option
2605 else:
2606 shortopt, longopt, default, desc = option
2607 optlabel = _("VALUE") # default label
2608
2609 if _("DEPRECATED") in desc and not ui.verbose:
2610 continue
2611 if isinstance(default, list):
2612 numqualifier = " %s [+]" % optlabel
2613 multioccur = True
2614 elif (default is not None) and not isinstance(default, bool):
2615 numqualifier = " %s" % optlabel
2616 else:
2617 numqualifier = ""
2618 out.append(("%2s%s" %
2619 (shortopt and "-%s" % shortopt,
2620 longopt and " --%s%s" %
2621 (longopt, numqualifier)),
2622 "%s%s" % (desc,
2623 default
2624 and _(" (default: %s)") % default
2625 or "")))
2626 if multioccur:
2627 msg = _("\n[+] marked option can be specified multiple times")
2628 if ui.verbose and name != 'shortlist':
2629 out.append((msg, None))
2630 else:
2631 out.insert(-1, (msg, None))
2632
2633 text = ""
2634 if out:
2635 colwidth = encoding.colwidth
2636 # normalize: (opt or message, desc or None, width of opt)
2637 entries = [desc and (opt, desc, colwidth(opt)) or (opt, None, 0)
2638 for opt, desc in out]
2639 hanging = max([e[2] for e in entries])
2640 for opt, desc, width in entries:
2641 if desc:
2642 initindent = ' %s%s ' % (opt, ' ' * (hanging - width))
2643 hangindent = ' ' * (hanging + 3)
2644 text += '%s\n' % (util.wrap(desc, width,
2645 initindent=initindent,
2646 hangindent=hangindent))
2647 else:
2648 text += "%s\n" % opt
2649
2650 return text
2651
2595 def addglobalopts(aliases):
2652 def addglobalopts(aliases):
2596 if ui.verbose:
2653 if ui.verbose:
2597 optlist.append((_("global options:"), globalopts))
2654 optlist.append((_("global options:"), globalopts))
@@ -2829,57 +2886,7 b' def help_(ui, name=None, unknowncmd=Fals'
2829 for t, desc in topics:
2886 for t, desc in topics:
2830 ui.write(" %-*s %s\n" % (topics_len, t, desc))
2887 ui.write(" %-*s %s\n" % (topics_len, t, desc))
2831
2888
2832 # list all option lists
2889 ui.write(opttext(optlist, textwidth))
2833 opt_output = []
2834 multioccur = False
2835 for title, options in optlist:
2836 opt_output.append(("\n%s" % title, None))
2837 for option in options:
2838 if len(option) == 5:
2839 shortopt, longopt, default, desc, optlabel = option
2840 else:
2841 shortopt, longopt, default, desc = option
2842 optlabel = _("VALUE") # default label
2843
2844 if _("DEPRECATED") in desc and not ui.verbose:
2845 continue
2846 if isinstance(default, list):
2847 numqualifier = " %s [+]" % optlabel
2848 multioccur = True
2849 elif (default is not None) and not isinstance(default, bool):
2850 numqualifier = " %s" % optlabel
2851 else:
2852 numqualifier = ""
2853 opt_output.append(("%2s%s" %
2854 (shortopt and "-%s" % shortopt,
2855 longopt and " --%s%s" %
2856 (longopt, numqualifier)),
2857 "%s%s" % (desc,
2858 default
2859 and _(" (default: %s)") % default
2860 or "")))
2861 if multioccur:
2862 msg = _("\n[+] marked option can be specified multiple times")
2863 if ui.verbose and name != 'shortlist':
2864 opt_output.append((msg, None))
2865 else:
2866 opt_output.insert(-1, (msg, None))
2867
2868 if opt_output:
2869 colwidth = encoding.colwidth
2870 # normalize: (opt or message, desc or None, width of opt)
2871 entries = [desc and (opt, desc, colwidth(opt)) or (opt, None, 0)
2872 for opt, desc in opt_output]
2873 hanging = max([e[2] for e in entries])
2874 for opt, desc, width in entries:
2875 if desc:
2876 initindent = ' %s%s ' % (opt, ' ' * (hanging - width))
2877 hangindent = ' ' * (hanging + 3)
2878 ui.write('%s\n' % (util.wrap(desc, textwidth,
2879 initindent=initindent,
2880 hangindent=hangindent)))
2881 else:
2882 ui.write("%s\n" % opt)
2883
2890
2884 @command('identify|id',
2891 @command('identify|id',
2885 [('r', 'rev', '',
2892 [('r', 'rev', '',
General Comments 0
You need to be logged in to leave comments. Login now