Holding ^C made git.exe hang while cmd.exe (Clink) updated the prompt.
The prompt script had three problems:
1. It invoked `git config` every time a prompt was displayed, to
figure out where to skip invoking `git status`. But it even did
that if the current directory wasn't part of a git repo.
2. It invoked `git config` two times for every single prompt, to
attempt to improve performance if the user disables `git status`
coloring. But two times for every single prompt is expensive, so
it has the opposite effect in the general case, and noticeably
degrades performance.
3. It invoked `git config` using a blocking call, instead of using the
async prompt support in Clink. That significantly reduced the
benefit of having used async prompt filtering for `git status`.
Now the `git config` invocations use async prompt filtering, which lets
the prompt display instantaneously. It also now uses a timer to avoid
invoking `git config` repeatedly when new prompts show up in rapid
succession.
Also, the `cmderGitStatusOptIn` variable is no longer leaked into the
Lua global namespace.
These changes resolve the issue: holding ^C is very fast and no longer
causes git.exe to hang.
use conemu-msys2-64 connector would help to solve some display problems under Git Bash like character/cursor drifting, `tmux` display wrong, and so on. As the default profile is hardcoded and ConEmu upstream has solved it by using msys-connector, please add it.
* use "PS" instead of no-width "$([char]0x200B)" character in prompt (credit @skycommand)
* fixes additional space after the lambada and before the path
* display "PS" before path to distinguish between PowerShell and CMD