From 213f5337cb91f10e788de1ebf527e8f3e120389d Mon Sep 17 00:00:00 2001 From: Janos Wortmann Date: Wed, 16 Oct 2024 18:44:06 +0200 Subject: [PATCH] Make DocumentSyncListener more efficient --- plugin/documents.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugin/documents.py b/plugin/documents.py index a08658d0a..f30dff33e 100644 --- a/plugin/documents.py +++ b/plugin/documents.py @@ -328,6 +328,8 @@ def session_views_async(self) -> list[SessionView]: return list(self._session_views.values()) def on_text_changed_async(self, change_count: int, changes: Iterable[sublime.TextChange]) -> None: + if not self.sessions_async(): + return if self.view.is_primary(): for sv in self.session_views_async(): sv.on_text_changed_async(change_count, changes) @@ -364,6 +366,8 @@ def on_activated_async(self) -> None: return if not self._registered: self._register_async() + if not self.sessions_async(): + return if userprefs().show_code_actions: self._do_code_actions_async() for sv in self.session_views_async(): @@ -382,6 +386,8 @@ def on_activated_async(self) -> None: sb.do_inlay_hints_async(self.view) def on_selection_modified_async(self) -> None: + if not self.sessions_async(): + return first_region, _ = self._update_stored_selection_async() if first_region is None: return @@ -483,6 +489,8 @@ def on_query_context(self, key: str, operator: int, operand: Any, match_all: boo return None def on_hover(self, point: int, hover_zone: int) -> None: + if not self.sessions_async(): + return if self.view.is_popup_visible(): return window = self.view.window() @@ -525,6 +533,8 @@ def _on_hover_gutter_async(self, point: int) -> None: on_navigate=lambda href: self._on_navigate(href, point)) def on_text_command(self, command_name: str, args: dict | None) -> tuple[str, dict] | None: + if not self.sessions_async(): + return None if command_name == "auto_complete": self._auto_complete_triggered_manually = True elif command_name == "show_scope_name" and userprefs().semantic_highlighting: @@ -540,6 +550,8 @@ def on_text_command(self, command_name: str, args: dict | None) -> tuple[str, di return None def on_post_text_command(self, command_name: str, args: dict[str, Any] | None) -> None: + if not self.sessions_async(): + return if command_name == 'paste': format_on_paste = self.view.settings().get('lsp_format_on_paste', userprefs().lsp_format_on_paste) if format_on_paste and self.session_async("documentRangeFormattingProvider"): @@ -553,6 +565,8 @@ def on_post_text_command(self, command_name: str, args: dict[str, Any] | None) - self.view.hide_popup() def on_query_completions(self, prefix: str, locations: list[int]) -> sublime.CompletionList | None: + if not self.sessions_async(): + return None completion_list = sublime.CompletionList() triggered_manually = self._auto_complete_triggered_manually self._auto_complete_triggered_manually = False # reset state for next completion popup