diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 9bd6bb8f..3111900d 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -284,6 +284,15 @@ pub fn extend_line_down(cx: &mut Context) { doc.set_selection(selection); } +pub fn select_all(cx: &mut Context) { + let doc = cx.doc(); + + doc.set_selection(Selection::single( + 0, + doc.text().len_chars().saturating_sub(1), + )) +} + pub fn select_regex(cx: &mut Context) { let prompt = ui::regex_prompt(cx, "select:".to_string(), |doc, regex| { let text = &doc.text().slice(..); diff --git a/helix-term/src/keymap.rs b/helix-term/src/keymap.rs index efc72b60..69c71d23 100644 --- a/helix-term/src/keymap.rs +++ b/helix-term/src/keymap.rs @@ -164,7 +164,8 @@ pub fn default() -> Keymaps { vec![shift!('S')] => commands::split_selection, vec![key!(';')] => commands::collapse_selection, // TODO should be alt(;) - vec![key!('%')] => commands::flip_selections, + vec![alt!(';')] => commands::flip_selections, + vec![key!('%')] => commands::select_all, vec![key!('x')] => commands::select_line, vec![key!('u')] => commands::undo, vec![shift!('U')] => commands::redo,