Discard markdown::Highlighter if language changes

This commit is contained in:
Héctor Ramón Jiménez 2025-02-01 00:33:05 +01:00
parent 095859ed57
commit 447f5ae494
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -289,6 +289,7 @@ struct State {
#[derive(Debug)] #[derive(Debug)]
struct Highlighter { struct Highlighter {
lines: Vec<(String, Vec<Span>)>, lines: Vec<(String, Vec<Span>)>,
language: String,
parser: iced_highlighter::Stream, parser: iced_highlighter::Stream,
current: usize, current: usize,
} }
@ -304,6 +305,7 @@ impl Highlighter {
token: language.to_string(), token: language.to_string(),
}, },
), ),
language: language.to_owned(),
current: 0, current: 0,
} }
} }
@ -484,6 +486,9 @@ fn parse_with<'a>(
.borrow_mut() .borrow_mut()
.highlighter .highlighter
.take() .take()
.filter(|highlighter| {
highlighter.language == _language.as_ref()
})
.unwrap_or_else(|| Highlighter::new(&_language)); .unwrap_or_else(|| Highlighter::new(&_language));
highlighter.prepare(); highlighter.prepare();