mirror of
https://github.com/ilyakooo0/helix.git
synced 2024-11-10 06:16:00 +03:00
Stop collecting highlight_iter events then turning back into iter
This commit is contained in:
parent
5aead46f4b
commit
62561e9d23
@ -139,31 +139,34 @@ impl EditorView {
|
||||
start..end
|
||||
};
|
||||
|
||||
// TODO: range doesn't actually restrict source, just highlight range
|
||||
let highlights = match doc.syntax() {
|
||||
match doc.syntax() {
|
||||
Some(syntax) => {
|
||||
syntax
|
||||
let iter = syntax
|
||||
// TODO: range doesn't actually restrict source, just highlight range
|
||||
.highlight_iter(text.slice(..), Some(range), None)
|
||||
.map(|event| event.unwrap())
|
||||
.collect() // TODO: we collect here to avoid holding the lock, fix later
|
||||
}
|
||||
None => vec![HighlightEvent::Source {
|
||||
start: range.start,
|
||||
end: range.end,
|
||||
}],
|
||||
}
|
||||
.into_iter()
|
||||
.map(move |event| match event {
|
||||
// convert byte offsets to char offset
|
||||
HighlightEvent::Source { start, end } => {
|
||||
let start = text.byte_to_char(ensure_grapheme_boundary_next_byte(text, start));
|
||||
let end = text.byte_to_char(ensure_grapheme_boundary_next_byte(text, end));
|
||||
HighlightEvent::Source { start, end }
|
||||
}
|
||||
event => event,
|
||||
});
|
||||
.map(move |event| match event {
|
||||
// convert byte offsets to char offset
|
||||
HighlightEvent::Source { start, end } => {
|
||||
let start =
|
||||
text.byte_to_char(ensure_grapheme_boundary_next_byte(text, start));
|
||||
let end =
|
||||
text.byte_to_char(ensure_grapheme_boundary_next_byte(text, end));
|
||||
HighlightEvent::Source { start, end }
|
||||
}
|
||||
event => event,
|
||||
});
|
||||
|
||||
Box::new(highlights)
|
||||
Box::new(iter)
|
||||
}
|
||||
None => Box::new(
|
||||
[HighlightEvent::Source {
|
||||
start: text.byte_to_char(range.start),
|
||||
end: text.byte_to_char(range.end),
|
||||
}]
|
||||
.into_iter(),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
/// Get highlight spans for document diagnostics
|
||||
|
Loading…
Reference in New Issue
Block a user