Improve performance of semantic indentation by caching rules #76
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've noticed that reindenting big file is pretty slow, profiler report indicated that the bottleneck is the calculation of combined indentation rules from default settings and user customizations:
this is called every time we need to calculate indentation for a single line.
This PR introduces buffer local variable
clojure-ts--semantic-indent-rules-cache
which stores pre-calculated rules. This variable is set whenclojure-ts-mode
is activated and updated every time whenclojure-ts-semantic-indent-rules
is updated or file local variables are updated (in case when indentation rules are defined in.dir-locals.el
for example.Before submitting a PR mark the checkboxes for the items you've done (if you
think a checkbox does not apply, then leave it unchecked):
M-x checkdoc
and fixed any warnings in the code you've written.Thanks!