1#![doc = include_str!("../README.md")]
2
3use arborium_tree_sitter::Language;
4
5unsafe extern "C" {
6 fn tree_sitter_cpp() -> Language;
7}
8
9pub fn language() -> Language {
11 unsafe { tree_sitter_cpp() }
12}
13
14
15
16const HIGHLIGHTS_QUERY_BASE: &str = include_str!("../queries/highlights.scm");
19
20pub static HIGHLIGHTS_QUERY: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| {
23 let mut query = String::new();
24
25 query.push_str(&arborium_c::HIGHLIGHTS_QUERY);
26 query.push('\n');
27
28 query.push_str(HIGHLIGHTS_QUERY_BASE);
29 query
30});
31
32
33
34
35pub const INJECTIONS_QUERY: &str = include_str!("../queries/injections.scm");
37
38
39
40pub const LOCALS_QUERY: &str = "";
42
43
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48
49 #[test]
50 fn test_grammar() {
51 arborium_test_harness::test_grammar(
52 language(),
53 "cpp",
54
55 &HIGHLIGHTS_QUERY,
56
57 INJECTIONS_QUERY,
58 LOCALS_QUERY,
59 env!("CARGO_MANIFEST_DIR"),
60 );
61 }
62}