diff options
Diffstat (limited to 'helix-term/src/line.rs')
-rw-r--r-- | helix-term/src/line.rs | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/helix-term/src/line.rs b/helix-term/src/line.rs deleted file mode 100644 index b4b88655..00000000 --- a/helix-term/src/line.rs +++ /dev/null @@ -1,72 +0,0 @@ -//! Demonstrates how to read events asynchronously with async-std. -//! -//! cargo run --features="event-stream" --example event-stream-async-std - -use std::{ - io::{stdout, Write}, - time::Duration, -}; - -use futures::{future::FutureExt, select, StreamExt}; -use smol::Timer; -// use futures_timer::Delay; - -use crossterm::{ - cursor::position, - event::{DisableMouseCapture, EnableMouseCapture, Event, EventStream, KeyCode}, - execute, - terminal::{disable_raw_mode, enable_raw_mode}, - Result, -}; - -const HELP: &str = r#"EventStream based on futures::Stream with async-std - - Keyboard, mouse and terminal resize events enabled - - Prints "." every second if there's no event - - Hit "c" to print current cursor position - - Use Esc to quit -"#; - -async fn print_events() { - let mut reader = EventStream::new(); - - loop { - let mut delay = Timer::after(Duration::from_millis(1_000)).fuse(); - let mut event = reader.next().fuse(); - - select! { - _ = delay => { println!(".\r"); }, - maybe_event = event => { - match maybe_event { - Some(Ok(event)) => { - println!("Event::{:?}\r", event); - - if event == Event::Key(KeyCode::Char('c').into()) { - println!("Cursor position: {:?}\r", position()); - } - - if event == Event::Key(KeyCode::Esc.into()) { - break; - } - } - Some(Err(e)) => println!("Error: {:?}\r", e), - None => break, - } - } - }; - } -} - -fn main() -> Result<()> { - println!("{}", HELP); - - enable_raw_mode()?; - - let mut stdout = stdout(); - execute!(stdout, EnableMouseCapture)?; - - smol::run(print_events()); - - execute!(stdout, DisableMouseCapture)?; - - disable_raw_mode() -} |