plugin detectident: fixes and improvements #883
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.
Suggestion cannot be applied right now. Please check back later.
Summary
When working with the lite-xl-plugins readme I noticed that besides the tokenizer been slow on files with long lines to make things worse, it was loading and saving the file really slow. Started searching for culprits and blaming things that weren't the cause but finally it was the detectindent plugin the culprit of almost all. Here is how slow loading and saving the readme with old indent:
detectindent-tokenizer.mp4
and the non tokenizer version:
detectindent-notokenizer.mp4
How I reached the 67x times figure? well in the past I tried to use the Doc class to generate previews for a symbol references on LSP plugin, but that was painfully slow so used io.open instead, anyways I wrote a benchmark doing that operation and with old detectindent took ~135 seconds, with new detetctindent it takes ~2s.
Besides performance also improved the algorithm to detect the spaces size, so files that where detected like this:
are now properly detected to:
Did testing on many files and I would dare say it should have a 99% accuracy 😄 but who knows for real...
That should sum it up!