提交 fb882116 编写于 作者: B Ben S

Misc style changes

上级 527528e8
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册