mirror of
https://github.com/cmderdev/cmder.git
synced 2025-02-10 15:39:07 +08:00
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. |
||
---|---|---|
.. | ||
bin | ||
lib | ||
psmodules | ||
clink_settings.default | ||
clink.lua | ||
cmder_exinit | ||
cmder_prompt_config.lua.default | ||
cmder.sh | ||
ConEmu.xml.default | ||
git-prompt.sh | ||
init.bat | ||
profile.ps1 | ||
Readme.md | ||
sources.json | ||
user_aliases.cmd.default | ||
user_profile.cmd.default | ||
user_profile.ps1.default | ||
user_profile.sh.default |
Vendor
Third parties software & init script.