From c944d8dc88b73678d1307a765dc2b0b8d776a22f Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Thu, 6 Aug 2026 17:08:33 +0800 Subject: chore: add shell completion for explain command --- mingling_cli/src/linter/cmd_explain.rs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'mingling_cli/src/linter/cmd_explain.rs') diff --git a/mingling_cli/src/linter/cmd_explain.rs b/mingling_cli/src/linter/cmd_explain.rs index d76cf65..ab7a08f 100644 --- a/mingling_cli/src/linter/cmd_explain.rs +++ b/mingling_cli/src/linter/cmd_explain.rs @@ -1,8 +1,8 @@ use mingling::{ - Grouped, Routable, StructuralData, + Grouped, Routable, ShellContext, StructuralData, Suggest, SuggestItem, macros::{ - arg, buffer, chain, dispatcher, metadata, pack, pack_err_structural, r_println, renderer, - routeify, + arg, buffer, chain, completion, dispatcher, metadata, pack, pack_err_structural, r_println, + renderer, routeify, }, metadata::Description, picker::EntryPicker, @@ -121,3 +121,20 @@ pub fn render_error_no_such_lint(err: ErrorNoSuchLint) { r_println!(" {}", entry.name); } } + +#[completion(EntryExplain)] +pub fn complete_explain(ctx: &ShellContext) -> Suggest { + if ctx.previous_word != "explain" { + return Suggest::FileCompletion; + } + let lints: Vec = lint_registry() + .lints + .iter() + .map(|l| l.name.clone()) + .collect(); + let mut suggest = Suggest::new(); + for lint in lints { + suggest.insert(SuggestItem::Simple(lint)); + } + suggest +} -- cgit