editor: Improve performance of lsp_ext validation #22299
Merged
+30
−18
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.
We've received a complaint on Discord about bad multicursor performance. I too run 15k cursor simultaneously. The gist of the issue was in the lsp_ext; whenever we gather up actions to be registered on a buffer, we need to know whether a buffer has any of the languages for which we have LSP extensions. The problem stemed from the fact that we did a two-phase filtering. For each selection we'd first check whether this selection lies in a part of a file that is part of a language for which we have LSP extensions. Then, we'd check whether we're running a language server of interest for this buffer.
This is not optimal, because it would often do the redundant work:
In case where the file is not related at all, we end up resolving all of the selections which is pretty bad. This PR makes us skip buffers which are known to not match the criteria. It also caches the result of language server lookup for the buffers.
Closes #ISSUE
Release Notes: