Mercurial > hg-stable
changeset 39366:d30867a745a1
help: rewrite parsing of help topic to not drop section name with dots
A subtopic is no longer lowercased since it should be considered a part of
a topic path, not a section filter.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 05 Aug 2018 12:42:10 +0900 |
parents | fb9ee1ba5e42 |
children | b2feccc199c2 |
files | mercurial/help.py tests/test-help.t |
diffstat | 2 files changed, 21 insertions(+), 57 deletions(-) [+] |
line wrap: on
line diff
--- 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 + + # <fullname> := <name>[.<subtopic][.<section>] + 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:
--- a/tests/test-help.t Sun Aug 05 12:48:02 2018 +0900 +++ b/tests/test-help.t Sun Aug 05 12:42:10 2018 +0900 @@ -1344,52 +1344,14 @@ Test section name with dot $ hg help config.ui.username - "auth.username" - Optional. Username to authenticate with. If not given, and the remote - site requires basic or digest authentication, the user will be - prompted for it. Environment variables are expanded in the username - letting you do "foo.username = $USER". If the URI includes a username, - only "[auth]" entries with a matching username or without a username - will be considered. - - "smtp.username" - Optional. User name for authenticating with the SMTP server. (default: - None) - - "ui.username" - The committer of a changeset created when running "commit". Typically - a person's name and email address, e.g. "Fred Widget - <fred@example.com>". Environment variables in the username are - expanded. - - (default: "$EMAIL" or "username@hostname". If the username in hgrc is - empty, e.g. if the system admin set "username =" in the system hgrc, - it has to be specified manually or in a different hgrc file) - + abort: help section not found: config.ui.username + [255] $ hg help config.annotate.git - "diff.git" - Use git extended diff format. - + abort: help section not found: config.annotate.git + [255] $ hg help config.update.check - "merge-tools.check" - A list of merge success-checking options: - - "changed" - Ask whether merge was successful when the merged file shows no - changes. - - "conflicts" - Check whether there are conflicts even though the tool reported - success. - - "prompt" - Always prompt for merge success, regardless of success reported by - tool. - - - $ hg help config.commands.update.check "commands.update.check" Determines what level of checking 'hg update' will perform before moving to a destination revision. Valid values are "abort", "none", @@ -1402,6 +1364,10 @@ changes, if any are present. (default: "linear") + $ hg help config.commands.update.check + abort: help section not found: config.commands.update.check + [255] + Unrelated trailing paragraphs shouldn't be included $ hg help config.extramsg | grep '^$'