aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-06 17:08:33 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-06 17:08:33 +0800
commitc944d8dc88b73678d1307a765dc2b0b8d776a22f (patch)
tree8fa4399798c1218751d5e3efcb385794e934538c
parentd03b085d40b104ec25bad195f9b6f85f5ec24604 (diff)
chore: add shell completion for explain command
-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
+}