mirror of
https://github.com/Llewellynvdm/exa.git
synced 2025-02-02 18:48:24 +00:00
Upgrade to latest ansi_term
Yeah, I broke my own code again.
This commit is contained in:
parent
6ade060eb6
commit
05dd644c92
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,2 @@
|
|||||||
*~
|
*~
|
||||||
target
|
target
|
||||||
Cargo.lock
|
|
12
Cargo.lock
generated
Normal file
12
Cargo.lock
generated
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[root]
|
||||||
|
name = "exa"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"ansi_term 0.3.0 (git+https://github.com/ogham/rust-ansi-term.git)",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ansi_term"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "git+https://github.com/ogham/rust-ansi-term.git#4b9ea6cf266053e1a771e75b935b4e54c586c139"
|
||||||
|
|
@ -15,7 +15,7 @@ use column::Alignment::Left;
|
|||||||
use options::{Options, View};
|
use options::{Options, View};
|
||||||
use unix::Unix;
|
use unix::Unix;
|
||||||
|
|
||||||
use ansi_term::{Paint, Plain, strip_formatting};
|
use ansi_term::{Plain, strip_formatting};
|
||||||
|
|
||||||
pub mod column;
|
pub mod column;
|
||||||
pub mod dir;
|
pub mod dir;
|
||||||
@ -135,7 +135,7 @@ fn grid_view(across: bool, console_width: uint, files: Vec<File>) {
|
|||||||
|
|
||||||
let ref file = files[num];
|
let ref file = files[num];
|
||||||
let file_name = file.name.clone();
|
let file_name = file.name.clone();
|
||||||
let styled_name = file.file_colour().paint(file_name.as_slice());
|
let styled_name = file.file_colour().paint(file_name.as_slice()).to_string();
|
||||||
if x == num_columns - 1 {
|
if x == num_columns - 1 {
|
||||||
print!("{}", styled_name);
|
print!("{}", styled_name);
|
||||||
}
|
}
|
||||||
@ -161,7 +161,7 @@ fn details_view(options: &Options, columns: &Vec<Column>, files: Vec<File>) {
|
|||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
if options.header {
|
if options.header {
|
||||||
table.insert(0, columns.iter().map(|c| Plain.underline().paint(c.header())).collect());
|
table.insert(0, columns.iter().map(|c| Plain.underline().paint(c.header()).to_string()).collect());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Each column needs to have its invisible colour-formatting
|
// Each column needs to have its invisible colour-formatting
|
||||||
|
37
src/file.rs
37
src/file.rs
@ -1,8 +1,7 @@
|
|||||||
use std::io::{fs, IoResult};
|
use std::io::{fs, IoResult};
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::str::SendStr;
|
|
||||||
|
|
||||||
use ansi_term::{Paint, Colour, Plain, Style, Red, Green, Yellow, Blue, Purple, Cyan, Fixed};
|
use ansi_term::{ANSIString, Colour, Plain, Style, Red, Green, Yellow, Blue, Purple, Cyan, Fixed};
|
||||||
|
|
||||||
use column::Column;
|
use column::Column;
|
||||||
use column::Column::*;
|
use column::Column::*;
|
||||||
@ -121,19 +120,19 @@ impl<'a> File<'a> {
|
|||||||
// the time.
|
// the time.
|
||||||
HardLinks => {
|
HardLinks => {
|
||||||
let style = if self.has_multiple_links() { 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())
|
style.paint(self.stat.unstable.nlink.to_string().as_slice()).to_string()
|
||||||
},
|
},
|
||||||
|
|
||||||
Inode => {
|
Inode => {
|
||||||
Purple.paint(self.stat.unstable.inode.to_string().as_slice())
|
Purple.paint(self.stat.unstable.inode.to_string().as_slice()).to_string()
|
||||||
},
|
},
|
||||||
|
|
||||||
Blocks => {
|
Blocks => {
|
||||||
if self.stat.kind == io::TypeFile || self.stat.kind == io::TypeSymlink {
|
if self.stat.kind == io::TypeFile || self.stat.kind == io::TypeSymlink {
|
||||||
Cyan.paint(self.stat.unstable.blocks.to_string().as_slice())
|
Cyan.paint(self.stat.unstable.blocks.to_string().as_slice()).to_string()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GREY.paint("-")
|
GREY.paint("-").to_string()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -144,7 +143,7 @@ impl<'a> File<'a> {
|
|||||||
unix.load_user(uid);
|
unix.load_user(uid);
|
||||||
let user_name = unix.get_user_name(uid).unwrap_or(uid.to_string());
|
let user_name = unix.get_user_name(uid).unwrap_or(uid.to_string());
|
||||||
let style = if unix.uid == uid { Yellow.bold() } else { Plain };
|
let style = if unix.uid == uid { Yellow.bold() } else { Plain };
|
||||||
style.paint(user_name.as_slice())
|
style.paint(user_name.as_slice()).to_string()
|
||||||
},
|
},
|
||||||
|
|
||||||
Group => {
|
Group => {
|
||||||
@ -152,7 +151,7 @@ impl<'a> File<'a> {
|
|||||||
unix.load_group(gid);
|
unix.load_group(gid);
|
||||||
let group_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 };
|
let style = if unix.is_group_member(gid) { Yellow.normal() } else { Plain };
|
||||||
style.paint(group_name.as_slice())
|
style.paint(group_name.as_slice()).to_string()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -169,11 +168,11 @@ impl<'a> File<'a> {
|
|||||||
};
|
};
|
||||||
format!("{} {}", displayed_name, self.target_file_name_and_arrow(target_path))
|
format!("{} {}", displayed_name, self.target_file_name_and_arrow(target_path))
|
||||||
}
|
}
|
||||||
Err(_) => displayed_name,
|
Err(_) => displayed_name.to_string(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
displayed_name
|
displayed_name.to_string()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,7 +211,7 @@ impl<'a> File<'a> {
|
|||||||
// Don't report file sizes for directories. I've never looked
|
// Don't report file sizes for directories. I've never looked
|
||||||
// at one of those numbers and gained any information from it.
|
// at one of those numbers and gained any information from it.
|
||||||
if self.stat.kind == io::TypeDirectory {
|
if self.stat.kind == io::TypeDirectory {
|
||||||
GREY.paint("-")
|
GREY.paint("-").to_string()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let (size, suffix) = if use_iec_prefixes {
|
let (size, suffix) = if use_iec_prefixes {
|
||||||
@ -226,14 +225,14 @@ impl<'a> File<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn type_char(&self) -> SendStr {
|
fn type_char(&self) -> ANSIString {
|
||||||
return match self.stat.kind {
|
return match self.stat.kind {
|
||||||
io::TypeFile => ".".into_maybe_owned(),
|
io::TypeFile => Plain.paint("."),
|
||||||
io::TypeDirectory => Blue.paint("d").into_maybe_owned(),
|
io::TypeDirectory => Blue.paint("d"),
|
||||||
io::TypeNamedPipe => Yellow.paint("|").into_maybe_owned(),
|
io::TypeNamedPipe => Yellow.paint("|"),
|
||||||
io::TypeBlockSpecial => Purple.paint("s").into_maybe_owned(),
|
io::TypeBlockSpecial => Purple.paint("s"),
|
||||||
io::TypeSymlink => Cyan.paint("l").into_maybe_owned(),
|
io::TypeSymlink => Cyan.paint("l"),
|
||||||
io::TypeUnknown => "?".into_maybe_owned(),
|
io::TypeUnknown => Plain.paint("?"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,7 +263,7 @@ impl<'a> File<'a> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn permission_bit(bits: io::FilePermission, bit: io::FilePermission, character: &'static str, style: Style) -> String {
|
fn permission_bit(bits: io::FilePermission, bit: io::FilePermission, character: &'static str, style: Style) -> ANSIString {
|
||||||
if bits.contains(bit) {
|
if bits.contains(bit) {
|
||||||
style.paint(character.as_slice())
|
style.paint(character.as_slice())
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ use self::FileType::*;
|
|||||||
use std::io;
|
use std::io;
|
||||||
use std::ascii::AsciiExt;
|
use std::ascii::AsciiExt;
|
||||||
|
|
||||||
use ansi_term::{Paint, Plain, Style, Red, Green, Yellow, Blue, Cyan, Fixed};
|
use ansi_term::{Plain, Style, Red, Green, Yellow, Blue, Cyan, Fixed};
|
||||||
|
|
||||||
pub enum FileType {
|
pub enum FileType {
|
||||||
Normal, Directory, Executable, Immediate, Compiled, Symlink, Special,
|
Normal, Directory, Executable, Immediate, Compiled, Symlink, Special,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user