From 30d1b7098f023ea1cf728e6b989599de364f58ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Tue, 9 Feb 2021 15:39:26 +0900
Subject: [PATCH] commands: % as select_all.

---
 helix-term/src/commands.rs | 9 +++++++++
 helix-term/src/keymap.rs   | 3 ++-
 2 files changed, 11 insertions(+), 1 deletion(-)

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,