diff --git a/src/core/exec.rs b/src/core/exec.rs index 18198366319c35d048e8894f5cecbfd7d2361920..4cd148ec7206e13686fb8167c48a857978105a3b 100644 --- a/src/core/exec.rs +++ b/src/core/exec.rs @@ -124,9 +124,11 @@ impl Editor { self.goto(bounded); } (Command(Normal), Char('L')) => { - let ln_end = (self.buffers.current_buffer()[self.y()].len() - 1, self.y()); - self.goto(ln_end); - mov = true; + if self.buffers.current_buffer()[self.y()].len() != 0 { + let ln_end = (self.buffers.current_buffer()[self.y()].len() - 1, self.y()); + self.goto(ln_end); + mov = true; + } } (Command(Normal), Char('H')) => { self.cursor_mut().x = 0; diff --git a/src/edit/insert.rs b/src/edit/insert.rs index d793ceb99c56683fcb1bdc60eb0d93eb3c43cd0a..851b2bf551140716aebee57a2e1de3d8542d48fc 100644 --- a/src/edit/insert.rs +++ b/src/edit/insert.rs @@ -46,6 +46,14 @@ impl Editor { self.goto((begin, y + 1)); } (InsertMode::Insert, Key::Backspace) => self.backspace(), + (InsertMode::Insert, Key::Tab) => { + for i in 0..4 { + self.buffers.current_buffer_mut()[y].insert(x + i, ' '); + } + self.redraw_task = RedrawTask::Lines(y..y + 1); + let right = self.right(4, false); + self.goto(right); + } (InsertMode::Insert, Key::Char(c)) => { self.buffers.current_buffer_mut()[y].insert(x, c); diff --git a/src/io/parse.rs b/src/io/parse.rs index f544d2bc0a643e09053b445b421fd9d4b5c1b864..1697bdd7cb54dd14807c970f9e854bfad1ec398c 100644 --- a/src/io/parse.rs +++ b/src/io/parse.rs @@ -115,6 +115,10 @@ impl Editor { EventOption::Quit(_) => { return Inst(Parameter::Null, Cmd { key: Key::Quit }); } + EventOption::Resize(_) => { + self.redraw_task = RedrawTask::Full; + self.redraw(); + } _ => {} } }