diff --git a/mercurial/help.py b/mercurial/help.py --- a/mercurial/help.py +++ b/mercurial/help.py @@ -453,7 +453,7 @@ 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. @@ -816,8 +816,16 @@ 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 @@ -852,7 +860,7 @@ 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 @@ *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