annotate mercurial/help.py @ 43561:45d123d84011

index: use `index.get_rev` in `revset._mapbynodefunc` We slightly update the code in the process. Differential Revision: https://phab.mercurial-scm.org/D7343
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 09 Nov 2019 13:23:53 +0100
parents 9f70512ae2cf
children 2e017696181f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3795
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
1 # help.py - help data for mercurial
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
2 #
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
3 # Copyright 2006 Matt Mackall <mpm@selenic.com>
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
4 #
8225
46293a0c7e9f updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents: 8159
diff changeset
5 # This software may be used and distributed according to the terms of the
10263
25e572394f5c Update license to GPLv2+
Matt Mackall <mpm@selenic.com>
parents: 9785
diff changeset
6 # GNU General Public License version 2 or any later version.
3795
17a11f4ff260 Add basic support for help topics and a dates topic
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
7
27479
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
8 from __future__ import absolute_import
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
9
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
10 import itertools
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
11 import os
40421
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
12 import re
27479
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
13 import textwrap
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
14
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
15 from .i18n import (
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
16 _,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
17 gettext,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
18 )
43089
c59eb1560c44 py3: manually import getattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43077
diff changeset
19 from .pycompat import getattr
27479
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
20 from . import (
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
21 cmdutil,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
22 encoding,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
23 error,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
24 extensions,
37091
979c8ce9022d fancyopts: fix rendering of customopt defaults in help text
Daniel Ploch <dploch@google.com>
parents: 36922
diff changeset
25 fancyopts,
27479
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
26 filemerge,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
27 fileset,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
28 minirst,
32143
964c6be36590 py3: make sure opts are passed and used correctly in help command
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32076
diff changeset
29 pycompat,
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
30 registrar,
27479
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
31 revset,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
32 templatefilters,
36922
521f6c7e1756 templater: split template functions to new module
Yuya Nishihara <yuya@tcha.org>
parents: 36451
diff changeset
33 templatefuncs,
27479
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
34 templatekw,
40421
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
35 ui as uimod,
27479
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
36 util,
3ce1d50daa99 help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27400
diff changeset
37 )
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
38 from .hgweb import webcommands
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
39 from .utils import compression
8863
7b19c3c0172b help: adding a new help topic about extensions
Cédric Duval <cedricduval@free.fr>
parents: 8668
diff changeset
40
32291
bd872f64a8ba cleanup: use set literals
Martin von Zweigbergk <martinvonz@google.com>
parents: 32143
diff changeset
41 _exclkeywords = {
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
42 b"(ADVANCED)",
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
43 b"(DEPRECATED)",
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
44 b"(EXPERIMENTAL)",
31080
6918c9215201 help: hide command line options marked as "advanced"
Jun Wu <quark@fb.com>
parents: 31061
diff changeset
45 # i18n: "(ADVANCED)" is a keyword, must be translated consistently
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
46 _(b"(ADVANCED)"),
26370
44cc9f63a2f1 help: include parens in DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents: 26369
diff changeset
47 # i18n: "(DEPRECATED)" is a keyword, must be translated consistently
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
48 _(b"(DEPRECATED)"),
26370
44cc9f63a2f1 help: include parens in DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents: 26369
diff changeset
49 # i18n: "(EXPERIMENTAL)" is a keyword, must be translated consistently
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
50 _(b"(EXPERIMENTAL)"),
32291
bd872f64a8ba cleanup: use set literals
Martin von Zweigbergk <martinvonz@google.com>
parents: 32143
diff changeset
51 }
26369
4799b5c4aaf4 help: define list of keywords that should be excluded from non-verbose output
Yuya Nishihara <yuya@tcha.org>
parents: 26238
diff changeset
52
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
53 # The order in which command categories will be displayed.
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
54 # Extensions with custom categories should insert them into this list
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
55 # after/before the appropriate item, rather than replacing the list or
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
56 # assuming absolute positions.
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
57 CATEGORY_ORDER = [
40293
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
58 registrar.command.CATEGORY_REPO_CREATION,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
59 registrar.command.CATEGORY_REMOTE_REPO_MANAGEMENT,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
60 registrar.command.CATEGORY_COMMITTING,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
61 registrar.command.CATEGORY_CHANGE_MANAGEMENT,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
62 registrar.command.CATEGORY_CHANGE_ORGANIZATION,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
63 registrar.command.CATEGORY_FILE_CONTENTS,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
64 registrar.command.CATEGORY_CHANGE_NAVIGATION,
40293
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
65 registrar.command.CATEGORY_WORKING_DIRECTORY,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
66 registrar.command.CATEGORY_IMPORT_EXPORT,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
67 registrar.command.CATEGORY_MAINTENANCE,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
68 registrar.command.CATEGORY_HELP,
c303d65d2e34 help: assigning categories to existing commands
rdamazio@google.com
parents: 40292
diff changeset
69 registrar.command.CATEGORY_MISC,
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
70 registrar.command.CATEGORY_NONE,
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
71 ]
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
72
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
73 # Human-readable category names. These are translated.
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
74 # Extensions with custom categories should add their names here.
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
75 CATEGORY_NAMES = {
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
76 registrar.command.CATEGORY_REPO_CREATION: b'Repository creation',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
77 registrar.command.CATEGORY_REMOTE_REPO_MANAGEMENT: b'Remote repository management',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
78 registrar.command.CATEGORY_COMMITTING: b'Change creation',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
79 registrar.command.CATEGORY_CHANGE_NAVIGATION: b'Change navigation',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
80 registrar.command.CATEGORY_CHANGE_MANAGEMENT: b'Change manipulation',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
81 registrar.command.CATEGORY_CHANGE_ORGANIZATION: b'Change organization',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
82 registrar.command.CATEGORY_WORKING_DIRECTORY: b'Working directory management',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
83 registrar.command.CATEGORY_FILE_CONTENTS: b'File content management',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
84 registrar.command.CATEGORY_IMPORT_EXPORT: b'Change import/export',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
85 registrar.command.CATEGORY_MAINTENANCE: b'Repository maintenance',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
86 registrar.command.CATEGORY_HELP: b'Help',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
87 registrar.command.CATEGORY_MISC: b'Miscellaneous commands',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
88 registrar.command.CATEGORY_NONE: b'Uncategorized commands',
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
89 }
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
90
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
91 # Topic categories.
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
92 TOPIC_CATEGORY_IDS = b'ids'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
93 TOPIC_CATEGORY_OUTPUT = b'output'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
94 TOPIC_CATEGORY_CONFIG = b'config'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
95 TOPIC_CATEGORY_CONCEPTS = b'concepts'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
96 TOPIC_CATEGORY_MISC = b'misc'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
97 TOPIC_CATEGORY_NONE = b'none'
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
98
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
99 # The order in which topic categories will be displayed.
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
100 # Extensions with custom categories should insert them into this list
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
101 # after/before the appropriate item, rather than replacing the list or
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
102 # assuming absolute positions.
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
103 TOPIC_CATEGORY_ORDER = [
40294
fabbf9310025 help: assigning topic categories
Rodrigo Damazio <rdamazio@google.com>
parents: 40293
diff changeset
104 TOPIC_CATEGORY_IDS,
fabbf9310025 help: assigning topic categories
Rodrigo Damazio <rdamazio@google.com>
parents: 40293
diff changeset
105 TOPIC_CATEGORY_OUTPUT,
fabbf9310025 help: assigning topic categories
Rodrigo Damazio <rdamazio@google.com>
parents: 40293
diff changeset
106 TOPIC_CATEGORY_CONFIG,
fabbf9310025 help: assigning topic categories
Rodrigo Damazio <rdamazio@google.com>
parents: 40293
diff changeset
107 TOPIC_CATEGORY_CONCEPTS,
fabbf9310025 help: assigning topic categories
Rodrigo Damazio <rdamazio@google.com>
parents: 40293
diff changeset
108 TOPIC_CATEGORY_MISC,
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
109 TOPIC_CATEGORY_NONE,
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
110 ]
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
111
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
112 # Human-readable topic category names. These are translated.
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
113 TOPIC_CATEGORY_NAMES = {
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
114 TOPIC_CATEGORY_IDS: b'Mercurial identifiers',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
115 TOPIC_CATEGORY_OUTPUT: b'Mercurial output',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
116 TOPIC_CATEGORY_CONFIG: b'Mercurial configuration',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
117 TOPIC_CATEGORY_CONCEPTS: b'Concepts',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
118 TOPIC_CATEGORY_MISC: b'Miscellaneous',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
119 TOPIC_CATEGORY_NONE: b'Uncategorized topics',
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
120 }
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
121
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
122
20582
02c303f64917 help: exclude deprecated extensions in the disabled part of 'help extensions'
Augie Fackler <raf@durin42.com>
parents: 20034
diff changeset
123 def listexts(header, exts, indent=1, showdeprecated=False):
8879
d0a3eadfbdb3 help: more improvements for the extensions topic
Cédric Duval <cedricduval@free.fr>
parents: 8871
diff changeset
124 '''return a text listing of the given extensions'''
16852
af69b2b64d6e help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents: 16845
diff changeset
125 rst = []
af69b2b64d6e help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents: 16845
diff changeset
126 if exts:
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43089
diff changeset
127 for name, desc in sorted(pycompat.iteritems(exts)):
26371
51b309ce6c7d help: unify handling of DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents: 26370
diff changeset
128 if not showdeprecated and any(w in desc for w in _exclkeywords):
20582
02c303f64917 help: exclude deprecated extensions in the disabled part of 'help extensions'
Augie Fackler <raf@durin42.com>
parents: 20034
diff changeset
129 continue
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
130 rst.append(b'%s:%s: %s\n' % (b' ' * indent, name, desc))
27151
7625f6387fc4 help: make listexts less confusing for deprecated exts
timeless <timeless@mozdev.org>
parents: 26845
diff changeset
131 if rst:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
132 rst.insert(0, b'\n%s\n\n' % header)
16852
af69b2b64d6e help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents: 16845
diff changeset
133 return rst
8864
cad6370a15cb help: refactor extensions listing, and show enabled ones in the dedicated topic
Cédric Duval <cedricduval@free.fr>
parents: 8863
diff changeset
134
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
135
26413
e0c572d4d112 help: pass around ui to doc loader (API)
Yuya Nishihara <yuya@tcha.org>
parents: 26371
diff changeset
136 def extshelp(ui):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
137 rst = loaddoc(b'extensions')(ui).splitlines(True)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
138 rst.extend(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
139 listexts(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
140 _(b'enabled extensions:'), extensions.enabled(), showdeprecated=True
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
141 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
142 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
143 rst.extend(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
144 listexts(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
145 _(b'disabled extensions:'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
146 extensions.disabled(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
147 showdeprecated=ui.verbose,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
148 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
149 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
150 doc = b''.join(rst)
8863
7b19c3c0172b help: adding a new help topic about extensions
Cédric Duval <cedricduval@free.fr>
parents: 8668
diff changeset
151 return doc
7013
f56e788fa292 i18n: mark help strings for translation
Martin Geisler <mg@daimi.au.dk>
parents: 7012
diff changeset
152
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
153
22116
161085f87b95 help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents: 22115
diff changeset
154 def optrst(header, options, verbose):
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
155 data = []
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
156 multioccur = False
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
157 for option in options:
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
158 if len(option) == 5:
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
159 shortopt, longopt, default, desc, optlabel = option
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
160 else:
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
161 shortopt, longopt, default, desc = option
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
162 optlabel = _(b"VALUE") # default label
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
163
26369
4799b5c4aaf4 help: define list of keywords that should be excluded from non-verbose output
Yuya Nishihara <yuya@tcha.org>
parents: 26238
diff changeset
164 if not verbose and any(w in desc for w in _exclkeywords):
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
165 continue
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
166
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
167 so = b''
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
168 if shortopt:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
169 so = b'-' + shortopt
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
170 lo = b'--' + longopt
41009
fcc0a7ac9ebd help: show "[no-]" only for default-on Flags
Martin von Zweigbergk <martinvonz@google.com>
parents: 40955
diff changeset
171 if default is True:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
172 lo = b'--[no-]' + longopt
37091
979c8ce9022d fancyopts: fix rendering of customopt defaults in help text
Daniel Ploch <dploch@google.com>
parents: 36922
diff changeset
173
979c8ce9022d fancyopts: fix rendering of customopt defaults in help text
Daniel Ploch <dploch@google.com>
parents: 36922
diff changeset
174 if isinstance(default, fancyopts.customopt):
37092
ef6215df2402 fancyopts: prevent mutation of the default value in customopts
Daniel Ploch <dploch@google.com>
parents: 37091
diff changeset
175 default = default.getdefaultvalue()
41010
e8e2a7656e83 help: hide default value for default-off flags
Martin von Zweigbergk <martinvonz@google.com>
parents: 41009
diff changeset
176 if default and not callable(default):
32619
d110fb58424c help: convert flag default to bytes portably
Augie Fackler <raf@durin42.com>
parents: 32615
diff changeset
177 # default is of unknown type, and in Python 2 we abused
d110fb58424c help: convert flag default to bytes portably
Augie Fackler <raf@durin42.com>
parents: 32615
diff changeset
178 # the %s-shows-repr property to handle integers etc. To
d110fb58424c help: convert flag default to bytes portably
Augie Fackler <raf@durin42.com>
parents: 32615
diff changeset
179 # match that behavior on Python 3, we do str(default) and
d110fb58424c help: convert flag default to bytes portably
Augie Fackler <raf@durin42.com>
parents: 32615
diff changeset
180 # then convert it to bytes.
40953
05abb5fb146a help: use "default: on" instead of "default: True"
Martin von Zweigbergk <martinvonz@google.com>
parents: 40595
diff changeset
181 defaultstr = pycompat.bytestr(default)
41010
e8e2a7656e83 help: hide default value for default-off flags
Martin von Zweigbergk <martinvonz@google.com>
parents: 41009
diff changeset
182 if default is True:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
183 defaultstr = _(b"on")
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
184 desc += _(b" (default: %s)") % defaultstr
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
185
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
186 if isinstance(default, list):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
187 lo += b" %s [+]" % optlabel
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
188 multioccur = True
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
189 elif (default is not None) and not isinstance(default, bool):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
190 lo += b" %s" % optlabel
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
191
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
192 data.append((so, lo, desc))
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
193
22117
c1d93edcf004 help: fold repeatable option message into option table header
Matt Mackall <mpm@selenic.com>
parents: 22116
diff changeset
194 if multioccur:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
195 header += _(b" ([+] can be repeated)")
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
196
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
197 rst = [b'\n%s:\n\n' % header]
22116
161085f87b95 help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents: 22115
diff changeset
198 rst.extend(minirst.maketable(data, 1))
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
199
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
200 return b''.join(rst)
16781
c0b98f436cce help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents: 16711
diff changeset
201
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
202
17837
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17323
diff changeset
203 def indicateomitted(rst, omitted, notomitted=None):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
204 rst.append(b'\n\n.. container:: omitted\n\n %s\n\n' % omitted)
17837
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17323
diff changeset
205 if notomitted:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
206 rst.append(b'\n\n.. container:: notomitted\n\n %s\n\n' % notomitted)
17837
b623e323c561 help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 17323
diff changeset
207
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
208
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
209 def filtercmd(ui, cmd, func, kw, doc):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
210 if not ui.debugflag and cmd.startswith(b"debug") and kw != b"debug":
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
211 # Debug command, and user is not looking for those.
27323
0fe93498ef07 help: refactor filtercmd
timeless <timeless@mozdev.org>
parents: 27152
diff changeset
212 return True
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
213 if not ui.verbose:
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
214 if not kw and not doc:
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
215 # Command had no documentation, no point in showing it by default.
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
216 return True
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
217 if getattr(func, 'alias', False) and not getattr(func, 'owndoc', False):
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
218 # Alias didn't have its own documentation.
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
219 return True
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
220 if doc and any(w in doc for w in _exclkeywords):
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
221 # Documentation has excluded keywords.
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
222 return True
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
223 if kw == b"shortlist" and not getattr(func, 'helpbasic', False):
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
224 # We're presenting the short list but the command is not basic.
27323
0fe93498ef07 help: refactor filtercmd
timeless <timeless@mozdev.org>
parents: 27152
diff changeset
225 return True
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
226 if ui.configbool(b'help', b'hidden-command.%s' % cmd):
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
227 # Configuration explicitly hides the command.
27323
0fe93498ef07 help: refactor filtercmd
timeless <timeless@mozdev.org>
parents: 27152
diff changeset
228 return True
0fe93498ef07 help: refactor filtercmd
timeless <timeless@mozdev.org>
parents: 27152
diff changeset
229 return False
0fe93498ef07 help: refactor filtercmd
timeless <timeless@mozdev.org>
parents: 27152
diff changeset
230
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
231
40413
1ddd202c47d9 help: allow hiding of help topics
rdamazio@google.com
parents: 40412
diff changeset
232 def filtertopic(ui, topic):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
233 return ui.configbool(b'help', b'hidden-topic.%s' % topic, False)
40413
1ddd202c47d9 help: allow hiding of help topics
rdamazio@google.com
parents: 40412
diff changeset
234
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
235
32566
1b90036f42f0 help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org>
parents: 32549
diff changeset
236 def topicmatch(ui, commands, kw):
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
237 """Return help topics matching kw.
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
238
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
239 Returns {'section': [(name, summary), ...], ...} where section is
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
240 one of topics, commands, extensions, or extensioncommands.
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
241 """
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
242 kw = encoding.lower(kw)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
243
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
244 def lowercontains(container):
16845
4594729c61ee help: fix search with `-k` option in non-ASCII locales
Nikolaj Sjujskij <sterkrig@myopera.com>
parents: 16816
diff changeset
245 return kw in encoding.lower(container) # translated in helptable
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
246
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
247 results = {
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
248 b'topics': [],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
249 b'commands': [],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
250 b'extensions': [],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
251 b'extensioncommands': [],
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
252 }
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
253 for topic in helptable:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
254 names, header, doc = topic[0:3]
22322
e284de138f00 help: only call doc() when it is callable
Gregory Szorc <gregory.szorc@gmail.com>
parents: 21796
diff changeset
255 # Old extensions may use a str as doc.
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
256 if (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
257 sum(map(lowercontains, names))
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
258 or lowercontains(header)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
259 or (callable(doc) and lowercontains(doc(ui)))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
260 ):
40413
1ddd202c47d9 help: allow hiding of help topics
rdamazio@google.com
parents: 40412
diff changeset
261 name = names[0]
1ddd202c47d9 help: allow hiding of help topics
rdamazio@google.com
parents: 40412
diff changeset
262 if not filtertopic(ui, name):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
263 results[b'topics'].append((names[0], header))
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43089
diff changeset
264 for cmd, entry in pycompat.iteritems(commands.table):
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
265 if len(entry) == 3:
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
266 summary = entry[2]
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
267 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
268 summary = b''
16845
4594729c61ee help: fix search with `-k` option in non-ASCII locales
Nikolaj Sjujskij <sterkrig@myopera.com>
parents: 16816
diff changeset
269 # translate docs *before* searching there
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
270 func = entry[0]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
271 docs = _(pycompat.getdoc(func)) or b''
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
272 if kw in cmd or lowercontains(summary) or lowercontains(docs):
16845
4594729c61ee help: fix search with `-k` option in non-ASCII locales
Nikolaj Sjujskij <sterkrig@myopera.com>
parents: 16816
diff changeset
273 doclines = docs.splitlines()
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
274 if doclines:
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
275 summary = doclines[0]
36250
4174970c9147 help: use cmdutil.parsealiases() to resolve command name
Yuya Nishihara <yuya@tcha.org>
parents: 36249
diff changeset
276 cmdname = cmdutil.parsealiases(cmd)[0]
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
277 if filtercmd(ui, cmdname, func, kw, docs):
27324
5456374561a7 help: call filtercmd from topicmatch
timeless <timeless@mozdev.org>
parents: 27323
diff changeset
278 continue
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
279 results[b'commands'].append((cmdname, summary))
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
280 for name, docs in itertools.chain(
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43089
diff changeset
281 pycompat.iteritems(extensions.enabled(False)),
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43089
diff changeset
282 pycompat.iteritems(extensions.disabled()),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
283 ):
28058
ff6e8dc659f8 help: don't crash in keyword search if an extension fails to provide docs
Simon Farnsworth <simonfar@fb.com>
parents: 27660
diff changeset
284 if not docs:
ff6e8dc659f8 help: don't crash in keyword search if an extension fails to provide docs
Simon Farnsworth <simonfar@fb.com>
parents: 27660
diff changeset
285 continue
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
286 name = name.rpartition(b'.')[-1]
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
287 if lowercontains(name) or lowercontains(docs):
16845
4594729c61ee help: fix search with `-k` option in non-ASCII locales
Nikolaj Sjujskij <sterkrig@myopera.com>
parents: 16816
diff changeset
288 # extension docs are already translated
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
289 results[b'extensions'].append((name, docs.splitlines()[0]))
34912
1e2454b60e59 help: do not abort topicmatch() because of unimportable extensions
Yuya Nishihara <yuya@tcha.org>
parents: 33499
diff changeset
290 try:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
291 mod = extensions.load(ui, name, b'')
34912
1e2454b60e59 help: do not abort topicmatch() because of unimportable extensions
Yuya Nishihara <yuya@tcha.org>
parents: 33499
diff changeset
292 except ImportError:
1e2454b60e59 help: do not abort topicmatch() because of unimportable extensions
Yuya Nishihara <yuya@tcha.org>
parents: 33499
diff changeset
293 # debug message would be printed in extensions.load()
1e2454b60e59 help: do not abort topicmatch() because of unimportable extensions
Yuya Nishihara <yuya@tcha.org>
parents: 33499
diff changeset
294 continue
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43089
diff changeset
295 for cmd, entry in pycompat.iteritems(getattr(mod, 'cmdtable', {})):
16711
497deec204d1 help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents: 16710
diff changeset
296 if kw in cmd or (len(entry) > 2 and lowercontains(entry[2])):
36250
4174970c9147 help: use cmdutil.parsealiases() to resolve command name
Yuya Nishihara <yuya@tcha.org>
parents: 36249
diff changeset
297 cmdname = cmdutil.parsealiases(cmd)[0]
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
298 func = entry[0]
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
299 cmddoc = pycompat.getdoc(func)
32615
c9318beb7c1a py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents: 32566
diff changeset
300 if cmddoc:
c9318beb7c1a py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents: 32566
diff changeset
301 cmddoc = gettext(cmddoc).splitlines()[0]
16884
4fd1f1d7569b help: fix 'hg help -k' matching an extension without docs
Thomas Arendsen Hein <thomas@intevation.de>
parents: 16855
diff changeset
302 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
303 cmddoc = _(b'(no help text available)')
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
304 if filtercmd(ui, cmdname, func, kw, cmddoc):
27387
dfab0afde928 help: filter extension commands
timeless <timeless@mozdev.org>
parents: 27379
diff changeset
305 continue
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
306 results[b'extensioncommands'].append((cmdname, cmddoc))
16710
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
307 return results
a17983680f12 help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents: 16568
diff changeset
308
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
309
27375
c4a062d090ee help: teach loaddoc to load from a different directory
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27325
diff changeset
310 def loaddoc(topic, subdir=None):
9539
c904e76e3834 help: move help topics from mercurial/help.py to help/*.txt
Martin Geisler <mg@lazybytes.net>
parents: 9536
diff changeset
311 """Return a delayed loader for help/topic.txt."""
3798
6f0c42d50394 move environment topic
Matt Mackall <mpm@selenic.com>
parents: 3795
diff changeset
312
26413
e0c572d4d112 help: pass around ui to doc loader (API)
Yuya Nishihara <yuya@tcha.org>
parents: 26371
diff changeset
313 def loader(ui):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
314 docdir = os.path.join(util.datapath, b'help')
27375
c4a062d090ee help: teach loaddoc to load from a different directory
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27325
diff changeset
315 if subdir:
c4a062d090ee help: teach loaddoc to load from a different directory
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27325
diff changeset
316 docdir = os.path.join(docdir, subdir)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
317 path = os.path.join(docdir, topic + b".txt")
14168
135e244776f0 prevent transient leaks of file handle by using new helper functions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 14044
diff changeset
318 doc = gettext(util.readfile(path))
12820
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
319 for rewriter in helphooks.get(topic, []):
26414
c44b507e7c78 help: pass around ui to rewriter hooks (API)
Yuya Nishihara <yuya@tcha.org>
parents: 26413
diff changeset
320 doc = rewriter(ui, topic, doc)
12820
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
321 return doc
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
322
9539
c904e76e3834 help: move help topics from mercurial/help.py to help/*.txt
Martin Geisler <mg@lazybytes.net>
parents: 9536
diff changeset
323 return loader
7677
6a0bc2dc9da6 help: add a topic about some of the templating features
Alexander Solovyov <piranha@piranha.org.ua>
parents: 7387
diff changeset
324
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
325
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
326 internalstable = sorted(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
327 [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
328 ([b'bundle2'], _(b'Bundle2'), loaddoc(b'bundle2', subdir=b'internals')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
329 ([b'bundles'], _(b'Bundles'), loaddoc(b'bundles', subdir=b'internals')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
330 ([b'cbor'], _(b'CBOR'), loaddoc(b'cbor', subdir=b'internals')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
331 ([b'censor'], _(b'Censor'), loaddoc(b'censor', subdir=b'internals')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
332 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
333 [b'changegroups'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
334 _(b'Changegroups'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
335 loaddoc(b'changegroups', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
336 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
337 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
338 [b'config'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
339 _(b'Config Registrar'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
340 loaddoc(b'config', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
341 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
342 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
343 [b'extensions', b'extension'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
344 _(b'Extension API'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
345 loaddoc(b'extensions', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
346 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
347 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
348 [b'mergestate'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
349 _(b'Mergestate'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
350 loaddoc(b'mergestate', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
351 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
352 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
353 [b'requirements'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
354 _(b'Repository Requirements'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
355 loaddoc(b'requirements', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
356 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
357 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
358 [b'revlogs'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
359 _(b'Revision Logs'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
360 loaddoc(b'revlogs', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
361 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
362 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
363 [b'wireprotocol'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
364 _(b'Wire Protocol'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
365 loaddoc(b'wireprotocol', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
366 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
367 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
368 [b'wireprotocolrpc'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
369 _(b'Wire Protocol RPC'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
370 loaddoc(b'wireprotocolrpc', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
371 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
372 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
373 [b'wireprotocolv2'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
374 _(b'Wire Protocol Version 2'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
375 loaddoc(b'wireprotocolv2', subdir=b'internals'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
376 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
377 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
378 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
379
27376
fc810d950278 help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27375
diff changeset
380
fc810d950278 help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27375
diff changeset
381 def internalshelp(ui):
fc810d950278 help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27375
diff changeset
382 """Generate the index for the "internals" topic."""
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
383 lines = [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
384 b'To access a subtopic, use "hg help internals.{subtopic-name}"\n',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
385 b'\n',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
386 ]
27376
fc810d950278 help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27375
diff changeset
387 for names, header, doc in internalstable:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
388 lines.append(b' :%s: %s\n' % (names[0], header))
27376
fc810d950278 help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27375
diff changeset
389
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
390 return b''.join(lines)
27376
fc810d950278 help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27375
diff changeset
391
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
392
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
393 helptable = sorted(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
394 [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
395 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
396 [b'bundlespec'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
397 _(b"Bundle File Formats"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
398 loaddoc(b'bundlespec'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
399 TOPIC_CATEGORY_CONCEPTS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
400 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
401 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
402 [b'color'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
403 _(b"Colorizing Outputs"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
404 loaddoc(b'color'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
405 TOPIC_CATEGORY_OUTPUT,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
406 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
407 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
408 [b"config", b"hgrc"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
409 _(b"Configuration Files"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
410 loaddoc(b'config'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
411 TOPIC_CATEGORY_CONFIG,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
412 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
413 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
414 [b'deprecated'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
415 _(b"Deprecated Features"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
416 loaddoc(b'deprecated'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
417 TOPIC_CATEGORY_MISC,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
418 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
419 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
420 [b"dates"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
421 _(b"Date Formats"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
422 loaddoc(b'dates'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
423 TOPIC_CATEGORY_OUTPUT,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
424 ),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
425 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
426 [b"flags"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
427 _(b"Command-line flags"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
428 loaddoc(b'flags'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
429 TOPIC_CATEGORY_CONFIG,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
430 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
431 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
432 [b"patterns"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
433 _(b"File Name Patterns"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
434 loaddoc(b'patterns'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
435 TOPIC_CATEGORY_IDS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
436 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
437 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
438 [b'environment', b'env'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
439 _(b'Environment Variables'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
440 loaddoc(b'environment'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
441 TOPIC_CATEGORY_CONFIG,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
442 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
443 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
444 [
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
445 b'revisions',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
446 b'revs',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
447 b'revsets',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
448 b'revset',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
449 b'multirevs',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
450 b'mrevs',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
451 ],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
452 _(b'Specifying Revisions'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
453 loaddoc(b'revisions'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
454 TOPIC_CATEGORY_IDS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
455 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
456 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
457 [b'filesets', b'fileset'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
458 _(b"Specifying File Sets"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
459 loaddoc(b'filesets'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
460 TOPIC_CATEGORY_IDS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
461 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
462 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
463 [b'diffs'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
464 _(b'Diff Formats'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
465 loaddoc(b'diffs'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
466 TOPIC_CATEGORY_OUTPUT,
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
467 ),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
468 (
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
469 [b'merge-tools', b'mergetools', b'mergetool'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
470 _(b'Merge Tools'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
471 loaddoc(b'merge-tools'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
472 TOPIC_CATEGORY_CONFIG,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
473 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
474 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
475 [b'templating', b'templates', b'template', b'style'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
476 _(b'Template Usage'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
477 loaddoc(b'templates'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
478 TOPIC_CATEGORY_OUTPUT,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
479 ),
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
480 ([b'urls'], _(b'URL Paths'), loaddoc(b'urls'), TOPIC_CATEGORY_IDS),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
481 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
482 [b"extensions"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
483 _(b"Using Additional Features"),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
484 extshelp,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
485 TOPIC_CATEGORY_CONFIG,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
486 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
487 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
488 [b"subrepos", b"subrepo"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
489 _(b"Subrepositories"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
490 loaddoc(b'subrepos'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
491 TOPIC_CATEGORY_CONCEPTS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
492 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
493 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
494 [b"hgweb"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
495 _(b"Configuring hgweb"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
496 loaddoc(b'hgweb'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
497 TOPIC_CATEGORY_CONFIG,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
498 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
499 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
500 [b"glossary"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
501 _(b"Glossary"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
502 loaddoc(b'glossary'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
503 TOPIC_CATEGORY_CONCEPTS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
504 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
505 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
506 [b"hgignore", b"ignore"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
507 _(b"Syntax for Mercurial Ignore Files"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
508 loaddoc(b'hgignore'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
509 TOPIC_CATEGORY_IDS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
510 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
511 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
512 [b"phases"],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
513 _(b"Working with Phases"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
514 loaddoc(b'phases'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
515 TOPIC_CATEGORY_CONCEPTS,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
516 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
517 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
518 [b'scripting'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
519 _(b'Using Mercurial from scripts and automation'),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
520 loaddoc(b'scripting'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
521 TOPIC_CATEGORY_MISC,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
522 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
523 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
524 [b'internals'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
525 _(b"Technical implementation topics"),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
526 internalshelp,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
527 TOPIC_CATEGORY_MISC,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
528 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
529 (
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
530 [b'pager'],
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
531 _(b"Pager Support"),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
532 loaddoc(b'pager'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
533 TOPIC_CATEGORY_CONFIG,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
534 ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
535 ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
536 )
12820
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
537
27379
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
538 # Maps topics with sub-topics to a list of their sub-topics.
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
539 subtopics = {
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
540 b'internals': internalstable,
27379
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
541 }
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
542
12820
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
543 # Map topics to lists of callable taking the current topic help and
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
544 # returning the updated version
14318
1f46be4689ed help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents: 14317
diff changeset
545 helphooks = {}
12820
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
546
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
547
12820
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
548 def addtopichook(topic, rewriter):
0edc0aa7432d help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents: 12818
diff changeset
549 helphooks.setdefault(topic, []).append(rewriter)
13593
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
550
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
551
26414
c44b507e7c78 help: pass around ui to rewriter hooks (API)
Yuya Nishihara <yuya@tcha.org>
parents: 26413
diff changeset
552 def makeitemsdoc(ui, topic, doc, marker, items, dedent=False):
13593
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
553 """Extract docstring from the items key to function mapping, build a
26196
3a4620ad4490 help: fix makeitemsdoc English description
timeless@mozdev.org
parents: 25881
diff changeset
554 single documentation block and use it to overwrite the marker in doc.
13593
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
555 """
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
556 entries = []
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
557 for name in sorted(items):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
558 text = (pycompat.getdoc(items[name]) or b'').rstrip()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
559 if not text or not ui.verbose and any(w in text for w in _exclkeywords):
13593
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
560 continue
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
561 text = gettext(text)
24098
067540702f64 help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24080
diff changeset
562 if dedent:
32549
633c635a790a help: work around textwrap.dedent() only working on strings
Augie Fackler <raf@durin42.com>
parents: 32547
diff changeset
563 # Abuse latin1 to use textwrap.dedent() on bytes.
633c635a790a help: work around textwrap.dedent() only working on strings
Augie Fackler <raf@durin42.com>
parents: 32547
diff changeset
564 text = textwrap.dedent(text.decode('latin1')).encode('latin1')
13593
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
565 lines = text.splitlines()
16250
684864d54903 help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents: 16126
diff changeset
566 doclines = [(lines[0])]
684864d54903 help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents: 16126
diff changeset
567 for l in lines[1:]:
684864d54903 help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents: 16126
diff changeset
568 # Stop once we find some Python doctest
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
569 if l.strip().startswith(b'>>>'):
16250
684864d54903 help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents: 16126
diff changeset
570 break
24098
067540702f64 help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24080
diff changeset
571 if dedent:
067540702f64 help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24080
diff changeset
572 doclines.append(l.rstrip())
067540702f64 help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24080
diff changeset
573 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
574 doclines.append(b' ' + l.strip())
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
575 entries.append(b'\n'.join(doclines))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
576 entries = b'\n\n'.join(entries)
13593
cc4721ed7a2a help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents: 12828
diff changeset
577 return doc.replace(marker, entries)
14318
1f46be4689ed help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents: 14317
diff changeset
578
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
579
24098
067540702f64 help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24080
diff changeset
580 def addtopicsymbols(topic, marker, symbols, dedent=False):
26414
c44b507e7c78 help: pass around ui to rewriter hooks (API)
Yuya Nishihara <yuya@tcha.org>
parents: 26413
diff changeset
581 def add(ui, topic, doc):
c44b507e7c78 help: pass around ui to rewriter hooks (API)
Yuya Nishihara <yuya@tcha.org>
parents: 26413
diff changeset
582 return makeitemsdoc(ui, topic, doc, marker, symbols, dedent=dedent)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
583
14318
1f46be4689ed help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents: 14317
diff changeset
584 addtopichook(topic, add)
1f46be4689ed help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents: 14317
diff changeset
585
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
586
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
587 addtopicsymbols(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
588 b'bundlespec',
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
589 b'.. bundlecompressionmarker',
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
590 compression.bundlecompressiontopics(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
591 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
592 addtopicsymbols(b'filesets', b'.. predicatesmarker', fileset.symbols)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
593 addtopicsymbols(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
594 b'merge-tools', b'.. internaltoolsmarker', filemerge.internalsdoc
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
595 )
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
596 addtopicsymbols(b'revisions', b'.. predicatesmarker', revset.symbols)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
597 addtopicsymbols(b'templates', b'.. keywordsmarker', templatekw.keywords)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
598 addtopicsymbols(b'templates', b'.. filtersmarker', templatefilters.filters)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
599 addtopicsymbols(b'templates', b'.. functionsmarker', templatefuncs.funcs)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
600 addtopicsymbols(
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
601 b'hgweb', b'.. webcommandsmarker', webcommands.commands, dedent=True
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
602 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
603
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
604
40421
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
605 def inserttweakrc(ui, topic, doc):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
606 marker = b'.. tweakdefaultsmarker'
40421
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
607 repl = uimod.tweakrc
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
608
40421
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
609 def sub(m):
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
610 lines = [m.group(1) + s for s in repl.splitlines()]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
611 return b'\n'.join(lines)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
612
40421
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
613 return re.sub(br'( *)%s' % re.escape(marker), sub, doc)
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
614
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
615
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
616 addtopichook(b'config', inserttweakrc)
40421
e928bedf0919 help: describe what ui.tweakdefaults changes, concretely
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 40295
diff changeset
617
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
618
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
619 def help_(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
620 ui,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
621 commands,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
622 name,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
623 unknowncmd=False,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
624 full=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
625 subtopic=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
626 fullname=None,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
627 **opts
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
628 ):
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
629 '''
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
630 Generate the help for 'name' as unformatted restructured text. If
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
631 'name' is None, describe the commands available.
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
632 '''
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
633
32143
964c6be36590 py3: make sure opts are passed and used correctly in help command
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32076
diff changeset
634 opts = pycompat.byteskwargs(opts)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
635
27378
c709b515218e help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27377
diff changeset
636 def helpcmd(name, subtopic=None):
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
637 try:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
638 aliases, entry = cmdutil.findcmd(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
639 name, commands.table, strict=unknowncmd
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
640 )
25660
328739ea70c3 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents: 24871
diff changeset
641 except error.AmbiguousCommand as inst:
40263
8cf459d8b111 py3: use py3 as the test tag, dropping the k
Martijn Pieters <mj@octobus.net>
parents: 39614
diff changeset
642 # py3 fix: except vars can't be used outside the scope of the
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
643 # except block, nor can be used inside a lambda. python issue4617
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
644 prefix = inst.args[0]
36250
4174970c9147 help: use cmdutil.parsealiases() to resolve command name
Yuya Nishihara <yuya@tcha.org>
parents: 36249
diff changeset
645 select = lambda c: cmdutil.parsealiases(c)[0].startswith(prefix)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
646 rst = helplist(select)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
647 return rst
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
648
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
649 rst = []
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
650
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
651 # check if it's an invalid alias and display its error if it is
22160
645457f73aa6 alias: keep error message in "badalias" so that help can see it
Yuya Nishihara <yuya@tcha.org>
parents: 22118
diff changeset
652 if getattr(entry[0], 'badalias', None):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
653 rst.append(entry[0].badalias + b'\n')
22162
7ada34676db8 help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents: 22160
diff changeset
654 if entry[0].unknowncmd:
7ada34676db8 help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents: 22160
diff changeset
655 try:
7ada34676db8 help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents: 22160
diff changeset
656 rst.extend(helpextcmd(entry[0].cmdname))
7ada34676db8 help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents: 22160
diff changeset
657 except error.UnknownCommand:
7ada34676db8 help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents: 22160
diff changeset
658 pass
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
659 return rst
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
660
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
661 # synopsis
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
662 if len(entry) > 2:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
663 if entry[2].startswith(b'hg'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
664 rst.append(b"%s\n" % entry[2])
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
665 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
666 rst.append(b'hg %s %s\n' % (aliases[0], entry[2]))
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
667 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
668 rst.append(b'hg %s\n' % aliases[0])
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
669 # aliases
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
670 if full and not ui.quiet and len(aliases) > 1:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
671 rst.append(_(b"\naliases: %s\n") % b', '.join(aliases[1:]))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
672 rst.append(b'\n')
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
673
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
674 # description
32615
c9318beb7c1a py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents: 32566
diff changeset
675 doc = gettext(pycompat.getdoc(entry[0]))
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
676 if not doc:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
677 doc = _(b"(no help text available)")
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
678 if util.safehasattr(entry[0], b'definition'): # aliased command
28828
3640c1702c43 help: report source of aliases
timeless <timeless@mozdev.org>
parents: 28523
diff changeset
679 source = entry[0].source
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
680 if entry[0].definition.startswith(b'!'): # shell alias
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
681 doc = _(b'shell alias for: %s\n\n%s\n\ndefined by: %s\n') % (
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
682 entry[0].definition[1:],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
683 doc,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
684 source,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
685 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
686 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
687 doc = _(b'alias for: hg %s\n\n%s\n\ndefined by: %s\n') % (
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
688 entry[0].definition,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
689 doc,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
690 source,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
691 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
692 doc = doc.splitlines(True)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
693 if ui.quiet or not full:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
694 rst.append(doc[0])
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
695 else:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
696 rst.extend(doc)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
697 rst.append(b'\n')
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
698
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
699 # check if this command shadows a non-trivial (multi-line)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
700 # extension help text
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
701 try:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
702 mod = extensions.find(name)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
703 doc = gettext(pycompat.getdoc(mod)) or b''
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
704 if b'\n' in doc.strip():
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
705 msg = _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
706 b"(use 'hg help -e %s' to show help for "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
707 b"the %s extension)"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
708 ) % (name, name)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
709 rst.append(b'\n%s\n' % msg)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
710 except KeyError:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
711 pass
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
712
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
713 # options
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
714 if not ui.quiet and entry[1]:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
715 rst.append(optrst(_(b"options"), entry[1], ui.verbose))
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
716
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
717 if ui.verbose:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
718 rst.append(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
719 optrst(_(b"global options"), commands.globalopts, ui.verbose)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
720 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
721
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
722 if not ui.verbose:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
723 if not full:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
724 rst.append(_(b"\n(use 'hg %s -h' to show more help)\n") % name)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
725 elif not ui.quiet:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
726 rst.append(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
727 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
728 b'\n(some details hidden, use --verbose '
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
729 b'to show complete help)'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
730 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
731 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
732
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
733 return rst
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
734
27325
eadbbd14bdc1 help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents: 27324
diff changeset
735 def helplist(select=None, **opts):
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
736 # Category -> list of commands
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
737 cats = {}
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
738 # Command -> short description
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
739 h = {}
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
740 # Command -> string showing synonyms
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
741 syns = {}
43106
d783f945a701 py3: finish porting iteritems() to pycompat and remove source transformer
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43089
diff changeset
742 for c, e in pycompat.iteritems(commands.table):
36250
4174970c9147 help: use cmdutil.parsealiases() to resolve command name
Yuya Nishihara <yuya@tcha.org>
parents: 36249
diff changeset
743 fs = cmdutil.parsealiases(c)
4174970c9147 help: use cmdutil.parsealiases() to resolve command name
Yuya Nishihara <yuya@tcha.org>
parents: 36249
diff changeset
744 f = fs[0]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
745 syns[f] = b', '.join(fs)
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
746 func = e[0]
40295
fa88170c10bb help: adding a proper declaration for shortlist/basic commands (API)
Rodrigo Damazio <rdamazio@google.com>
parents: 40294
diff changeset
747 if select and not select(f):
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
748 continue
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
749 doc = pycompat.getdoc(func)
40414
444861dc1e55 help: displaying documented aliases by default
rdamazio@google.com
parents: 40413
diff changeset
750 if filtercmd(ui, f, func, name, doc):
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
751 continue
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
752 doc = gettext(doc)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
753 if not doc:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
754 doc = _(b"(no help text available)")
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
755 h[f] = doc.splitlines()[0].rstrip()
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
756
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
757 cat = getattr(func, 'helpcategory', None) or (
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
758 registrar.command.CATEGORY_NONE
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
759 )
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
760 cats.setdefault(cat, []).append(f)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
761
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
762 rst = []
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
763 if not h:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
764 if not ui.quiet:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
765 rst.append(_(b'no commands defined\n'))
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
766 return rst
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
767
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
768 # Output top header.
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
769 if not ui.quiet:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
770 if name == b"shortlist":
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
771 rst.append(_(b'basic commands:\n\n'))
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
772 elif name == b"debug":
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
773 rst.append(_(b'debug commands (internal and unsupported):\n\n'))
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
774 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
775 rst.append(_(b'list of commands:\n'))
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
776
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
777 def appendcmds(cmds):
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
778 cmds = sorted(cmds)
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
779 for c in cmds:
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
780 if ui.verbose:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
781 rst.append(b" :%s: %s\n" % (syns[c], h[c]))
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
782 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
783 rst.append(b' :%s: %s\n' % (c, h[c]))
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
784
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
785 if name in (b'shortlist', b'debug'):
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
786 # List without categories.
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
787 appendcmds(h)
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
788 else:
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
789 # Check that all categories have an order.
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
790 missing_order = set(cats.keys()) - set(CATEGORY_ORDER)
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
791 if missing_order:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
792 ui.develwarn(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
793 b'help categories missing from CATEGORY_ORDER: %s'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
794 % missing_order
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
795 )
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
796
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
797 # List per category.
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
798 for cat in CATEGORY_ORDER:
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
799 catfns = cats.get(cat, [])
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
800 if catfns:
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
801 if len(cats) > 1:
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
802 catname = gettext(CATEGORY_NAMES[cat])
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
803 rst.append(b"\n%s:\n" % catname)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
804 rst.append(b"\n")
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
805 appendcmds(catfns)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
806
27325
eadbbd14bdc1 help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents: 27324
diff changeset
807 ex = opts.get
43506
9f70512ae2cf cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents: 43117
diff changeset
808 anyopts = ex('keyword') or not (ex('command') or ex('extension'))
27325
eadbbd14bdc1 help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents: 27324
diff changeset
809 if not name and anyopts:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
810 exts = listexts(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
811 _(b'enabled extensions:'),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
812 extensions.enabled(),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
813 showdeprecated=ui.verbose,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
814 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
815 if exts:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
816 rst.append(b'\n')
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
817 rst.extend(exts)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
818
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
819 rst.append(_(b"\nadditional help topics:\n"))
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
820 # Group commands by category.
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
821 topiccats = {}
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
822 for topic in helptable:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
823 names, header, doc = topic[0:3]
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
824 if len(topic) > 3 and topic[3]:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
825 category = topic[3]
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
826 else:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
827 category = TOPIC_CATEGORY_NONE
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
828
40413
1ddd202c47d9 help: allow hiding of help topics
rdamazio@google.com
parents: 40412
diff changeset
829 topicname = names[0]
1ddd202c47d9 help: allow hiding of help topics
rdamazio@google.com
parents: 40412
diff changeset
830 if not filtertopic(ui, topicname):
1ddd202c47d9 help: allow hiding of help topics
rdamazio@google.com
parents: 40412
diff changeset
831 topiccats.setdefault(category, []).append(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
832 (topicname, header)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
833 )
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
834
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
835 # Check that all categories have an order.
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
836 missing_order = set(topiccats.keys()) - set(TOPIC_CATEGORY_ORDER)
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
837 if missing_order:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
838 ui.develwarn(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
839 b'help categories missing from TOPIC_CATEGORY_ORDER: %s'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
840 % missing_order
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
841 )
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
842
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
843 # Output topics per category.
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
844 for cat in TOPIC_CATEGORY_ORDER:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
845 topics = topiccats.get(cat, [])
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
846 if topics:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
847 if len(topiccats) > 1:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
848 catname = gettext(TOPIC_CATEGORY_NAMES[cat])
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
849 rst.append(b"\n%s:\n" % catname)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
850 rst.append(b"\n")
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
851 for t, desc in topics:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
852 rst.append(b" :%s: %s\n" % (t, desc))
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
853
22115
8465625f7364 help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents: 22114
diff changeset
854 if ui.quiet:
8465625f7364 help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents: 22114
diff changeset
855 pass
8465625f7364 help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents: 22114
diff changeset
856 elif ui.verbose:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
857 rst.append(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
858 b'\n%s\n'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
859 % optrst(_(b"global options"), commands.globalopts, ui.verbose)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
860 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
861 if name == b'shortlist':
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
862 rst.append(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
863 _(b"\n(use 'hg help' for the full list of commands)\n")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
864 )
22115
8465625f7364 help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents: 22114
diff changeset
865 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
866 if name == b'shortlist':
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
867 rst.append(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
868 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
869 b"\n(use 'hg help' for the full list of commands "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
870 b"or 'hg -v' for details)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
871 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
872 )
22115
8465625f7364 help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents: 22114
diff changeset
873 elif name and not full:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
874 rst.append(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
875 _(b"\n(use 'hg help %s' to show the full help text)\n")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
876 % name
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
877 )
40291
170926caf44c help: adding support for command categories
rdamazio@google.com
parents: 40263
diff changeset
878 elif name and syns and name in syns.keys():
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
879 rst.append(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
880 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
881 b"\n(use 'hg help -v -e %s' to show built-in "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
882 b"aliases and global options)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
883 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
884 % name
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
885 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
886 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
887 rst.append(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
888 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
889 b"\n(use 'hg help -v%s' to show built-in aliases "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
890 b"and global options)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
891 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
892 % (name and b" " + name or b"")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
893 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
894 return rst
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
895
27378
c709b515218e help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27377
diff changeset
896 def helptopic(name, subtopic=None):
27379
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
897 # Look for sub-topic entry first.
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
898 header, doc = None, None
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
899 if subtopic and name in subtopics:
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
900 for names, header, doc in subtopics[name]:
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
901 if subtopic in names:
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
902 break
42393
a84564b1a0b1 help: check if a subtopic exists and raise an error if it doesn't (issue6145)
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42057
diff changeset
903 if not any(subtopic in s[0] for s in subtopics[name]):
a84564b1a0b1 help: check if a subtopic exists and raise an error if it doesn't (issue6145)
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42057
diff changeset
904 raise error.UnknownCommand(name)
27379
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
905
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
906 if not header:
40292
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
907 for topic in helptable:
9c6473d2038b help: splitting the topics by category
Rodrigo Damazio <rdamazio@google.com>
parents: 40291
diff changeset
908 names, header, doc = topic[0:3]
27379
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
909 if name in names:
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
910 break
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
911 else:
2278870bb997 help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27378
diff changeset
912 raise error.UnknownCommand(name)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
913
18748
6e676fb6ea44 help: use a full header for topic titles
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 18746
diff changeset
914 rst = [minirst.section(header)]
6e676fb6ea44 help: use a full header for topic titles
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 18746
diff changeset
915
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
916 # description
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
917 if not doc:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
918 rst.append(b" %s\n" % _(b"(no help text available)"))
21796
8225bb1f0ad3 help: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com>
parents: 21289
diff changeset
919 if callable(doc):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
920 rst += [b" %s\n" % l for l in doc(ui).splitlines()]
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
921
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
922 if not ui.verbose:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
923 omitted = _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
924 b'(some details hidden, use --verbose'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
925 b' to show complete help)'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
926 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
927 indicateomitted(rst, omitted)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
928
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
929 try:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
930 cmdutil.findcmd(name, commands.table)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
931 rst.append(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
932 _(b"\nuse 'hg help -c %s' to see help for the %s command\n")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
933 % (name, name)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
934 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
935 except error.UnknownCommand:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
936 pass
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
937 return rst
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
938
27378
c709b515218e help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27377
diff changeset
939 def helpext(name, subtopic=None):
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
940 try:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
941 mod = extensions.find(name)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
942 doc = gettext(pycompat.getdoc(mod)) or _(b'no help text available')
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
943 except KeyError:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
944 mod = None
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
945 doc = extensions.disabledext(name)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
946 if not doc:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
947 raise error.UnknownCommand(name)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
948
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
949 if b'\n' not in doc:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
950 head, tail = doc, b""
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
951 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
952 head, tail = doc.split(b'\n', 1)
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
953 rst = [_(b'%s extension - %s\n\n') % (name.rpartition(b'.')[-1], head)]
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
954 if tail:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
955 rst.extend(tail.splitlines(True))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
956 rst.append(b'\n')
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
957
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
958 if not ui.verbose:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
959 omitted = _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
960 b'(some details hidden, use --verbose'
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
961 b' to show complete help)'
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
962 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
963 indicateomitted(rst, omitted)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
964
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
965 if mod:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
966 try:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
967 ct = mod.cmdtable
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
968 except AttributeError:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
969 ct = {}
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
970 modcmds = {c.partition(b'|')[0] for c in ct}
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
971 rst.extend(helplist(modcmds.__contains__))
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
972 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
973 rst.append(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
974 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
975 b"(use 'hg help extensions' for information on enabling"
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
976 b" extensions)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
977 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
978 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
979 return rst
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
980
27378
c709b515218e help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27377
diff changeset
981 def helpextcmd(name, subtopic=None):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
982 cmd, ext, doc = extensions.disabledcmd(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
983 ui, name, ui.configbool(b'ui', b'strict')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
984 )
37975
6e526b0961a8 help: load module doc of disabled extension in extensions.disabledcmd()
Yuya Nishihara <yuya@tcha.org>
parents: 37134
diff changeset
985 doc = doc.splitlines()[0]
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
986
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
987 rst = listexts(
43117
8ff1ecfadcd1 cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents: 43106
diff changeset
988 _(b"'%s' is provided by the following extension:") % cmd,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
989 {ext: doc},
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
990 indent=4,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
991 showdeprecated=True,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
992 )
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
993 rst.append(b'\n')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
994 rst.append(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
995 _(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
996 b"(use 'hg help extensions' for information on enabling "
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
997 b"extensions)\n"
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
998 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
999 )
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1000 return rst
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1001
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1002 rst = []
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1003 kw = opts.get(b'keyword')
27325
eadbbd14bdc1 help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents: 27324
diff changeset
1004 if kw or name is None and any(opts[o] for o in opts):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1005 matches = topicmatch(ui, commands, name or b'')
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26196
diff changeset
1006 helpareas = []
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1007 if opts.get(b'extension'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1008 helpareas += [(b'extensions', _(b'Extensions'))]
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1009 if opts.get(b'command'):
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1010 helpareas += [(b'commands', _(b'Commands'))]
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26196
diff changeset
1011 if not helpareas:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1012 helpareas = [
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1013 (b'topics', _(b'Topics')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1014 (b'commands', _(b'Commands')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1015 (b'extensions', _(b'Extensions')),
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1016 (b'extensioncommands', _(b'Extension Commands')),
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1017 ]
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26196
diff changeset
1018 for t, title in helpareas:
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1019 if matches[t]:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1020 rst.append(b'%s:\n\n' % title)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1021 rst.extend(minirst.maketable(sorted(matches[t]), 1))
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1022 rst.append(b'\n')
21288
eb6eaef7ae44 help: provide a more helpful message when no keyword are matched
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20823
diff changeset
1023 if not rst:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1024 msg = _(b'no matches')
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1025 hint = _(b"try 'hg help' for a list of topics")
26587
56b2bcea2529 error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26436
diff changeset
1026 raise error.Abort(msg, hint=hint)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1027 elif name and name != b'shortlist':
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26196
diff changeset
1028 queries = []
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1029 if unknowncmd:
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26196
diff changeset
1030 queries += [helpextcmd]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1031 if opts.get(b'extension'):
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26196
diff changeset
1032 queries += [helpext]
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1033 if opts.get(b'command'):
26238
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26196
diff changeset
1034 queries += [helpcmd]
69da16b366ad help: fix help argument parsing and documentation
timeless@mozdev.org
parents: 26196
diff changeset
1035 if not queries:
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1036 queries = (helptopic, helpcmd, helpext, helpextcmd)
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1037 for f in queries:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1038 try:
27378
c709b515218e help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents: 27377
diff changeset
1039 rst = f(name, subtopic)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1040 break
21289
c3784e3c3e8d help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21288
diff changeset
1041 except error.UnknownCommand:
c3784e3c3e8d help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21288
diff changeset
1042 pass
c3784e3c3e8d help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21288
diff changeset
1043 else:
c3784e3c3e8d help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21288
diff changeset
1044 if unknowncmd:
c3784e3c3e8d help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21288
diff changeset
1045 raise error.UnknownCommand(name)
c3784e3c3e8d help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21288
diff changeset
1046 else:
42394
ad55a0a5894f help: include subtopic in error message if passed
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42393
diff changeset
1047 if fullname:
ad55a0a5894f help: include subtopic in error message if passed
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42393
diff changeset
1048 formatname = fullname
ad55a0a5894f help: include subtopic in error message if passed
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42393
diff changeset
1049 else:
ad55a0a5894f help: include subtopic in error message if passed
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42393
diff changeset
1050 formatname = name
ad55a0a5894f help: include subtopic in error message if passed
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42393
diff changeset
1051 if subtopic:
ad55a0a5894f help: include subtopic in error message if passed
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42393
diff changeset
1052 hintname = subtopic
ad55a0a5894f help: include subtopic in error message if passed
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42393
diff changeset
1053 else:
ad55a0a5894f help: include subtopic in error message if passed
Nathan Goldbaum <nathan12343@gmail.com>
parents: 42393
diff changeset
1054 hintname = name
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1055 msg = _(b'no such help topic: %s') % formatname
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1056 hint = _(b"try 'hg help --keyword %s'") % hintname
26587
56b2bcea2529 error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26436
diff changeset
1057 raise error.Abort(msg, hint=hint)
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1058 else:
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1059 # program name
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1060 if not ui.quiet:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1061 rst = [_(b"Mercurial Distributed SCM\n"), b'\n']
32547
0cec8ad579d4 help: convert dict to strkwargs
Augie Fackler <raf@durin42.com>
parents: 32291
diff changeset
1062 rst.extend(helplist(None, **pycompat.strkwargs(opts)))
18746
c0087d48ec3a help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 17837
diff changeset
1063
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1064 return b''.join(rst)
31059
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1065
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1066
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1067 def formattedhelp(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1068 ui, commands, fullname, keep=None, unknowncmd=False, full=True, **opts
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1069 ):
31059
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1070 """get help for a given topic (as a dotted name) as rendered rst
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1071
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1072 Either returns the rendered help text or raises an exception.
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1073 """
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1074 if keep is None:
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1075 keep = []
31265
79715ba22f9c help: avoid mutating passed-in `keep` list in `formattedhelp`
Augie Fackler <augie@google.com>
parents: 31129
diff changeset
1076 else:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1077 keep = list(keep) # make a copy so we can mutate this later
39339
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1078
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1079 # <fullname> := <name>[.<subtopic][.<section>]
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1080 name = subtopic = section = None
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1081 if fullname is not None:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1082 nameparts = fullname.split(b'.')
39339
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1083 name = nameparts.pop(0)
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1084 if nameparts and name in subtopics:
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1085 subtopic = nameparts.pop(0)
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1086 if nameparts:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1087 section = encoding.lower(b'.'.join(nameparts))
39339
d30867a745a1 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org>
parents: 39309
diff changeset
1088
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1089 textwidth = ui.configint(b'ui', b'textwidth')
31059
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1090 termwidth = ui.termwidth() - 2
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1091 if textwidth <= 0 or termwidth < textwidth:
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1092 textwidth = termwidth
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1093 text = help_(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1094 ui,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1095 commands,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1096 name,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1097 fullname=fullname,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1098 subtopic=subtopic,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1099 unknowncmd=unknowncmd,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1100 full=full,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1101 **opts
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42450
diff changeset
1102 )
31059
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1103
39308
9b800601701c help: inline minirst.format()
Yuya Nishihara <yuya@tcha.org>
parents: 37998
diff changeset
1104 blocks, pruned = minirst.parse(text, keep=keep)
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1105 if b'verbose' in pruned:
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1106 keep.append(b'omitted')
31059
2a0c8e3636b0 help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents: 30812
diff changeset
1107 else:
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1108 keep.append(b'notomitted')
39308
9b800601701c help: inline minirst.format()
Yuya Nishihara <yuya@tcha.org>
parents: 37998
diff changeset
1109 blocks, pruned = minirst.parse(text, keep=keep)
9b800601701c help: inline minirst.format()
Yuya Nishihara <yuya@tcha.org>
parents: 37998
diff changeset
1110 if section:
9b800601701c help: inline minirst.format()
Yuya Nishihara <yuya@tcha.org>
parents: 37998
diff changeset
1111 blocks = minirst.filtersections(blocks, section)
39309
0a766cb1092a help: reorder section filtering flow to not format help text twice
Yuya Nishihara <yuya@tcha.org>
parents: 39308
diff changeset
1112
0a766cb1092a help: reorder section filtering flow to not format help text twice
Yuya Nishihara <yuya@tcha.org>
parents: 39308
diff changeset
1113 # We could have been given a weird ".foo" section without a name
0a766cb1092a help: reorder section filtering flow to not format help text twice
Yuya Nishihara <yuya@tcha.org>
parents: 39308
diff changeset
1114 # to look for, or we could have simply failed to found "foo.bar"
0a766cb1092a help: reorder section filtering flow to not format help text twice
Yuya Nishihara <yuya@tcha.org>
parents: 39308
diff changeset
1115 # because bar isn't a section of foo
0a766cb1092a help: reorder section filtering flow to not format help text twice
Yuya Nishihara <yuya@tcha.org>
parents: 39308
diff changeset
1116 if section and not (blocks and name):
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
1117 raise error.Abort(_(b"help section not found: %s") % fullname)
39309
0a766cb1092a help: reorder section filtering flow to not format help text twice
Yuya Nishihara <yuya@tcha.org>
parents: 39308
diff changeset
1118
39308
9b800601701c help: inline minirst.format()
Yuya Nishihara <yuya@tcha.org>
parents: 37998
diff changeset
1119 return minirst.formatplain(blocks, textwidth)