summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2025-02-01 00:33:05 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2025-02-01 00:33:05 +0100
commit447f5ae494da7ef93ac073600f4e5a2559c4e71c (patch)
treec8ac66b8ec2edb3f82f1b240717426da6d4f882d /widget
parent095859ed57e573d91ebe36dceb888ec95427b6ca (diff)
downloadiced-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.rs5
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();