A simple CPU rendered GUI IDE experience.
-rw-r--r--src/text.rs10
-rw-r--r--src/text/semantic_tokens.rs4
2 files changed, 6 insertions, 8 deletions
diff --git a/src/text.rs b/src/text.rs
index 3796346..ddeb205 100644
--- a/src/text.rs
+++ b/src/text.rs
@@ -443,10 +443,7 @@ impl TextArea {
m.position -= r.len() as u32;
self.inlays.insert(m);
}
- for d in self.tokens.iter_mut() {
- d.range.0 = manip(d.range.0 as _) as _;
- d.range.1 = manip(d.range.0 as _) as _;
- }
+ self.tokens.iter_mut().for_each(|d| d.manip(manip));
Ok(())
}
@@ -476,10 +473,7 @@ impl TextArea {
m.position += with.chars().count() as u32;
self.inlays.insert(m);
}
- for d in self.tokens.iter_mut() {
- d.range.0 = manip(d.range.0 as _) as _;
- d.range.1 = manip(d.range.1 as _) as _;
- }
+ self.tokens.iter_mut().for_each(|d| d.manip(manip));
Ok(())
}
diff --git a/src/text/semantic_tokens.rs b/src/text/semantic_tokens.rs
index 33c1eb5..fa964e6 100644
--- a/src/text/semantic_tokens.rs
+++ b/src/text/semantic_tokens.rs
@@ -107,6 +107,10 @@ pub struct TokenD {
pub modifiers: u32,
}
impl TokenD {
+ pub fn manip(&mut self, mut f: impl FnMut(usize) -> usize) {
+ self.range.0 = f(self.range.0 as _) as _;
+ self.range.1 = f(self.range.1 as _) as _;
+ }
pub fn style(self, leg: &SemanticTokensLegend) -> Style {
let mut sty = Style::new(crate::FG, crate::BG);
let Some(tty) = leg.token_types.get(self.ty as usize) else {