@@ -4,7 +4,7 @@ use crate::{
44 diagnostic::Severity,
55 regex::Regex,
66 transaction::{ChangeSet, Operation},
7− Rope, RopeSlice, Tendril,
7+ RopeSlice, Tendril,
88};
99
1010use ahash::RandomState;
@@ -818,7 +818,10 @@ impl Loader {
818818 // TODO: content_regex handling conflict resolution
819819 }
820820
821− pub fn language_config_for_shebang(&self, source: &Rope) -> Option<Arc<LanguageConfiguration>> {
821+ pub fn language_config_for_shebang(
822+ &self,
823+ source: RopeSlice,
824+ ) -> Option<Arc<LanguageConfiguration>> {
822825 let line = Cow::from(source.line(0));
823826 static SHEBANG_REGEX: Lazy<Regex> =
824827 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
928931
929932impl Syntax {
930933 pub fn new(
931− source: &Rope,
934+ source: RopeSlice,
932935 config: Arc<HighlightConfiguration>,
933936 loader: Arc<Loader>,
934937 ) -> Option<Self> {
@@ -967,8 +970,8 @@ impl Syntax {
967970
968971 pub fn update(
969972 &mut self,
970− old_source: &Rope,
971− source: &Rope,
973+ old_source: RopeSlice,
974+ source: RopeSlice,
972975 changeset: &ChangeSet,
973976 ) -> Result<(), Error> {
974977 let mut queue = VecDeque::new();
@@ -1387,7 +1390,7 @@ impl LanguageLayer {
13871390 self.tree.as_ref().unwrap()
13881391 }
13891392
1390− fn parse(&mut self, parser: &mut Parser, source: &Rope) -> Result<(), Error> {
1393+ fn parse(&mut self, parser: &mut Parser, source: RopeSlice) -> Result<(), Error> {
13911394 parser
13921395 .set_included_ranges(&self.ranges)
13931396 .map_err(|_| Error::InvalidRanges)?;
@@ -1418,7 +1421,7 @@ impl LanguageLayer {
14181421}
14191422
14201423pub(crate) fn generate_edits(
1421− old_text: &Rope,
1424+ old_text: RopeSlice,
14221425 changeset: &ChangeSet,
14231426) -> Vec<tree_sitter::InputEdit> {
14241427 use Operation::*;
@@ -1434,7 +1437,7 @@ pub(crate) fn generate_edits(
14341437
14351438 // TODO; this is a lot easier with Change instead of Operation.
14361439
1437− fn point_at_pos(text: &Rope, pos: usize) -> (usize, Point) {
1440+ fn point_at_pos(text: RopeSlice, pos: usize) -> (usize, Point) {
14381441 let byte = text.char_to_byte(pos); // <- attempted to index past end
14391442 let line = text.char_to_line(pos);
14401443 let line_start_byte = text.line_to_byte(line);
@@ -2529,7 +2532,7 @@ mod test {
25292532 let mut cursor = QueryCursor::new();
25302533
25312534 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();
25332536
25342537 let root = syntax.tree().root_node();
25352538 let mut test = |capture, range| {
@@ -2603,7 +2606,7 @@ mod test {
26032606 fn main() {}
26042607 ",
26052608 );
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();
26072610 let tree = syntax.tree();
26082611 let root = tree.root_node();
26092612 assert_eq!(root.kind(), "source_file");
@@ -2630,7 +2633,7 @@ mod test {
26302633 &doc,
26312634 vec![(6, 11, Some("test".into())), (12, 17, None)].into_iter(),
26322635 );
2633− let edits = generate_edits(&doc, transaction.changes());
2636+ let edits = generate_edits(doc.slice(..), transaction.changes());
26342637 // transaction.apply(&mut state);
26352638
26362639 assert_eq!(
@@ -2659,7 +2662,7 @@ mod test {
26592662 let mut doc = Rope::from("fn test() {}");
26602663 let transaction =
26612664 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());
26632666 transaction.apply(&mut doc);
26642667
26652668 assert_eq!(doc, "fn test(a: u32) {}");
@@ -2693,7 +2696,7 @@ mod test {
26932696 let language = get_language(language_name).unwrap();
26942697
26952698 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();
26972700
26982701 let root = syntax
26992702 .tree()