Show More
@@ -3834,14 +3834,23 b' def help_(ui, name=None, **opts):' | |||||
3834 | keep.append('unix') |
|
3834 | keep.append('unix') | |
3835 | keep.append(sys.platform.lower()) |
|
3835 | keep.append(sys.platform.lower()) | |
3836 |
|
3836 | |||
|
3837 | section = None | |||
|
3838 | if name and '.' in name: | |||
|
3839 | name, section = name.split('.') | |||
|
3840 | ||||
3837 | text = help.help_(ui, name, **opts) |
|
3841 | text = help.help_(ui, name, **opts) | |
3838 |
|
3842 | |||
3839 |
formatted, pruned = minirst.format(text, textwidth, keep=keep |
|
3843 | formatted, pruned = minirst.format(text, textwidth, keep=keep, | |
|
3844 | section=section) | |||
|
3845 | if section and not formatted: | |||
|
3846 | raise util.Abort(_("help section not found")) | |||
|
3847 | ||||
3840 | if 'verbose' in pruned: |
|
3848 | if 'verbose' in pruned: | |
3841 | keep.append('omitted') |
|
3849 | keep.append('omitted') | |
3842 | else: |
|
3850 | else: | |
3843 | keep.append('notomitted') |
|
3851 | keep.append('notomitted') | |
3844 |
formatted, pruned = minirst.format(text, textwidth, keep=keep |
|
3852 | formatted, pruned = minirst.format(text, textwidth, keep=keep, | |
|
3853 | section=section) | |||
3845 | ui.write(formatted) |
|
3854 | ui.write(formatted) | |
3846 |
|
3855 | |||
3847 |
|
3856 |
@@ -648,9 +648,15 b' def formatblocks(blocks, width):' | |||||
648 | text = ''.join(formatblock(b, width) for b in blocks) |
|
648 | text = ''.join(formatblock(b, width) for b in blocks) | |
649 | return text |
|
649 | return text | |
650 |
|
650 | |||
651 | def format(text, width=80, indent=0, keep=None, style='plain'): |
|
651 | def format(text, width=80, indent=0, keep=None, style='plain', section=None): | |
652 | """Parse and format the text according to width.""" |
|
652 | """Parse and format the text according to width.""" | |
653 | blocks, pruned = parse(text, indent, keep or []) |
|
653 | blocks, pruned = parse(text, indent, keep or []) | |
|
654 | if section: | |||
|
655 | sections = getsections(blocks) | |||
|
656 | blocks = [] | |||
|
657 | for name, nest, b in sections: | |||
|
658 | if name == section: | |||
|
659 | blocks = b | |||
654 | if style == 'html': |
|
660 | if style == 'html': | |
655 | text = formathtml(blocks) |
|
661 | text = formathtml(blocks) | |
656 | else: |
|
662 | else: | |
@@ -665,6 +671,14 b' def getsections(blocks):' | |||||
665 | nest = "" |
|
671 | nest = "" | |
666 | level = 0 |
|
672 | level = 0 | |
667 | secs = [] |
|
673 | secs = [] | |
|
674 | ||||
|
675 | def getname(b): | |||
|
676 | x = b['lines'][0] | |||
|
677 | x = x.lower().strip('"') | |||
|
678 | if '(' in x: | |||
|
679 | x = x.split('(')[0] | |||
|
680 | return x | |||
|
681 | ||||
668 | for b in blocks: |
|
682 | for b in blocks: | |
669 | if b['type'] == 'section': |
|
683 | if b['type'] == 'section': | |
670 | i = b['underline'] |
|
684 | i = b['underline'] | |
@@ -672,7 +686,14 b' def getsections(blocks):' | |||||
672 | nest += i |
|
686 | nest += i | |
673 | level = nest.index(i) + 1 |
|
687 | level = nest.index(i) + 1 | |
674 | nest = nest[:level] |
|
688 | nest = nest[:level] | |
675 |
secs.append((b |
|
689 | secs.append((getname(b), level, [b])) | |
|
690 | if b['type'] == 'definition': | |||
|
691 | i = ' ' | |||
|
692 | if i not in nest: | |||
|
693 | nest += i | |||
|
694 | level = nest.index(i) + 1 | |||
|
695 | nest = nest[:level] | |||
|
696 | secs.append((getname(b), level, [b])) | |||
676 | else: |
|
697 | else: | |
677 | if not secs: |
|
698 | if not secs: | |
678 | # add an initial empty section |
|
699 | # add an initial empty section |
@@ -1046,6 +1046,25 b' Test omit indicating for help' | |||||
1046 |
|
1046 | |||
1047 | This paragraph is never omitted, too (for topic) |
|
1047 | This paragraph is never omitted, too (for topic) | |
1048 |
|
1048 | |||
|
1049 | Test section lookup | |||
|
1050 | ||||
|
1051 | $ hg help revset.merge | |||
|
1052 | "merge()" | |||
|
1053 | Changeset is a merge changeset. | |||
|
1054 | ||||
|
1055 | $ hg help glossary.dag | |||
|
1056 | DAG | |||
|
1057 | The repository of changesets of a distributed version control system | |||
|
1058 | (DVCS) can be described as a directed acyclic graph (DAG), consisting | |||
|
1059 | of nodes and edges, where nodes correspond to changesets and edges | |||
|
1060 | imply a parent -> child relation. This graph can be visualized by | |||
|
1061 | graphical tools such as "hg log --graph". In Mercurial, the DAG is | |||
|
1062 | limited by the requirement for children to have at most two parents. | |||
|
1063 | ||||
|
1064 | $ hg help glossary.mcguffin | |||
|
1065 | abort: help section not found | |||
|
1066 | [255] | |||
|
1067 | ||||
1049 | Test usage of section marks in help documents |
|
1068 | Test usage of section marks in help documents | |
1050 |
|
1069 | |||
1051 | $ cd "$TESTDIR"/../doc |
|
1070 | $ cd "$TESTDIR"/../doc |
General Comments 0
You need to be logged in to leave comments.
Login now