Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove unnecessary parallel debouncing on selection change #2529

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions plugin/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,8 @@ def __repr__(self) -> str:
class DocumentSyncListener(sublime_plugin.ViewEventListener, AbstractViewListener):

ACTIVE_DIAGNOSTIC = "lsp_active_diagnostic"
code_actions_debounce_time = FEATURES_TIMEOUT
debounce_time = FEATURES_TIMEOUT
color_boxes_debounce_time = FEATURES_TIMEOUT
highlights_debounce_time = FEATURES_TIMEOUT
code_lenses_debounce_time = FEATURES_TIMEOUT

@classmethod
Expand Down Expand Up @@ -388,16 +387,19 @@ def on_selection_modified_async(self) -> None:
return
if not self._is_in_higlighted_region(first_region.b):
self._clear_highlight_regions()
if userprefs().document_highlight_style:
self._when_selection_remains_stable_async(self._do_highlights_async, first_region,
after_ms=self.highlights_debounce_time)
self._clear_code_actions_annotation()
if userprefs().show_code_actions:
self._when_selection_remains_stable_async(self._do_code_actions_async, first_region,
after_ms=self.code_actions_debounce_time)
if userprefs().document_highlight_style or userprefs().show_code_actions:
self._when_selection_remains_stable_async(
self._on_selection_modified_debounced_async, first_region, after_ms=self.debounce_time)
self._update_diagnostic_in_status_bar_async()
self._resolve_visible_code_lenses_async()

def _on_selection_modified_debounced_async(self) -> None:
if userprefs().document_highlight_style:
self._do_highlights_async()
if userprefs().show_code_actions:
self._do_code_actions_async()

def on_post_save_async(self) -> None:
# Re-determine the URI; this time it's guaranteed to be a file because ST can only save files to a real
# filesystem.
Expand Down Expand Up @@ -952,7 +954,7 @@ def _on_view_updated_async(self) -> None:
self._clear_highlight_regions()
if userprefs().document_highlight_style:
self._when_selection_remains_stable_async(
self._do_highlights_async, first_region, after_ms=self.highlights_debounce_time)
self._do_highlights_async, first_region, after_ms=self.debounce_time)
self.do_signature_help_async(manual=False)

def _update_stored_selection_async(self) -> tuple[sublime.Region | None, bool]:
Expand Down
6 changes: 3 additions & 3 deletions tests/test_code_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,11 +269,11 @@ def test_kind_matching(self) -> None:
class CodeActionsListenerTestCase(TextDocumentTestCase):
def setUp(self) -> Generator:
yield from super().setUp()
self.original_debounce_time = DocumentSyncListener.code_actions_debounce_time
DocumentSyncListener.code_actions_debounce_time = 0
self.original_debounce_time = DocumentSyncListener.debounce_time
DocumentSyncListener.debounce_time = 0

def tearDown(self) -> None:
DocumentSyncListener.code_actions_debounce_time = self.original_debounce_time
DocumentSyncListener.debounce_time = self.original_debounce_time
super().tearDown()

@classmethod
Expand Down