From a01275f3102311c7634d083756c3705194273423 Mon Sep 17 00:00:00 2001 From: videogame hacker Date: Sat, 30 Apr 2022 01:27:47 +0100 Subject: [PATCH] Fix TypeScript and C++ highlighting by including sublanguage queries --- Cargo.toml | 4 +++- src/languages/built_in.rs | 45 +++++++++++++++++++++++++++++++++------ 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5444213..bcb561d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,8 @@ edition = "2021" default = ["built-in"] built-in = [ "tree-sitter-rust", "tree-sitter-javascript", "tree-sitter-regex", - "tree-sitter-python", "tree-sitter-cpp", "tree-sitter-typescript", + "tree-sitter-python", "tree-sitter-c", "tree-sitter-cpp", + "tree-sitter-typescript", ] [dependencies] @@ -21,5 +22,6 @@ tree-sitter-rust = { version = "0.20.1", optional = true } tree-sitter-javascript = { version = "0.20.0", optional = true } tree-sitter-regex = { git = "https://github.com/tree-sitter/tree-sitter-regex.git", rev = "e1cfca", optional = true } tree-sitter-python = { version = "0.19.1", optional = true } +tree-sitter-c = { version = "0.20.1", optional = true } tree-sitter-cpp = { version = "0.20.0", optional = true } tree-sitter-typescript = { version = "0.20.1", optional = true } diff --git a/src/languages/built_in.rs b/src/languages/built_in.rs index 1b4eaf4..5b82026 100644 --- a/src/languages/built_in.rs +++ b/src/languages/built_in.rs @@ -50,6 +50,8 @@ pub fn register_builtin_languages() { register_language("python", python_hl_factory); register_language("py", python_hl_factory); + register_language("c", c_hl_factory); + register_language("cpp", cpp_hl_factory); register_language("c++", cpp_hl_factory); @@ -103,10 +105,23 @@ pub fn python_hl_factory() -> Result { ) } +pub fn c_hl_factory() -> Result { + HighlightConfiguration::new( + tree_sitter_c::language(), + tree_sitter_c::HIGHLIGHT_QUERY, + "", + "", + ) +} + pub fn cpp_hl_factory() -> Result { HighlightConfiguration::new( tree_sitter_cpp::language(), - tree_sitter_cpp::HIGHLIGHT_QUERY, + &format!( + "{}{}", + tree_sitter_c::HIGHLIGHT_QUERY, + tree_sitter_cpp::HIGHLIGHT_QUERY + ), "", "", ) @@ -115,17 +130,33 @@ pub fn cpp_hl_factory() -> Result { pub fn typescript_hl_factory() -> Result { HighlightConfiguration::new( tree_sitter_typescript::language_typescript(), - tree_sitter_typescript::HIGHLIGHT_QUERY, - "", - tree_sitter_typescript::LOCALS_QUERY, + &format!( + "{}{}", + tree_sitter_typescript::HIGHLIGHT_QUERY, + tree_sitter_javascript::HIGHLIGHT_QUERY + ), + tree_sitter_javascript::INJECTION_QUERY, + &format!( + "{}{}", + tree_sitter_javascript::LOCALS_QUERY, + tree_sitter_typescript::LOCALS_QUERY + ), ) } pub fn tsx_hl_factory() -> Result { HighlightConfiguration::new( tree_sitter_typescript::language_tsx(), - tree_sitter_typescript::HIGHLIGHT_QUERY, - "", - tree_sitter_typescript::LOCALS_QUERY, + &format!( + "{}{}", + tree_sitter_typescript::HIGHLIGHT_QUERY, + tree_sitter_javascript::HIGHLIGHT_QUERY + ), + tree_sitter_javascript::INJECTION_QUERY, + &format!( + "{}{}", + tree_sitter_javascript::LOCALS_QUERY, + tree_sitter_typescript::LOCALS_QUERY + ), ) }