Improve emacs keybind with better home/end behavior (#21923)

Peter Tripp created

Improve behavior of ctrl-a/ctrl-e home/end in emacs keybind.
Follow up to #21921 to add those to Linux emacs keymap too.

Release Notes:

- emacs: Improved `ctrl-a` / `ctrl-e` / `home` / `end` behavior
- emacs: Added for `ctrl-s` / `ctrl-r` / `ctrl-g` for navigating buffer
search results

Change summary

assets/keymaps/linux/emacs.json | 14 ++++++++++++--
assets/keymaps/macos/emacs.json |  6 ++++--
2 files changed, 16 insertions(+), 4 deletions(-)

Detailed changes

assets/keymaps/linux/emacs.json 🔗

@@ -15,8 +15,10 @@
       "ctrl-b": "editor::MoveLeft",
       "ctrl-n": "editor::MoveDown",
       "ctrl-p": "editor::MoveUp",
-      "ctrl-a": "editor::MoveToBeginningOfLine",
-      "ctrl-e": "editor::MoveToEndOfLine",
+      "home": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": false }],
+      "end": ["editor::MoveToEndOfLine", { "stop_at_soft_wraps": false }],
+      "ctrl-a": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": false }],
+      "ctrl-e": ["editor::MoveToEndOfLine", { "stop_at_soft_wraps": false }],
       "alt-f": "editor::MoveToNextSubwordEnd",
       "alt-b": "editor::MoveToPreviousSubwordStart",
       "ctrl-d": "editor::Delete",
@@ -53,6 +55,14 @@
       "shift shift": "file_finder::Toggle"
     }
   },
+  {
+    "context": "BufferSearchBar > Editor",
+    "bindings": {
+      "ctrl-s": "search::SelectNextMatch",
+      "ctrl-r": "search::SelectPrevMatch",
+      "ctrl-g": "buffer_search::Dismiss"
+    }
+  },
   {
     "context": "Pane",
     "bindings": {

assets/keymaps/macos/emacs.json 🔗

@@ -15,8 +15,10 @@
       "ctrl-b": "editor::MoveLeft",
       "ctrl-n": "editor::MoveDown",
       "ctrl-p": "editor::MoveUp",
-      "ctrl-a": "editor::MoveToBeginningOfLine",
-      "ctrl-e": "editor::MoveToEndOfLine",
+      "home": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": false }],
+      "end": ["editor::MoveToEndOfLine", { "stop_at_soft_wraps": false }],
+      "ctrl-a": ["editor::MoveToBeginningOfLine", { "stop_at_soft_wraps": false }],
+      "ctrl-e": ["editor::MoveToEndOfLine", { "stop_at_soft_wraps": false }],
       "alt-f": "editor::MoveToNextSubwordEnd",
       "alt-b": "editor::MoveToPreviousSubwordStart",
       "ctrl-d": "editor::Delete",