Move to start/end of editor line
This commit is contained in:
parent
ba35a606a8
commit
4bf6d80988
2 changed files with 26 additions and 0 deletions
|
|
@ -54,6 +54,8 @@ pub fn list_editor_key_bindings(
|
||||||
// Cursor movement
|
// Cursor movement
|
||||||
bindings.binding("ctrl+b, ←", "move cursor left");
|
bindings.binding("ctrl+b, ←", "move cursor left");
|
||||||
bindings.binding("ctrl+f, →", "move cursor right");
|
bindings.binding("ctrl+f, →", "move cursor right");
|
||||||
|
bindings.binding("ctrl+a, home", "move cursor to start of line");
|
||||||
|
bindings.binding("ctrl+e, end", "move cursor to end of line");
|
||||||
bindings.binding("↑/↓", "move cursor up/down");
|
bindings.binding("↑/↓", "move cursor up/down");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -84,6 +86,8 @@ pub fn handle_editor_key_event(
|
||||||
// Cursor movement
|
// Cursor movement
|
||||||
key!(Ctrl + 'b') | key!(Left) => editor.move_cursor_left(terminal.frame()),
|
key!(Ctrl + 'b') | key!(Left) => editor.move_cursor_left(terminal.frame()),
|
||||||
key!(Ctrl + 'f') | key!(Right) => editor.move_cursor_right(terminal.frame()),
|
key!(Ctrl + 'f') | key!(Right) => editor.move_cursor_right(terminal.frame()),
|
||||||
|
key!(Ctrl + 'a') | key!(Home) => editor.move_cursor_to_start_of_line(terminal.frame()),
|
||||||
|
key!(Ctrl + 'e') | key!(End) => editor.move_cursor_to_end_of_line(terminal.frame()),
|
||||||
key!(Up) => editor.move_cursor_up(terminal.frame()),
|
key!(Up) => editor.move_cursor_up(terminal.frame()),
|
||||||
key!(Down) => editor.move_cursor_down(terminal.frame()),
|
key!(Down) => editor.move_cursor_down(terminal.frame()),
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -234,6 +234,20 @@ impl InnerEditorState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn move_cursor_to_start_of_line(&mut self, frame: &mut Frame) {
|
||||||
|
let boundaries = self.line_boundaries();
|
||||||
|
let (line, _, _) = self.cursor_line(&boundaries);
|
||||||
|
self.move_cursor_to_line_col(frame, line, 0);
|
||||||
|
self.record_cursor_col(frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn move_cursor_to_end_of_line(&mut self, frame: &mut Frame) {
|
||||||
|
let boundaries = self.line_boundaries();
|
||||||
|
let (line, _, _) = self.cursor_line(&boundaries);
|
||||||
|
self.move_cursor_to_line_col(frame, line, usize::MAX);
|
||||||
|
self.record_cursor_col(frame);
|
||||||
|
}
|
||||||
|
|
||||||
fn move_cursor_up(&mut self, frame: &mut Frame) {
|
fn move_cursor_up(&mut self, frame: &mut Frame) {
|
||||||
let boundaries = self.line_boundaries();
|
let boundaries = self.line_boundaries();
|
||||||
let (line, _, _) = self.cursor_line(&boundaries);
|
let (line, _, _) = self.cursor_line(&boundaries);
|
||||||
|
|
@ -312,6 +326,14 @@ impl EditorState {
|
||||||
self.0.lock().move_cursor_right(frame);
|
self.0.lock().move_cursor_right(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn move_cursor_to_start_of_line(&self, frame: &mut Frame) {
|
||||||
|
self.0.lock().move_cursor_to_start_of_line(frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn move_cursor_to_end_of_line(&self, frame: &mut Frame) {
|
||||||
|
self.0.lock().move_cursor_to_end_of_line(frame);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn move_cursor_up(&self, frame: &mut Frame) {
|
pub fn move_cursor_up(&self, frame: &mut Frame) {
|
||||||
self.0.lock().move_cursor_up(frame);
|
self.0.lock().move_cursor_up(frame);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue