mirror of
https://github.com/Llewellynvdm/exa.git
synced 2024-11-22 12:05:11 +00:00
Display files on a single line if possible
This commit is contained in:
parent
8b3602f20f
commit
c52625b1ce
14
src/exa.rs
14
src/exa.rs
@ -7,6 +7,8 @@ extern crate unicode;
|
||||
use std::os;
|
||||
use std::io::fs;
|
||||
use std::io::FileType::TypeDirectory;
|
||||
use std::iter::AdditiveIterator;
|
||||
use std::str::StrVector;
|
||||
|
||||
use file::File;
|
||||
use dir::Dir;
|
||||
@ -111,9 +113,19 @@ fn lines_view(files: Vec<File>) {
|
||||
}
|
||||
|
||||
fn grid_view(across: bool, console_width: uint, files: Vec<File>) {
|
||||
// Check if all the files can be displayed on one line, and do
|
||||
// that if possible.
|
||||
let count = files.len();
|
||||
let spacing = 2;
|
||||
if files.iter().map(|ref f| f.name.len() + spacing).sum() + (count - 1) * spacing <= console_width {
|
||||
let names: Vec<String> = files.iter().map(|ref f| f.file_name().to_string()).collect();
|
||||
println!("{}", names.connect(" "));
|
||||
return;
|
||||
}
|
||||
|
||||
// Otherwise, contort them into a grid.
|
||||
let max_column_length = files.iter().map(|f| f.file_name_width()).max().unwrap_or(0);
|
||||
let num_columns = (console_width + 1) / (max_column_length + 1);
|
||||
let count = files.len();
|
||||
|
||||
let mut num_rows = count / num_columns;
|
||||
if count % num_columns != 0 {
|
||||
|
Loading…
Reference in New Issue
Block a user