Skip to content

Commit

Permalink
Follow global settings more accurately whether to show snippet comple…
Browse files Browse the repository at this point in the history
…tions (#2017)
  • Loading branch information
jwortmann authored Aug 13, 2022
1 parent 05db81a commit b9b4aeb
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions plugin/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down Expand Up @@ -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", {})
Expand Down Expand Up @@ -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)
Expand All @@ -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]
Expand All @@ -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)
Expand Down

0 comments on commit b9b4aeb

Please sign in to comment.