append mode
This commit is contained in:
parent
dd749bb284
commit
67017e5336
2 changed files with 8 additions and 1 deletions
|
@ -1,3 +1,4 @@
|
|||
use crate::graphemes::next_grapheme_boundary;
|
||||
use crate::selection::Range;
|
||||
use crate::state::{Direction, Granularity, Mode, State};
|
||||
use crate::transaction::{ChangeSet, Transaction};
|
||||
|
@ -74,9 +75,10 @@ pub fn append_mode(state: &mut State, _count: usize) {
|
|||
state.mode = Mode::Insert;
|
||||
|
||||
// TODO: as transaction
|
||||
let text = &state.doc.slice(..);
|
||||
state.selection = state.selection.clone().transform(|range| {
|
||||
// TODO: to() + next char
|
||||
Range::new(range.from(), range.to())
|
||||
Range::new(range.from(), next_grapheme_boundary(text, range.to()))
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -86,6 +88,7 @@ pub fn append_mode(state: &mut State, _count: usize) {
|
|||
// O inserts a new line after each line with a selection
|
||||
|
||||
pub fn normal_mode(state: &mut State, _count: usize) {
|
||||
// TODO: if leaving append mode, move cursor back by 1
|
||||
state.mode = Mode::Normal;
|
||||
}
|
||||
|
||||
|
|
|
@ -120,6 +120,10 @@ pub fn default() -> Keymap {
|
|||
code: KeyCode::Char('i'),
|
||||
modifiers: Modifiers::NONE
|
||||
} => commands::insert_mode as Command,
|
||||
Key {
|
||||
code: KeyCode::Char('a'),
|
||||
modifiers: Modifiers::NONE
|
||||
} => commands::append_mode as Command,
|
||||
Key {
|
||||
code: KeyCode::Esc,
|
||||
modifiers: Modifiers::NONE
|
||||
|
|
Loading…
Reference in a new issue