From a19d1f325a1544e6716ec56e3fe4e1d09523d32c Mon Sep 17 00:00:00 2001 From: dvkt Date: Fri, 22 Nov 2019 00:31:06 -0800 Subject: [PATCH] use termsize --- src/main.rs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/main.rs b/src/main.rs index 0af437d..148a49d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,17 +14,24 @@ fn main() { let mut stdout = stdout().into_raw_mode().unwrap(); TcpStream::connect("phkt.io:70") .and_then(|mut stream| { - stream.write("\r\n".as_ref()).unwrap(); + stream.write("\r\n".as_ref()); + Ok(stream) + }) + .and_then(|mut stream| { let mut buf = String::new(); stream.read_to_string(&mut buf); render(&buf); + let mut y = 1; + if let Ok((_col, row)) = termion::terminal_size() { + y = row + 1; + } for c in stdin.keys() { // Clear the current line. write!( stdout, "{}{}", - termion::cursor::Goto(1, 1), + termion::cursor::Goto(1, y), termion::clear::CurrentLine ) .unwrap(); @@ -33,17 +40,15 @@ fn main() { match c.unwrap() { // Exit. Key::Char('q') => break, - Key::Char(c) => println!("{}", c), - Key::Alt(c) => println!("Alt-{}", c), - Key::Ctrl('c') => { - return Ok(()); - } - Key::Ctrl(c) => println!("Ctrl-{}", c), - Key::Left => println!(""), - Key::Right => println!(""), - Key::Up => println!(""), - Key::Down => println!(""), - _ => println!("Other"), + Key::Char(c) => print!("{}", c), + Key::Alt(c) => print!("Alt-{}", c), + Key::Ctrl('c') => break, + Key::Ctrl(c) => print!("Ctrl-{}", c), + Key::Left => print!(""), + Key::Right => print!(""), + Key::Up => print!(""), + Key::Down => print!(""), + _ => print!("Other"), } // Flush again.