diff -r fb9ee1ba5e42 -r d30867a745a1 mercurial/help.py --- a/mercurial/help.py Sun Aug 05 12:48:02 2018 +0900 +++ b/mercurial/help.py Sun Aug 05 12:42:10 2018 +0900 @@ -642,8 +642,8 @@ return ''.join(rst) -def formattedhelp(ui, commands, name, keep=None, unknowncmd=False, full=True, - **opts): +def formattedhelp(ui, commands, fullname, keep=None, unknowncmd=False, + full=True, **opts): """get help for a given topic (as a dotted name) as rendered rst Either returns the rendered help text or raises an exception. @@ -652,19 +652,17 @@ keep = [] else: keep = list(keep) # make a copy so we can mutate this later - fullname = name - section = None - subtopic = None - if name and '.' in name: - name, remaining = name.split('.', 1) - remaining = encoding.lower(remaining) - if '.' in remaining: - subtopic, section = remaining.split('.', 1) - else: - if name in subtopics: - subtopic = remaining - else: - section = remaining + + # := [.] + name = subtopic = section = None + if fullname is not None: + nameparts = fullname.split('.') + name = nameparts.pop(0) + if nameparts and name in subtopics: + subtopic = nameparts.pop(0) + if nameparts: + section = encoding.lower('.'.join(nameparts)) + textwidth = ui.configint('ui', 'textwidth') termwidth = ui.termwidth() - 2 if textwidth <= 0 or termwidth < textwidth: