aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2023-12-27 10:45:05 -0800
committerRose Hogenson <rosehogenson@posteo.net>2023-12-27 10:45:05 -0800
commit885c3629b82409fa5273cf6d43a0b975ecf23f11 (patch)
tree6a271a98dc96d27b5e4cd393cc61347787b64b3e
parentHandle error from putting terminal in raw mode. (diff)
downloadeditor-885c3629b82409fa5273cf6d43a0b975ecf23f11.tar.zst
Wait for keypress before exiting.
-rw-r--r--src/main.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index 844b396..25458ed 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,7 +3,7 @@ mod term;
use rope::Rope;
use std::ffi::{OsStr, OsString};
-use std::io::Write;
+use std::io::{Read, Write};
use std::path::Path;
fn edit(file: &OsStr) -> Result<(), String> {
@@ -28,8 +28,23 @@ fn edit(file: &OsStr) -> Result<(), String> {
};
let mut stdout = std::io::stdout();
for i in 0..usize::from(size.ws_row) {
+ if i > 0 {
+ let _ = stdout.write(b"\r\n");
+ }
let _ = r.print_line(&mut stdout, i);
- let _ = stdout.write(b"\r\n");
+ }
+ let _ = stdout.flush();
+
+ let mut stdin = std::io::stdin();
+ let mut buf = vec![0; 1];
+ match stdin.read(&mut buf) {
+ Err(err) => {
+ return Err(format!("read input: {}", err));
+ }
+ Ok(0) => {
+ return Err(String::from("no input"));
+ }
+ _ => (),
}
return Ok(());
}