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.
I started another try to improve the performance of magit blame. This time I used a subprocess instead of libgit. Instead of doing everything in the main thread this implementation makes use of ng_async for parsing the blame output and additionally get the buffer positions for blame chunks. The latter takes most of the execution time of regular magit blame when using it in large buffers.
However I noticed that emacs can't handle the speed of the incoming chunks when trying to create the overlays for the whole file(at least for big files).
That's why I added a hook for
window-scroll-functions
so every time the window positions change the overlays are created for the visible part of the buffer. This seems to work well, but it's probably necessary to apply some optimizations to make it more stable.I think ng_async provides lots of possibilities to improve performance even if we can't use
LispObject
in rust threads.