aboutsummaryrefslogtreecommitdiff
path: root/mingling_cli
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-06 17:08:33 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-07 16:57:24 +0800
commitde1b1860e13206b456c38d13fc4032ae5ab3a9f6 (patch)
tree3b62efb5212e20c2e091a0b1662b42a4ee20ced4 /mingling_cli
parentd026b05624df4ab8a0be1c57adeb4947b566902d (diff)
chore: add shell completion for explain command
Diffstat (limited to 'mingling_cli')
-rw-r--r--mingling_cli/src/linter/cmd_explain.rs23
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
+}