bump tree-sitter version

tree_sitter_upgrade
Wilfred Hughes 2024-11-26 01:40:34 +07:00
parent 5c29f90bc0
commit 831cd1e522
3 changed files with 133 additions and 132 deletions

4
Cargo.lock generated

@ -982,9 +982,9 @@ dependencies = [
[[package]]
name = "tree-sitter"
version = "0.20.10"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e747b1f9b7b931ed39a548c1fae149101497de3c1fc8d9e18c62c1a66c683d3d"
checksum = "705bf7c0958d0171dd7d3a6542f2f4f21d87ed5f1dc8db52919d3a6bed9a359a"
dependencies = [
"cc",
"regex",

@ -46,7 +46,7 @@ lazy_static = "1.4.0"
#
# tree-sitter 0.22.0 has some API changes which we need to update
# difftastic for.
tree-sitter = "0.20.10"
tree-sitter = "0.21.0"
libc = "0.2.108"
log = "0.4.14"
pretty_env_logger = "0.5.0"

@ -140,13 +140,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Ada => {
let language = unsafe { tree_sitter_ada() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string_literal", "character_literal"]
.into_iter()
.collect(),
delimiter_tokens: vec![("(", ")"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/ada.scm"),
)
.unwrap(),
@ -156,7 +156,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Apex => {
let language = unsafe { tree_sitter_apex() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"string_literal",
"null_literal",
@ -170,7 +170,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(),
delimiter_tokens: vec![("[", "]"), ("(", ")"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/apex.scm"),
)
.unwrap(),
@ -180,13 +180,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Bash => {
let language = unsafe { tree_sitter_bash() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "raw_string", "heredoc_body"]
.into_iter()
.collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/bash.scm"),
)
.unwrap(),
@ -196,11 +196,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
C => {
let language = unsafe { tree_sitter_c() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string_literal", "char_literal"].into_iter().collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/c.scm"),
)
.unwrap(),
@ -210,13 +210,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
CPlusPlus => {
let language = unsafe { tree_sitter_cpp() };
TreeSitterConfig {
language,
language: language.clone(),
// The C++ grammar extends the C grammar, so the node
// names are generally the same.
atom_nodes: vec!["string_literal", "char_literal"].into_iter().collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]"), ("<", ">")],
highlight_query: ts::Query::new(
language,
&language,
concat!(
include_str!("../../vendored_parsers/highlights/c.scm"),
include_str!("../../vendored_parsers/highlights/cpp.scm")
@ -229,13 +229,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Clojure => {
let language = unsafe { tree_sitter_clojure() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["kwd_lit", "regex_lit"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")]
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/clojure.scm"),
)
.unwrap(),
@ -245,11 +245,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
CMake => {
let language = unsafe { tree_sitter_cmake() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["argument"].into_iter().collect(),
delimiter_tokens: vec![("(", ")")].into_iter().collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/cmake.scm"),
)
.unwrap(),
@ -259,17 +259,17 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
CommonLisp => {
let language = unsafe { tree_sitter_commonlisp() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["str_lit", "char_lit"].into_iter().collect(),
delimiter_tokens: vec![("(", ")")],
highlight_query: ts::Query::new(language, "").unwrap(),
highlight_query: ts::Query::new(&language, "").unwrap(),
sub_languages: vec![],
}
}
CSharp => {
let language = unsafe { tree_sitter_c_sharp() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"string_literal",
"verbatim_string_literal",
@ -280,7 +280,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/c-sharp.scm"),
)
.unwrap(),
@ -290,7 +290,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Css => {
let language = unsafe { tree_sitter_css() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"integer_value",
"float_value",
@ -301,7 +301,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/css.scm"),
)
.unwrap(),
@ -311,11 +311,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Dart => {
let language = unsafe { tree_sitter_dart() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string_literal", "script_tag"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/dart.scm"),
)
.unwrap(),
@ -325,13 +325,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
DeviceTree => {
let language = unsafe { tree_sitter_devicetree() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["byte_string_literal", "string_literal"]
.into_iter()
.collect(),
delimiter_tokens: vec![("<", ">"), ("{", "}"), ("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/devicetree.scm"),
)
.unwrap(),
@ -341,13 +341,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
EmacsLisp => {
let language = unsafe { tree_sitter_elisp() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")]
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/elisp.scm"),
)
.unwrap(),
@ -357,13 +357,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Elixir => {
let language = unsafe { tree_sitter_elixir() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "heredoc"].into_iter().collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("do", "end")]
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/elixir.scm"),
)
.unwrap(),
@ -373,11 +373,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Elm => {
let language = unsafe { tree_sitter_elm() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string_constant_expr"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("[", "]"), ("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/elm.scm"),
)
.unwrap(),
@ -387,11 +387,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Elvish => {
let language = unsafe { tree_sitter_elvish() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: [].into(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/elvish.scm"),
)
.unwrap(),
@ -401,11 +401,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Erlang => {
let language = unsafe { tree_sitter_erlang() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: [].into(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/erlang.scm"),
)
.unwrap(),
@ -415,11 +415,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
FSharp => {
let language = unsafe { tree_sitter_fsharp() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: ["string", "triple_quoted_string"].into(),
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/f-sharp.scm"),
)
.unwrap(),
@ -429,11 +429,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Gleam => {
let language = unsafe { tree_sitter_gleam() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: ["string"].into(),
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/gleam.scm"),
)
.unwrap(),
@ -443,7 +443,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Go => {
let language = unsafe { tree_sitter_go() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["interpreted_string_literal", "raw_string_literal"]
.into_iter()
.collect(),
@ -451,7 +451,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/go.scm"),
)
.unwrap(),
@ -461,11 +461,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Hack => {
let language = unsafe { tree_sitter_hack() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["prefixed_string", "heredoc"].into_iter().collect(),
delimiter_tokens: vec![("[", "]"), ("(", ")"), ("<", ">"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/hack.scm"),
)
.unwrap(),
@ -475,13 +475,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Hare => {
let language = unsafe { tree_sitter_hare() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string_constant", "rune_constant"]
.into_iter()
.collect(),
delimiter_tokens: vec![("[", "]"), ("(", ")"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/hare.scm"),
)
.unwrap(),
@ -491,7 +491,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Haskell => {
let language = unsafe { tree_sitter_haskell() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"qualified_variable",
// Work around https://github.com/tree-sitter/tree-sitter-haskell/issues/102
@ -504,7 +504,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(),
delimiter_tokens: vec![("[", "]"), ("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/haskell.scm"),
)
.unwrap(),
@ -514,7 +514,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Hcl => {
let language = unsafe { tree_sitter_hcl() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string_lit", "heredoc_template"].into_iter().collect(),
delimiter_tokens: vec![
("[", "]"),
@ -525,7 +525,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
("${", "}"),
],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/hcl.scm"),
)
.unwrap(),
@ -535,7 +535,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Html => {
let language = unsafe { tree_sitter_html() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"doctype",
"quoted_attribute_value",
@ -549,18 +549,18 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/html.scm"),
)
.unwrap(),
sub_languages: vec![
TreeSitterSubLanguage {
query: ts::Query::new(language, "(style_element (raw_text) @contents)")
query: ts::Query::new(&language, "(style_element (raw_text) @contents)")
.unwrap(),
parse_as: Css,
},
TreeSitterSubLanguage {
query: ts::Query::new(language, "(script_element (raw_text) @contents)")
query: ts::Query::new(&language, "(script_element (raw_text) @contents)")
.unwrap(),
parse_as: JavaScript,
},
@ -570,7 +570,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Janet => {
let language = unsafe { tree_sitter_janet_simple() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![].into_iter().collect(),
delimiter_tokens: vec![
("@{", "}"),
@ -583,7 +583,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/janet_simple.scm"),
)
.unwrap(),
@ -593,7 +593,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Java => {
let language = unsafe { tree_sitter_java() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"string_literal",
// The Java parser has a subnode (boolean_type
@ -613,7 +613,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/java.scm"),
)
.unwrap(),
@ -623,7 +623,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
JavaScript | JavascriptJsx => {
let language = unsafe { tree_sitter_javascript() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "template_string", "regex"]
.into_iter()
.collect(),
@ -637,7 +637,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
("<", ">"),
],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/javascript.scm"),
)
.unwrap(),
@ -647,11 +647,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Json => {
let language = unsafe { tree_sitter_json() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/json.scm"),
)
.unwrap(),
@ -661,7 +661,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Julia => {
let language = unsafe { tree_sitter_julia() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"string_literal",
"prefixed_string_literal",
@ -672,7 +672,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(),
delimiter_tokens: vec![("{", "}"), ("[", "]"), ("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/julia.scm"),
)
.unwrap(),
@ -682,7 +682,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Kotlin => {
let language = unsafe { tree_sitter_kotlin() };
TreeSitterConfig {
language,
language: language.clone(),
// Flattening nullable type means we can't diff the
// structure of complex types within, but it beats
// ignoring nullable changes.
@ -694,7 +694,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/kotlin.scm"),
)
.unwrap(),
@ -704,11 +704,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
LaTeX => {
let language = unsafe { tree_sitter_latex() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/latex.scm"),
)
.unwrap(),
@ -718,13 +718,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Lua => {
let language = unsafe { tree_sitter_lua() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string"].into_iter().collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")]
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/lua.scm"),
)
.unwrap(),
@ -734,16 +734,16 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Make => {
let language = unsafe { tree_sitter_make() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["shell_text", "text"].into_iter().collect(),
delimiter_tokens: vec![("(", ")")].into_iter().collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/make.scm"),
)
.unwrap(),
sub_languages: vec![TreeSitterSubLanguage {
query: ts::Query::new(language, "(shell_function (shell_command) @contents)")
query: ts::Query::new(&language, "(shell_function (shell_command) @contents)")
.unwrap(),
parse_as: Bash,
}],
@ -752,11 +752,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Newick => {
let language = unsafe { tree_sitter_newick() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![].into_iter().collect(),
delimiter_tokens: vec![("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/newick.scm"),
)
.unwrap(),
@ -766,13 +766,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Nix => {
let language = unsafe { tree_sitter_nix() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string_expression", "indented_string_expression"]
.into_iter()
.collect(),
delimiter_tokens: vec![("{", "}"), ("[", "]")].into_iter().collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/nix.scm"),
)
.unwrap(),
@ -782,7 +782,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
ObjC => {
let language = unsafe { tree_sitter_objc() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string_literal"].into_iter().collect(),
delimiter_tokens: vec![
("(", ")"),
@ -793,7 +793,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
("@[", "]"),
],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/objc.scm"),
)
.unwrap(),
@ -803,11 +803,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
OCaml => {
let language = unsafe { tree_sitter_ocaml() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: OCAML_ATOM_NODES.iter().copied().collect(),
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/ocaml.scm"),
)
.unwrap(),
@ -817,11 +817,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
OCamlInterface => {
let language = unsafe { tree_sitter_ocaml_interface() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: OCAML_ATOM_NODES.iter().copied().collect(),
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/ocaml.scm"),
)
.unwrap(),
@ -831,11 +831,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Pascal => {
let language = unsafe { tree_sitter_pascal() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![].into_iter().collect(),
delimiter_tokens: vec![("(", ")"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/pascal.scm"),
)
.unwrap(),
@ -845,7 +845,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Perl => {
let language = unsafe { tree_sitter_perl() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"string_single_quoted",
"string_double_quoted",
@ -860,7 +860,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(),
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/perl.scm"),
)
.unwrap(),
@ -870,11 +870,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Php => {
let language = unsafe { tree_sitter_php() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "encapsed_string"].into_iter().collect(),
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/php.scm"),
)
.unwrap(),
@ -884,11 +884,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Python => {
let language = unsafe { tree_sitter_python() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string"].into_iter().collect(),
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/python.scm"),
)
.unwrap(),
@ -898,13 +898,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Qml => {
let language = unsafe { tree_sitter_qmljs() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "template_string", "regex"]
.into_iter()
.collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")],
highlight_query: ts::Query::new(
language,
&language,
concat!(
include_str!("../../vendored_parsers/highlights/javascript.scm"),
include_str!("../../vendored_parsers/highlights/typescript.scm"),
@ -918,11 +918,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
R => {
let language = unsafe { tree_sitter_r() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "special"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/r.scm"),
)
.unwrap(),
@ -932,13 +932,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Racket => {
let language = unsafe { tree_sitter_racket() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "byte_string", "regex", "here_string"]
.into_iter()
.collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/racket.scm"),
)
.unwrap(),
@ -948,7 +948,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Ruby => {
let language = unsafe { tree_sitter_ruby() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "heredoc_body", "regex"]
.into_iter()
.collect(),
@ -962,7 +962,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
("class", "end"),
],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/ruby.scm"),
)
.unwrap(),
@ -972,11 +972,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Rust => {
let language = unsafe { tree_sitter_rust() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["char_literal", "string_literal"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|"), ("<", ">")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/rust.scm"),
)
.unwrap(),
@ -986,11 +986,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Scala => {
let language = unsafe { tree_sitter_scala() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "template_string"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/scala.scm"),
)
.unwrap(),
@ -1000,11 +1000,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Scheme => {
let language = unsafe { tree_sitter_scheme() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/scheme.scm"),
)
.unwrap(),
@ -1014,13 +1014,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Scss => {
let language = unsafe { tree_sitter_scss() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["integer_value", "float_value", "color_value"]
.into_iter()
.collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/scss.scm"),
)
.unwrap(),
@ -1030,11 +1030,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Smali => {
let language = unsafe { tree_sitter_smali() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: HashSet::from(["string"]),
delimiter_tokens: Vec::new(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/smali.scm"),
)
.unwrap(),
@ -1044,13 +1044,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Solidity => {
let language = unsafe { tree_sitter_solidity() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "hex_string_literal", "unicode_string_literal"]
.into_iter()
.collect(),
delimiter_tokens: vec![("[", "]"), ("(", ")"), ("{", "}")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/solidity.scm"),
)
.unwrap(),
@ -1060,11 +1060,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Sql => {
let language = unsafe { tree_sitter_sql() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "identifier"].into_iter().collect(),
delimiter_tokens: vec![("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/sql.scm"),
)
.unwrap(),
@ -1074,11 +1074,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Swift => {
let language = unsafe { tree_sitter_swift() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: ["line_string_literal"].into(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/swift.scm"),
)
.unwrap(),
@ -1088,11 +1088,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Toml => {
let language = unsafe { tree_sitter_toml() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "quoted_key"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("[", "]")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/toml.scm"),
)
.unwrap(),
@ -1102,11 +1102,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
TypeScriptTsx => {
let language = unsafe { tree_sitter_tsx() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "template_string"].into_iter().collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")],
highlight_query: ts::Query::new(
language,
&language,
concat!(
include_str!("../../vendored_parsers/highlights/javascript.scm"),
include_str!("../../vendored_parsers/highlights/typescript.scm"),
@ -1119,13 +1119,13 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
TypeScript => {
let language = unsafe { tree_sitter_typescript() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["string", "template_string", "regex", "predefined_type"]
.into_iter()
.collect(),
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")],
highlight_query: ts::Query::new(
language,
&language,
concat!(
include_str!("../../vendored_parsers/highlights/javascript.scm"),
include_str!("../../vendored_parsers/highlights/typescript.scm"),
@ -1138,14 +1138,14 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Xml => {
let language = unsafe { tree_sitter_xml() };
TreeSitterConfig {
language,
language: language.clone(),
// XMLDecl is the <?xml ...?> header, but the parser
// just treats it as a sequence of tokens rather than
// e.g. string subexpressions, so flatten.
atom_nodes: vec!["AttValue", "XMLDecl"].into_iter().collect(),
delimiter_tokens: (vec![("<", ">")]),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/xml.scm"),
)
.unwrap(),
@ -1155,7 +1155,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Yaml => {
let language = unsafe { tree_sitter_yaml() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![
"string_scalar",
"double_quote_scalar",
@ -1166,7 +1166,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(),
delimiter_tokens: (vec![("{", "}"), ("(", ")"), ("[", "]")]),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/yaml.scm"),
)
.unwrap(),
@ -1176,11 +1176,11 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Vhdl => {
let language = unsafe { tree_sitter_vhdl() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec![].into_iter().collect(),
delimiter_tokens: vec![("(", ")")],
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/vhdl.scm"),
)
.unwrap(),
@ -1190,7 +1190,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
Zig => {
let language = unsafe { tree_sitter_zig() };
TreeSitterConfig {
language,
language: language.clone(),
atom_nodes: vec!["STRINGLITERALSINGLE", "BUILTINIDENTIFIER"]
.into_iter()
.collect(),
@ -1198,7 +1198,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
.into_iter()
.collect(),
highlight_query: ts::Query::new(
language,
&language,
include_str!("../../vendored_parsers/highlights/zig.scm"),
)
.unwrap(),
@ -1212,7 +1212,7 @@ pub(crate) fn from_language(language: guess::Language) -> TreeSitterConfig {
pub(crate) fn to_tree(src: &str, config: &TreeSitterConfig) -> tree_sitter::Tree {
let mut parser = ts::Parser::new();
parser
.set_language(config.language)
.set_language(&config.language)
.expect("Incompatible tree-sitter version");
parser.parse(src, None).unwrap()
@ -1256,7 +1256,7 @@ pub(crate) fn parse_subtrees(
let subconfig = from_language(language.parse_as);
let mut parser = ts::Parser::new();
parser
.set_language(subconfig.language)
.set_language(&subconfig.language)
.expect("Incompatible tree-sitter version");
parser
.set_included_ranges(&[node.range()])
@ -1292,6 +1292,7 @@ fn tree_highlights(
// of all the relevant highlighting queries.
let cn = config.highlight_query.capture_names();
for (idx, name) in cn.iter().enumerate() {
let name = *name;
if name == "type"
|| name.starts_with("type.")
|| name.starts_with("storage.type.")