aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs22
1 files changed, 6 insertions, 16 deletions
diff --git a/src/main.rs b/src/main.rs
index d376c2d..2b359f8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -38,12 +38,10 @@ fn edit(file: &OsStr) -> Result<(), String> {
if i > 0 {
let _ = stdout.write(b"\r\n");
}
- let line = match r.line(i) {
- Some(line) => line,
- None => {
- break;
- }
- };
+ if i > r.lines() {
+ break;
+ }
+ let line = r.line(i);
// TODO: handle line-wrapping.
let _ = line.print(&mut stdout);
}
@@ -78,7 +76,6 @@ fn edit(file: &OsStr) -> Result<(), String> {
let len = r
.line(cursor_row)
- .expect("cursor_row should always be valid")
.len();
if cursor_col > len {
move_cursor(&mut stdout, cursor_row, len);
@@ -94,7 +91,6 @@ fn edit(file: &OsStr) -> Result<(), String> {
let len = r
.line(cursor_row)
- .expect("cursor_row should always be valid")
.len();
if cursor_col > len {
move_cursor(&mut stdout, cursor_row, len);
@@ -105,7 +101,6 @@ fn edit(file: &OsStr) -> Result<(), String> {
Key::Left => {
let len = r
.line(cursor_row)
- .expect("cursor_row should always be valid")
.len();
cursor_col = std::cmp::min(cursor_col, len);
if cursor_col == 0 {
@@ -117,7 +112,6 @@ fn edit(file: &OsStr) -> Result<(), String> {
Key::Right => {
let len = r
.line(cursor_row)
- .expect("cursor_row should always be valid")
.len();
if cursor_col >= len {
continue;
@@ -126,15 +120,11 @@ fn edit(file: &OsStr) -> Result<(), String> {
move_cursor(&mut stdout, cursor_row, cursor_col);
}
Key::Char(c) => {
- let line = r
- .line(cursor_row)
- .expect("cursor_row should always be valid");
- cursor_col = std::cmp::min(cursor_col, line.len());
- r = line.insert(cursor_col, c);
+ cursor_col = std::cmp::min(cursor_col, r.line(cursor_row).len());
+ r = r.insert(r.line_idx(cursor_row)+cursor_col, c);
move_cursor(&mut stdout, cursor_row, 0);
let _ = r
.line(cursor_row)
- .expect("cursor_row should always be valid")
.print(&mut stdout);
cursor_col += 1;
move_cursor(&mut stdout, cursor_row, cursor_col);