From b9b4aeb373c7b57c43c3e03be2de9d8c96c7c0f3 Mon Sep 17 00:00:00 2001 From: jwortmann Date: Sat, 13 Aug 2022 11:48:52 +0200 Subject: [PATCH] Follow global settings more accurately whether to show snippet completions (#2017) --- plugin/documents.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/plugin/documents.py b/plugin/documents.py index f3d8fd78a..40992f239 100644 --- a/plugin/documents.py +++ b/plugin/documents.py @@ -152,6 +152,7 @@ def on_change() -> None: self._uri = existing_uri else: self.set_uri(view_to_uri(view)) + self._auto_complete_triggered_manually = False self._registration = SettingsRegistration(view.settings(), on_change=on_change) self._setup() @@ -425,7 +426,9 @@ def on_hover(self, point: int, hover_zone: int) -> None: on_navigate=lambda href: self._on_navigate(href, point)) def on_text_command(self, command_name: str, args: Optional[dict]) -> Optional[Tuple[str, dict]]: - if command_name == "show_scope_name" and userprefs().semantic_highlighting: + if command_name == "auto_complete": + self._auto_complete_triggered_manually = True + elif command_name == "show_scope_name" and userprefs().semantic_highlighting: session = self.session_async("semanticTokensProvider") if session: return ("lsp_show_scope_name", {}) @@ -680,6 +683,8 @@ def render_highlights_on_main_thread() -> None: # --- textDocument/complete ---------------------------------------------------------------------------------------- def _on_query_completions_async(self, resolve_completion_list: ResolveCompletionsFn, location: int) -> None: + triggered_manually = self._auto_complete_triggered_manually + self._auto_complete_triggered_manually = False # reset state for next completion popup sessions = list(self.sessions_async('completionProvider')) if not sessions or not self.view.is_valid(): resolve_completion_list([], 0) @@ -697,12 +702,13 @@ def completion_request() -> Promise[ResolvedCompletions]: completion_promises.append(completion_request()) Promise.all(completion_promises).then( - lambda responses: self._on_all_settled(responses, resolve_completion_list)) + lambda responses: self._on_all_settled(responses, resolve_completion_list, triggered_manually)) def _on_all_settled( self, responses: List[ResolvedCompletions], - resolve_completion_list: ResolveCompletionsFn + resolve_completion_list: ResolveCompletionsFn, + triggered_manually: bool ) -> None: LspResolveDocsCommand.completions = {} items = [] # type: List[sublime.CompletionItem] @@ -713,7 +719,9 @@ def _on_all_settled( flags |= sublime.INHIBIT_EXPLICIT_COMPLETIONS if prefs.inhibit_word_completions: flags |= sublime.INHIBIT_WORD_COMPLETIONS - include_snippets = self.view.settings().get("auto_complete_include_snippets") + view_settings = self.view.settings() + include_snippets = view_settings.get("auto_complete_include_snippets") and \ + (triggered_manually or view_settings.get("auto_complete_include_snippets_when_typing")) for response, session_name in responses: if isinstance(response, Error): errors.append(response)