Make updating info faster for multi-cursor edits #122
Merged
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.


With this PR, we take advantage of the fact that the information we present in status-bar is only based on the last cursor and selection. This means we can ignore most of the selection/cursor change events and only update the UI when the last event arrives.
Before
(Total:
~ 330ms, benchmarks performed by editing 3000 lines, inserting 5 characters)After
(Total:馃悗 )
~ 7ms, 47x fasterSome thoughts
I wondered if we had to expose richer events in
TextEditorand avoid to perform this last cursor/selection comparison, but ultimately I believe it's fine to let the clients decide when to perform certain events without clutteringTextEditor's public interface with events that can be synthesized pretty easily./cc: @nathansobo @maxbrunsfeld