Show an initial empty keymap (#14609)

Conrad Irwin created

Release Notes:

- Added default content for the user keymap file.

Change summary

assets/keymaps/initial.json                | 21 +++++++++++++++++++++
assets/settings/initial_user_settings.json |  4 ++--
crates/settings/src/settings.rs            |  4 ++++
crates/zed/src/zed.rs                      |  2 +-
4 files changed, 28 insertions(+), 3 deletions(-)

Detailed changes

assets/keymaps/initial.json 🔗

@@ -0,0 +1,21 @@
+// Zed keymap
+//
+// For information on binding keys, see the Zed
+// documentation: https://zed.dev/docs/key-bindings
+//
+// To see the default key bindings run `zed: Open Default Keymap`
+// from the command palette.
+[
+  {
+    "context": "Workspace",
+    "bindings": {
+      // "shift shift": "file_finder::Toggle"
+    }
+  },
+  {
+    "context": "Editor",
+    "bindings": {
+      // "j k": ["workspace::SendKeystrokes", "escape"]
+    }
+  }
+]

assets/settings/initial_user_settings.json 🔗

@@ -4,8 +4,8 @@
 // documentation: https://zed.dev/docs/configuring-zed
 //
 // To see all of Zed's default settings without changing your
-// custom settings, run the `open default settings` command
-// from the command palette or from `Zed` application menu.
+// custom settings, run the `zed: Open Default Settings` command
+// from the command palette
 {
   "ui_font_size": 16,
   "buffer_font_size": 16,

crates/settings/src/settings.rs 🔗

@@ -54,6 +54,10 @@ pub fn initial_local_settings_content() -> Cow<'static, str> {
     asset_str::<SettingsAssets>("settings/initial_local_settings.json")
 }
 
+pub fn initial_keymap_content() -> Cow<'static, str> {
+    asset_str::<SettingsAssets>("keymaps/initial.json")
+}
+
 pub fn initial_tasks_content() -> Cow<'static, str> {
     asset_str::<SettingsAssets>("settings/initial_tasks.json")
 }

crates/zed/src/zed.rs 🔗

@@ -372,7 +372,7 @@ pub fn initialize_workspace(app_state: Arc<AppState>, cx: &mut AppContext) {
                 move |_: &mut Workspace,
                       _: &zed_actions::OpenKeymap,
                       cx: &mut ViewContext<Workspace>| {
-                    open_settings_file(&paths::keymap_file(), Rope::default, cx);
+                    open_settings_file(&paths::keymap_file(), || settings::initial_keymap_content().as_ref().into(), cx);
                 },
             )
             .register_action(