diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-08-06 17:08:33 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-08-07 16:57:24 +0800 |
| commit | de1b1860e13206b456c38d13fc4032ae5ab3a9f6 (patch) | |
| tree | 3b62efb5212e20c2e091a0b1662b42a4ee20ced4 /mingling_cli | |
| parent | d026b05624df4ab8a0be1c57adeb4947b566902d (diff) | |
chore: add shell completion for explain command
Diffstat (limited to 'mingling_cli')
| -rw-r--r-- | mingling_cli/src/linter/cmd_explain.rs | 23 |
1 files changed, 20 insertions, 3 deletions
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<String> = 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 +} |
