Show More
@@ -6,9 +6,9 b'' | |||
|
6 | 6 | # GNU General Public License version 2 or any later version. |
|
7 | 7 | |
|
8 | 8 | from i18n import gettext, _ |
|
9 | import sys, os | |
|
9 | import itertools, sys, os | |
|
10 | 10 | import extensions, revset, fileset, templatekw, templatefilters, filemerge |
|
11 | import util | |
|
11 | import encoding, util | |
|
12 | 12 | |
|
13 | 13 | def listexts(header, exts, indent=1): |
|
14 | 14 | '''return a text listing of the given extensions''' |
@@ -27,6 +27,54 b' def extshelp():' | |||
|
27 | 27 | doc += listexts(_('disabled extensions:'), extensions.disabled()) |
|
28 | 28 | return doc |
|
29 | 29 | |
|
30 | def topicmatch(kw): | |
|
31 | """Return help topics matching kw. | |
|
32 | ||
|
33 | Returns {'section': [(name, summary), ...], ...} where section is | |
|
34 | one of topics, commands, extensions, or extensioncommands. | |
|
35 | """ | |
|
36 | kw = encoding.lower(kw) | |
|
37 | def lowercontains(container): | |
|
38 | return kw in encoding.lower(_(container)) | |
|
39 | results = {'topics': [], | |
|
40 | 'commands': [], | |
|
41 | 'extensions': [], | |
|
42 | 'extensioncommands': [], | |
|
43 | } | |
|
44 | for names, header, doc in helptable: | |
|
45 | if (sum(map(lowercontains, names)) | |
|
46 | or lowercontains(header) | |
|
47 | or lowercontains(doc())): | |
|
48 | results['topics'].append((names[0], header)) | |
|
49 | import commands # avoid cycle | |
|
50 | for cmd, entry in commands.table.iteritems(): | |
|
51 | if cmd.startswith('debug'): | |
|
52 | continue | |
|
53 | if len(entry) == 3: | |
|
54 | summary = entry[2] | |
|
55 | else: | |
|
56 | summary = '' | |
|
57 | docs = getattr(entry[0], '__doc__', None) or '' | |
|
58 | if kw in cmd or lowercontains(summary) or lowercontains(docs): | |
|
59 | doclines = _(docs).splitlines() | |
|
60 | if doclines: | |
|
61 | summary = doclines[0] | |
|
62 | cmdname = cmd.split('|')[0].lstrip('^') | |
|
63 | results['commands'].append((cmdname, summary)) | |
|
64 | for name, docs in itertools.chain( | |
|
65 | extensions.enabled().iteritems(), | |
|
66 | extensions.disabled().iteritems()): | |
|
67 | # extensions.load ignores the UI argument | |
|
68 | mod = extensions.load(None, name, '') | |
|
69 | if lowercontains(name) or lowercontains(docs): | |
|
70 | results['extensions'].append((name, _(docs).splitlines()[0])) | |
|
71 | for cmd, entry in getattr(mod, 'cmdtable', {}).iteritems(): | |
|
72 | if kw in cmd or lowercontains(entry[2]): | |
|
73 | cmdname = cmd.split('|')[0].lstrip('^') | |
|
74 | results['extensioncommands'].append( | |
|
75 | (cmdname, _(getattr(cmd, '__doc__', '')))) | |
|
76 | return results | |
|
77 | ||
|
30 | 78 | def loaddoc(topic): |
|
31 | 79 | """Return a delayed loader for help/topic.txt.""" |
|
32 | 80 |
General Comments 0
You need to be logged in to leave comments.
Login now