vim: indent/outdent (#2644)

Release Notes:

- vim: support indent/outdent
([#832](https://github.com/zed-industries/community/issues/832>)).
This commit is contained in:
Nathan Sobo 2023-06-27 04:15:55 -06:00 committed by GitHub
commit 04d93dfbd9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 2 deletions

View file

@ -207,6 +207,8 @@
"Replace" "Replace"
], ],
"s": "vim::Substitute", "s": "vim::Substitute",
"> >": "editor::Indent",
"< <": "editor::Outdent",
"ctrl-pagedown": "pane::ActivateNextItem", "ctrl-pagedown": "pane::ActivateNextItem",
"ctrl-pageup": "pane::ActivatePrevItem" "ctrl-pageup": "pane::ActivatePrevItem"
} }
@ -302,7 +304,9 @@
"r": [ "r": [
"vim::PushOperator", "vim::PushOperator",
"Replace" "Replace"
] ],
"> >": "editor::Indent",
"< <": "editor::Outdent"
} }
}, },
{ {

View file

@ -123,3 +123,19 @@ async fn test_end_of_document_710(cx: &mut gpui::TestAppContext) {
cx.simulate_keystrokes(["1", "shift-g"]); cx.simulate_keystrokes(["1", "shift-g"]);
cx.assert_editor_state("aˇa\nbb\ncc"); cx.assert_editor_state("aˇa\nbb\ncc");
} }
#[gpui::test]
async fn test_indent_outdent(cx: &mut gpui::TestAppContext) {
let mut cx = VimTestContext::new(cx, true).await;
// works in normal mode
cx.set_state(indoc! {"aa\nbˇb\ncc"}, Mode::Normal);
cx.simulate_keystrokes([">", ">"]);
cx.assert_editor_state("aa\n bˇb\ncc");
cx.simulate_keystrokes(["<", "<"]);
cx.assert_editor_state("aa\nbˇb\ncc");
// works in visuial mode
cx.simulate_keystrokes(["shift-v", "down", ">", ">"]);
cx.assert_editor_state("aa\n b«b\n cˇ»c");
}