mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-25 19:03:30 +04:00
Merge pull request #1 from helix-editor/insertKeymapMove
moved insert keymap to keymap.rs
This commit is contained in:
commit
1da0be0aa0
@ -320,29 +320,20 @@ pub async fn event_loop(&mut self) {
|
||||
if let Some(view) = &mut self.view {
|
||||
match view.state.mode() {
|
||||
Mode::Insert => {
|
||||
match event {
|
||||
KeyEvent {
|
||||
code: KeyCode::Esc, ..
|
||||
} => commands::normal_mode(view, 1),
|
||||
KeyEvent {
|
||||
code: KeyCode::Backspace,
|
||||
..
|
||||
} => commands::delete_char_backward(view, 1),
|
||||
KeyEvent {
|
||||
code: KeyCode::Delete,
|
||||
..
|
||||
} => commands::delete_char_forward(view, 1),
|
||||
KeyEvent {
|
||||
// TODO: handle modes and sequences (`gg`)
|
||||
let keys = vec![event];
|
||||
if let Some(command) = keymap[&Mode::Insert].get(&keys) {
|
||||
// TODO: handle count other than 1
|
||||
command(view, 1);
|
||||
} else {
|
||||
if let KeyEvent {
|
||||
code: KeyCode::Char(c),
|
||||
..
|
||||
} => commands::insert_char(view, c),
|
||||
KeyEvent {
|
||||
code: KeyCode::Enter,
|
||||
..
|
||||
} => commands::insert_char(view, '\n'),
|
||||
_ => (), // skip
|
||||
} = event
|
||||
{
|
||||
commands::insert_char(view, c);
|
||||
}
|
||||
}
|
||||
// TODO: simplistic ensure cursor in view for now
|
||||
view.ensure_cursor_in_view();
|
||||
|
||||
self.render();
|
||||
|
@ -8,6 +8,7 @@ edition = "2018"
|
||||
|
||||
[features]
|
||||
term = ["tui", "crossterm"]
|
||||
default = ["term"]
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1"
|
||||
|
@ -280,6 +280,10 @@ pub fn insert_char(view: &mut View, c: char) {
|
||||
// TODO: need to store into history if successful
|
||||
}
|
||||
|
||||
pub fn insert_newline(view: &mut View, _count: usize) {
|
||||
insert_char(view, '\n');
|
||||
}
|
||||
|
||||
// TODO: handle indent-aware delete
|
||||
pub fn delete_char_backward(view: &mut View, count: usize) {
|
||||
let text = &view.state.doc.slice(..);
|
||||
|
@ -182,6 +182,24 @@ pub fn default() -> Keymaps {
|
||||
code: KeyCode::Esc,
|
||||
modifiers: Modifiers::NONE
|
||||
}] => commands::normal_mode as Command,
|
||||
),
|
||||
state::Mode::Insert => hashmap!(
|
||||
vec![Key {
|
||||
code: KeyCode::Esc,
|
||||
modifiers: Modifiers::NONE
|
||||
}] => commands::normal_mode as Command,
|
||||
vec![Key {
|
||||
code: KeyCode::Backspace,
|
||||
modifiers: Modifiers::NONE
|
||||
}] => commands::delete_char_backward as Command,
|
||||
vec![Key {
|
||||
code: KeyCode::Delete,
|
||||
modifiers: Modifiers::NONE
|
||||
}] => commands::delete_char_forward as Command,
|
||||
vec![Key {
|
||||
code: KeyCode::Enter,
|
||||
modifiers: Modifiers::NONE
|
||||
}] => commands::insert_newline as Command,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user