diff: when looking for diff configs, support a configurable prefix
In a future commit, I want to make it possible to have the diff options pulled
from (as an example) `commands.commit.interactive.ignorews`; previously we only
supported this for customizable sections (so this would have needed a
`commit-interactive` section and been named `commit-interactive.ignorews`, which
felt a bit weird.
Differential Revision: https://phab.mercurial-scm.org/D5833
config: extract diff-related coreconfigitem()s to a helper method
We already have 'annotate' and 'diff' that use the same set of options, and I
want to add more in a followup commit, so I'm attempting to reduce maintenance
burden and duplication by making it possible to register all of them at once.
Differential Revision: https://phab.mercurial-scm.org/D5832
commit: ignore diff whitespace settings when doing `commit -i` (
issue5839)
Previously, we respected options like `diff.ignoreblanklines` and
`diff.ignorews`. This can cause problems when the user is attempting to
actually commit the blank line change. Specifically, the split extension can get
into an infinite loop because it detects that the working copy is not clean, but
when we get the diff we don't see the changes, so it just skips popping up the
chunk selection flow, saying there's no changes to record.
These options are primarily meant for viewing diffs; it is highly unlikely that
someone is actually intending to add extraneous whitespace and have it ignored
if they attempt to interactively commit (but *not* ignored if they
non-interactively commit).
Differential Revision: https://phab.mercurial-scm.org/D5744
tests: add syntax warnings on Python 3.8 in python-zstandard
These are warnings from upstream test code. Let's just acknowledge them
for now. These should go away in a future python-zstandard release :)
Differential Revision: https://phab.mercurial-scm.org/D5846
check-py3-compat: manually format and print warnings
The warnings mechanism may print to stderr on Python 3. Independent buffering
of stdout and stderr can lead to warnings output not being printed properly.
This commit traps warnings when executing individual files and prints
warnings to stdout so output is deterministic.
Differential Revision: https://phab.mercurial-scm.org/D5845
check-py3-compat: provide filename to ast.parse()
This ensures any warning/error messages print a valid filename instead of
potentially '<unknown>'.
Differential Revision: https://phab.mercurial-scm.org/D5844
doc: escape backslash
This avoids a SyntaxWarning on Python 3.8 due to invalid \ escape.
Differential Revision: https://phab.mercurial-scm.org/D5843
testparseutil: escape backslash in docstring
This is funky. This inline Python code is part of a docstring, which
means the string is interpreted first. So any backslashes need double
escaping. So even though this is already a br'', we still need to escape.
Differential Revision: https://phab.mercurial-scm.org/D5842