Ben S 11 лет назад
Родитель
Сommit
fb8821164c
1 измененных файлов с 33 добавлено и 16 удалено
  1. 33 16
      src/file.rs

+ 33 - 16
src/file.rs

@@ -89,10 +89,10 @@ impl<'a> File<'a> {
             "aux" => vec![self.path.with_extension("tex")],  // TeX: auxiliary file
             "bbl" => vec![self.path.with_extension("tex")],  // BibTeX bibliography file
             "blg" => vec![self.path.with_extension("tex")],  // BibTeX log file
-            "lof" => vec![self.path.with_extension("tex")],  // list of figures
+            "lof" => vec![self.path.with_extension("tex")],  // TeX list of figures
             "log" => vec![self.path.with_extension("tex")],  // TeX log file
-            "lot" => vec![self.path.with_extension("tex")],  // list of tables
-            "toc" => vec![self.path.with_extension("tex")],  // table of contents
+            "lot" => vec![self.path.with_extension("tex")],  // TeX list of tables
+            "toc" => vec![self.path.with_extension("tex")],  // TeX table of contents
 
             _ => vec![],
         }
@@ -100,19 +100,30 @@ impl<'a> File<'a> {
 
     pub fn display(&self, column: &Column, unix: &mut Unix) -> String {
         match *column {
-            Permissions => self.permissions_string(),
-            FileName => self.file_name(),
-            FileSize(use_iec) => self.file_size(use_iec),
+            Permissions => {
+                self.permissions_string()
+            },
+            
+            FileName => {
+                self.file_name()
+            },
+            
+            FileSize(use_iec) => {
+                self.file_size(use_iec)
+            },
 
             // A file with multiple links is interesting, but
             // directories and suchlike can have multiple links all
             // the time.
             HardLinks => {
-                let style = if self.stat.kind == io::TypeFile && self.stat.unstable.nlink > 1 { Red.on(Yellow) } else { Red.normal() };
+                let style = if self.has_multiple_links() { Red.on(Yellow) } else { Red.normal() };
                 style.paint(self.stat.unstable.nlink.to_string().as_slice())
             },
 
-            Inode => Purple.paint(self.stat.unstable.inode.to_string().as_slice()),
+            Inode => {
+                Purple.paint(self.stat.unstable.inode.to_string().as_slice())
+            },
+            
             Blocks => {
                 if self.stat.kind == io::TypeFile || self.stat.kind == io::TypeSymlink {
                     Cyan.paint(self.stat.unstable.blocks.to_string().as_slice())
@@ -127,16 +138,17 @@ impl<'a> File<'a> {
             User => {
                 let uid = self.stat.unstable.uid as u32;
                 unix.load_user(uid);
+                let user_name = unix.get_user_name(uid).unwrap_or(uid.to_string());
                 let style = if unix.uid == uid { Yellow.bold() } else { Plain };
-                let string = unix.get_user_name(uid).unwrap_or(uid.to_string());
-                style.paint(string.as_slice())
+                style.paint(user_name.as_slice())
             },
+            
             Group => {
                 let gid = self.stat.unstable.gid as u32;
                 unix.load_group(gid);
-                let name = unix.get_group_name(gid).unwrap_or(gid.to_string());
+                let group_name = unix.get_group_name(gid).unwrap_or(gid.to_string());
                 let style = if unix.is_group_member(gid) { Yellow.normal() } else { Plain };
-                style.paint(name.as_slice())
+                style.paint(group_name.as_slice())
             },
         }
     }
@@ -175,10 +187,11 @@ impl<'a> File<'a> {
             parts: vec![],  // not needed
         });
 
-        // Statting a path usually fails because the file at the other
-        // end doesn't exist. Show this by highlighting the target
-        // file in red instead of displaying an error, because the
-        // error would be shown out of context and it's almost always
+        // Statting a path usually fails because the file at the
+        // other end doesn't exist. Show this by highlighting the
+        // target file in red instead of displaying an error, because
+        // the error would be shown out of context (before the
+        // results, not right by the file) and it's almost always for
         // that reason anyway.
 
         match link_target {
@@ -217,6 +230,10 @@ impl<'a> File<'a> {
     pub fn file_colour(&self) -> Style {
         self.get_type().style()
     }
+    
+    fn has_multiple_links(&self) -> bool {
+        self.stat.kind == io::TypeFile && self.stat.unstable.nlink > 1
+    }
 
     fn permissions_string(&self) -> String {
         let bits = self.stat.perm;