diff options
author | 2025-02-01 00:33:05 +0100 | |
---|---|---|
committer | 2025-02-01 00:33:05 +0100 | |
commit | 447f5ae494da7ef93ac073600f4e5a2559c4e71c (patch) | |
tree | c8ac66b8ec2edb3f82f1b240717426da6d4f882d /widget | |
parent | 095859ed57e573d91ebe36dceb888ec95427b6ca (diff) | |
download | iced-447f5ae494da7ef93ac073600f4e5a2559c4e71c.tar.gz iced-447f5ae494da7ef93ac073600f4e5a2559c4e71c.tar.bz2 iced-447f5ae494da7ef93ac073600f4e5a2559c4e71c.zip |
Discard `markdown::Highlighter` if language changes
Diffstat (limited to 'widget')
-rw-r--r-- | widget/src/markdown.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/widget/src/markdown.rs b/widget/src/markdown.rs index b4b89095..658166ec 100644 --- a/widget/src/markdown.rs +++ b/widget/src/markdown.rs @@ -289,6 +289,7 @@ struct State { #[derive(Debug)] struct Highlighter { lines: Vec<(String, Vec<Span>)>, + language: String, parser: iced_highlighter::Stream, current: usize, } @@ -304,6 +305,7 @@ impl Highlighter { token: language.to_string(), }, ), + language: language.to_owned(), current: 0, } } @@ -484,6 +486,9 @@ fn parse_with<'a>( .borrow_mut() .highlighter .take() + .filter(|highlighter| { + highlighter.language == _language.as_ref() + }) .unwrap_or_else(|| Highlighter::new(&_language)); highlighter.prepare(); |