From e30428274dcb1a3835bfd2715c687c71577337f7 Mon Sep 17 00:00:00 2001 From: HactarCE <6060305+HactarCE@users.noreply.github.com> Date: Fri, 17 Oct 2025 14:56:15 -0400 Subject: [PATCH] wip --- .../agent_ui/src/acp/completion_provider.rs | 1 + .../src/context_picker/completion_provider.rs | 1 + crates/agent_ui/src/slash_command.rs | 1 + .../src/session/running/console.rs | 1 + crates/editor/src/actions.rs | 2 + crates/editor/src/editor.rs | 49 +++++++++++++++---- crates/inspector_ui/src/div_inspector.rs | 1 + crates/keymap_editor/src/keymap_editor.rs | 1 + 8 files changed, 48 insertions(+), 9 deletions(-) diff --git a/crates/agent_ui/src/acp/completion_provider.rs b/crates/agent_ui/src/acp/completion_provider.rs index 7588e9f53b32302b3a078f44b3cf85be56ca1b4b..03e036e951dca7b3457d45aca0907e7104d60ce0 100644 --- a/crates/agent_ui/src/acp/completion_provider.rs +++ b/crates/agent_ui/src/acp/completion_provider.rs @@ -692,6 +692,7 @@ impl CompletionProvider for ContextPickerCompletionProvider { buffer: &Entity, buffer_position: Anchor, _trigger: CompletionContext, + _snippets_only: bool, _window: &mut Window, cx: &mut Context, ) -> Task>> { diff --git a/crates/agent_ui/src/context_picker/completion_provider.rs b/crates/agent_ui/src/context_picker/completion_provider.rs index e030779eb8c37347410507a74d27299dbcdfbf7d..94d14ae2b47db87bcbc6c99a4f6c5d93458e6eb5 100644 --- a/crates/agent_ui/src/context_picker/completion_provider.rs +++ b/crates/agent_ui/src/context_picker/completion_provider.rs @@ -749,6 +749,7 @@ impl CompletionProvider for ContextPickerCompletionProvider { buffer: &Entity, buffer_position: Anchor, _trigger: CompletionContext, + _snippets_only: bool, _window: &mut Window, cx: &mut Context, ) -> Task>> { diff --git a/crates/agent_ui/src/slash_command.rs b/crates/agent_ui/src/slash_command.rs index c2f26c4f2ed33860196790746dd296e8c617b810..13cc99cccc970f4a82507604cc3a2a8a3eb3a07b 100644 --- a/crates/agent_ui/src/slash_command.rs +++ b/crates/agent_ui/src/slash_command.rs @@ -263,6 +263,7 @@ impl CompletionProvider for SlashCommandCompletionProvider { buffer: &Entity, buffer_position: Anchor, _: editor::CompletionContext, + _snippets_only: bool, window: &mut Window, cx: &mut Context, ) -> Task>> { diff --git a/crates/debugger_ui/src/session/running/console.rs b/crates/debugger_ui/src/session/running/console.rs index 635955dda9c1c26d7e501c7991d2afc9fa1c9bb1..7bdd6cf69fc025eb61868b4d502f7e98c3c07c83 100644 --- a/crates/debugger_ui/src/session/running/console.rs +++ b/crates/debugger_ui/src/session/running/console.rs @@ -521,6 +521,7 @@ impl CompletionProvider for ConsoleQueryBarCompletionProvider { buffer: &Entity, buffer_position: language::Anchor, _trigger: editor::CompletionContext, + _snippets_only: bool, _window: &mut Window, cx: &mut Context, ) -> Task>> { diff --git a/crates/editor/src/actions.rs b/crates/editor/src/actions.rs index 530a547bb9d28d9dadeb95f5e9e98425eb967a55..264a45a40faf9c7746fa30e81dbffe9143456d6c 100644 --- a/crates/editor/src/actions.rs +++ b/crates/editor/src/actions.rs @@ -220,6 +220,8 @@ pub struct ExpandExcerptsDown { pub struct ShowCompletions { #[serde(default)] pub(super) trigger: Option, + #[serde(default)] + pub(super) snippets_only: bool, } /// Handles text input in the editor. diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index d5fa2bd00961990020af61785a7950ad498655c2..ca25124a11ef2742ac3b1db39f5cf8591f8a5a83 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -3136,7 +3136,14 @@ impl Editor { }; if continue_showing { - self.show_completions(&ShowCompletions { trigger: None }, window, cx); + self.show_completions( + &ShowCompletions { + trigger: None, + snippets_only: false, + }, + window, + cx, + ); } else { self.hide_context_menu(window, cx); } @@ -4940,6 +4947,7 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { + dbg!(&text); let completions_source = self .context_menu .borrow() @@ -4956,27 +4964,28 @@ impl Editor { ignore_threshold: false, }), None, + false, window, cx, ); } Some(CompletionsMenuSource::Normal) | Some(CompletionsMenuSource::SnippetChoices) - | None - if self.is_completion_trigger( + | None => { + let snippets_only = !self.is_completion_trigger( text, trigger_in_words, completions_source.is_some(), cx, - ) => - { + ); self.show_completions( &ShowCompletions { trigger: Some(text.to_owned()).filter(|x| !x.is_empty()), + snippets_only, }, window, cx, - ) + ); } _ => { self.hide_context_menu(window, cx); @@ -5474,6 +5483,7 @@ impl Editor { ignore_threshold: true, }), None, + false, window, cx, ); @@ -5485,13 +5495,20 @@ impl Editor { window: &mut Window, cx: &mut Context, ) { - self.open_or_update_completions_menu(None, options.trigger.as_deref(), window, cx); + self.open_or_update_completions_menu( + None, + options.trigger.as_deref(), + options.snippets_only, + window, + cx, + ); } fn open_or_update_completions_menu( &mut self, requested_source: Option, trigger: Option<&str>, + snippets_only: bool, window: &mut Window, cx: &mut Context, ) { @@ -5673,6 +5690,7 @@ impl Editor { &buffer, buffer_position, completion_context, + snippets_only, window, cx, ); @@ -6105,7 +6123,14 @@ impl Editor { .as_ref() .is_some_and(|confirm| confirm(intent, window, cx)); if show_new_completions_on_confirm { - self.show_completions(&ShowCompletions { trigger: None }, window, cx); + self.show_completions( + &ShowCompletions { + trigger: None, + snippets_only: false, + }, + window, + cx, + ); } let provider = self.completion_provider.as_ref()?; @@ -22815,6 +22840,7 @@ pub trait CompletionProvider { buffer: &Entity, buffer_position: text::Anchor, trigger: CompletionContext, + snippets_only: bool, window: &mut Window, cx: &mut Context, ) -> Task>>; @@ -23189,6 +23215,7 @@ impl CompletionProvider for Entity { buffer: &Entity, buffer_position: text::Anchor, options: CompletionContext, + snippets_only: bool, _window: &mut Window, cx: &mut Context, ) -> Task>> { @@ -23196,7 +23223,11 @@ impl CompletionProvider for Entity { let snippets = snippet_completions(project, buffer, buffer_position, cx); let project_completions = project.completions(buffer, buffer_position, options, cx); cx.background_spawn(async move { - let mut responses = project_completions.await?; + let mut responses = if snippets_only { + Vec::new() + } else { + project_completions.await? + }; let snippets = snippets.await?; if !snippets.completions.is_empty() { responses.push(snippets); diff --git a/crates/inspector_ui/src/div_inspector.rs b/crates/inspector_ui/src/div_inspector.rs index da99c5b92c1e6ad4d8a3e92ed2e565bcb518e227..268fba573c5c51fe26a21382f37ae614e7d9759c 100644 --- a/crates/inspector_ui/src/div_inspector.rs +++ b/crates/inspector_ui/src/div_inspector.rs @@ -645,6 +645,7 @@ impl CompletionProvider for RustStyleCompletionProvider { buffer: &Entity, position: Anchor, _: editor::CompletionContext, + _snippets_only: bool, _window: &mut Window, cx: &mut Context, ) -> Task>> { diff --git a/crates/keymap_editor/src/keymap_editor.rs b/crates/keymap_editor/src/keymap_editor.rs index fce98ef596e2fb77cdf8091755de39ea55dce615..82b97e5ff1bfd8c746d26d228bd2da32d2594571 100644 --- a/crates/keymap_editor/src/keymap_editor.rs +++ b/crates/keymap_editor/src/keymap_editor.rs @@ -2904,6 +2904,7 @@ impl CompletionProvider for KeyContextCompletionProvider { buffer: &Entity, buffer_position: language::Anchor, _trigger: editor::CompletionContext, + _snippets_only: bool, _window: &mut Window, cx: &mut Context, ) -> gpui::Task>> {