Upgrade tree sitter and all grammars (#17734)

Fixes https://github.com/zed-industries/zed/issues/5291

Release Notes:

- Fixed a bug where the 'toggle comments' command didn't use the right
comment syntax in JSX and TSX elements.

---------

Co-authored-by: Conrad <conrad@zed.dev>
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
This commit is contained in:
Max Brunsfeld
2024-09-16 17:10:57 -07:00
committed by GitHub
co-authored by Conrad Conrad Irwin Kirill Bulatov
parent b54b3d6246
commit bc5ed1334f
41 changed files with 366 additions and 387 deletions
+1 -1
View File
@@ -3359,7 +3359,7 @@ mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_indents_query(
r#"
+1 -1
View File
@@ -63,6 +63,6 @@ fn rust_lang() -> Arc<Language> {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
))
}
+4 -4
View File
@@ -2273,7 +2273,7 @@ async fn test_propagate_saves_and_fs_changes(
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
let javascript = Arc::new(Language::new(
LanguageConfig {
@@ -2284,7 +2284,7 @@ async fn test_propagate_saves_and_fs_changes(
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
for client in [&client_a, &client_b, &client_c] {
client.language_registry().add(rust.clone());
@@ -3855,7 +3855,7 @@ async fn test_collaborating_with_diagnostics(
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
let mut fake_language_servers = client_a
.language_registry()
@@ -4458,7 +4458,7 @@ async fn test_prettier_formatting_buffer(
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
let mut fake_language_servers = client_a.language_registry().register_fake_lsp(
"TypeScript",
+3 -3
View File
@@ -1645,7 +1645,7 @@ pub mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_highlights_query(
r#"
@@ -1750,7 +1750,7 @@ pub mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_highlights_query(
r#"
@@ -1833,7 +1833,7 @@ pub mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_highlights_query(
r#"
+27 -27
View File
@@ -2322,7 +2322,7 @@ async fn test_newline_above(cx: &mut gpui::TestAppContext) {
let language = Arc::new(
Language::new(
LanguageConfig::default(),
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_indents_query(r#"(_ "(" ")" @end) @indent"#)
.unwrap(),
@@ -2370,7 +2370,7 @@ async fn test_newline_below(cx: &mut gpui::TestAppContext) {
let language = Arc::new(
Language::new(
LanguageConfig::default(),
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_indents_query(r#"(_ "(" ")" @end) @indent"#)
.unwrap(),
@@ -2524,7 +2524,7 @@ async fn test_tab_in_leading_whitespace_auto_indents_lines(cx: &mut gpui::TestAp
let language = Arc::new(
Language::new(
LanguageConfig::default(),
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_indents_query(r#"(_ "(" ")" @end) @indent"#)
.unwrap(),
@@ -2585,7 +2585,7 @@ async fn test_tab_with_mixed_whitespace(cx: &mut gpui::TestAppContext) {
let language = Arc::new(
Language::new(
LanguageConfig::default(),
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_indents_query(r#"(_ "{" "}" @end) @indent"#)
.unwrap(),
@@ -4311,7 +4311,7 @@ async fn test_paste_multiline(cx: &mut gpui::TestAppContext) {
let mut cx = EditorTestContext::new(cx).await;
let language = Arc::new(Language::new(
LanguageConfig::default(),
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
cx.update_buffer(|buffer, cx| buffer.set_language(Some(language), cx));
@@ -5022,7 +5022,7 @@ async fn test_select_larger_smaller_syntax_node(cx: &mut gpui::TestAppContext) {
let language = Arc::new(Language::new(
LanguageConfig::default(),
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
let text = r#"
@@ -5231,7 +5231,7 @@ async fn test_autoindent_selections(cx: &mut gpui::TestAppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_indents_query(
r#"
@@ -5324,7 +5324,7 @@ async fn test_autoclose_and_auto_surround_pairs(cx: &mut gpui::TestAppContext) {
autoclose_before: "})]".to_string(),
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
cx.language_registry().add(language.clone());
@@ -5496,7 +5496,7 @@ async fn test_always_treat_brackets_as_autoclosed_skip_over(cx: &mut gpui::TestA
autoclose_before: "})]".to_string(),
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
cx.language_registry().add(language.clone());
@@ -5636,7 +5636,7 @@ async fn test_autoclose_with_embedded_language(cx: &mut gpui::TestAppContext) {
autoclose_before: "})]>".into(),
..Default::default()
},
Some(tree_sitter_typescript::language_tsx()),
Some(tree_sitter_typescript::LANGUAGE_TSX.into()),
));
cx.language_registry().add(html_language.clone());
@@ -5811,7 +5811,7 @@ async fn test_autoclose_with_overrides(cx: &mut gpui::TestAppContext) {
autoclose_before: "})]>".into(),
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_override_query("(string_literal) @string")
.unwrap(),
@@ -5916,7 +5916,7 @@ async fn test_surround_with_pair(cx: &mut gpui::TestAppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
let text = r#"
@@ -6065,7 +6065,7 @@ async fn test_delete_autoclose_pair(cx: &mut gpui::TestAppContext) {
autoclose_before: "}".to_string(),
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
let text = r#"
@@ -6192,7 +6192,7 @@ async fn test_always_treat_brackets_as_autoclosed_delete(cx: &mut gpui::TestAppC
autoclose_before: "})]".to_string(),
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
cx.language_registry().add(language.clone());
@@ -6262,7 +6262,7 @@ async fn test_auto_replace_emoji_shortcode(cx: &mut gpui::TestAppContext) {
let language = Arc::new(Language::new(
LanguageConfig::default(),
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
let buffer = cx.new_model(|cx| Buffer::local("", cx).with_language(language, cx));
@@ -6937,7 +6937,7 @@ async fn test_document_format_manual_trigger(cx: &mut gpui::TestAppContext) {
},
..LanguageConfig::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
update_test_language_settings(cx, |settings| {
// Enable Prettier formatting for the same buffer, and ensure
@@ -7272,7 +7272,7 @@ async fn test_handle_input_for_show_signature_help_auto_signature_help_true(
autoclose_before: "})]".to_string(),
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
);
let language = Arc::new(language);
@@ -7414,7 +7414,7 @@ async fn test_handle_input_with_different_show_signature_settings(cx: &mut gpui:
autoclose_before: "})]".to_string(),
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
);
let language = Arc::new(language);
@@ -8207,7 +8207,7 @@ async fn test_toggle_comment(cx: &mut gpui::TestAppContext) {
line_comments: vec!["// ".into(), "//! ".into(), "/// ".into()],
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
cx.update_buffer(|buffer, cx| buffer.set_language(Some(language), cx));
@@ -8328,7 +8328,7 @@ async fn test_advance_downward_on_toggle_comment(cx: &mut gpui::TestAppContext)
line_comments: vec!["// ".into()],
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
));
let mut cx = EditorTestContext::new(cx).await;
@@ -8481,7 +8481,7 @@ async fn test_toggle_block_comment(cx: &mut gpui::TestAppContext) {
line_comments: vec!["// ".into()],
..Default::default()
},
Some(tree_sitter_typescript::language_tsx()),
Some(tree_sitter_typescript::LANGUAGE_TSX.into()),
));
cx.language_registry().add(html_language.clone());
@@ -8889,7 +8889,7 @@ async fn test_extra_newline_insertion(cx: &mut gpui::TestAppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_indents_query("")
.unwrap(),
@@ -9725,7 +9725,7 @@ async fn test_on_type_formatting_not_triggered(cx: &mut gpui::TestAppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
let mut fake_servers = language_registry.register_fake_lsp(
"Rust",
@@ -9838,7 +9838,7 @@ async fn test_language_server_restart_due_to_settings_change(cx: &mut gpui::Test
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
let mut fake_servers = language_registry.register_fake_lsp(
"Rust",
@@ -10071,7 +10071,7 @@ async fn test_completions_in_languages_with_extra_word_characters(cx: &mut gpui:
.collect(),
..Default::default()
},
Some(tree_sitter_typescript::language_tsx()),
Some(tree_sitter_typescript::LANGUAGE_TSX.into()),
)
.with_override_query("(jsx_self_closing_element) @element")
.unwrap(),
@@ -10174,7 +10174,7 @@ async fn test_document_format_with_prettier(cx: &mut gpui::TestAppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
update_test_language_settings(cx, |settings| {
settings.defaults.prettier = Some(PrettierSettings {
@@ -13891,7 +13891,7 @@ pub(crate) fn rust_lang() -> Arc<Language> {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
))
}
@@ -78,7 +78,7 @@ mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_brackets_query(indoc! {r#"
("{" @open "}" @close)
+1 -1
View File
@@ -1575,7 +1575,7 @@ pub mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
let fake_servers = language_registry.register_fake_lsp(
name,
+1 -1
View File
@@ -1599,7 +1599,7 @@ mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
))
}
@@ -125,7 +125,7 @@ impl EditorLspTestContext {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_queries(LanguageQueries {
indents: Some(Cow::from(indoc! {r#"
@@ -184,7 +184,7 @@ impl EditorLspTestContext {
word_characters,
..Default::default()
},
Some(tree_sitter_typescript::language_typescript()),
Some(tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into()),
)
.with_queries(LanguageQueries {
brackets: Some(Cow::from(indoc! {r#"
+7 -5
View File
@@ -18,7 +18,7 @@ use wasm_encoder::{ComponentSectionId, Encode as _, RawSection, Section as _};
use wasmparser::Parser;
use wit_component::ComponentEncoder;
/// Currently, we compile with Rust's `wasm32-wasi` target, which works with WASI `preview1`.
/// Currently, we compile with Rust's `wasm32-wasip1` target, which works with WASI `preview1`.
/// But the WASM component model is based on WASI `preview2`. So we need an 'adapter' WASM
/// module, which implements the `preview1` interface in terms of `preview2`.
///
@@ -447,7 +447,7 @@ impl ExtensionBuilder {
}
// This was adapted from:
// https://github.com/bytecodealliance/wasm-tools/1791a8f139722e9f8679a2bd3d8e423e55132b22/src/bin/wasm-tools/strip.rs
// https://github.com/bytecodealliance/wasm-tools/blob/1791a8f139722e9f8679a2bd3d8e423e55132b22/src/bin/wasm-tools/strip.rs
fn strip_custom_sections(&self, input: &Vec<u8>) -> Result<Vec<u8>> {
use wasmparser::Payload::*;
@@ -458,13 +458,15 @@ impl ExtensionBuilder {
for payload in Parser::new(0).parse_all(input) {
let payload = payload?;
let component_header = wasm_encoder::Component::HEADER;
let module_header = wasm_encoder::Module::HEADER;
// Track nesting depth, so that we don't mess with inner producer sections:
match payload {
Version { encoding, .. } => {
output.extend_from_slice(match encoding {
wasmparser::Encoding::Component => &wasm_encoder::Component::HEADER,
wasmparser::Encoding::Module => &wasm_encoder::Module::HEADER,
wasmparser::Encoding::Component => &component_header,
wasmparser::Encoding::Module => &module_header,
});
}
ModuleSection { .. } | ComponentSection { .. } => {
@@ -476,7 +478,7 @@ impl ExtensionBuilder {
Some(c) => c,
None => break,
};
if output.starts_with(&wasm_encoder::Component::HEADER) {
if output.starts_with(&component_header) {
parent.push(ComponentSectionId::Component as u8);
output.encode(&mut parent);
} else {
+1 -2
View File
@@ -127,7 +127,7 @@ impl WasmHost {
},
);
let (mut extension, instance) = Extension::instantiate_async(
let mut extension = Extension::instantiate_async(
&mut store,
this.release_channel,
zed_api_version,
@@ -143,7 +143,6 @@ impl WasmHost {
let (tx, mut rx) = mpsc::unbounded::<ExtensionCall>();
executor
.spawn(async move {
let _instance = instance;
while let Some(call) = rx.next().await {
(call)(&mut extension, &mut store).await;
}
+12 -14
View File
@@ -13,7 +13,7 @@ use language::{LanguageServerName, LspAdapterDelegate};
use semantic_version::SemanticVersion;
use std::{ops::RangeInclusive, sync::Arc};
use wasmtime::{
component::{Component, Instance, Linker, Resource},
component::{Component, Linker, Resource},
Store,
};
@@ -75,57 +75,55 @@ impl Extension {
release_channel: ReleaseChannel,
version: SemanticVersion,
component: &Component,
) -> Result<(Self, Instance)> {
) -> Result<Self> {
// Note: The release channel can be used to stage a new version of the extension API.
let _ = release_channel;
let allow_latest_version = match release_channel {
ReleaseChannel::Dev | ReleaseChannel::Nightly => true,
ReleaseChannel::Stable | ReleaseChannel::Preview => false,
};
if allow_latest_version && version >= latest::MIN_VERSION {
let (extension, instance) =
let extension =
latest::Extension::instantiate_async(store, component, latest::linker())
.await
.context("failed to instantiate wasm extension")?;
Ok((Self::V020(extension), instance))
Ok(Self::V020(extension))
} else if version >= since_v0_1_0::MIN_VERSION {
let (extension, instance) = since_v0_1_0::Extension::instantiate_async(
let extension = since_v0_1_0::Extension::instantiate_async(
store,
component,
since_v0_1_0::linker(),
)
.await
.context("failed to instantiate wasm extension")?;
Ok((Self::V010(extension), instance))
Ok(Self::V010(extension))
} else if version >= since_v0_0_6::MIN_VERSION {
let (extension, instance) = since_v0_0_6::Extension::instantiate_async(
let extension = since_v0_0_6::Extension::instantiate_async(
store,
component,
since_v0_0_6::linker(),
)
.await
.context("failed to instantiate wasm extension")?;
Ok((Self::V006(extension), instance))
Ok(Self::V006(extension))
} else if version >= since_v0_0_4::MIN_VERSION {
let (extension, instance) = since_v0_0_4::Extension::instantiate_async(
let extension = since_v0_0_4::Extension::instantiate_async(
store,
component,
since_v0_0_4::linker(),
)
.await
.context("failed to instantiate wasm extension")?;
Ok((Self::V004(extension), instance))
Ok(Self::V004(extension))
} else {
let (extension, instance) = since_v0_0_1::Extension::instantiate_async(
let extension = since_v0_0_1::Extension::instantiate_async(
store,
component,
since_v0_0_1::linker(),
)
.await
.context("failed to instantiate wasm extension")?;
Ok((Self::V001(extension), instance))
Ok(Self::V001(extension))
}
}
@@ -30,15 +30,7 @@ pub type ExtensionWorktree = Arc<dyn LspAdapterDelegate>;
pub fn linker() -> &'static Linker<WasmState> {
static LINKER: OnceLock<Linker<WasmState>> = OnceLock::new();
LINKER.get_or_init(|| {
super::new_linker(|linker, f| {
Extension::add_to_linker(linker, f)?;
latest::zed::extension::github::add_to_linker(linker, f)?;
latest::zed::extension::nodejs::add_to_linker(linker, f)?;
latest::zed::extension::platform::add_to_linker(linker, f)?;
Ok(())
})
})
LINKER.get_or_init(|| super::new_linker(Extension::add_to_linker))
}
impl From<Command> for latest::Command {
+1 -1
View File
@@ -39,7 +39,7 @@ async fn main() -> Result<()> {
let args = Args::parse();
let fs = Arc::new(RealFs::default());
let engine = wasmtime::Engine::default();
let mut wasm_store = WasmStore::new(engine)?;
let mut wasm_store = WasmStore::new(&engine)?;
let extension_path = args
.source_dir
+12 -12
View File
@@ -79,7 +79,7 @@ fn test_select_language(cx: &mut AppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
registry.add(Arc::new(Language::new(
LanguageConfig {
@@ -90,7 +90,7 @@ fn test_select_language(cx: &mut AppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
// matching file extension
@@ -1671,7 +1671,7 @@ fn test_autoindent_language_without_indents_query(cx: &mut AppContext) {
auto_indent_using_last_non_empty_line: false,
..Default::default()
},
Some(tree_sitter_json::language()),
Some(tree_sitter_json::LANGUAGE.into()),
)),
cx,
);
@@ -1999,7 +1999,7 @@ fn test_language_scope_at_with_javascript(cx: &mut AppContext) {
.collect(),
..Default::default()
},
Some(tree_sitter_typescript::language_tsx()),
Some(tree_sitter_typescript::LANGUAGE_TSX.into()),
)
.with_override_query(
r#"
@@ -2121,7 +2121,7 @@ fn test_language_scope_at_with_rust(cx: &mut AppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_override_query(
r#"
@@ -2731,7 +2731,7 @@ fn ruby_lang() -> Language {
line_comments: vec!["# ".into()],
..Default::default()
},
Some(tree_sitter_ruby::language()),
Some(tree_sitter_ruby::LANGUAGE.into()),
)
.with_indents_query(
r#"
@@ -2782,7 +2782,7 @@ fn erb_lang() -> Language {
block_comment: Some(("<%#".into(), "%>".into())),
..Default::default()
},
Some(tree_sitter_embedded_template::language()),
Some(tree_sitter_embedded_template::LANGUAGE.into()),
)
.with_injection_query(
r#"
@@ -2812,7 +2812,7 @@ fn rust_lang() -> Language {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_indents_query(
r#"
@@ -2870,7 +2870,7 @@ fn json_lang() -> Language {
},
..Default::default()
},
Some(tree_sitter_json::language()),
Some(tree_sitter_json::LANGUAGE.into()),
)
}
@@ -2880,7 +2880,7 @@ fn javascript_lang() -> Language {
name: "JavaScript".into(),
..Default::default()
},
Some(tree_sitter_typescript::language_tsx()),
Some(tree_sitter_typescript::LANGUAGE_TSX.into()),
)
.with_brackets_query(
r#"
@@ -2907,7 +2907,7 @@ pub fn markdown_lang() -> Language {
},
..Default::default()
},
Some(tree_sitter_md::language()),
Some(tree_sitter_md::LANGUAGE.into()),
)
.with_injection_query(
r#"
@@ -2930,7 +2930,7 @@ pub fn markdown_inline_lang() -> Language {
hidden: true,
..LanguageConfig::default()
},
Some(tree_sitter_md::inline_language()),
Some(tree_sitter_md::INLINE_LANGUAGE.into()),
)
.with_highlights_query("(emphasis) @emphasis")
.unwrap()
+10 -3
View File
@@ -94,7 +94,7 @@ where
let mut parser = PARSERS.lock().pop().unwrap_or_else(|| {
let mut parser = Parser::new();
parser
.set_wasm_store(WasmStore::new(WASM_ENGINE.clone()).unwrap())
.set_wasm_store(WasmStore::new(&WASM_ENGINE).unwrap())
.unwrap();
parser
});
@@ -1485,6 +1485,13 @@ impl LanguageScope {
}
}
pub fn override_name(&self) -> Option<&str> {
let id = self.override_id?;
let grammar = self.language.grammar.as_ref()?;
let override_config = grammar.override_config.as_ref()?;
override_config.values.get(&id).map(|e| e.0.as_str())
}
fn config_override(&self) -> Option<&LanguageConfigOverride> {
let id = self.override_id?;
let grammar = self.language.grammar.as_ref()?;
@@ -1755,8 +1762,8 @@ mod tests {
let languages = LanguageRegistry::test(cx.executor());
let languages = Arc::new(languages);
languages.register_native_grammars([
("json", tree_sitter_json::language()),
("rust", tree_sitter_rust::language()),
("json", tree_sitter_json::LANGUAGE),
("rust", tree_sitter_rust::LANGUAGE),
]);
languages.register_test_language(LanguageConfig {
name: "JSON".into(),
+2 -2
View File
@@ -439,12 +439,12 @@ impl LanguageRegistry {
/// grammar controls how the source code is parsed.
pub fn register_native_grammars(
&self,
grammars: impl IntoIterator<Item = (impl Into<Arc<str>>, tree_sitter::Language)>,
grammars: impl IntoIterator<Item = (impl Into<Arc<str>>, impl Into<tree_sitter::Language>)>,
) {
self.state.write().grammars.extend(
grammars
.into_iter()
.map(|(name, grammar)| (name.into(), AvailableGrammar::Native(grammar))),
.map(|(name, grammar)| (name.into(), AvailableGrammar::Native(grammar.into()))),
);
}
@@ -1160,7 +1160,7 @@ fn ruby_lang() -> Language {
},
..Default::default()
},
Some(tree_sitter_ruby::language()),
Some(tree_sitter_ruby::LANGUAGE.into()),
)
.with_highlights_query(
r#"
@@ -1182,7 +1182,7 @@ fn erb_lang() -> Language {
},
..Default::default()
},
Some(tree_sitter_embedded_template::language()),
Some(tree_sitter_embedded_template::LANGUAGE.into()),
)
.with_highlights_query(
r#"
@@ -1218,7 +1218,7 @@ fn rust_lang() -> Language {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_highlights_query(
r#"
@@ -1247,7 +1247,7 @@ fn elixir_lang() -> Language {
},
..Default::default()
},
Some(tree_sitter_elixir::language()),
Some(tree_sitter_elixir::LANGUAGE.into()),
)
.with_highlights_query(
r#"
@@ -1267,7 +1267,7 @@ fn heex_lang() -> Language {
},
..Default::default()
},
Some(tree_sitter_heex::language()),
Some(tree_sitter_heex::LANGUAGE.into()),
)
.with_injection_query(
r#"
+1 -1
View File
@@ -43,7 +43,7 @@ async fn test_lsp_logs(cx: &mut TestAppContext) {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)));
let mut fake_rust_servers = language_registry.register_fake_lsp(
"Rust",
+1 -1
View File
@@ -346,7 +346,7 @@ mod tests {
});
});
});
let language = crate::language("c", tree_sitter_c::language());
let language = crate::language("c", tree_sitter_c::LANGUAGE.into());
cx.new_model(|cx| {
let mut buffer = Buffer::local("", cx).with_language(language, cx);
+1 -1
View File
@@ -94,12 +94,12 @@
"typename"
"union"
"using"
"virtual"
"while"
(primitive_type)
(sized_type_specifier)
(storage_class_specifier)
(type_qualifier)
(virtual)
] @keyword
[
+1 -1
View File
@@ -140,7 +140,7 @@ mod tests {
#[gpui::test]
async fn test_outline(cx: &mut TestAppContext) {
let language = crate::language("css", tree_sitter_css::language());
let language = crate::language("css", tree_sitter_css::LANGUAGE.into());
let text = r#"
/* Import statement */
+1 -1
View File
@@ -614,7 +614,7 @@ mod tests {
#[gpui::test]
async fn test_go_label_for_completion() {
let adapter = Arc::new(GoLspAdapter);
let language = language("go", tree_sitter_go::language());
let language = language("go", tree_sitter_go::LANGUAGE.into());
let theme = SyntaxTheme::new_test([
("type", Hsla::default()),
+19 -19
View File
@@ -36,25 +36,25 @@ pub fn init(
cx: &mut AppContext,
) {
languages.register_native_grammars([
("bash", tree_sitter_bash::language()),
("c", tree_sitter_c::language()),
("cpp", tree_sitter_cpp::language()),
("css", tree_sitter_css::language()),
("go", tree_sitter_go::language()),
("gomod", tree_sitter_go_mod::language()),
("gowork", tree_sitter_gowork::language()),
("jsdoc", tree_sitter_jsdoc::language()),
("json", tree_sitter_json::language()),
("jsonc", tree_sitter_json::language()),
("markdown", tree_sitter_md::language()),
("markdown-inline", tree_sitter_md::inline_language()),
("proto", protols_tree_sitter_proto::language()),
("python", tree_sitter_python::language()),
("regex", tree_sitter_regex::language()),
("rust", tree_sitter_rust::language()),
("tsx", tree_sitter_typescript::language_tsx()),
("typescript", tree_sitter_typescript::language_typescript()),
("yaml", tree_sitter_yaml::language()),
("bash", tree_sitter_bash::LANGUAGE),
("c", tree_sitter_c::LANGUAGE),
("cpp", tree_sitter_cpp::LANGUAGE),
("css", tree_sitter_css::LANGUAGE),
("go", tree_sitter_go::LANGUAGE),
("gomod", tree_sitter_go_mod::LANGUAGE),
("gowork", tree_sitter_gowork::LANGUAGE),
("jsdoc", tree_sitter_jsdoc::LANGUAGE),
("json", tree_sitter_json::LANGUAGE),
("jsonc", tree_sitter_json::LANGUAGE),
("markdown", tree_sitter_md::LANGUAGE),
("markdown-inline", tree_sitter_md::INLINE_LANGUAGE),
("proto", protols_tree_sitter_proto::LANGUAGE),
("python", tree_sitter_python::LANGUAGE),
("regex", tree_sitter_regex::LANGUAGE),
("rust", tree_sitter_rust::LANGUAGE),
("tsx", tree_sitter_typescript::LANGUAGE_TSX),
("typescript", tree_sitter_typescript::LANGUAGE_TYPESCRIPT),
("yaml", tree_sitter_yaml::LANGUAGE),
]);
macro_rules! language {
+1 -1
View File
@@ -307,7 +307,7 @@ mod tests {
#[gpui::test]
async fn test_python_autoindent(cx: &mut TestAppContext) {
cx.executor().set_block_on_ticks(usize::MAX..=usize::MAX);
let language = crate::language("python", tree_sitter_python::language());
let language = crate::language("python", tree_sitter_python::LANGUAGE.into());
cx.update(|cx| {
let test_settings = SettingsStore::test(cx);
cx.set_global(test_settings);
+3 -3
View File
@@ -743,7 +743,7 @@ mod tests {
#[gpui::test]
async fn test_rust_label_for_completion() {
let adapter = Arc::new(RustLspAdapter);
let language = language("rust", tree_sitter_rust::language());
let language = language("rust", tree_sitter_rust::LANGUAGE.into());
let grammar = language.grammar().unwrap();
let theme = SyntaxTheme::new_test([
("type", Hsla::default()),
@@ -868,7 +868,7 @@ mod tests {
#[gpui::test]
async fn test_rust_label_for_symbol() {
let adapter = Arc::new(RustLspAdapter);
let language = language("rust", tree_sitter_rust::language());
let language = language("rust", tree_sitter_rust::LANGUAGE.into());
let grammar = language.grammar().unwrap();
let theme = SyntaxTheme::new_test([
("type", Hsla::default()),
@@ -920,7 +920,7 @@ mod tests {
});
});
let language = crate::language("rust", tree_sitter_rust::language());
let language = crate::language("rust", tree_sitter_rust::LANGUAGE.into());
cx.new_model(|cx| {
let mut buffer = Buffer::local("", cx).with_language(language, cx);
+4 -1
View File
@@ -555,7 +555,10 @@ mod tests {
#[gpui::test]
async fn test_outline(cx: &mut TestAppContext) {
let language = crate::language("typescript", tree_sitter_typescript::language_typescript());
let language = crate::language(
"typescript",
tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into(),
);
let text = r#"
function a() {
@@ -1234,7 +1234,7 @@ fn main() {
collapsed_placeholder: " /* ... */ ".to_string(),
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
))
}
+1 -1
View File
@@ -484,7 +484,7 @@ mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_outline_query(
r#"(struct_item
+1 -1
View File
@@ -4787,7 +4787,7 @@ mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_highlights_query(
r#"
+3 -3
View File
@@ -5339,7 +5339,7 @@ fn rust_lang() -> Arc<Language> {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
))
}
@@ -5353,7 +5353,7 @@ fn typescript_lang() -> Arc<Language> {
},
..Default::default()
},
Some(tree_sitter_typescript::language_typescript()),
Some(tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into()),
))
}
@@ -5367,7 +5367,7 @@ fn tsx_lang() -> Arc<Language> {
},
..Default::default()
},
Some(tree_sitter_typescript::language_tsx()),
Some(tree_sitter_typescript::LANGUAGE_TSX.into()),
))
}
+6 -4
View File
@@ -471,10 +471,12 @@ mod tests {
#[gpui::test]
fn test_markdown_code_blocks(cx: &mut AppContext) {
let markdown = languages::language("markdown", tree_sitter_md::language());
let typescript =
languages::language("typescript", tree_sitter_typescript::language_typescript());
let python = languages::language("python", tree_sitter_python::language());
let markdown = languages::language("markdown", tree_sitter_md::LANGUAGE.into());
let typescript = languages::language(
"typescript",
tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into(),
);
let python = languages::language("python", tree_sitter_python::LANGUAGE.into());
let language_registry = Arc::new(LanguageRegistry::new(cx.background_executor().clone()));
language_registry.add(markdown.clone());
language_registry.add(typescript.clone());
+1 -1
View File
@@ -398,7 +398,7 @@ mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_outline_query(
"
+8 -4
View File
@@ -15,7 +15,6 @@ use std::{
sync::{Arc, LazyLock},
};
use tree_sitter::Query;
use tree_sitter_json::language;
use util::{merge_non_null_json_value_into, RangeExt, ResultExt as _};
use crate::{SettingsJsonSchemaParams, WorktreeId};
@@ -955,12 +954,17 @@ fn replace_value_in_json_text(
new_value: &serde_json::Value,
) -> (Range<usize>, String) {
static PAIR_QUERY: LazyLock<Query> = LazyLock::new(|| {
Query::new(&language(), "(pair key: (string) @key value: (_) @value)")
.expect("Failed to create PAIR_QUERY")
Query::new(
&tree_sitter_json::LANGUAGE.into(),
"(pair key: (string) @key value: (_) @value)",
)
.expect("Failed to create PAIR_QUERY")
});
let mut parser = tree_sitter::Parser::new();
parser.set_language(&tree_sitter_json::language()).unwrap();
parser
.set_language(&tree_sitter_json::LANGUAGE.into())
.unwrap();
let syntax_tree = parser.parse(text, None).unwrap();
let mut cursor = tree_sitter::QueryCursor::new();
+2 -2
View File
@@ -226,7 +226,7 @@ mod tests {
let rust_language = Arc::new(
Language::new(
LanguageConfig::default(),
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
)
.with_outline_query(
r#"(function_item
@@ -240,7 +240,7 @@ mod tests {
let typescript_language = Arc::new(
Language::new(
LanguageConfig::default(),
Some(tree_sitter_typescript::language_typescript()),
Some(tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into()),
)
.with_outline_query(
r#"(function_declaration
+1 -1
View File
@@ -1192,7 +1192,7 @@ async fn test_toggle_comments(cx: &mut gpui::TestAppContext) {
line_comments: vec!["// ".into(), "//! ".into(), "/// ".into()],
..Default::default()
},
Some(language::tree_sitter_rust::language()),
Some(language::tree_sitter_rust::LANGUAGE.into()),
));
cx.update_buffer(|buffer, cx| buffer.set_language(Some(language), cx));
+2 -2
View File
@@ -3445,7 +3445,7 @@ mod tests {
},
..Default::default()
},
Some(tree_sitter_rust::language()),
Some(tree_sitter_rust::LANGUAGE.into()),
))
}
@@ -3459,7 +3459,7 @@ mod tests {
},
..Default::default()
},
Some(tree_sitter_md::language()),
Some(tree_sitter_md::LANGUAGE.into()),
))
}