From 72f80ea51f25256d0c463c2f3dc3d8670cfc4634 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sat, 14 Mar 2026 22:12:30 +0800 Subject: Add shell completions for new jvn CLI --- src/bin/jvn_comp.rs | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/bin/jvn_comp.rs (limited to 'src/bin/jvn_comp.rs') diff --git a/src/bin/jvn_comp.rs b/src/bin/jvn_comp.rs new file mode 100644 index 0000000..d00916c --- /dev/null +++ b/src/bin/jvn_comp.rs @@ -0,0 +1,54 @@ +use clap::Parser; + +#[derive(Parser, Debug)] +#[command(author, version, about, long_about = None)] +struct CompletionContext { + /// The full command line + #[arg(short = 'f', long)] + command_line: String, + + /// Cursor position + #[arg(short = 'C', long)] + cursor_position: usize, + + /// Current word + #[arg(short = 'w', long)] + current_word: String, + + /// Previous word + #[arg(short = 'p', long)] + previous_word: String, + + /// Command name + #[arg(short = 'c', long)] + command_name: String, + + /// Word index + #[arg(short = 'i', long)] + word_index: usize, + + /// All words + #[arg(short = 'a', long, num_args = 1..)] + all_words: Vec, +} + +fn main() { + let args = match CompletionContext::try_parse() { + Ok(args) => args, + Err(_) => std::process::exit(1), + }; + match comp(args) { + Some(suggestions) => { + suggestions + .iter() + .for_each(|suggest| println!("{}", suggest)); + } + None => { + println!("_file_"); + } + } +} + +fn comp(_args: CompletionContext) -> Option> { + None +} -- cgit