Add test for word characters in vim
This commit is contained in:
parent
14fa996cdc
commit
168a213a44
3 changed files with 42 additions and 1 deletions
|
@ -6,6 +6,7 @@ use std::{
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
|
|
||||||
|
use collections::HashSet;
|
||||||
use futures::Future;
|
use futures::Future;
|
||||||
use gpui::{json, ViewContext, ViewHandle};
|
use gpui::{json, ViewContext, ViewHandle};
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
|
@ -154,10 +155,14 @@ impl<'a> EditorLspTestContext<'a> {
|
||||||
capabilities: lsp::ServerCapabilities,
|
capabilities: lsp::ServerCapabilities,
|
||||||
cx: &'a mut gpui::TestAppContext,
|
cx: &'a mut gpui::TestAppContext,
|
||||||
) -> EditorLspTestContext<'a> {
|
) -> EditorLspTestContext<'a> {
|
||||||
|
let mut word_characters: HashSet<char> = Default::default();
|
||||||
|
word_characters.insert('$');
|
||||||
|
word_characters.insert('#');
|
||||||
let language = Language::new(
|
let language = Language::new(
|
||||||
LanguageConfig {
|
LanguageConfig {
|
||||||
name: "Typescript".into(),
|
name: "Typescript".into(),
|
||||||
path_suffixes: vec!["ts".to_string()],
|
path_suffixes: vec!["ts".to_string()],
|
||||||
|
word_characters,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
Some(tree_sitter_typescript::language_typescript()),
|
Some(tree_sitter_typescript::language_typescript()),
|
||||||
|
|
|
@ -261,3 +261,29 @@ async fn test_status_indicator(
|
||||||
assert!(mode_indicator.read(cx).mode.is_some());
|
assert!(mode_indicator.read(cx).mode.is_some());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[gpui::test]
|
||||||
|
async fn test_word_characters(cx: &mut gpui::TestAppContext) {
|
||||||
|
let mut cx = VimTestContext::new_typescript(cx).await;
|
||||||
|
cx.set_state(
|
||||||
|
indoc! { "
|
||||||
|
class A {
|
||||||
|
#ˇgoop = 99;
|
||||||
|
$ˇgoop () { return this.#gˇoop };
|
||||||
|
};
|
||||||
|
console.log(new A().$gooˇp())
|
||||||
|
"},
|
||||||
|
Mode::Normal,
|
||||||
|
);
|
||||||
|
cx.simulate_keystrokes(["v", "i", "w"]);
|
||||||
|
cx.assert_state(
|
||||||
|
indoc! {"
|
||||||
|
class A {
|
||||||
|
«#goopˇ» = 99;
|
||||||
|
«$goopˇ» () { return this.«#goopˇ» };
|
||||||
|
};
|
||||||
|
console.log(new A().«$goopˇ»())
|
||||||
|
"},
|
||||||
|
Mode::Visual,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
|
@ -16,8 +16,18 @@ pub struct VimTestContext<'a> {
|
||||||
|
|
||||||
impl<'a> VimTestContext<'a> {
|
impl<'a> VimTestContext<'a> {
|
||||||
pub async fn new(cx: &'a mut gpui::TestAppContext, enabled: bool) -> VimTestContext<'a> {
|
pub async fn new(cx: &'a mut gpui::TestAppContext, enabled: bool) -> VimTestContext<'a> {
|
||||||
let mut cx = EditorLspTestContext::new_rust(Default::default(), cx).await;
|
let lsp = EditorLspTestContext::new_rust(Default::default(), cx).await;
|
||||||
|
Self::new_with_lsp(lsp, enabled)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn new_typescript(cx: &'a mut gpui::TestAppContext) -> VimTestContext<'a> {
|
||||||
|
Self::new_with_lsp(
|
||||||
|
EditorLspTestContext::new_typescript(Default::default(), cx).await,
|
||||||
|
true,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new_with_lsp(mut cx: EditorLspTestContext<'a>, enabled: bool) -> VimTestContext<'a> {
|
||||||
cx.update(|cx| {
|
cx.update(|cx| {
|
||||||
search::init(cx);
|
search::init(cx);
|
||||||
crate::init(cx);
|
crate::init(cx);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue