Bläddra i källkod

fix: Display offset for filenames with spaces

Guillaume BOEHM 2 år sedan
förälder
incheckning
dd938c6f11
2 ändrade filer med 23 tillägg och 14 borttagningar
  1. 15 11
      src/output/grid.rs
  2. 8 3
      src/output/grid_details.rs

+ 15 - 11
src/output/grid.rs

@@ -56,22 +56,26 @@ impl<'a> Render<'a> {
                     0
                 };
 
+            let space_filename_offset = if file.name.contains(' ') || file.name.contains('\'') {
+                2
+            } else {
+                0
+            };
+
             let contents = filename.paint();
+            #[rustfmt::skip]
             let width = match (
                 filename.options.embed_hyperlinks,
                 filename.options.show_icons,
             ) {
-                #[rustfmt::skip]
-                (EmbedHyperlinks::On, ShowIcons::Always(spacing)
-                | ShowIcons::Automatic(spacing))                  => filename.bare_width() + classification_width + 1 + (spacing as usize),
-                (EmbedHyperlinks::On, ShowIcons::Never) => {
-                    filename.bare_width() + classification_width
-                }
-                (
-                    EmbedHyperlinks::Off,
-                    ShowIcons::Always(spacing) | ShowIcons::Automatic(spacing),
-                ) => filename.bare_width() + 1 + (spacing as usize),
-                (EmbedHyperlinks::Off, _) => *contents.width(),
+                ( EmbedHyperlinks::On, ShowIcons::Always(spacing) | ShowIcons::Automatic(spacing) )
+                    => filename.bare_width() + classification_width + 1 + (spacing as usize) + space_filename_offset,
+                ( EmbedHyperlinks::On, ShowIcons::Never )
+                    => filename.bare_width() + classification_width + space_filename_offset,
+                ( EmbedHyperlinks::Off, ShowIcons::Always(spacing) | ShowIcons::Automatic(spacing) )
+                    => filename.bare_width() + 1 + (spacing as usize) + space_filename_offset,
+                ( EmbedHyperlinks::Off, _ )
+                    => *contents.width(),
             };
 
             grid.add(tg::Cell {

+ 8 - 3
src/output/grid_details.rs

@@ -162,11 +162,16 @@ impl<'a> Render<'a> {
             .map(|file| {
                 let filename = self.file_style.for_file(file, self.theme);
                 let contents = filename.paint();
+                let space_filename_offset = if file.name.contains(' ') || file.name.contains('\'') {
+                    2
+                } else {
+                    0
+                };
                 #[rustfmt::skip]
                 let width = match (filename.options.embed_hyperlinks, filename.options.show_icons) {
-                    (EmbedHyperlinks::On, ShowIcons::Automatic(spacing)) => filename.bare_width() + 1 + (spacing as usize),
-                    (EmbedHyperlinks::On, ShowIcons::Always(spacing)) => filename.bare_width() + 1 + (spacing as usize),
-                    (EmbedHyperlinks::On, ShowIcons::Never) => filename.bare_width(),
+                    (EmbedHyperlinks::On, ShowIcons::Automatic(spacing)) => filename.bare_width() + 1 + (spacing as usize) + space_filename_offset,
+                    (EmbedHyperlinks::On, ShowIcons::Always(spacing)) => filename.bare_width() + 1 + (spacing as usize) + space_filename_offset,
+                    (EmbedHyperlinks::On, ShowIcons::Never) => filename.bare_width() + space_filename_offset,
                     (EmbedHyperlinks::Off, _) => *contents.width(),
                 };