From e7fa88dcd4b261af643a9aedfce0f0a1d9a97462 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 11 Nov 2021 15:19:31 -0500 Subject: handle dynamic terminal sizes --- src/readline.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/readline.rs') diff --git a/src/readline.rs b/src/readline.rs index cc6c776..929905d 100644 --- a/src/readline.rs +++ b/src/readline.rs @@ -1,6 +1,7 @@ use textmode::Textmode as _; pub struct Readline { + size: (u16, u16), prompt: String, input_line: String, action: async_std::channel::Sender, @@ -11,6 +12,7 @@ impl Readline { action: async_std::channel::Sender, ) -> Self { Self { + size: (24, 80), prompt: "$ ".into(), input_line: "".into(), action, @@ -52,12 +54,16 @@ impl Readline { &self, out: &mut textmode::Output, ) -> anyhow::Result<()> { - out.move_to(23, 0); + out.move_to(self.size.0 - 1, 0); out.write_str(&self.prompt); out.write_str(&self.input_line); Ok(()) } + pub async fn resize(&mut self, size: (u16, u16)) { + self.size = size; + } + fn input(&self) -> String { self.input_line.clone() } -- cgit v1.2.3-54-g00ecf