# HG changeset patch # User Nathan Goldbaum # Date 2019-05-23 15:14:32 # Node ID ad55a0a5894fd9771eb1fe6eb758be05cb198cc2 # Parent a84564b1a0b1dd58174ff29adbf88a0a033e5251 help: include subtopic in error message if passed Differential Revision: https://phab.mercurial-scm.org/D6442 diff --git a/mercurial/help.py b/mercurial/help.py --- a/mercurial/help.py +++ b/mercurial/help.py @@ -453,7 +453,7 @@ def inserttweakrc(ui, topic, doc): addtopichook('config', inserttweakrc) def help_(ui, commands, name, unknowncmd=False, full=True, subtopic=None, - **opts): + fullname=None, **opts): ''' Generate the help for 'name' as unformatted restructured text. If 'name' is None, describe the commands available. @@ -814,8 +814,16 @@ def help_(ui, commands, name, unknowncmd if unknowncmd: raise error.UnknownCommand(name) else: - msg = _('no such help topic: %s') % name - hint = _("try 'hg help --keyword %s'") % name + if fullname: + formatname = fullname + else: + formatname = name + if subtopic: + hintname = subtopic + else: + hintname = name + msg = _('no such help topic: %s') % formatname + hint = _("try 'hg help --keyword %s'") % hintname raise error.Abort(msg, hint=hint) else: # program name @@ -850,7 +858,7 @@ def formattedhelp(ui, commands, fullname termwidth = ui.termwidth() - 2 if textwidth <= 0 or termwidth < textwidth: textwidth = termwidth - text = help_(ui, commands, name, + text = help_(ui, commands, name, fullname=fullname, subtopic=subtopic, unknowncmd=unknowncmd, full=full, **opts) blocks, pruned = minirst.parse(text, keep=keep) diff --git a/tests/test-help.t b/tests/test-help.t --- a/tests/test-help.t +++ b/tests/test-help.t @@ -1303,6 +1303,13 @@ sub-topics can be accessed *empty chunk* at the end of each *delta group* denotes the boundary to the next filelog sub-segment. +non-existent subtopics print an error + + $ hg help internals.foo + abort: no such help topic: internals.foo + (try 'hg help --keyword foo') + [255] + test advanced, deprecated and experimental options are hidden in command help $ hg help debugoptADV hg debugoptADV