From e2b9aa77b9f94f7855d2d6214417fc37412eaed6 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 27 Oct 2022 13:50:14 -0600 Subject: [PATCH] Iterate attr spans in reverse for efficiency --- src/attrs.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/attrs.rs b/src/attrs.rs index a97e3eb..77d6bbc 100644 --- a/src/attrs.rs +++ b/src/attrs.rs @@ -137,6 +137,7 @@ impl<'a> Attrs<'a> { } /// List of text attributes to apply to a line +//TODO: have this clean up the spans when changes are made #[derive(Eq, PartialEq)] pub struct AttrsList<'a> { defaults: Attrs<'a>, @@ -176,13 +177,12 @@ impl<'a> AttrsList<'a> { /// /// This returns the latest added span that contains the range pub fn get_span(&self, range: Range) -> Attrs<'a> { - let mut attrs = self.defaults; - for span in self.spans.iter() { + for span in self.spans.iter().rev() { if range.start >= span.0.start && range.end <= span.0.end { - attrs = span.1; + return span.1; } } - attrs + self.defaults } /// Split attributes list at an offset