diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 2bacf4927e1fd402cac8ea57545ec8c66d2a64dd..8a7173f8af24375804d50185f5b958c8f08b5e0b 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -735,14 +735,6 @@ "tab": "editor::ComposeCompletion" } }, - { - "context": "Editor && in_snippet", - "use_key_equivalents": true, - "bindings": { - "alt-right": "editor::NextSnippetTabstop", - "alt-left": "editor::PreviousSnippetTabstop" - } - }, // Bindings for accepting edit predictions // // alt-l is provided as an alternative to tab/alt-tab. and will be displayed in the UI. This is diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index 97aa404071529c636ccd696d608145c77fe93d8f..96095ed84971a8c70e05caffb64a5a2315ac3738 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -805,14 +805,6 @@ "tab": "editor::ComposeCompletion" } }, - { - "context": "Editor && in_snippet", - "use_key_equivalents": true, - "bindings": { - "alt-right": "editor::NextSnippetTabstop", - "alt-left": "editor::PreviousSnippetTabstop" - } - }, { "context": "Editor && edit_prediction", "bindings": { diff --git a/assets/keymaps/default-windows.json b/assets/keymaps/default-windows.json index 35281ab8242487a8e96173ad0cdfd20b5685ef75..3050c7343e4d465f04bec302e9c1d956292635ab 100644 --- a/assets/keymaps/default-windows.json +++ b/assets/keymaps/default-windows.json @@ -739,14 +739,6 @@ "tab": "editor::ComposeCompletion" } }, - { - "context": "Editor && in_snippet", - "use_key_equivalents": true, - "bindings": { - "alt-right": "editor::NextSnippetTabstop", - "alt-left": "editor::PreviousSnippetTabstop" - } - }, // Bindings for accepting edit predictions // // alt-l is provided as an alternative to tab/alt-tab. and will be displayed in the UI. This is diff --git a/crates/editor/src/actions.rs b/crates/editor/src/actions.rs index e823b06910fba67a38754ece6ad746f5f632e613..1c5e5a29c7c2e6ae2e7a9bb33048550770f71d1e 100644 --- a/crates/editor/src/actions.rs +++ b/crates/editor/src/actions.rs @@ -612,8 +612,6 @@ actions!( NextEditPrediction, /// Scrolls to the next screen. NextScreen, - /// Goes to the next snippet tabstop if one exists. - NextSnippetTabstop, /// Opens the context menu at cursor position. OpenContextMenu, /// Opens excerpts from the current file. @@ -647,8 +645,6 @@ actions!( Paste, /// Navigates to the previous edit prediction. PreviousEditPrediction, - /// Goes to the previous snippet tabstop if one exists. - PreviousSnippetTabstop, /// Redoes the last undone edit. Redo, /// Redoes the last selection change. diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index d46a326d6532990130926b3d732b829eecda144f..8a62f086af502be34b6a9b6baa91ce4e7be576de 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -2461,10 +2461,6 @@ impl Editor { key_context.add("renaming"); } - if !self.snippet_stack.is_empty() { - key_context.add("in_snippet"); - } - match self.context_menu.borrow().as_ref() { Some(CodeContextMenu::Completions(menu)) => { if menu.visible() { @@ -9975,38 +9971,6 @@ impl Editor { self.outdent(&Outdent, window, cx); } - pub fn next_snippet_tabstop( - &mut self, - _: &NextSnippetTabstop, - window: &mut Window, - cx: &mut Context, - ) { - if self.mode.is_single_line() || self.snippet_stack.is_empty() { - return; - } - - if self.move_to_next_snippet_tabstop(window, cx) { - self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); - return; - } - } - - pub fn previous_snippet_tabstop( - &mut self, - _: &PreviousSnippetTabstop, - window: &mut Window, - cx: &mut Context, - ) { - if self.mode.is_single_line() || self.snippet_stack.is_empty() { - return; - } - - if self.move_to_prev_snippet_tabstop(window, cx) { - self.hide_mouse_cursor(HideMouseCursorOrigin::TypingAction, cx); - return; - } - } - pub fn tab(&mut self, _: &Tab, window: &mut Window, cx: &mut Context) { if self.mode.is_single_line() { cx.propagate(); diff --git a/crates/editor/src/editor_tests.rs b/crates/editor/src/editor_tests.rs index 40a5e487cf34ae35e34bca4ced53681ab684f115..024a19d44095a6a5927e0ba4f5d661da593cb0bb 100644 --- a/crates/editor/src/editor_tests.rs +++ b/crates/editor/src/editor_tests.rs @@ -11137,129 +11137,6 @@ async fn test_snippet_placeholder_choices(cx: &mut TestAppContext) { }); } -#[gpui::test] -async fn test_snippet_tabstop_navigation_with_placeholders(cx: &mut TestAppContext) { - init_test(cx, |_| {}); - - fn assert_state(editor: &mut Editor, cx: &mut Context, marked_text: &str) { - let (expected_text, selection_ranges) = marked_text_ranges(marked_text, false); - assert_eq!(editor.text(cx), expected_text); - assert_eq!( - editor - .selections - .ranges::(&editor.display_snapshot(cx)), - selection_ranges - ); - } - - let (text, insertion_ranges) = marked_text_ranges( - indoc! {" - ˇ - "}, - false, - ); - - let buffer = cx.update(|cx| MultiBuffer::build_simple(&text, cx)); - let (editor, cx) = cx.add_window_view(|window, cx| build_editor(buffer, window, cx)); - - _ = editor.update_in(cx, |editor, window, cx| { - let snippet = Snippet::parse("type ${1|,i32,u32|} = $2; $3").unwrap(); - - editor - .insert_snippet(&insertion_ranges, snippet, window, cx) - .unwrap(); - - assert_state( - editor, - cx, - indoc! {" - type «» = ;• - "}, - ); - - assert!( - editor.context_menu_visible(), - "Context menu should be visible for placeholder choices" - ); - - editor.next_snippet_tabstop(&NextSnippetTabstop, window, cx); - - assert_state( - editor, - cx, - indoc! {" - type = «»;• - "}, - ); - - assert!( - !editor.context_menu_visible(), - "Context menu should be hidden after moving to next tabstop" - ); - - editor.next_snippet_tabstop(&NextSnippetTabstop, window, cx); - - assert_state( - editor, - cx, - indoc! {" - type = ; ˇ - "}, - ); - - editor.next_snippet_tabstop(&NextSnippetTabstop, window, cx); - - assert_state( - editor, - cx, - indoc! {" - type = ; ˇ - "}, - ); - }); - - _ = editor.update_in(cx, |editor, window, cx| { - editor.select_all(&SelectAll, window, cx); - editor.backspace(&Backspace, window, cx); - - let snippet = Snippet::parse("fn ${1|,foo,bar|} = ${2:value}; $3").unwrap(); - let insertion_ranges = editor - .selections - .all(&editor.display_snapshot(cx)) - .iter() - .map(|s| s.range()) - .collect::>(); - - editor - .insert_snippet(&insertion_ranges, snippet, window, cx) - .unwrap(); - - assert_state(editor, cx, "fn «» = value;•"); - - assert!( - editor.context_menu_visible(), - "Context menu should be visible for placeholder choices" - ); - - editor.next_snippet_tabstop(&NextSnippetTabstop, window, cx); - - assert_state(editor, cx, "fn = «valueˇ»;•"); - - editor.previous_snippet_tabstop(&PreviousSnippetTabstop, window, cx); - - assert_state(editor, cx, "fn «» = value;•"); - - assert!( - editor.context_menu_visible(), - "Context menu should be visible again after returning to first tabstop" - ); - - editor.previous_snippet_tabstop(&PreviousSnippetTabstop, window, cx); - - assert_state(editor, cx, "fn «» = value;•"); - }); -} - #[gpui::test] async fn test_snippets(cx: &mut TestAppContext) { init_test(cx, |_| {}); diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 505d7860c6b8f605ed0bc15181f507aa0fe0a9f1..a5433745d05a6e8536c1b9faff7cf34a360cad47 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -232,8 +232,6 @@ impl EditorElement { register_action(editor, window, Editor::blame_hover); register_action(editor, window, Editor::delete); register_action(editor, window, Editor::tab); - register_action(editor, window, Editor::next_snippet_tabstop); - register_action(editor, window, Editor::previous_snippet_tabstop); register_action(editor, window, Editor::backtab); register_action(editor, window, Editor::indent); register_action(editor, window, Editor::outdent);