add support for SCSS

pull/573/head
Breno Reis 2023-09-20 14:26:43 +07:00
parent 4b43221b9a
commit 1bffcf4e2b
No known key found for this signature in database
GPG Key ID: 62F76B9E8882B44C
5 changed files with 28 additions and 0 deletions

@ -311,6 +311,11 @@ fn main() {
src_dir: "vendored_parsers/tree-sitter-scala-src", src_dir: "vendored_parsers/tree-sitter-scala-src",
extra_files: vec!["scanner.c"], extra_files: vec!["scanner.c"],
}, },
TreeSitterParser {
name: "tree-sitter-scss",
src_dir: "vendored_parsers/tree-sitter-scss-src",
extra_files: vec!["scanner.c"],
},
TreeSitterParser { TreeSitterParser {
name: "tree-sitter-sql", name: "tree-sitter-sql",
src_dir: "vendored_parsers/tree-sitter-sql-src", src_dir: "vendored_parsers/tree-sitter-sql-src",

@ -64,6 +64,7 @@ pub enum Language {
Ruby, Ruby,
Rust, Rust,
Scala, Scala,
Scss,
Solidity, Solidity,
Sql, Sql,
Swift, Swift,
@ -149,6 +150,7 @@ pub fn language_name(language: Language) -> &'static str {
Ruby => "Ruby", Ruby => "Ruby",
Rust => "Rust", Rust => "Rust",
Scala => "Scala", Scala => "Scala",
Scss => "Scss",
Solidity => "Solidity", Solidity => "Solidity",
Sql => "SQL", Sql => "SQL",
Swift => "Swift", Swift => "Swift",
@ -331,6 +333,7 @@ pub fn language_globs(language: Language) -> Vec<glob::Pattern> {
], ],
Rust => &["*.rs"], Rust => &["*.rs"],
Scala => &["*.scala", "*.sbt", "*.sc"], Scala => &["*.scala", "*.sbt", "*.sc"],
Scss => &["*.scss"],
Solidity => &["*.sol"], Solidity => &["*.sol"],
Sql => &["*.sql", "*.pgsql"], Sql => &["*.sql", "*.pgsql"],
Swift => &["*.swift"], Swift => &["*.swift"],
@ -468,6 +471,7 @@ fn from_emacs_mode_header(src: &str) -> Option<Language> {
"ruby" => Some(Ruby), "ruby" => Some(Ruby),
"rust" => Some(Rust), "rust" => Some(Rust),
"scala" => Some(Scala), "scala" => Some(Scala),
"scss" => Some(Scss),
"sh" => Some(Bash), "sh" => Some(Bash),
"solidity" => Some(Solidity), "solidity" => Some(Solidity),
"sql" => Some(Sql), "sql" => Some(Sql),

@ -105,6 +105,7 @@ extern "C" {
fn tree_sitter_ruby() -> ts::Language; fn tree_sitter_ruby() -> ts::Language;
fn tree_sitter_rust() -> ts::Language; fn tree_sitter_rust() -> ts::Language;
fn tree_sitter_scala() -> ts::Language; fn tree_sitter_scala() -> ts::Language;
fn tree_sitter_scss() -> ts::Language;
fn tree_sitter_solidity() -> ts::Language; fn tree_sitter_solidity() -> ts::Language;
fn tree_sitter_sql() -> ts::Language; fn tree_sitter_sql() -> ts::Language;
fn tree_sitter_swift() -> ts::Language; fn tree_sitter_swift() -> ts::Language;
@ -906,6 +907,22 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
sub_languages: vec![], sub_languages: vec![],
} }
} }
Scss => {
let language = unsafe { tree_sitter_scss() };
TreeSitterConfig {
language,
atom_nodes: vec!["integer_value", "float_value", "color_value"]
.into_iter()
.collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")")],
highlight_query: ts::Query::new(
language,
include_str!("../../vendored_parsers/highlights/scss.scm"),
)
.unwrap(),
sub_languages: vec![],
}
}
Solidity => { Solidity => {
let language = unsafe { tree_sitter_solidity() }; let language = unsafe { tree_sitter_solidity() };
TreeSitterConfig { TreeSitterConfig {

@ -0,0 +1 @@
../tree-sitter-scss/queries/highlights.scm

@ -0,0 +1 @@
tree-sitter-scss/src