@@ -768,7 +768,11 @@ fn byte_range_to_str(range: std::ops::Range<usize>, source: RopeSlice) -> Cow<st
770impl Syntax {
770impl Syntax {
771− pub fn new(source: &Rope, config: Arc<HighlightConfiguration>, loader: Arc<Loader>) -> Self {
773+ config: Arc<HighlightConfiguration>,
774+ loader: Arc<Loader>,
772 let root_layer = LanguageLayer {
776 let root_layer = LanguageLayer {
773 tree: None,
777 tree: None,
@@ -793,11 +797,13 @@ impl Syntax {
797− .update(source, source, &ChangeSet::new(source))
800+ let res = syntax.update(source, source, &ChangeSet::new(source));
803+ log::error!("TS parser failed, disabeling TS for the current buffer: {res:?}");
800− syntax
806+ Some(syntax)
803 pub fn update(
809 pub fn update(
@@ -925,6 +931,7 @@ impl Syntax {
926 PARSER.with(|ts_parser| {
932 PARSER.with(|ts_parser| {
927 let ts_parser = &mut ts_parser.borrow_mut();
933 let ts_parser = &mut ts_parser.borrow_mut();
934+ ts_parser.parser.set_timeout_micros(1000 * 500); // half a second is pretty generours
928 let mut cursor = ts_parser.cursors.pop().unwrap_or_else(QueryCursor::new);
935 let mut cursor = ts_parser.cursors.pop().unwrap_or_else(QueryCursor::new);
929 // TODO: might need to set cursor range
936 // TODO: might need to set cursor range
930 cursor.set_byte_range(0..usize::MAX);
937 cursor.set_byte_range(0..usize::MAX);
@@ -2371,7 +2378,7 @@ mod test {
2371 let mut cursor = QueryCursor::new();
2378 let mut cursor = QueryCursor::new();
2373 let config = HighlightConfiguration::new(language, "", "", "").unwrap();
2380 let config = HighlightConfiguration::new(language, "", "", "").unwrap();
2374− let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader));
2381+ let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader)).unwrap();
2376 let root = syntax.tree().root_node();
2383 let root = syntax.tree().root_node();
2377 let mut test = |capture, range| {
2384 let mut test = |capture, range| {
@@ -2442,7 +2449,7 @@ mod test {
2442 fn main() {}
2449 fn main() {}
2445− let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader));
2452+ let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader)).unwrap();
2446 let tree = syntax.tree();
2453 let tree = syntax.tree();
2447 let root = tree.root_node();
2454 let root = tree.root_node();
2448 assert_eq!(root.kind(), "source_file");
2455 assert_eq!(root.kind(), "source_file");
@@ -2529,7 +2536,7 @@ mod test {
2529 let language = get_language(language_name).unwrap();
2536 let language = get_language(language_name).unwrap();
2531 let config = HighlightConfiguration::new(language, "", "", "").unwrap();
2538 let config = HighlightConfiguration::new(language, "", "", "").unwrap();
2532− let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader));
2539+ let syntax = Syntax::new(&source, Arc::new(config), Arc::new(loader)).unwrap();
2534 let root = syntax
2541 let root = syntax