From 34de33ef72b206d163ad122b2f0d0b551ac20244 Mon Sep 17 00:00:00 2001 From: Spence Date: Fri, 1 Mar 2024 01:09:21 -0800 Subject: [PATCH] Editor: Add shortcut to toggle line numbers (#8642) Following #7665, I've added a keymap to quickly hide and show gutter line numbers. `ctrl-l` and `cmd-l` were taken, so I've bound it to `cmd-;`. https://github.com/zed-industries/zed/assets/138762/365d2a7c-b775-4486-8389-edafe59b2a87 Release notes: - Added `editor: toggle line numbers` command and default keybindings (`cmd-;` on macOS). --------- Co-authored-by: Thorsten Ball --- assets/keymaps/default-linux.json | 3 ++- assets/keymaps/default-macos.json | 3 ++- crates/editor/src/actions.rs | 1 + crates/editor/src/editor.rs | 6 ++++++ crates/editor/src/editor_settings.rs | 2 +- crates/editor/src/element.rs | 1 + 6 files changed, 13 insertions(+), 3 deletions(-) diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 8f78a5dd09..5f6900713a 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -117,7 +117,8 @@ { "stop_at_soft_wraps": true } - ] + ], + "ctrl-;": "editor::ToggleLineNumbers" } }, { diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index 5872a2566b..f5cc4f06a9 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -152,7 +152,8 @@ "center_cursor": true } ], - "ctrl-cmd-space": "editor::ShowCharacterPalette" + "ctrl-cmd-space": "editor::ShowCharacterPalette", + "cmd-;": "editor::ToggleLineNumbers" } }, { diff --git a/crates/editor/src/actions.rs b/crates/editor/src/actions.rs index fb4e3fbddc..ae7cd99c07 100644 --- a/crates/editor/src/actions.rs +++ b/crates/editor/src/actions.rs @@ -239,6 +239,7 @@ gpui::actions!( TabPrev, ToggleInlayHints, ToggleSoftWrap, + ToggleLineNumbers, Transpose, Undo, UndoSelection, diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index b3adf64a94..e92f116837 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -8586,6 +8586,12 @@ impl Editor { cx.notify(); } + pub fn toggle_line_numbers(&mut self, _: &ToggleLineNumbers, cx: &mut ViewContext) { + let mut editor_settings = EditorSettings::get_global(cx).clone(); + editor_settings.gutter.line_numbers = !editor_settings.gutter.line_numbers; + EditorSettings::override_global(editor_settings, cx); + } + pub fn set_show_gutter(&mut self, show_gutter: bool, cx: &mut ViewContext) { self.show_gutter = show_gutter; cx.notify(); diff --git a/crates/editor/src/editor_settings.rs b/crates/editor/src/editor_settings.rs index cff68e689e..ca12112d5f 100644 --- a/crates/editor/src/editor_settings.rs +++ b/crates/editor/src/editor_settings.rs @@ -2,7 +2,7 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use settings::Settings; -#[derive(Deserialize)] +#[derive(Deserialize, Clone)] pub struct EditorSettings { pub cursor_blink: bool, pub hover_popover_enabled: bool, diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 0f3ee3ec62..0082ff343c 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -275,6 +275,7 @@ impl EditorElement { register_action(view, cx, Editor::open_excerpts); register_action(view, cx, Editor::open_excerpts_in_split); register_action(view, cx, Editor::toggle_soft_wrap); + register_action(view, cx, Editor::toggle_line_numbers); register_action(view, cx, Editor::toggle_inlay_hints); register_action(view, cx, hover_popover::hover); register_action(view, cx, Editor::reveal_in_finder);