diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs index 5415e52c4..ccfb00808 100644 --- a/helix-core/src/syntax.rs +++ b/helix-core/src/syntax.rs @@ -500,10 +500,7 @@ impl Syntax { loader: &'a Loader, range: impl RangeBounds, ) -> Highlighter<'a> { - let highlight_time = Instant::now(); - let ret = Highlighter::new(&self.inner, source, loader, range); - log::info!("tree-sitter: creating highlighter took: {} us", highlight_time.elapsed().as_micros()); - ret + Highlighter::new(&self.inner, source, loader, range) } pub fn query_iter<'a, QueryLoader, LayerState, Range>( diff --git a/helix-term/src/ui/document.rs b/helix-term/src/ui/document.rs index 524d829c4..38ad7ebb9 100644 --- a/helix-term/src/ui/document.rs +++ b/helix-term/src/ui/document.rs @@ -1,4 +1,5 @@ use std::cmp::min; +use std::time::{Duration, Instant}; use helix_core::doc_formatter::{DocumentFormatter, GraphemeSource, TextFormat}; use helix_core::graphemes::Grapheme; @@ -90,6 +91,7 @@ pub fn render_text( let mut is_in_indent_area = true; let mut last_line_indent_level = 0; let mut reached_view_top = false; + let mut total_highlight_time = Duration::new(0, 0); loop { let Some(mut grapheme) = formatter.next() else { @@ -132,9 +134,11 @@ pub fn render_text( } // acquire the correct grapheme style + let highlight_time = Instant::now(); while grapheme.char_idx >= syntax_highlighter.pos { syntax_highlighter.advance(); } + total_highlight_time += highlight_time.elapsed(); while grapheme.char_idx >= overlay_highlighter.pos { overlay_highlighter.advance(); } @@ -168,6 +172,8 @@ pub fn render_text( last_line_end = grapheme.visual_pos.col + grapheme_width; } + log::info!("tree-sitter highlight time: {} us", total_highlight_time.as_micros()); + renderer.draw_indent_guides(last_line_indent_level, last_line_pos.visual_line); decorations.render_virtual_lines(renderer, last_line_pos, last_line_end) }