A simple CPU rendered GUI IDE experience.
| -rw-r--r-- | src/text.rs | 10 | ||||
| -rw-r--r-- | src/text/semantic_tokens.rs | 4 |
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 { |