From 8a110c5b01d600d897532a715358547d657c175b Mon Sep 17 00:00:00 2001 From: Roux Date: Tue, 11 Apr 2023 23:54:42 -0400 Subject: [PATCH 1/4] Insert: add o-insert with newline --- src/main.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main.rs b/src/main.rs index 1f78c67..8fa38fd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -287,6 +287,14 @@ impl State { self.move_cursor(Direction::Right); self.mode = Mode::Insert(state); } + KeyCode::Char('o') => { + let state = InsertState { append: false}; + self.cursor.line += 1; + self.cursor.column = 0; + let index = self.buffer.cursor_to_char(self.cursor); + self.buffer.text.insert(index, "\n"); + self.mode = Mode::Insert(state); + } KeyCode::Char(':') => { self.mode = Mode::Command(Default::default()); } From f5ea473328773351a2db1cd6e476e8c823606c1e Mon Sep 17 00:00:00 2001 From: Roux Date: Tue, 11 Apr 2023 23:55:33 -0400 Subject: [PATCH 2/4] cargo fmt --- src/main.rs | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8fa38fd..e31ca77 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,12 +20,7 @@ use std::{ env::args, fs::File, - io::{ - Read, - stdout, - Stdout, - Write, - }, + io::{stdout, Read, Stdout, Write}, os::fd::FromRawFd, }; @@ -35,7 +30,7 @@ use crossterm::{ terminal, ExecutableCommand, Result, }; use ropey::Rope; -use yacexits::{ exit, EX_DATAERR, EX_UNAVAILABLE }; +use yacexits::{exit, EX_DATAERR, EX_UNAVAILABLE}; struct Buffer { pub text: Rope, @@ -288,7 +283,7 @@ impl State { self.mode = Mode::Insert(state); } KeyCode::Char('o') => { - let state = InsertState { append: false}; + let state = InsertState { append: false }; self.cursor.line += 1; self.cursor.column = 0; let index = self.buffer.cursor_to_char(self.cursor); @@ -463,23 +458,22 @@ fn main() -> Result<()> { let stdin = 0; // get stdin as a file descriptor if unsafe { libc::isatty(stdin) } == 0 { unsafe { File::from_raw_fd(stdin) } - } else { File::open("/dev/null").unwrap() } - }, - Some(path) => { - std::fs::File::open(path).unwrap_or_else(|_| { - eprintln!( - "{}: {}: No such file or directory.", - argv[0], - argv[1] - ); - exit(EX_UNAVAILABLE); - }) - }, - }.read_to_end(&mut buf).unwrap(); + } else { + File::open("/dev/null").unwrap() + } + } + Some(path) => std::fs::File::open(path).unwrap_or_else(|_| { + eprintln!("{}: {}: No such file or directory.", argv[0], argv[1]); + exit(EX_UNAVAILABLE); + }), + } + .read_to_end(&mut buf) + .unwrap(); let text = String::from_utf8(buf).unwrap_or_else(|_| { eprintln!( - "{}: {}: File contents are not valid UTF-8.", argv[0], argv[1] + "{}: {}: File contents are not valid UTF-8.", + argv[0], argv[1] ); exit(EX_DATAERR); }); From badd6a0b71b42d87f1013d1a136ee271cb6825cd Mon Sep 17 00:00:00 2001 From: Roux Date: Wed, 12 Apr 2023 00:10:32 -0400 Subject: [PATCH 3/4] fixed outdated code --- src/main.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6a41a01..dc6b24a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -198,8 +198,7 @@ impl State { let state = InsertState { append: false }; self.cursor.line += 1; self.cursor.column = 0; - let index = self.buffer.cursor_to_char(self.cursor); - self.buffer.text.insert(index, "\n"); + self.buffer.insert_char(self.cursor, '\n'); self.mode = Mode::Insert(state); } KeyCode::Char(':') => { From 8cb37a78203e1fa3dcdb2f3483943fc81d617bac Mon Sep 17 00:00:00 2001 From: Roux Date: Wed, 12 Apr 2023 00:19:01 -0400 Subject: [PATCH 4/4] Capital O insert mode --- src/main.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main.rs b/src/main.rs index dc6b24a..7ce333c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -201,6 +201,12 @@ impl State { self.buffer.insert_char(self.cursor, '\n'); self.mode = Mode::Insert(state); } + KeyCode::Char('O') => { + let state = InsertState { append: false }; + self.cursor.column = 0; + self.buffer.insert_char(self.cursor, '\n'); + self.mode = Mode::Insert(state); + } KeyCode::Char(':') => { self.mode = Mode::Command(Default::default()); }