summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen S <ogham@bsago.me>2016-10-30 16:42:33 +0000
committerBen S <ogham@bsago.me>2016-10-30 16:42:33 +0000
commit0ffb331976e8563c063d12b476c0b82d76747d1f (patch)
treed2414aae5e7690135b49ba491cf8265ff7744d31
parent86065f832d5b82320022807bfb02a48f43bc1930 (diff)
Wire up the colour-scale option
-rw-r--r--README.md1
-rw-r--r--src/options/help.rs4
-rw-r--r--src/options/mod.rs18
-rw-r--r--src/options/view.rs16
4 files changed, 23 insertions, 16 deletions
diff --git a/README.md b/README.md
index 6744711..90c3acb 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,7 @@ exa’s options are similar, but not exactly the same, as `ls`.
- **-T**, **--tree**: recurse into subdirectories in a tree view
- **-x**, **--across**: sort multi-column view entries across
- **--color**, **--colour**: when to colourise the output
+- **--color-scale**, **--colour-scale**: colour file sizes according to their magnitude
### Filtering Options
diff --git a/src/options/help.rs b/src/options/help.rs
index 097616b..e6cd25c 100644
--- a/src/options/help.rs
+++ b/src/options/help.rs
@@ -7,7 +7,9 @@ DISPLAY OPTIONS
-R, --recurse recurse into directories
-T, --tree recurse into subdirectories in a tree view
-x, --across sort multi-column view entries across
- --color, --colour when to colourise the output
+
+ --color=WHEN, --colour=WHEN when to colourise the output (always, auto, never)
+ --color-scale, --colour-scale colour file sizes according to their magnitude
FILTERING AND SORTING OPTIONS
-a, --all show dot-files
diff --git a/src/options/mod.rs b/src/options/mod.rs
index 7dd329f..f5c8c74 100644
--- a/src/options/mod.rs
+++ b/src/options/mod.rs
@@ -49,14 +49,16 @@ impl Options {
opts.optflag("?", "help", "show list of command-line options");
// Display options
- opts.optflag("1", "oneline", "display one entry per line");
- opts.optflag("G", "grid", "display entries in a grid view (default)");
- opts.optflag("l", "long", "display extended details and attributes");
- opts.optflag("R", "recurse", "recurse into directories");
- opts.optflag("T", "tree", "recurse into subdirectories in a tree view");
- opts.optflag("x", "across", "sort multi-column view entries across");
- opts.optopt ("", "color", "when to show anything in colours", "WHEN");
- opts.optopt ("", "colour", "when to show anything in colours (alternate spelling)", "WHEN");
+ opts.optflag("1", "oneline", "display one entry per line");
+ opts.optflag("G", "grid", "display entries in a grid view (default)");
+ opts.optflag("l", "long", "display extended details and attributes");
+ opts.optflag("R", "recurse", "recurse into directories");
+ opts.optflag("T", "tree", "recurse into subdirectories in a tree view");
+ opts.optflag("x", "across", "sort multi-column view entries across");
+ opts.optopt ("", "color", "when to show anything in colours", "WHEN");
+ opts.optopt ("", "colour", "when to show anything in colours (alternate spelling)", "WHEN");
+ opts.optflag("", "color-scale", "use a colour scale when displaying file sizes (alternate spelling)");
+ opts.optflag("", "colour-scale", "use a colour scale when displaying file sizes");
// Filtering and sorting options
opts.optflag("", "group-directories-first", "list directories before other files");
diff --git a/src/options/view.rs b/src/options/view.rs
index c64fac4..69cbca4 100644
--- a/src/options/view.rs
+++ b/src/options/view.rs
@@ -25,6 +25,10 @@ impl View {
pub fn deduce(matches: &getopts::Matches, filter: FileFilter, dir_action: DirAction) -> Result<View, Misfire> {
use options::misfire::Misfire::*;
+ let colour_scale = || {
+ matches.opt_present("color-scale") || matches.opt_present("colour-scale")
+ };
+
let long = || {
if matches.opt_present("across") && !matches.opt_present("grid") {
Err(Useless("across", true, "long"))
@@ -34,13 +38,12 @@ impl View {
}
else {
let term_colours = try!(TerminalColours::deduce(matches));
- let scale = true;
let colours = match term_colours {
- TerminalColours::Always => Colours::colourful(scale),
+ TerminalColours::Always => Colours::colourful(colour_scale()),
TerminalColours::Never => Colours::plain(),
TerminalColours::Automatic => {
if dimensions().is_some() {
- Colours::colourful(scale)
+ Colours::colourful(colour_scale())
}
else {
Colours::plain()
@@ -85,13 +88,12 @@ impl View {
let other_options_scan = || {
let term_colours = try!(TerminalColours::deduce(matches));
let term_width = try!(TerminalWidth::deduce());
- let scale = true;
if let Some(&width) = term_width.as_ref() {
let colours = match term_colours {
- TerminalColours::Always => Colours::colourful(scale),
+ TerminalColours::Always => Colours::colourful(colour_scale()),
TerminalColours::Never => Colours::plain(),
- TerminalColours::Automatic => Colours::colourful(scale),
+ TerminalColours::Automatic => Colours::colourful(colour_scale()),
};
if matches.opt_present("oneline") {
@@ -134,7 +136,7 @@ impl View {
// fallback to the lines view.
let colours = match term_colours {
- TerminalColours::Always => Colours::colourful(scale),
+ TerminalColours::Always => Colours::colourful(colour_scale()),
TerminalColours::Never => Colours::plain(),
TerminalColours::Automatic => Colours::plain(),
};