@@ -4,7 +4,7 @@ use crate::{
4 diagnostic::Severity,
4 diagnostic::Severity,
5 regex::Regex,
5 regex::Regex,
6 transaction::{ChangeSet, Operation},
6 transaction::{ChangeSet, Operation},
7− Rope, RopeSlice, Tendril,
7+ RopeSlice, Tendril,
10use ahash::RandomState;
10use ahash::RandomState;
@@ -818,7 +818,10 @@ impl Loader {
818 // TODO: content_regex handling conflict resolution
818 // TODO: content_regex handling conflict resolution
821− pub fn language_config_for_shebang(&self, source: &Rope) -> Option<Arc<LanguageConfiguration>> {
821+ pub fn language_config_for_shebang(
824+ ) -> Option<Arc<LanguageConfiguration>> {
822 let line = Cow::from(source.line(0));
825 let line = Cow::from(source.line(0));
823 static SHEBANG_REGEX: Lazy<Regex> =
826 static SHEBANG_REGEX: Lazy<Regex> =
824 Lazy::new(|| Regex::new(&["^", SHEBANG].concat()).unwrap());
827 Lazy::new(|| Regex::new(&["^", SHEBANG].concat()).unwrap());
@@ -928,7 +931,7 @@ fn byte_range_to_str(range: std::ops::Range<usize>, source: RopeSlice) -> Cow<st
929impl Syntax {
932impl Syntax {
930 pub fn new(
933 pub fn new(
931− source: &Rope,
934+ source: RopeSlice,
932 config: Arc<HighlightConfiguration>,
935 config: Arc<HighlightConfiguration>,
933 loader: Arc<Loader>,
936 loader: Arc<Loader>,
934 ) -> Option<Self> {
937 ) -> Option<Self> {
@@ -967,8 +970,8 @@ impl Syntax {
968 pub fn update(
971 pub fn update(
969 &mut self,
972 &mut self,
970− old_source: &Rope,
973+ old_source: RopeSlice,
971− source: &Rope,
974+ source: RopeSlice,
972 changeset: &ChangeSet,
975 changeset: &ChangeSet,
973 ) -> Result<(), Error> {
976 ) -> Result<(), Error> {
974 let mut queue = VecDeque::new();
977 let mut queue = VecDeque::new();
@@ -1387,7 +1390,7 @@ impl LanguageLayer {
1387 self.tree.as_ref().unwrap()
1390 self.tree.as_ref().unwrap()
1390− fn parse(&mut self, parser: &mut Parser, source: &Rope) -> Result<(), Error> {
1393+ fn parse(&mut self, parser: &mut Parser, source: RopeSlice) -> Result<(), Error> {
1392 .set_included_ranges(&self.ranges)
1395 .set_included_ranges(&self.ranges)
1393 .map_err(|_| Error::InvalidRanges)?;
1396 .map_err(|_| Error::InvalidRanges)?;
@@ -1418,7 +1421,7 @@ impl LanguageLayer {
1420pub(crate) fn generate_edits(
1423pub(crate) fn generate_edits(
1421− old_text: &Rope,
1424+ old_text: RopeSlice,
1422 changeset: &ChangeSet,
1425 changeset: &ChangeSet,
1423) -> Vec<tree_sitter::InputEdit> {
1426) -> Vec<tree_sitter::InputEdit> {
1424 use Operation::*;
1427 use Operation::*;
@@ -1434,7 +1437,7 @@ pub(crate) fn generate_edits(
1435 // TODO; this is a lot easier with Change instead of Operation.
1438 // TODO; this is a lot easier with Change instead of Operation.
1437− fn point_at_pos(text: &Rope, pos: usize) -> (usize, Point) {
1440+ fn point_at_pos(text: RopeSlice, pos: usize) -> (usize, Point) {
1438 let byte = text.char_to_byte(pos); // <- attempted to index past end
1441 let byte = text.char_to_byte(pos); // <- attempted to index past end
1439 let line = text.char_to_line(pos);
1442 let line = text.char_to_line(pos);
1440 let line_start_byte = text.line_to_byte(line);
1443 let line_start_byte = text.line_to_byte(line);
@@ -2529,7 +2532,7 @@ mod test {
2529 let mut cursor = QueryCursor::new();
2532 let mut cursor = QueryCursor::new();
2531 let config = HighlightConfiguration::new(language, "", "", "").unwrap();
2534 let config = HighlightConfiguration::new(language, "", "", "").unwrap();
2532− let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader)).unwrap();
2535+ let syntax = Syntax::new(source.slice(..), Arc::new(config), Arc::new(loader)).unwrap();
2534 let root = syntax.tree().root_node();
2537 let root = syntax.tree().root_node();
2535 let mut test = |capture, range| {
2538 let mut test = |capture, range| {
@@ -2603,7 +2606,7 @@ mod test {
2603 fn main() {}
2606 fn main() {}
2606− let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader)).unwrap();
2609+ let syntax = Syntax::new(source.slice(..), Arc::new(config), Arc::new(loader)).unwrap();
2607 let tree = syntax.tree();
2610 let tree = syntax.tree();
2608 let root = tree.root_node();
2611 let root = tree.root_node();
2609 assert_eq!(root.kind(), "source_file");
2612 assert_eq!(root.kind(), "source_file");
@@ -2630,7 +2633,7 @@ mod test {
2631 vec![(6, 11, Some("test".into())), (12, 17, None)].into_iter(),
2634 vec![(6, 11, Some("test".into())), (12, 17, None)].into_iter(),
2633− let edits = generate_edits(&doc, transaction.changes());
2636+ let edits = generate_edits(doc.slice(..), transaction.changes());
2634 // transaction.apply(&mut state);
2637 // transaction.apply(&mut state);
2636 assert_eq!(
2639 assert_eq!(
@@ -2659,7 +2662,7 @@ mod test {
2659 let mut doc = Rope::from("fn test() {}");
2662 let mut doc = Rope::from("fn test() {}");
2660 let transaction =
2663 let transaction =
2661 Transaction::change(&doc, vec![(8, 8, Some("a: u32".into()))].into_iter());
2664 Transaction::change(&doc, vec![(8, 8, Some("a: u32".into()))].into_iter());
2662− let edits = generate_edits(&doc, transaction.changes());
2665+ let edits = generate_edits(doc.slice(..), transaction.changes());
2663 transaction.apply(&mut doc);
2666 transaction.apply(&mut doc);
2665 assert_eq!(doc, "fn test(a: u32) {}");
2668 assert_eq!(doc, "fn test(a: u32) {}");
@@ -2693,7 +2696,7 @@ mod test {
2693 let language = get_language(language_name).unwrap();
2696 let language = get_language(language_name).unwrap();
2695 let config = HighlightConfiguration::new(language, "", "", "").unwrap();
2698 let config = HighlightConfiguration::new(language, "", "", "").unwrap();
2696− let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader)).unwrap();
2699+ let syntax = Syntax::new(source.slice(..), Arc::new(config), Arc::new(loader)).unwrap();
2698 let root = syntax
2701 let root = syntax