author | Pierre-Yves David <pierre-yves.david@octobus.net> |
Sat, 27 May 2017 22:25:40 +0200 | |
changeset 32632 | 090a6fe6e563 |
parent 32619 | d110fb58424c |
child 33499 | 0407a51b9d8c |
permissions | -rw-r--r-- |
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 | 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 |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
12 |
import textwrap |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
13 |
|
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
14 |
from .i18n import ( |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
15 |
_, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
16 |
gettext, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
17 |
) |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
18 |
from . import ( |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
19 |
cmdutil, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
20 |
encoding, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
21 |
error, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
22 |
extensions, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
23 |
filemerge, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
24 |
fileset, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
25 |
minirst, |
32143
964c6be36590
py3: make sure opts are passed and used correctly in help command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32076
diff
changeset
|
26 |
pycompat, |
27479
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
27 |
revset, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
28 |
templatefilters, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
29 |
templatekw, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
30 |
templater, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
31 |
util, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
32 |
) |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
33 |
from .hgweb import ( |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
34 |
webcommands, |
3ce1d50daa99
help: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27400
diff
changeset
|
35 |
) |
8863
7b19c3c0172b
help: adding a new help topic about extensions
Cédric Duval <cedricduval@free.fr>
parents:
8668
diff
changeset
|
36 |
|
32291
bd872f64a8ba
cleanup: use set literals
Martin von Zweigbergk <martinvonz@google.com>
parents:
32143
diff
changeset
|
37 |
_exclkeywords = { |
31080
6918c9215201
help: hide command line options marked as "advanced"
Jun Wu <quark@fb.com>
parents:
31061
diff
changeset
|
38 |
"(ADVANCED)", |
26370
44cc9f63a2f1
help: include parens in DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents:
26369
diff
changeset
|
39 |
"(DEPRECATED)", |
44cc9f63a2f1
help: include parens in DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents:
26369
diff
changeset
|
40 |
"(EXPERIMENTAL)", |
31080
6918c9215201
help: hide command line options marked as "advanced"
Jun Wu <quark@fb.com>
parents:
31061
diff
changeset
|
41 |
# i18n: "(ADVANCED)" is a keyword, must be translated consistently |
6918c9215201
help: hide command line options marked as "advanced"
Jun Wu <quark@fb.com>
parents:
31061
diff
changeset
|
42 |
_("(ADVANCED)"), |
26370
44cc9f63a2f1
help: include parens in DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents:
26369
diff
changeset
|
43 |
# i18n: "(DEPRECATED)" is a keyword, must be translated consistently |
44cc9f63a2f1
help: include parens in DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents:
26369
diff
changeset
|
44 |
_("(DEPRECATED)"), |
44cc9f63a2f1
help: include parens in DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents:
26369
diff
changeset
|
45 |
# i18n: "(EXPERIMENTAL)" is a keyword, must be translated consistently |
44cc9f63a2f1
help: include parens in DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents:
26369
diff
changeset
|
46 |
_("(EXPERIMENTAL)"), |
32291
bd872f64a8ba
cleanup: use set literals
Martin von Zweigbergk <martinvonz@google.com>
parents:
32143
diff
changeset
|
47 |
} |
26369
4799b5c4aaf4
help: define list of keywords that should be excluded from non-verbose output
Yuya Nishihara <yuya@tcha.org>
parents:
26238
diff
changeset
|
48 |
|
20582
02c303f64917
help: exclude deprecated extensions in the disabled part of 'help extensions'
Augie Fackler <raf@durin42.com>
parents:
20034
diff
changeset
|
49 |
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
|
50 |
'''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
|
51 |
rst = [] |
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16845
diff
changeset
|
52 |
if exts: |
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16845
diff
changeset
|
53 |
for name, desc in sorted(exts.iteritems()): |
26371
51b309ce6c7d
help: unify handling of DEPRECATED/EXPERIMENTAL keywords
Yuya Nishihara <yuya@tcha.org>
parents:
26370
diff
changeset
|
54 |
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
|
55 |
continue |
16852
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16845
diff
changeset
|
56 |
rst.append('%s:%s: %s\n' % (' ' * indent, name, desc)) |
27151
7625f6387fc4
help: make listexts less confusing for deprecated exts
timeless <timeless@mozdev.org>
parents:
26845
diff
changeset
|
57 |
if rst: |
7625f6387fc4
help: make listexts less confusing for deprecated exts
timeless <timeless@mozdev.org>
parents:
26845
diff
changeset
|
58 |
rst.insert(0, '\n%s\n\n' % header) |
16852
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16845
diff
changeset
|
59 |
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
|
60 |
|
26413
e0c572d4d112
help: pass around ui to doc loader (API)
Yuya Nishihara <yuya@tcha.org>
parents:
26371
diff
changeset
|
61 |
def extshelp(ui): |
e0c572d4d112
help: pass around ui to doc loader (API)
Yuya Nishihara <yuya@tcha.org>
parents:
26371
diff
changeset
|
62 |
rst = loaddoc('extensions')(ui).splitlines(True) |
20582
02c303f64917
help: exclude deprecated extensions in the disabled part of 'help extensions'
Augie Fackler <raf@durin42.com>
parents:
20034
diff
changeset
|
63 |
rst.extend(listexts( |
02c303f64917
help: exclude deprecated extensions in the disabled part of 'help extensions'
Augie Fackler <raf@durin42.com>
parents:
20034
diff
changeset
|
64 |
_('enabled extensions:'), extensions.enabled(), showdeprecated=True)) |
16852
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16845
diff
changeset
|
65 |
rst.extend(listexts(_('disabled extensions:'), extensions.disabled())) |
af69b2b64d6e
help: format extension lists using RST
Olav Reinert <seroton10@gmail.com>
parents:
16845
diff
changeset
|
66 |
doc = ''.join(rst) |
8863
7b19c3c0172b
help: adding a new help topic about extensions
Cédric Duval <cedricduval@free.fr>
parents:
8668
diff
changeset
|
67 |
return doc |
7013
f56e788fa292
i18n: mark help strings for translation
Martin Geisler <mg@daimi.au.dk>
parents:
7012
diff
changeset
|
68 |
|
22116
161085f87b95
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents:
22115
diff
changeset
|
69 |
def optrst(header, options, verbose): |
16781
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
70 |
data = [] |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
71 |
multioccur = False |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
72 |
for option in options: |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
73 |
if len(option) == 5: |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
74 |
shortopt, longopt, default, desc, optlabel = option |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
75 |
else: |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
76 |
shortopt, longopt, default, desc = option |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
77 |
optlabel = _("VALUE") # default label |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
78 |
|
26369
4799b5c4aaf4
help: define list of keywords that should be excluded from non-verbose output
Yuya Nishihara <yuya@tcha.org>
parents:
26238
diff
changeset
|
79 |
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
|
80 |
continue |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
81 |
|
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
82 |
so = '' |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
83 |
if shortopt: |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
84 |
so = '-' + shortopt |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
85 |
lo = '--' + longopt |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
86 |
if default: |
32619
d110fb58424c
help: convert flag default to bytes portably
Augie Fackler <raf@durin42.com>
parents:
32615
diff
changeset
|
87 |
# 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
|
88 |
# 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
|
89 |
# 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
|
90 |
# then convert it to bytes. |
d110fb58424c
help: convert flag default to bytes portably
Augie Fackler <raf@durin42.com>
parents:
32615
diff
changeset
|
91 |
desc += _(" (default: %s)") % pycompat.bytestr(default) |
16781
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
92 |
|
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
93 |
if isinstance(default, list): |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
94 |
lo += " %s [+]" % optlabel |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
95 |
multioccur = True |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
96 |
elif (default is not None) and not isinstance(default, bool): |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
97 |
lo += " %s" % optlabel |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
98 |
|
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
99 |
data.append((so, lo, desc)) |
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
100 |
|
22117
c1d93edcf004
help: fold repeatable option message into option table header
Matt Mackall <mpm@selenic.com>
parents:
22116
diff
changeset
|
101 |
if multioccur: |
c1d93edcf004
help: fold repeatable option message into option table header
Matt Mackall <mpm@selenic.com>
parents:
22116
diff
changeset
|
102 |
header += (_(" ([+] can be repeated)")) |
16781
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
103 |
|
22116
161085f87b95
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents:
22115
diff
changeset
|
104 |
rst = ['\n%s:\n\n' % header] |
161085f87b95
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents:
22115
diff
changeset
|
105 |
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
|
106 |
|
16815
e740746ea557
minirst: generate tables as a list of joined lines
Olav Reinert <seroton10@gmail.com>
parents:
16781
diff
changeset
|
107 |
return ''.join(rst) |
16781
c0b98f436cce
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com>
parents:
16711
diff
changeset
|
108 |
|
17837
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17323
diff
changeset
|
109 |
def indicateomitted(rst, omitted, notomitted=None): |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17323
diff
changeset
|
110 |
rst.append('\n\n.. container:: omitted\n\n %s\n\n' % omitted) |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17323
diff
changeset
|
111 |
if notomitted: |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17323
diff
changeset
|
112 |
rst.append('\n\n.. container:: notomitted\n\n %s\n\n' % notomitted) |
b623e323c561
help: indicate help omitting if help document is not fully displayed
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17323
diff
changeset
|
113 |
|
27323 | 114 |
def filtercmd(ui, cmd, kw, doc): |
115 |
if not ui.debugflag and cmd.startswith("debug") and kw != "debug": |
|
116 |
return True |
|
117 |
if not ui.verbose and doc and any(w in doc for w in _exclkeywords): |
|
118 |
return True |
|
119 |
return False |
|
120 |
||
32566
1b90036f42f0
help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org>
parents:
32549
diff
changeset
|
121 |
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
|
122 |
"""Return help topics matching kw. |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
123 |
|
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
124 |
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
|
125 |
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
|
126 |
""" |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
127 |
kw = encoding.lower(kw) |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
128 |
def lowercontains(container): |
16845
4594729c61ee
help: fix search with `-k` option in non-ASCII locales
Nikolaj Sjujskij <sterkrig@myopera.com>
parents:
16816
diff
changeset
|
129 |
return kw in encoding.lower(container) # translated in helptable |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
130 |
results = {'topics': [], |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
131 |
'commands': [], |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
132 |
'extensions': [], |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
133 |
'extensioncommands': [], |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
134 |
} |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
135 |
for names, header, doc in helptable: |
22322
e284de138f00
help: only call doc() when it is callable
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21796
diff
changeset
|
136 |
# Old extensions may use a str as doc. |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
137 |
if (sum(map(lowercontains, names)) |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
138 |
or lowercontains(header) |
26413
e0c572d4d112
help: pass around ui to doc loader (API)
Yuya Nishihara <yuya@tcha.org>
parents:
26371
diff
changeset
|
139 |
or (callable(doc) and lowercontains(doc(ui)))): |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
140 |
results['topics'].append((names[0], header)) |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
141 |
for cmd, entry in commands.table.iteritems(): |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
142 |
if len(entry) == 3: |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
143 |
summary = entry[2] |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
144 |
else: |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
145 |
summary = '' |
16845
4594729c61ee
help: fix search with `-k` option in non-ASCII locales
Nikolaj Sjujskij <sterkrig@myopera.com>
parents:
16816
diff
changeset
|
146 |
# translate docs *before* searching there |
32615
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
147 |
docs = _(pycompat.getdoc(entry[0])) or '' |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
148 |
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
|
149 |
doclines = docs.splitlines() |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
150 |
if doclines: |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
151 |
summary = doclines[0] |
26845
7a77ee434179
help: replace some str.split() calls by str.partition() or str.rpartition()
Anton Shestakov <av6@dwimlabs.net>
parents:
26587
diff
changeset
|
152 |
cmdname = cmd.partition('|')[0].lstrip('^') |
27324
5456374561a7
help: call filtercmd from topicmatch
timeless <timeless@mozdev.org>
parents:
27323
diff
changeset
|
153 |
if filtercmd(ui, cmdname, kw, docs): |
5456374561a7
help: call filtercmd from topicmatch
timeless <timeless@mozdev.org>
parents:
27323
diff
changeset
|
154 |
continue |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
155 |
results['commands'].append((cmdname, summary)) |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
156 |
for name, docs in itertools.chain( |
19769
83d79a00cc24
help: use full name of extensions to look up them for keyword search
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
18748
diff
changeset
|
157 |
extensions.enabled(False).iteritems(), |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
158 |
extensions.disabled().iteritems()): |
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
|
159 |
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
|
160 |
continue |
27660
512f883c234c
mercurial: pass ui to extensions.load (issue5007)
Jun Wu <quark@fb.com>
parents:
27631
diff
changeset
|
161 |
mod = extensions.load(ui, name, '') |
26845
7a77ee434179
help: replace some str.split() calls by str.partition() or str.rpartition()
Anton Shestakov <av6@dwimlabs.net>
parents:
26587
diff
changeset
|
162 |
name = name.rpartition('.')[-1] |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
163 |
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
|
164 |
# extension docs are already translated |
4594729c61ee
help: fix search with `-k` option in non-ASCII locales
Nikolaj Sjujskij <sterkrig@myopera.com>
parents:
16816
diff
changeset
|
165 |
results['extensions'].append((name, docs.splitlines()[0])) |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
166 |
for cmd, entry in getattr(mod, 'cmdtable', {}).iteritems(): |
16711
497deec204d1
help: add --keyword (-k) for searching help
Augie Fackler <raf@durin42.com>
parents:
16710
diff
changeset
|
167 |
if kw in cmd or (len(entry) > 2 and lowercontains(entry[2])): |
26845
7a77ee434179
help: replace some str.split() calls by str.partition() or str.rpartition()
Anton Shestakov <av6@dwimlabs.net>
parents:
26587
diff
changeset
|
168 |
cmdname = cmd.partition('|')[0].lstrip('^') |
32615
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
169 |
cmddoc = pycompat.getdoc(entry[0]) |
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
170 |
if cmddoc: |
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
171 |
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
|
172 |
else: |
4fd1f1d7569b
help: fix 'hg help -k' matching an extension without docs
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16855
diff
changeset
|
173 |
cmddoc = _('(no help text available)') |
27387
dfab0afde928
help: filter extension commands
timeless <timeless@mozdev.org>
parents:
27379
diff
changeset
|
174 |
if filtercmd(ui, cmdname, kw, cmddoc): |
dfab0afde928
help: filter extension commands
timeless <timeless@mozdev.org>
parents:
27379
diff
changeset
|
175 |
continue |
16884
4fd1f1d7569b
help: fix 'hg help -k' matching an extension without docs
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16855
diff
changeset
|
176 |
results['extensioncommands'].append((cmdname, cmddoc)) |
16710
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
177 |
return results |
a17983680f12
help: introduce topicmatch for finding topics matching a keyword
Augie Fackler <raf@durin42.com>
parents:
16568
diff
changeset
|
178 |
|
27375
c4a062d090ee
help: teach loaddoc to load from a different directory
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27325
diff
changeset
|
179 |
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
|
180 |
"""Return a delayed loader for help/topic.txt.""" |
3798 | 181 |
|
26413
e0c572d4d112
help: pass around ui to doc loader (API)
Yuya Nishihara <yuya@tcha.org>
parents:
26371
diff
changeset
|
182 |
def loader(ui): |
22637
149141c3a25f
help: don't search randomly for help data - trust util.datapath
Mads Kiilerich <madski@unity3d.com>
parents:
22633
diff
changeset
|
183 |
docdir = os.path.join(util.datapath, 'help') |
27375
c4a062d090ee
help: teach loaddoc to load from a different directory
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27325
diff
changeset
|
184 |
if subdir: |
c4a062d090ee
help: teach loaddoc to load from a different directory
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27325
diff
changeset
|
185 |
docdir = os.path.join(docdir, subdir) |
9539
c904e76e3834
help: move help topics from mercurial/help.py to help/*.txt
Martin Geisler <mg@lazybytes.net>
parents:
9536
diff
changeset
|
186 |
path = os.path.join(docdir, topic + ".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
|
187 |
doc = gettext(util.readfile(path)) |
12820
0edc0aa7432d
help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents:
12818
diff
changeset
|
188 |
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
|
189 |
doc = rewriter(ui, topic, doc) |
12820
0edc0aa7432d
help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents:
12818
diff
changeset
|
190 |
return doc |
0edc0aa7432d
help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents:
12818
diff
changeset
|
191 |
|
9539
c904e76e3834
help: move help topics from mercurial/help.py to help/*.txt
Martin Geisler <mg@lazybytes.net>
parents:
9536
diff
changeset
|
192 |
return loader |
7677
6a0bc2dc9da6
help: add a topic about some of the templating features
Alexander Solovyov <piranha@piranha.org.ua>
parents:
7387
diff
changeset
|
193 |
|
27376
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
194 |
internalstable = sorted([ |
29747
aba2bb2a6d0f
help: don't try to render a section on sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28828
diff
changeset
|
195 |
(['bundles'], _('Bundles'), |
27376
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
196 |
loaddoc('bundles', subdir='internals')), |
31293
2cdb1239ff8c
help: update help.internalstable for new censor docs
Augie Fackler <augie@google.com>
parents:
31265
diff
changeset
|
197 |
(['censor'], _('Censor'), |
2cdb1239ff8c
help: update help.internalstable for new censor docs
Augie Fackler <augie@google.com>
parents:
31265
diff
changeset
|
198 |
loaddoc('censor', subdir='internals')), |
29747
aba2bb2a6d0f
help: don't try to render a section on sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28828
diff
changeset
|
199 |
(['changegroups'], _('Changegroups'), |
27376
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
200 |
loaddoc('changegroups', subdir='internals')), |
29747
aba2bb2a6d0f
help: don't try to render a section on sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28828
diff
changeset
|
201 |
(['requirements'], _('Repository Requirements'), |
28523
045fe7042510
help: document requirements
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28058
diff
changeset
|
202 |
loaddoc('requirements', subdir='internals')), |
29747
aba2bb2a6d0f
help: don't try to render a section on sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28828
diff
changeset
|
203 |
(['revlogs'], _('Revision Logs'), |
27631
c18292a6ff54
internals: document revlog format
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27479
diff
changeset
|
204 |
loaddoc('revlogs', subdir='internals')), |
29859
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29747
diff
changeset
|
205 |
(['wireprotocol'], _('Wire Protocol'), |
a1092e2d70a3
help: internals topic for wire protocol
Gregory Szorc <gregory.szorc@gmail.com>
parents:
29747
diff
changeset
|
206 |
loaddoc('wireprotocol', subdir='internals')), |
27376
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
207 |
]) |
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
208 |
|
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
209 |
def internalshelp(ui): |
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
210 |
"""Generate the index for the "internals" topic.""" |
32076
d7b698ae153b
help: explain how to access subtopics in internals
Matt DeVore <matvore@google.com>
parents:
31793
diff
changeset
|
211 |
lines = ['To access a subtopic, use "hg help internals.{subtopic-name}"\n', |
d7b698ae153b
help: explain how to access subtopics in internals
Matt DeVore <matvore@google.com>
parents:
31793
diff
changeset
|
212 |
'\n'] |
27376
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
213 |
for names, header, doc in internalstable: |
27400
64208bd4c580
help: add missed last new line to "internals" topic
Yuya Nishihara <yuya@tcha.org>
parents:
27387
diff
changeset
|
214 |
lines.append(' :%s: %s\n' % (names[0], header)) |
27376
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
215 |
|
27400
64208bd4c580
help: add missed last new line to "internals" topic
Yuya Nishihara <yuya@tcha.org>
parents:
27387
diff
changeset
|
216 |
return ''.join(lines) |
27376
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
217 |
|
13888
9e5407a67dea
help: sort help topics to make the output more readable (issue2751)
Yun Lee <yunlee.bj@gmail.com>
parents:
13593
diff
changeset
|
218 |
helptable = sorted([ |
31793
69d8fcf20014
help: document bundle specifications
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31293
diff
changeset
|
219 |
(['bundlespec'], _("Bundle File Formats"), loaddoc('bundlespec')), |
31129
71f692f1f678
color: update the help table
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31080
diff
changeset
|
220 |
(['color'], _("Colorizing Outputs"), loaddoc('color')), |
12145
c407b4ca666e
help: make "hg help hgrc" an alias for "hg help config"
Martin Geisler <mg@lazybytes.net>
parents:
11657
diff
changeset
|
221 |
(["config", "hgrc"], _("Configuration Files"), loaddoc('config')), |
9539
c904e76e3834
help: move help topics from mercurial/help.py to help/*.txt
Martin Geisler <mg@lazybytes.net>
parents:
9536
diff
changeset
|
222 |
(["dates"], _("Date Formats"), loaddoc('dates')), |
c904e76e3834
help: move help topics from mercurial/help.py to help/*.txt
Martin Geisler <mg@lazybytes.net>
parents:
9536
diff
changeset
|
223 |
(["patterns"], _("File Name Patterns"), loaddoc('patterns')), |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10263
diff
changeset
|
224 |
(['environment', 'env'], _('Environment Variables'), |
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10263
diff
changeset
|
225 |
loaddoc('environment')), |
30769
e520f0f4b1cf
help: merge revsets.txt into revisions.txt
Martin von Zweigbergk <martinvonz@google.com>
parents:
30610
diff
changeset
|
226 |
(['revisions', 'revs', 'revsets', 'revset', 'multirevs', 'mrevs'], |
e520f0f4b1cf
help: merge revsets.txt into revisions.txt
Martin von Zweigbergk <martinvonz@google.com>
parents:
30610
diff
changeset
|
227 |
_('Specifying Revisions'), loaddoc('revisions')), |
17322
7124f984dc8d
help: use the first topic name from helptable, not the longest alias
Mads Kiilerich <mads@kiilerich.com>
parents:
17321
diff
changeset
|
228 |
(['filesets', 'fileset'], _("Specifying File Sets"), loaddoc('filesets')), |
9539
c904e76e3834
help: move help topics from mercurial/help.py to help/*.txt
Martin Geisler <mg@lazybytes.net>
parents:
9536
diff
changeset
|
229 |
(['diffs'], _('Diff Formats'), loaddoc('diffs')), |
30812
98bfce9bd5e5
help: make "mergetool" an alias for "merge-tools"
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30769
diff
changeset
|
230 |
(['merge-tools', 'mergetools', 'mergetool'], _('Merge Tools'), |
98bfce9bd5e5
help: make "mergetool" an alias for "merge-tools"
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30769
diff
changeset
|
231 |
loaddoc('merge-tools')), |
16568
770190bff625
help: add reference to template help (issue3413)
A. S. Budden <abudden@gmail.com>
parents:
16547
diff
changeset
|
232 |
(['templating', 'templates', 'template', 'style'], _('Template Usage'), |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10263
diff
changeset
|
233 |
loaddoc('templates')), |
9539
c904e76e3834
help: move help topics from mercurial/help.py to help/*.txt
Martin Geisler <mg@lazybytes.net>
parents:
9536
diff
changeset
|
234 |
(['urls'], _('URL Paths'), loaddoc('urls')), |
16547
23072be2eaa3
help: consistently use title capitalization for help topics
Martin Geisler <mg@aragost.com>
parents:
16250
diff
changeset
|
235 |
(["extensions"], _("Using Additional Features"), extshelp), |
17322
7124f984dc8d
help: use the first topic name from helptable, not the longest alias
Mads Kiilerich <mads@kiilerich.com>
parents:
17321
diff
changeset
|
236 |
(["subrepos", "subrepo"], _("Subrepositories"), loaddoc('subrepos')), |
17321
f3fd9d6802b7
help: fix helptable indentation
Mads Kiilerich <mads@kiilerich.com>
parents:
17187
diff
changeset
|
237 |
(["hgweb"], _("Configuring hgweb"), loaddoc('hgweb')), |
f3fd9d6802b7
help: fix helptable indentation
Mads Kiilerich <mads@kiilerich.com>
parents:
17187
diff
changeset
|
238 |
(["glossary"], _("Glossary"), loaddoc('glossary')), |
f3fd9d6802b7
help: fix helptable indentation
Mads Kiilerich <mads@kiilerich.com>
parents:
17187
diff
changeset
|
239 |
(["hgignore", "ignore"], _("Syntax for Mercurial Ignore Files"), |
f3fd9d6802b7
help: fix helptable indentation
Mads Kiilerich <mads@kiilerich.com>
parents:
17187
diff
changeset
|
240 |
loaddoc('hgignore')), |
f3fd9d6802b7
help: fix helptable indentation
Mads Kiilerich <mads@kiilerich.com>
parents:
17187
diff
changeset
|
241 |
(["phases"], _("Working with Phases"), loaddoc('phases')), |
25881
9de443515f1d
help: scripting help topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25660
diff
changeset
|
242 |
(['scripting'], _('Using Mercurial from scripts and automation'), |
9de443515f1d
help: scripting help topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25660
diff
changeset
|
243 |
loaddoc('scripting')), |
27376
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
244 |
(['internals'], _("Technical implementation topics"), |
fc810d950278
help: add "internals" topic
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27375
diff
changeset
|
245 |
internalshelp), |
31061
900996da577a
pager: move most help to a new help topic and deprecate extension
Augie Fackler <augie@google.com>
parents:
31059
diff
changeset
|
246 |
(['pager'], _("Pager Support"), loaddoc('pager')), |
13888
9e5407a67dea
help: sort help topics to make the output more readable (issue2751)
Yun Lee <yunlee.bj@gmail.com>
parents:
13593
diff
changeset
|
247 |
]) |
12820
0edc0aa7432d
help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents:
12818
diff
changeset
|
248 |
|
27379
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
249 |
# 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
|
250 |
subtopics = { |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
251 |
'internals': internalstable, |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
252 |
} |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
253 |
|
12820
0edc0aa7432d
help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents:
12818
diff
changeset
|
254 |
# 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
|
255 |
# returning the updated version |
14318
1f46be4689ed
help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents:
14317
diff
changeset
|
256 |
helphooks = {} |
12820
0edc0aa7432d
help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents:
12818
diff
changeset
|
257 |
|
0edc0aa7432d
help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents:
12818
diff
changeset
|
258 |
def addtopichook(topic, rewriter): |
0edc0aa7432d
help: add topic rewriting hooks
Patrick Mezard <pmezard@gmail.com>
parents:
12818
diff
changeset
|
259 |
helphooks.setdefault(topic, []).append(rewriter) |
13593
cc4721ed7a2a
help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents:
12828
diff
changeset
|
260 |
|
26414
c44b507e7c78
help: pass around ui to rewriter hooks (API)
Yuya Nishihara <yuya@tcha.org>
parents:
26413
diff
changeset
|
261 |
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
|
262 |
"""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
|
263 |
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
|
264 |
""" |
cc4721ed7a2a
help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents:
12828
diff
changeset
|
265 |
entries = [] |
cc4721ed7a2a
help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents:
12828
diff
changeset
|
266 |
for name in sorted(items): |
32615
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
267 |
text = (pycompat.getdoc(items[name]) or '').rstrip() |
26415
46af0adb5c37
help: hide deprecated filesets, revsets and template items if not verbose
Yuya Nishihara <yuya@tcha.org>
parents:
26414
diff
changeset
|
268 |
if (not text |
46af0adb5c37
help: hide deprecated filesets, revsets and template items if not verbose
Yuya Nishihara <yuya@tcha.org>
parents:
26414
diff
changeset
|
269 |
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
|
270 |
continue |
cc4721ed7a2a
help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents:
12828
diff
changeset
|
271 |
text = gettext(text) |
24098
067540702f64
help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24080
diff
changeset
|
272 |
if dedent: |
32549
633c635a790a
help: work around textwrap.dedent() only working on strings
Augie Fackler <raf@durin42.com>
parents:
32547
diff
changeset
|
273 |
# 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
|
274 |
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
|
275 |
lines = text.splitlines() |
16250
684864d54903
help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents:
16126
diff
changeset
|
276 |
doclines = [(lines[0])] |
684864d54903
help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents:
16126
diff
changeset
|
277 |
for l in lines[1:]: |
684864d54903
help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents:
16126
diff
changeset
|
278 |
# Stop once we find some Python doctest |
684864d54903
help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents:
16126
diff
changeset
|
279 |
if l.strip().startswith('>>>'): |
684864d54903
help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents:
16126
diff
changeset
|
280 |
break |
24098
067540702f64
help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24080
diff
changeset
|
281 |
if dedent: |
067540702f64
help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24080
diff
changeset
|
282 |
doclines.append(l.rstrip()) |
067540702f64
help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24080
diff
changeset
|
283 |
else: |
067540702f64
help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24080
diff
changeset
|
284 |
doclines.append(' ' + l.strip()) |
16250
684864d54903
help: strip doctest from dochelp
"Yann E. MORIN" <yann.morin.1998@free.fr>
parents:
16126
diff
changeset
|
285 |
entries.append('\n'.join(doclines)) |
13593
cc4721ed7a2a
help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents:
12828
diff
changeset
|
286 |
entries = '\n\n'.join(entries) |
cc4721ed7a2a
help: extract items doc generation function
Patrick Mezard <pmezard@gmail.com>
parents:
12828
diff
changeset
|
287 |
return doc.replace(marker, entries) |
14318
1f46be4689ed
help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents:
14317
diff
changeset
|
288 |
|
24098
067540702f64
help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24080
diff
changeset
|
289 |
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
|
290 |
def add(ui, topic, doc): |
c44b507e7c78
help: pass around ui to rewriter hooks (API)
Yuya Nishihara <yuya@tcha.org>
parents:
26413
diff
changeset
|
291 |
return makeitemsdoc(ui, topic, doc, marker, symbols, dedent=dedent) |
14318
1f46be4689ed
help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents:
14317
diff
changeset
|
292 |
addtopichook(topic, add) |
1f46be4689ed
help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents:
14317
diff
changeset
|
293 |
|
31793
69d8fcf20014
help: document bundle specifications
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31293
diff
changeset
|
294 |
addtopicsymbols('bundlespec', '.. bundlecompressionmarker', |
69d8fcf20014
help: document bundle specifications
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31293
diff
changeset
|
295 |
util.bundlecompressiontopics()) |
14686 | 296 |
addtopicsymbols('filesets', '.. predicatesmarker', fileset.symbols) |
24099
be83fd9d46d5
help.merge-tools: do not double document merge tools
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24098
diff
changeset
|
297 |
addtopicsymbols('merge-tools', '.. internaltoolsmarker', |
be83fd9d46d5
help.merge-tools: do not double document merge tools
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24098
diff
changeset
|
298 |
filemerge.internalsdoc) |
30769
e520f0f4b1cf
help: merge revsets.txt into revisions.txt
Martin von Zweigbergk <martinvonz@google.com>
parents:
30610
diff
changeset
|
299 |
addtopicsymbols('revisions', '.. predicatesmarker', revset.symbols) |
26436
a2291c9c85a1
templatekw: remove dockeywords hack
Yuya Nishihara <yuya@tcha.org>
parents:
26415
diff
changeset
|
300 |
addtopicsymbols('templates', '.. keywordsmarker', templatekw.keywords) |
14318
1f46be4689ed
help: consolidate topic hooks in help.py
Matt Mackall <mpm@selenic.com>
parents:
14317
diff
changeset
|
301 |
addtopicsymbols('templates', '.. filtersmarker', templatefilters.filters) |
24587
76c0b4cfa039
help: populate template functions via docstrings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24099
diff
changeset
|
302 |
addtopicsymbols('templates', '.. functionsmarker', templater.funcs) |
24098
067540702f64
help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24080
diff
changeset
|
303 |
addtopicsymbols('hgweb', '.. webcommandsmarker', webcommands.commands, |
067540702f64
help: teach topic symbols how to dedent
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24080
diff
changeset
|
304 |
dedent=True) |
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
|
305 |
|
32566
1b90036f42f0
help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org>
parents:
32549
diff
changeset
|
306 |
def help_(ui, commands, name, unknowncmd=False, full=True, subtopic=None, |
1b90036f42f0
help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org>
parents:
32549
diff
changeset
|
307 |
**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
|
308 |
''' |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
309 |
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
|
310 |
'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
|
311 |
''' |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
312 |
|
32143
964c6be36590
py3: make sure opts are passed and used correctly in help command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32076
diff
changeset
|
313 |
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
|
314 |
|
27378
c709b515218e
help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27377
diff
changeset
|
315 |
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
|
316 |
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
|
317 |
aliases, entry = cmdutil.findcmd(name, commands.table, |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
318 |
strict=unknowncmd) |
25660
328739ea70c3
global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24871
diff
changeset
|
319 |
except error.AmbiguousCommand as inst: |
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
|
320 |
# py3k fix: except vars can't be used outside the scope of the |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
321 |
# 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
|
322 |
prefix = inst.args[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
|
323 |
select = lambda c: c.lstrip('^').startswith(prefix) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
324 |
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
|
325 |
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
|
326 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
327 |
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
|
328 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
329 |
# 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
|
330 |
if getattr(entry[0], 'badalias', None): |
22162
7ada34676db8
help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents:
22160
diff
changeset
|
331 |
rst.append(entry[0].badalias + '\n') |
7ada34676db8
help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents:
22160
diff
changeset
|
332 |
if entry[0].unknowncmd: |
7ada34676db8
help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents:
22160
diff
changeset
|
333 |
try: |
7ada34676db8
help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents:
22160
diff
changeset
|
334 |
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
|
335 |
except error.UnknownCommand: |
7ada34676db8
help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org>
parents:
22160
diff
changeset
|
336 |
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
|
337 |
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
|
338 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
339 |
# 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
|
340 |
if len(entry) > 2: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
341 |
if entry[2].startswith('hg'): |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
342 |
rst.append("%s\n" % entry[2]) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
343 |
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
|
344 |
rst.append('hg %s %s\n' % (aliases[0], entry[2])) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
345 |
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
|
346 |
rst.append('hg %s\n' % aliases[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
|
347 |
# 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
|
348 |
if full and not ui.quiet and len(aliases) > 1: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
349 |
rst.append(_("\naliases: %s\n") % ', '.join(aliases[1:])) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
350 |
rst.append('\n') |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
351 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
352 |
# description |
32615
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
353 |
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
|
354 |
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
|
355 |
doc = _("(no help text 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
|
356 |
if util.safehasattr(entry[0], 'definition'): # aliased command |
28828
3640c1702c43
help: report source of aliases
timeless <timeless@mozdev.org>
parents:
28523
diff
changeset
|
357 |
source = entry[0].source |
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
|
358 |
if entry[0].definition.startswith('!'): # shell alias |
28828
3640c1702c43
help: report source of aliases
timeless <timeless@mozdev.org>
parents:
28523
diff
changeset
|
359 |
doc = (_('shell alias for::\n\n %s\n\ndefined by: %s\n') % |
3640c1702c43
help: report source of aliases
timeless <timeless@mozdev.org>
parents:
28523
diff
changeset
|
360 |
(entry[0].definition[1:], source)) |
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
|
361 |
else: |
28828
3640c1702c43
help: report source of aliases
timeless <timeless@mozdev.org>
parents:
28523
diff
changeset
|
362 |
doc = (_('alias for: hg %s\n\n%s\n\ndefined by: %s\n') % |
3640c1702c43
help: report source of aliases
timeless <timeless@mozdev.org>
parents:
28523
diff
changeset
|
363 |
(entry[0].definition, doc, source)) |
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
|
364 |
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
|
365 |
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
|
366 |
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
|
367 |
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
|
368 |
rst.extend(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
|
369 |
rst.append('\n') |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
370 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
371 |
# 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
|
372 |
# 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
|
373 |
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
|
374 |
mod = extensions.find(name) |
32615
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
375 |
doc = gettext(pycompat.getdoc(mod)) or '' |
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
|
376 |
if '\n' in doc.strip(): |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
377 |
msg = _("(use 'hg help -e %s' to show help for " |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
378 |
"the %s extension)") % (name, 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
|
379 |
rst.append('\n%s\n' % msg) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
380 |
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
|
381 |
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
|
382 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
383 |
# 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
|
384 |
if not ui.quiet and entry[1]: |
22116
161085f87b95
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents:
22115
diff
changeset
|
385 |
rst.append(optrst(_("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
|
386 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
387 |
if ui.verbose: |
22116
161085f87b95
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents:
22115
diff
changeset
|
388 |
rst.append(optrst(_("global options"), |
161085f87b95
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents:
22115
diff
changeset
|
389 |
commands.globalopts, 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
|
390 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
391 |
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
|
392 |
if not full: |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
393 |
rst.append(_("\n(use 'hg %s -h' to show more help)\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
|
394 |
% 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
|
395 |
elif not ui.quiet: |
22110
26f7c8033bed
help: tweak --verbose command help hint
Matt Mackall <mpm@selenic.com>
parents:
21796
diff
changeset
|
396 |
rst.append(_('\n(some details hidden, use --verbose ' |
26f7c8033bed
help: tweak --verbose command help hint
Matt Mackall <mpm@selenic.com>
parents:
21796
diff
changeset
|
397 |
'to show complete help)')) |
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
|
398 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
399 |
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
|
400 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
401 |
|
27325
eadbbd14bdc1
help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents:
27324
diff
changeset
|
402 |
def helplist(select=None, **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
|
403 |
# list of commands |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
404 |
if name == "shortlist": |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
405 |
header = _('basic commands:\n\n') |
20822
be87397f98c9
help: let 'hg help debug' show the list of secret debug commands
Mads Kiilerich <madski@unity3d.com>
parents:
20743
diff
changeset
|
406 |
elif name == "debug": |
be87397f98c9
help: let 'hg help debug' show the list of secret debug commands
Mads Kiilerich <madski@unity3d.com>
parents:
20743
diff
changeset
|
407 |
header = _('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
|
408 |
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
|
409 |
header = _('list of commands:\n\n') |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
410 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
411 |
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
|
412 |
cmds = {} |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
413 |
for c, e in commands.table.iteritems(): |
26845
7a77ee434179
help: replace some str.split() calls by str.partition() or str.rpartition()
Anton Shestakov <av6@dwimlabs.net>
parents:
26587
diff
changeset
|
414 |
f = c.partition("|")[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
|
415 |
if select and not select(f): |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
416 |
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
|
417 |
if (not select and name != 'shortlist' and |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
418 |
e[0].__module__ != commands.__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
|
419 |
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
|
420 |
if name == "shortlist" and not f.startswith("^"): |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
421 |
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
|
422 |
f = f.lstrip("^") |
32615
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
423 |
doc = pycompat.getdoc(e[0]) |
27323 | 424 |
if filtercmd(ui, f, 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
|
425 |
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
|
426 |
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
|
427 |
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
|
428 |
doc = _("(no help text 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
|
429 |
h[f] = doc.splitlines()[0].rstrip() |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
430 |
cmds[f] = c.lstrip("^") |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
431 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
432 |
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
|
433 |
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
|
434 |
if not ui.quiet: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
435 |
rst.append(_('no commands defined\n')) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
436 |
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
|
437 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
438 |
if not ui.quiet: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
439 |
rst.append(header) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
440 |
fns = sorted(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
|
441 |
for f in fns: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
442 |
if 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
|
443 |
commacmds = cmds[f].replace("|",", ") |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
444 |
rst.append(" :%s: %s\n" % (commacmds, h[f])) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
445 |
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
|
446 |
rst.append(' :%s: %s\n' % (f, h[f])) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
447 |
|
27325
eadbbd14bdc1
help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents:
27324
diff
changeset
|
448 |
ex = opts.get |
eadbbd14bdc1
help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents:
27324
diff
changeset
|
449 |
anyopts = (ex('keyword') or not (ex('command') or ex('extension'))) |
eadbbd14bdc1
help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents:
27324
diff
changeset
|
450 |
if not name and anyopts: |
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
|
451 |
exts = listexts(_('enabled extensions:'), extensions.enabled()) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
452 |
if 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
|
453 |
rst.append('\n') |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
454 |
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
|
455 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
456 |
rst.append(_("\nadditional help topics:\n\n")) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
457 |
topics = [] |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
458 |
for names, header, doc in helptable: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
459 |
topics.append((names[0], header)) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
460 |
for t, desc in topics: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
461 |
rst.append(" :%s: %s\n" % (t, desc)) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
462 |
|
22115
8465625f7364
help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents:
22114
diff
changeset
|
463 |
if ui.quiet: |
8465625f7364
help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents:
22114
diff
changeset
|
464 |
pass |
8465625f7364
help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents:
22114
diff
changeset
|
465 |
elif ui.verbose: |
22116
161085f87b95
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents:
22115
diff
changeset
|
466 |
rst.append('\n%s\n' % optrst(_("global options"), |
161085f87b95
help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com>
parents:
22115
diff
changeset
|
467 |
commands.globalopts, ui.verbose)) |
22115
8465625f7364
help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents:
22114
diff
changeset
|
468 |
if name == 'shortlist': |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
469 |
rst.append(_("\n(use 'hg help' for the full list " |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
470 |
"of commands)\n")) |
22115
8465625f7364
help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents:
22114
diff
changeset
|
471 |
else: |
8465625f7364
help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents:
22114
diff
changeset
|
472 |
if name == 'shortlist': |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
473 |
rst.append(_("\n(use 'hg help' for the full list of commands " |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
474 |
"or 'hg -v' for details)\n")) |
22115
8465625f7364
help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com>
parents:
22114
diff
changeset
|
475 |
elif name and not full: |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
476 |
rst.append(_("\n(use 'hg help %s' to show the full help " |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
477 |
"text)\n") % name) |
23624
861ddedfb402
help: suggest '-v -e' to get built-in aliases for extensions (issue4461)
Chingis Dugarzhapov <chingis.dug@gmail.com>
parents:
22637
diff
changeset
|
478 |
elif name and cmds and name in cmds.keys(): |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
479 |
rst.append(_("\n(use 'hg help -v -e %s' to show built-in " |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
480 |
"aliases and global options)\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
|
481 |
else: |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
482 |
rst.append(_("\n(use 'hg help -v%s' to show built-in aliases " |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
483 |
"and global options)\n") |
22118
9a299c39de01
help: normalize helplist hints
Matt Mackall <mpm@selenic.com>
parents:
22117
diff
changeset
|
484 |
% (name and " " + name or "")) |
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
|
485 |
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
|
486 |
|
27378
c709b515218e
help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27377
diff
changeset
|
487 |
def helptopic(name, subtopic=None): |
27379
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
488 |
# Look for sub-topic entry first. |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
489 |
header, doc = None, None |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
490 |
if subtopic and name in subtopics: |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
491 |
for names, header, doc in subtopics[name]: |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
492 |
if subtopic in names: |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
493 |
break |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
494 |
|
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
495 |
if not header: |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
496 |
for names, header, doc in helptable: |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
497 |
if name in names: |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
498 |
break |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
499 |
else: |
2278870bb997
help: support loading sub-topics
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27378
diff
changeset
|
500 |
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
|
501 |
|
18748
6e676fb6ea44
help: use a full header for topic titles
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
18746
diff
changeset
|
502 |
rst = [minirst.section(header)] |
6e676fb6ea44
help: use a full header for topic titles
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
18746
diff
changeset
|
503 |
|
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
|
504 |
# 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
|
505 |
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
|
506 |
rst.append(" %s\n" % _("(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
|
507 |
if callable(doc): |
26413
e0c572d4d112
help: pass around ui to doc loader (API)
Yuya Nishihara <yuya@tcha.org>
parents:
26371
diff
changeset
|
508 |
rst += [" %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
|
509 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
510 |
if not ui.verbose: |
22114
3ba1d7ca3dfd
help: normalize topic and extension verbose hints
Matt Mackall <mpm@selenic.com>
parents:
22113
diff
changeset
|
511 |
omitted = _('(some details hidden, use --verbose' |
3ba1d7ca3dfd
help: normalize topic and extension verbose hints
Matt Mackall <mpm@selenic.com>
parents:
22113
diff
changeset
|
512 |
' to show complete help)') |
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
|
513 |
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
|
514 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
515 |
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
|
516 |
cmdutil.findcmd(name, commands.table) |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
517 |
rst.append(_("\nuse 'hg help -c %s' to see help for " |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
518 |
"the %s command\n") % (name, 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
|
519 |
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
|
520 |
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
|
521 |
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
|
522 |
|
27378
c709b515218e
help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27377
diff
changeset
|
523 |
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
|
524 |
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
|
525 |
mod = extensions.find(name) |
32615
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
526 |
doc = gettext(pycompat.getdoc(mod)) or _('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
|
527 |
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
|
528 |
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
|
529 |
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
|
530 |
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
|
531 |
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
|
532 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
533 |
if '\n' not in 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
|
534 |
head, tail = 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
|
535 |
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
|
536 |
head, tail = doc.split('\n', 1) |
26845
7a77ee434179
help: replace some str.split() calls by str.partition() or str.rpartition()
Anton Shestakov <av6@dwimlabs.net>
parents:
26587
diff
changeset
|
537 |
rst = [_('%s extension - %s\n\n') % (name.rpartition('.')[-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
|
538 |
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
|
539 |
rst.extend(tail.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
|
540 |
rst.append('\n') |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
541 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
542 |
if not ui.verbose: |
22114
3ba1d7ca3dfd
help: normalize topic and extension verbose hints
Matt Mackall <mpm@selenic.com>
parents:
22113
diff
changeset
|
543 |
omitted = _('(some details hidden, use --verbose' |
3ba1d7ca3dfd
help: normalize topic and extension verbose hints
Matt Mackall <mpm@selenic.com>
parents:
22113
diff
changeset
|
544 |
' to show complete help)') |
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
|
545 |
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
|
546 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
547 |
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
|
548 |
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
|
549 |
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
|
550 |
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
|
551 |
ct = {} |
26845
7a77ee434179
help: replace some str.split() calls by str.partition() or str.rpartition()
Anton Shestakov <av6@dwimlabs.net>
parents:
26587
diff
changeset
|
552 |
modcmds = set([c.partition('|')[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
|
553 |
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
|
554 |
else: |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
555 |
rst.append(_("(use 'hg help extensions' for information on enabling" |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
556 |
" extensions)\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
|
557 |
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
|
558 |
|
27378
c709b515218e
help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27377
diff
changeset
|
559 |
def helpextcmd(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
|
560 |
cmd, ext, mod = extensions.disabledcmd(ui, 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
|
561 |
ui.configbool('ui', 'strict')) |
32615
c9318beb7c1a
py3: convert __doc__ back to bytes in help.py
Yuya Nishihara <yuya@tcha.org>
parents:
32566
diff
changeset
|
562 |
doc = gettext(pycompat.getdoc(mod)).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
|
563 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
564 |
rst = listexts(_("'%s' is provided by the following " |
27152
ac27b1b3be85
help: make help deprecated mention the extension
timeless <timeless@mozdev.org>
parents:
27151
diff
changeset
|
565 |
"extension:") % cmd, {ext: doc}, indent=4, |
ac27b1b3be85
help: make help deprecated mention the extension
timeless <timeless@mozdev.org>
parents:
27151
diff
changeset
|
566 |
showdeprecated=True) |
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
|
567 |
rst.append('\n') |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
568 |
rst.append(_("(use 'hg help extensions' for information on enabling " |
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
569 |
"extensions)\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
|
570 |
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
|
571 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
572 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
573 |
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
|
574 |
kw = opts.get('keyword') |
27325
eadbbd14bdc1
help: fix help -c/help -e/help -k
timeless <timeless@mozdev.org>
parents:
27324
diff
changeset
|
575 |
if kw or name is None and any(opts[o] for o in opts): |
32566
1b90036f42f0
help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org>
parents:
32549
diff
changeset
|
576 |
matches = topicmatch(ui, commands, name or '') |
26238
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
577 |
helpareas = [] |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
578 |
if opts.get('extension'): |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
579 |
helpareas += [('extensions', _('Extensions'))] |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
580 |
if opts.get('command'): |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
581 |
helpareas += [('commands', _('Commands'))] |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
582 |
if not helpareas: |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
583 |
helpareas = [('topics', _('Topics')), |
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
|
584 |
('commands', _('Commands')), |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
585 |
('extensions', _('Extensions')), |
26238
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
586 |
('extensioncommands', _('Extension Commands'))] |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
587 |
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
|
588 |
if matches[t]: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
589 |
rst.append('%s:\n\n' % title) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
590 |
rst.extend(minirst.maketable(sorted(matches[t]), 1)) |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
591 |
rst.append('\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
|
592 |
if not rst: |
eb6eaef7ae44
help: provide a more helpful message when no keyword are matched
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20823
diff
changeset
|
593 |
msg = _('no matches') |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
594 |
hint = _("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
|
595 |
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
|
596 |
elif name and name != 'shortlist': |
26238
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
597 |
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
|
598 |
if unknowncmd: |
26238
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
599 |
queries += [helpextcmd] |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
600 |
if opts.get('extension'): |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
601 |
queries += [helpext] |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
602 |
if opts.get('command'): |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
603 |
queries += [helpcmd] |
69da16b366ad
help: fix help argument parsing and documentation
timeless@mozdev.org
parents:
26196
diff
changeset
|
604 |
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
|
605 |
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
|
606 |
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
|
607 |
try: |
27378
c709b515218e
help: pass sub-topic into help query functions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27377
diff
changeset
|
608 |
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
|
609 |
break |
21289
c3784e3c3e8d
help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
21288
diff
changeset
|
610 |
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
|
611 |
pass |
c3784e3c3e8d
help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
21288
diff
changeset
|
612 |
else: |
c3784e3c3e8d
help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
21288
diff
changeset
|
613 |
if unknowncmd: |
c3784e3c3e8d
help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
21288
diff
changeset
|
614 |
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
|
615 |
else: |
c3784e3c3e8d
help: suggest keyword search when no topic is found
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
21288
diff
changeset
|
616 |
msg = _('no such help topic: %s') % name |
29974
7109d5ddeb0c
help: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29859
diff
changeset
|
617 |
hint = _("try 'hg help --keyword %s'") % name |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26436
diff
changeset
|
618 |
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
|
619 |
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
|
620 |
# 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
|
621 |
if not ui.quiet: |
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
622 |
rst = [_("Mercurial Distributed SCM\n"), '\n'] |
32547
0cec8ad579d4
help: convert dict to strkwargs
Augie Fackler <raf@durin42.com>
parents:
32291
diff
changeset
|
623 |
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
|
624 |
|
c0087d48ec3a
help: move the majority of the help command to the help module
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17837
diff
changeset
|
625 |
return ''.join(rst) |
31059
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
626 |
|
32566
1b90036f42f0
help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org>
parents:
32549
diff
changeset
|
627 |
def formattedhelp(ui, commands, name, keep=None, unknowncmd=False, full=True, |
1b90036f42f0
help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org>
parents:
32549
diff
changeset
|
628 |
**opts): |
31059
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
629 |
"""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
|
630 |
|
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
631 |
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
|
632 |
""" |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
633 |
if keep is None: |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
634 |
keep = [] |
31265
79715ba22f9c
help: avoid mutating passed-in `keep` list in `formattedhelp`
Augie Fackler <augie@google.com>
parents:
31129
diff
changeset
|
635 |
else: |
79715ba22f9c
help: avoid mutating passed-in `keep` list in `formattedhelp`
Augie Fackler <augie@google.com>
parents:
31129
diff
changeset
|
636 |
keep = list(keep) # make a copy so we can mutate this later |
31059
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
637 |
fullname = name |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
638 |
section = None |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
639 |
subtopic = None |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
640 |
if name and '.' in name: |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
641 |
name, remaining = name.split('.', 1) |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
642 |
remaining = encoding.lower(remaining) |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
643 |
if '.' in remaining: |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
644 |
subtopic, section = remaining.split('.', 1) |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
645 |
else: |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
646 |
if name in subtopics: |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
647 |
subtopic = remaining |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
648 |
else: |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
649 |
section = remaining |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
650 |
textwidth = ui.configint('ui', 'textwidth', 78) |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
651 |
termwidth = ui.termwidth() - 2 |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
652 |
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
|
653 |
textwidth = termwidth |
32566
1b90036f42f0
help: pass commands module by argument
Yuya Nishihara <yuya@tcha.org>
parents:
32549
diff
changeset
|
654 |
text = help_(ui, commands, name, |
31059
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
655 |
subtopic=subtopic, unknowncmd=unknowncmd, full=full, **opts) |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
656 |
|
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
657 |
formatted, pruned = minirst.format(text, textwidth, keep=keep, |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
658 |
section=section) |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
659 |
|
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
660 |
# We could have been given a weird ".foo" section without a name |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
661 |
# to look for, or we could have simply failed to found "foo.bar" |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
662 |
# because bar isn't a section of foo |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
663 |
if section and not (formatted and name): |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
664 |
raise error.Abort(_("help section not found: %s") % fullname) |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
665 |
|
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
666 |
if 'verbose' in pruned: |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
667 |
keep.append('omitted') |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
668 |
else: |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
669 |
keep.append('notomitted') |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
670 |
formatted, pruned = minirst.format(text, textwidth, keep=keep, |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
671 |
section=section) |
2a0c8e3636b0
help: move rst formatting of help documents into help.py
Augie Fackler <augie@google.com>
parents:
30812
diff
changeset
|
672 |
return formatted |