mirror of https://github.com/helix-editor/helix
log highlight time as total time spent on syntax_highlighter.advance
...instead of time taken to create the Highlighter. This still outputs INFO messages at each cursor move, which seems excessive. Would it make sense to only output when a file is first opened?pull/13675/head
parent
93906b06c4
commit
ab8a795b41
|
@ -500,10 +500,7 @@ impl Syntax {
|
||||||
loader: &'a Loader,
|
loader: &'a Loader,
|
||||||
range: impl RangeBounds<u32>,
|
range: impl RangeBounds<u32>,
|
||||||
) -> Highlighter<'a> {
|
) -> Highlighter<'a> {
|
||||||
let highlight_time = Instant::now();
|
Highlighter::new(&self.inner, source, loader, range)
|
||||||
let ret = Highlighter::new(&self.inner, source, loader, range);
|
|
||||||
log::info!("tree-sitter: creating highlighter took: {} us", highlight_time.elapsed().as_micros());
|
|
||||||
ret
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn query_iter<'a, QueryLoader, LayerState, Range>(
|
pub fn query_iter<'a, QueryLoader, LayerState, Range>(
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use std::cmp::min;
|
use std::cmp::min;
|
||||||
|
use std::time::{Duration, Instant};
|
||||||
|
|
||||||
use helix_core::doc_formatter::{DocumentFormatter, GraphemeSource, TextFormat};
|
use helix_core::doc_formatter::{DocumentFormatter, GraphemeSource, TextFormat};
|
||||||
use helix_core::graphemes::Grapheme;
|
use helix_core::graphemes::Grapheme;
|
||||||
|
@ -90,6 +91,7 @@ pub fn render_text(
|
||||||
let mut is_in_indent_area = true;
|
let mut is_in_indent_area = true;
|
||||||
let mut last_line_indent_level = 0;
|
let mut last_line_indent_level = 0;
|
||||||
let mut reached_view_top = false;
|
let mut reached_view_top = false;
|
||||||
|
let mut total_highlight_time = Duration::new(0, 0);
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let Some(mut grapheme) = formatter.next() else {
|
let Some(mut grapheme) = formatter.next() else {
|
||||||
|
@ -132,9 +134,11 @@ pub fn render_text(
|
||||||
}
|
}
|
||||||
|
|
||||||
// acquire the correct grapheme style
|
// acquire the correct grapheme style
|
||||||
|
let highlight_time = Instant::now();
|
||||||
while grapheme.char_idx >= syntax_highlighter.pos {
|
while grapheme.char_idx >= syntax_highlighter.pos {
|
||||||
syntax_highlighter.advance();
|
syntax_highlighter.advance();
|
||||||
}
|
}
|
||||||
|
total_highlight_time += highlight_time.elapsed();
|
||||||
while grapheme.char_idx >= overlay_highlighter.pos {
|
while grapheme.char_idx >= overlay_highlighter.pos {
|
||||||
overlay_highlighter.advance();
|
overlay_highlighter.advance();
|
||||||
}
|
}
|
||||||
|
@ -168,6 +172,8 @@ pub fn render_text(
|
||||||
last_line_end = grapheme.visual_pos.col + grapheme_width;
|
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);
|
renderer.draw_indent_guides(last_line_indent_level, last_line_pos.visual_line);
|
||||||
decorations.render_virtual_lines(renderer, last_line_pos, last_line_end)
|
decorations.render_virtual_lines(renderer, last_line_pos, last_line_end)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue