Define a parse submodule

pull/290/head
Wilfred Hughes 2022-05-24 09:37:22 +07:00
parent 373d7d9d81
commit c5fe152f25
18 changed files with 71 additions and 68 deletions

@ -4,7 +4,7 @@ use std::num::NonZeroU32;
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use crate::syntax::Syntax; use crate::parse::syntax::Syntax;
#[derive(PartialEq, Eq, Clone, Copy)] #[derive(PartialEq, Eq, Clone, Copy)]
pub enum ChangeKind<'a> { pub enum ChangeKind<'a> {

@ -6,7 +6,7 @@ use std::{cmp::Reverse, env, rc::Rc};
use crate::{ use crate::{
changes::ChangeMap, changes::ChangeMap,
diff::graph::{neighbours, populate_change_map, Edge, Vertex}, diff::graph::{neighbours, populate_change_map, Edge, Vertex},
syntax::Syntax, parse::syntax::Syntax,
}; };
use bumpalo::Bump; use bumpalo::Bump;
use itertools::Itertools; use itertools::Itertools;

@ -11,7 +11,7 @@ use strsim::normalized_levenshtein;
use crate::{ use crate::{
changes::{insert_deep_unchanged, ChangeKind, ChangeMap}, changes::{insert_deep_unchanged, ChangeKind, ChangeMap},
syntax::{AtomKind, Syntax, SyntaxId}, parse::syntax::{AtomKind, Syntax, SyntaxId},
}; };
use Edge::*; use Edge::*;

@ -31,9 +31,9 @@
use crate::{ use crate::{
changes::{insert_deep_novel, insert_deep_unchanged, ChangeKind::*, ChangeMap}, changes::{insert_deep_novel, insert_deep_unchanged, ChangeKind::*, ChangeMap},
guess_language, parse::guess_language,
positions::SingleLineSpan, positions::SingleLineSpan,
syntax::Syntax, parse::syntax::Syntax,
}; };
use Syntax::*; use Syntax::*;
@ -52,7 +52,7 @@ pub fn fix_all_sliders<'a>(
/// Should nester slider correction prefer the inner or outer /// Should nester slider correction prefer the inner or outer
/// delimiter? /// delimiter?
fn prefer_outer_delimiter(language: guess_language::Language) -> bool { fn prefer_outer_delimiter(language: guess_language::Language) -> bool {
use guess_language::Language::*; use crate::parse::guess_language::Language::*;
match language { match language {
// For Lisp family languages, we get the best result with the // For Lisp family languages, we get the best result with the
// outer delimiter. // outer delimiter.
@ -605,9 +605,9 @@ impl<'a> Syntax<'a> {
mod tests { mod tests {
use super::*; use super::*;
use crate::{ use crate::{
guess_language, parse::guess_language,
syntax::{init_all_info, AtomKind}, syntax::{init_all_info, AtomKind},
tree_sitter_parser::{from_language, parse}, parse::tree_sitter_parser::{from_language, parse},
}; };
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use typed_arena::Arena; use typed_arena::Arena;

@ -4,7 +4,7 @@
use crate::changes::{insert_deep_unchanged, ChangeKind, ChangeMap}; use crate::changes::{insert_deep_unchanged, ChangeKind, ChangeMap};
use crate::diff::myers_diff; use crate::diff::myers_diff;
use crate::syntax::Syntax; use crate::parse::syntax::Syntax;
const TINY_TREE_THRESHOLD: u32 = 10; const TINY_TREE_THRESHOLD: u32 = 10;
const MOSTLY_UNCHANGED_MIN_NODES: usize = 4; const MOSTLY_UNCHANGED_MIN_NODES: usize = 4;
@ -432,9 +432,9 @@ fn shrink_unchanged_at_ends<'a>(
mod tests { mod tests {
use super::*; use super::*;
use crate::{ use crate::{
guess_language, parse::guess_language,
syntax::init_all_info, syntax::init_all_info,
tree_sitter_parser::{from_language, parse}, parse::tree_sitter_parser::{from_language, parse},
}; };
use typed_arena::Arena; use typed_arena::Arena;

@ -7,7 +7,7 @@ use rustc_hash::{FxHashMap, FxHashSet};
use crate::{ use crate::{
lines::LineNumber, lines::LineNumber,
syntax::{zip_repeat_shorter, MatchKind, MatchedPos}, parse::syntax::{zip_repeat_shorter, MatchKind, MatchedPos},
}; };
/// The maximum number of lines that may be displayed above and below /// The maximum number of lines that may be displayed above and below

@ -6,7 +6,7 @@ use crate::{
hunks::Hunk, hunks::Hunk,
lines::{format_line_num, MaxLine}, lines::{format_line_num, MaxLine},
options::DisplayOptions, options::DisplayOptions,
syntax::MatchedPos, parse::syntax::MatchedPos,
}; };
use owo_colors::colored::*; use owo_colors::colored::*;

@ -14,7 +14,7 @@ use crate::{
lines::{codepoint_len, format_line_num, LineNumber}, lines::{codepoint_len, format_line_num, LineNumber},
options::{DisplayMode, DisplayOptions}, options::{DisplayMode, DisplayOptions},
positions::SingleLineSpan, positions::SingleLineSpan,
syntax::{zip_pad_shorter, MatchedPos}, parse::syntax::{zip_pad_shorter, MatchedPos},
}; };
const SPACER: &str = " "; const SPACER: &str = " ";

@ -5,7 +5,7 @@ use crate::{
lines::{byte_len, codepoint_len, LineNumber}, lines::{byte_len, codepoint_len, LineNumber},
options::DisplayOptions, options::DisplayOptions,
positions::SingleLineSpan, positions::SingleLineSpan,
syntax::{AtomKind, MatchKind, MatchedPos, TokenKind}, parse::syntax::{AtomKind, MatchKind, MatchedPos, TokenKind},
}; };
use owo_colors::{OwoColorize, Style}; use owo_colors::{OwoColorize, Style};
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;

@ -14,7 +14,7 @@ use crate::{
display::context::{add_context, opposite_positions, MAX_PADDING}, display::context::{add_context, opposite_positions, MAX_PADDING},
display::side_by_side::lines_with_novel, display::side_by_side::lines_with_novel,
lines::LineNumber, lines::LineNumber,
syntax::{zip_pad_shorter, MatchedPos}, parse::syntax::{zip_pad_shorter, MatchedPos},
}; };
/// A hunk represents a series of modified lines that are displayed /// A hunk represents a series of modified lines that are displayed

@ -9,7 +9,7 @@ use rustc_hash::FxHashMap;
use crate::{ use crate::{
diff::myers_diff, diff::myers_diff,
lines::NewlinePositions, lines::NewlinePositions,
syntax::{split_words, AtomKind, MatchKind, MatchedPos, TokenKind}, parse::syntax::{split_words, AtomKind, MatchKind, MatchedPos, TokenKind},
}; };
fn split_lines_keep_newline(s: &str) -> Vec<&str> { fn split_lines_keep_newline(s: &str) -> Vec<&str> {

@ -18,27 +18,26 @@ mod constants;
mod diff; mod diff;
mod display; mod display;
mod files; mod files;
mod guess_language;
mod hunks; mod hunks;
mod line_parser; mod line_parser;
mod lines; mod lines;
mod options; mod options;
mod parse;
mod positions; mod positions;
mod summary; mod summary;
mod syntax;
mod tree_sitter_parser;
#[macro_use] #[macro_use]
extern crate log; extern crate log;
use crate::diff::{dijkstra, unchanged}; use crate::diff::{dijkstra, unchanged};
use crate::hunks::{matched_pos_to_hunks, merge_adjacent}; use crate::hunks::{matched_pos_to_hunks, merge_adjacent};
use crate::parse::syntax;
use changes::ChangeMap; use changes::ChangeMap;
use display::context::opposite_positions; use display::context::opposite_positions;
use files::{is_probably_binary, read_files_or_die, read_or_die, relative_paths_in_either}; use files::{is_probably_binary, read_files_or_die, read_or_die, relative_paths_in_either};
use guess_language::guess;
use log::info; use log::info;
use mimalloc::MiMalloc; use mimalloc::MiMalloc;
use parse::guess_language::guess;
/// The global allocator used by difftastic. /// The global allocator used by difftastic.
/// ///
@ -56,7 +55,8 @@ use syntax::init_next_prev;
use typed_arena::Arena; use typed_arena::Arena;
use crate::{ use crate::{
dijkstra::mark_syntax, lines::MaxLine, syntax::init_all_info, tree_sitter_parser as tsp, dijkstra::mark_syntax, lines::MaxLine, parse::syntax::init_all_info,
parse::tree_sitter_parser as tsp,
}; };
extern crate pretty_env_logger; extern crate pretty_env_logger;
@ -187,7 +187,7 @@ fn diff_file(
missing_as_empty: bool, missing_as_empty: bool,
node_limit: u32, node_limit: u32,
byte_limit: usize, byte_limit: usize,
language_override: Option<guess_language::Language>, language_override: Option<parse::guess_language::Language>,
) -> DiffResult { ) -> DiffResult {
let (lhs_bytes, rhs_bytes) = read_files_or_die(lhs_path, rhs_path, missing_as_empty); let (lhs_bytes, rhs_bytes) = read_files_or_die(lhs_path, rhs_path, missing_as_empty);
diff_file_content( diff_file_content(
@ -210,7 +210,7 @@ fn diff_file_content(
tab_width: usize, tab_width: usize,
node_limit: u32, node_limit: u32,
byte_limit: usize, byte_limit: usize,
language_override: Option<guess_language::Language>, language_override: Option<parse::guess_language::Language>,
) -> DiffResult { ) -> DiffResult {
if is_probably_binary(lhs_bytes) || is_probably_binary(rhs_bytes) { if is_probably_binary(lhs_bytes) || is_probably_binary(rhs_bytes) {
return DiffResult { return DiffResult {
@ -360,7 +360,7 @@ fn diff_directories<'a>(
display_options: &DisplayOptions, display_options: &DisplayOptions,
node_limit: u32, node_limit: u32,
byte_limit: usize, byte_limit: usize,
language_override: Option<guess_language::Language>, language_override: Option<parse::guess_language::Language>,
) -> impl ParallelIterator<Item = DiffResult> + 'a { ) -> impl ParallelIterator<Item = DiffResult> + 'a {
let display_options = display_options.clone(); let display_options = display_options.clone();

@ -6,7 +6,7 @@ use atty::Stream;
use clap::{crate_authors, crate_description, crate_version, Arg, Command}; use clap::{crate_authors, crate_description, crate_version, Arg, Command};
use const_format::formatcp; use const_format::formatcp;
use crate::{display::style::BackgroundColor, guess_language}; use crate::{display::style::BackgroundColor, parse::guess_language};
pub const DEFAULT_NODE_LIMIT: u32 = 30_000; pub const DEFAULT_NODE_LIMIT: u32 = 30_000;
pub const DEFAULT_BYTE_LIMIT: usize = 1_000_000; pub const DEFAULT_BYTE_LIMIT: usize = 1_000_000;

@ -0,0 +1,3 @@
pub mod guess_language;
pub mod tree_sitter_parser;
pub mod syntax;

@ -2,13 +2,13 @@
use std::collections::HashSet; use std::collections::HashSet;
use crate::guess_language as guess; use crate::parse::guess_language as guess;
use tree_sitter as ts; use tree_sitter as ts;
use typed_arena::Arena; use typed_arena::Arena;
use crate::{ use crate::{
lines::NewlinePositions, lines::NewlinePositions,
syntax::{AtomKind, Syntax}, parse::syntax::{AtomKind, Syntax},
}; };
/// Configuration for a tree-sitter parser. /// Configuration for a tree-sitter parser.
@ -106,7 +106,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")], delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/bash.scm"), include_str!("../../vendor/highlights/bash.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -120,7 +120,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")], delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/c.scm"), include_str!("../../vendor/highlights/c.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -137,8 +137,8 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
concat!( concat!(
include_str!("../vendor/highlights/c.scm"), include_str!("../../vendor/highlights/c.scm"),
include_str!("../vendor/highlights/cpp.scm") include_str!("../../vendor/highlights/cpp.scm")
), ),
) )
.unwrap(), .unwrap(),
@ -155,7 +155,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(), .collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/clojure.scm"), include_str!("../../vendor/highlights/clojure.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -185,7 +185,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("(", ")")], delimiter_tokens: vec![("{", "}"), ("(", ")")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/c-sharp.scm"), include_str!("../../vendor/highlights/c-sharp.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -199,7 +199,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("(", ")")], delimiter_tokens: vec![("{", "}"), ("(", ")")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/css.scm"), include_str!("../../vendor/highlights/css.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -213,7 +213,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")], delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/dart.scm"), include_str!("../../vendor/highlights/dart.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -229,7 +229,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(), .collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/elisp.scm"), include_str!("../../vendor/highlights/elisp.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -245,7 +245,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(), .collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/elixir.scm"), include_str!("../../vendor/highlights/elixir.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -259,7 +259,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("[", "]"), ("(", ")")], delimiter_tokens: vec![("{", "}"), ("[", "]"), ("(", ")")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/elm.scm"), include_str!("../../vendor/highlights/elm.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -273,7 +273,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|")], delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/elvish.scm"), include_str!("../../vendor/highlights/elvish.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -287,7 +287,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")], delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/gleam.scm"), include_str!("../../vendor/highlights/gleam.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -305,7 +305,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(), .collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/go.scm"), include_str!("../../vendor/highlights/go.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -319,7 +319,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("[", "]"), ("(", ")")], delimiter_tokens: vec![("[", "]"), ("(", ")")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/haskell.scm"), include_str!("../../vendor/highlights/haskell.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -340,7 +340,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
], ],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/hcl.scm"), include_str!("../../vendor/highlights/hcl.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -363,7 +363,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(), .collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/janet_simple.scm"), include_str!("../../vendor/highlights/janet_simple.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -377,7 +377,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")], delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/java.scm"), include_str!("../../vendor/highlights/java.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -401,7 +401,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
], ],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/javascript.scm"), include_str!("../../vendor/highlights/javascript.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -415,7 +415,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("[", "]")], delimiter_tokens: vec![("{", "}"), ("[", "]")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/json.scm"), include_str!("../../vendor/highlights/json.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -433,7 +433,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(), .collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/kotlin.scm"), include_str!("../../vendor/highlights/kotlin.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -449,7 +449,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(), .collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/lua.scm"), include_str!("../../vendor/highlights/lua.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -465,7 +465,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("[", "]")].into_iter().collect(), delimiter_tokens: vec![("{", "}"), ("[", "]")].into_iter().collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/nix.scm"), include_str!("../../vendor/highlights/nix.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -479,7 +479,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")], delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/ocaml.scm"), include_str!("../../vendor/highlights/ocaml.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -493,7 +493,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")], delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/ocaml.scm"), include_str!("../../vendor/highlights/ocaml.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -507,7 +507,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")], delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/php.scm"), include_str!("../../vendor/highlights/php.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -532,7 +532,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")], delimiter_tokens: vec![("(", ")"), ("{", "}"), ("[", "]")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/perl.scm"), include_str!("../../vendor/highlights/perl.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -546,7 +546,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")], delimiter_tokens: vec![("(", ")"), ("[", "]"), ("{", "}")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/python.scm"), include_str!("../../vendor/highlights/python.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -570,7 +570,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
], ],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/ruby.scm"), include_str!("../../vendor/highlights/ruby.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -584,7 +584,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|"), ("<", ">")], delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("|", "|"), ("<", ">")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/rust.scm"), include_str!("../../vendor/highlights/rust.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -598,7 +598,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")], delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/scala.scm"), include_str!("../../vendor/highlights/scala.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -612,7 +612,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")], delimiter_tokens: vec![("{", "}"), ("(", ")"), ("[", "]"), ("<", ">")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/swift.scm"), include_str!("../../vendor/highlights/swift.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -626,7 +626,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("{", "}"), ("[", "]")], delimiter_tokens: vec![("{", "}"), ("[", "]")],
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/toml.scm"), include_str!("../../vendor/highlights/toml.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -641,8 +641,8 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
concat!( concat!(
include_str!("../vendor/highlights/javascript.scm"), include_str!("../../vendor/highlights/javascript.scm"),
include_str!("../vendor/highlights/typescript.scm"), include_str!("../../vendor/highlights/typescript.scm"),
), ),
) )
.unwrap(), .unwrap(),
@ -660,8 +660,8 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
concat!( concat!(
include_str!("../vendor/highlights/javascript.scm"), include_str!("../../vendor/highlights/javascript.scm"),
include_str!("../vendor/highlights/typescript.scm"), include_str!("../../vendor/highlights/typescript.scm"),
), ),
) )
.unwrap(), .unwrap(),
@ -683,7 +683,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: (vec![("{", "}"), ("(", ")"), ("[", "]")]), delimiter_tokens: (vec![("{", "}"), ("(", ")"), ("[", "]")]),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/yaml.scm"), include_str!("../../vendor/highlights/yaml.scm"),
) )
.unwrap(), .unwrap(),
} }
@ -701,7 +701,7 @@ pub fn from_language(language: guess::Language) -> TreeSitterConfig {
.collect(), .collect(),
highlight_query: ts::Query::new( highlight_query: ts::Query::new(
language, language,
include_str!("../vendor/highlights/zig.scm"), include_str!("../../vendor/highlights/zig.scm"),
) )
.unwrap(), .unwrap(),
} }

@ -1,6 +1,6 @@
//! Data types summarising the result of diffing content. //! Data types summarising the result of diffing content.
use crate::syntax::MatchedPos; use crate::parse::syntax::MatchedPos;
#[derive(Debug, PartialEq, Eq)] #[derive(Debug, PartialEq, Eq)]
pub enum FileContent { pub enum FileContent {