use std::io;
use crossterm::event::{KeyCode, KeyEvent, KeyEventKind, KeyModifiers};
use nucleo_picker::{
Picker,
event::{Event, StdinReader, keybind_default},
render::StrRenderer,
};
fn keybind_no_interrupt(key_event: KeyEvent) -> Option<Event> {
match key_event {
KeyEvent {
kind: KeyEventKind::Press,
modifiers: KeyModifiers::CONTROL,
code: KeyCode::Char('c'),
..
} => Some(Event::Quit),
e => keybind_default(e),
}
}
fn main() -> io::Result<()> {
let mut picker = Picker::new(StrRenderer);
let choices = vec![
"Alvar Aalto",
"Frank Lloyd Wright",
"Zaha Hadid",
"Le Corbusier",
];
picker.extend(choices);
match picker.pick_with_io(
StdinReader::new(keybind_no_interrupt),
&mut std::io::stdout(),
)? {
Some(opt) => println!("Your preferred architect is: '{opt}'"),
None => println!("No architect selected!"),
}
Ok(())
}