# HG changeset patch # User timeless@mozdev.org # Date 1441930957 14400 # Node ID 69da16b366ada42014a9b9e05fec07119b9c1977 # Parent 1c6f7cc52da9d42c1098b1c0fae6f0e0da627556 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 diff -r 1c6f7cc52da9 -r 69da16b366ad mercurial/commands.py --- 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 diff -r 1c6f7cc52da9 -r 69da16b366ad mercurial/help.py --- 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: diff -r 1c6f7cc52da9 -r 69da16b366ad tests/test-help.t --- 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 <