Don't use TabMap::expand_tabs in line_indent_for_buffer_row

Max Brunsfeld created

Change summary

crates/editor/src/display_map.rs         | 25 +++++++++++--------------
crates/editor/src/display_map/tab_map.rs |  2 +-
crates/editor/src/editor_tests.rs        |  2 +-
3 files changed, 13 insertions(+), 16 deletions(-)

Detailed changes

crates/editor/src/display_map.rs 🔗

@@ -634,24 +634,21 @@ impl DisplaySnapshot {
             .buffer_snapshot
             .buffer_line_for_row(buffer_row)
             .unwrap();
-        let chars = buffer.chars_at(Point::new(range.start.row, 0));
 
+        let mut indent_size = 0;
         let mut is_blank = false;
-        let indent_size = self.tab_snapshot.expand_tabs(
-            chars.take_while(|c| {
-                if *c == ' ' || *c == '\t' {
-                    true
-                } else {
-                    if *c == '\n' {
-                        is_blank = true;
-                    }
-                    false
+        for c in buffer.chars_at(Point::new(range.start.row, 0)) {
+            if c == ' ' || c == '\t' {
+                indent_size += 1;
+            } else {
+                if c == '\n' {
+                    is_blank = true;
                 }
-            }),
-            buffer.line_len(buffer_row), // Never collapse
-        );
+                break;
+            }
+        }
 
-        (indent_size as u32, is_blank)
+        (indent_size, is_blank)
     }
 
     pub fn line_len(&self, row: u32) -> u32 {

crates/editor/src/display_map/tab_map.rs 🔗

@@ -290,7 +290,7 @@ impl TabSnapshot {
         fold_point.to_buffer_point(&self.suggestion_snapshot.fold_snapshot)
     }
 
-    pub fn expand_tabs(&self, chars: impl Iterator<Item = char>, column: u32) -> u32 {
+    fn expand_tabs(&self, chars: impl Iterator<Item = char>, column: u32) -> u32 {
         let tab_size = self.tab_size.get();
 
         let mut expanded_chars = 0;

crates/editor/src/editor_tests.rs 🔗

@@ -630,7 +630,7 @@ fn test_cancel(cx: &mut gpui::MutableAppContext) {
 }
 
 #[gpui::test]
-fn test_fold(cx: &mut gpui::MutableAppContext) {
+fn test_fold_action(cx: &mut gpui::MutableAppContext) {
     cx.set_global(Settings::test(cx));
     let buffer = MultiBuffer::build_simple(
         &"