help: fix help argument parsing and documentation
support combining -c and -e
previously -k was misdocumented:
* the first line didn't mention it
* the help half implied you could do help -k keyword topic
with these changes, -k just changes the search method
support -c and -e for -k searches
--- a/mercurial/commands.py Thu Sep 10 10:48:20 2015 -0400
+++ b/mercurial/commands.py Thu Sep 10 20:22:37 2015 -0400
@@ -3942,9 +3942,9 @@
@command('help',
[('e', 'extension', None, _('show only help for extensions')),
('c', 'command', None, _('show only help for commands')),
- ('k', 'keyword', '', _('show topics matching keyword')),
+ ('k', 'keyword', None, _('show topics matching keyword')),
],
- _('[-ec] [TOPIC]'),
+ _('[-eck] [TOPIC]'),
norepo=True)
def help_(ui, name=None, **opts):
"""show help for a given topic or a help overview
--- a/mercurial/help.py Thu Sep 10 10:48:20 2015 -0400
+++ b/mercurial/help.py Thu Sep 10 20:22:37 2015 -0400
@@ -475,11 +475,18 @@
rst = []
kw = opts.get('keyword')
if kw:
- matches = topicmatch(kw)
- for t, title in (('topics', _('Topics')),
+ matches = topicmatch(name)
+ helpareas = []
+ if opts.get('extension'):
+ helpareas += [('extensions', _('Extensions'))]
+ if opts.get('command'):
+ helpareas += [('commands', _('Commands'))]
+ if not helpareas:
+ helpareas = [('topics', _('Topics')),
('commands', _('Commands')),
('extensions', _('Extensions')),
- ('extensioncommands', _('Extension Commands'))):
+ ('extensioncommands', _('Extension Commands'))]
+ for t, title in helpareas:
if matches[t]:
rst.append('%s:\n\n' % title)
rst.extend(minirst.maketable(sorted(matches[t]), 1))
@@ -489,13 +496,14 @@
hint = _('try "hg help" for a list of topics')
raise util.Abort(msg, hint=hint)
elif name and name != 'shortlist':
+ queries = []
if unknowncmd:
- queries = (helpextcmd,)
- elif opts.get('extension'):
- queries = (helpext,)
- elif opts.get('command'):
- queries = (helpcmd,)
- else:
+ queries += [helpextcmd]
+ if opts.get('extension'):
+ queries += [helpext]
+ if opts.get('command'):
+ queries += [helpcmd]
+ if not queries:
queries = (helptopic, helpcmd, helpext, helpextcmd)
for f in queries:
try:
--- a/tests/test-help.t Thu Sep 10 10:48:20 2015 -0400
+++ b/tests/test-help.t Thu Sep 10 20:22:37 2015 -0400
@@ -988,6 +988,28 @@
helphook1
helphook2
+Test -e / -c / -k combinations
+
+ $ hg help -c progress
+ abort: no such help topic: progress
+ (try "hg help --keyword progress")
+ [255]
+ $ hg help -e progress |head -1
+ progress extension - show progress bars for some actions (DEPRECATED)
+ $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
+ Commands:
+ $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
+ Extensions:
+ $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
+ Extensions:
+ Commands:
+ $ hg help -c commit > /dev/null
+ $ hg help -e -c commit > /dev/null
+ $ hg help -e commit > /dev/null
+ abort: no such help topic: commit
+ (try "hg help --keyword commit")
+ [255]
+
Test keyword search help
$ cat > prefixedname.py <<EOF