Fix https://github.com/cmderdev/cmder/issues/2789#2791
Merged
DRSDavidSoft merged 1 commit intocmderdev:masterfrom Dec 5, 2022
Merged
Fix https://github.com/cmderdev/cmder/issues/2789#2791DRSDavidSoft merged 1 commit intocmderdev:masterfrom
DRSDavidSoft merged 1 commit intocmderdev:masterfrom
Conversation
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.
Contributor
|
👍🏻 LGTM! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Holding ^C made git.exe hang while cmd.exe (Clink) updated the prompt.
The prompt script had three problems:
git configevery time a prompt was displayed, to figure out where to skip invokinggit status. But it even did that if the current directory wasn't part of a git repo.git configtwo times for every single prompt, to attempt to improve performance if the user disablesgit statuscoloring. But two times for every single prompt is expensive, so it has the opposite effect in the general case, and noticeably degrades performance.git configusing a blocking call, instead of using the async prompt support in Clink. That significantly reduced the benefit of having used async prompt filtering forgit status.Now the
git configinvocations use async prompt filtering, which lets the prompt display instantaneously. It also now uses a timer to avoid invokinggit configrepeatedly when new prompts show up in rapid succession.Also, the
cmderGitStatusOptInvariable 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.