2719 Given a topic, extension, or command name, print help for that |
2718 Given a topic, extension, or command name, print help for that |
2720 topic. |
2719 topic. |
2721 |
2720 |
2722 Returns 0 if successful. |
2721 Returns 0 if successful. |
2723 """ |
2722 """ |
2724 textwidth = ui.configint('ui', 'textwidth', 78) |
|
2725 termwidth = ui.termwidth() - 2 |
|
2726 if textwidth <= 0 or termwidth < textwidth: |
|
2727 textwidth = termwidth |
|
2728 |
2723 |
2729 keep = opts.get('system') or [] |
2724 keep = opts.get('system') or [] |
2730 if len(keep) == 0: |
2725 if len(keep) == 0: |
2731 if pycompat.sysplatform.startswith('win'): |
2726 if pycompat.sysplatform.startswith('win'): |
2732 keep.append('windows') |
2727 keep.append('windows') |
2738 keep.append('unix') |
2733 keep.append('unix') |
2739 keep.append(pycompat.sysplatform.lower()) |
2734 keep.append(pycompat.sysplatform.lower()) |
2740 if ui.verbose: |
2735 if ui.verbose: |
2741 keep.append('verbose') |
2736 keep.append('verbose') |
2742 |
2737 |
2743 fullname = name |
2738 formatted = help.formattedhelp(ui, name, keep=keep, **opts) |
2744 section = None |
|
2745 subtopic = None |
|
2746 if name and '.' in name: |
|
2747 name, remaining = name.split('.', 1) |
|
2748 remaining = encoding.lower(remaining) |
|
2749 if '.' in remaining: |
|
2750 subtopic, section = remaining.split('.', 1) |
|
2751 else: |
|
2752 if name in help.subtopics: |
|
2753 subtopic = remaining |
|
2754 else: |
|
2755 section = remaining |
|
2756 |
|
2757 text = help.help_(ui, name, subtopic=subtopic, **opts) |
|
2758 |
|
2759 formatted, pruned = minirst.format(text, textwidth, keep=keep, |
|
2760 section=section) |
|
2761 |
|
2762 # We could have been given a weird ".foo" section without a name |
|
2763 # to look for, or we could have simply failed to found "foo.bar" |
|
2764 # because bar isn't a section of foo |
|
2765 if section and not (formatted and name): |
|
2766 raise error.Abort(_("help section not found: %s") % fullname) |
|
2767 |
|
2768 if 'verbose' in pruned: |
|
2769 keep.append('omitted') |
|
2770 else: |
|
2771 keep.append('notomitted') |
|
2772 formatted, pruned = minirst.format(text, textwidth, keep=keep, |
|
2773 section=section) |
|
2774 ui.pager('help') |
2739 ui.pager('help') |
2775 ui.write(formatted) |
2740 ui.write(formatted) |
2776 |
2741 |
2777 |
2742 |
2778 @command('identify|id', |
2743 @command('identify|id', |