From 58ef8a8f42a68c7a81118ef9120705730ce3f458 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sat, 11 Apr 2026 16:50:57 +0800 Subject: Add shell completion script generation feature --- mingling_core/src/asset/comp.rs | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'mingling_core/src/asset') diff --git a/mingling_core/src/asset/comp.rs b/mingling_core/src/asset/comp.rs index eeef0c0..3c22e12 100644 --- a/mingling_core/src/asset/comp.rs +++ b/mingling_core/src/asset/comp.rs @@ -11,7 +11,7 @@ pub use shell_ctx::*; #[doc(hidden)] pub use suggest::*; -use crate::{ProgramCollect, this}; +use crate::{ProgramCollect, exec::match_user_input, this}; /// Trait for implementing completion logic. /// @@ -36,15 +36,34 @@ pub struct CompletionHelper; impl CompletionHelper { pub fn exec_completion

(ctx: &ShellContext) -> Suggest where - P: ProgramCollect + Display + 'static, + P: ProgramCollect + Display + 'static, { let program = this::

(); - Suggest::FileCompletion + let suggest = if let Some((dispatcher, args)) = match_user_input(program).ok() { + let begin = dispatcher.begin(args); + if let crate::ChainProcess::Ok((any, _)) = begin { + Some(P::do_comp(&any, ctx)) + } else { + None + } + } else { + None + }; + + match suggest { + Some(suggest) => suggest, + None => default_completion(ctx), + } } pub fn render_suggest

(ctx: ShellContext, suggest: Suggest) where - P: ProgramCollect + Display + 'static, + P: ProgramCollect + Display + 'static, { + todo!() } } + +fn default_completion(ctx: &ShellContext) -> Suggest { + todo!() +} -- cgit