diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-08-06 17:08:33 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-08-09 02:56:28 +0800 |
| commit | 5db50459092c0c2eb2e89ae3d31564331876b76a (patch) | |
| tree | db62106a58e30a99a2b77eaf5821605013b6a9d3 /mingling_cli/src/linter/cmd_explain.rs | |
| parent | 31dd2cf8e862cd71192869784d3a84849edba636 (diff) | |
chore: add shell completion for explain command
Diffstat (limited to 'mingling_cli/src/linter/cmd_explain.rs')
| -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 +} |
