Merge pull request #790 from ariasuni/fix-too-many-headers-in-grid-details

Don’t produce extra column sometimes with long grid + header
This commit is contained in:
Benjamin Sago 2021-03-30 14:37:52 +01:00 committed by GitHub
commit 96e9307b99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 7 deletions

View File

@ -157,7 +157,11 @@ impl<'a> Render<'a> {
.map(|file| self.file_style.for_file(file, self.theme).paint().promote())
.collect::<Vec<_>>();
let mut last_working_table = self.make_grid(1, options, &file_names, rows.clone(), &drender);
let mut last_working_grid = self.make_grid(1, options, &file_names, rows.clone(), &drender);
if file_names.len() == 1 {
return Some((last_working_grid, 1));
}
// If we cant fit everything in a grid 100 columns wide, then
// something has gone seriously awry
@ -166,23 +170,26 @@ impl<'a> Render<'a> {
let the_grid_fits = {
let d = grid.fit_into_columns(column_count);
d.is_complete() && d.width() <= self.console_width
d.width() <= self.console_width
};
if the_grid_fits {
last_working_table = grid;
}
else {
if column_count == file_names.len() {
return Some((grid, column_count));
} else {
last_working_grid = grid;
}
} else {
// If weve figured out how many columns can fit in the users
// terminal, and it turns out there arent enough rows to
// make it worthwhile, then just resort to the lines view.
if let RowThreshold::MinimumRows(thresh) = self.row_threshold {
if last_working_table.fit_into_columns(column_count - 1).row_count() < thresh {
if last_working_grid.fit_into_columns(column_count - 1).row_count() < thresh {
return None;
}
}
return Some((last_working_table, column_count - 1));
return Some((last_working_grid, column_count - 1));
}
}

View File

@ -76,3 +76,24 @@ stdout = { file = "outputs/files_paths_long_grid_3col.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'env', 'long', 'grid' ]
# check if exa is using the minimum number of columns with headers
[[cmd]]
name = "COLUMN=200 exa -lGh with one file dont produce extra columns even if there place for more"
shell = "exa -lGh /testcases/files/10_bytes"
environment = { COLUMNS = "200" }
stdout = { file = "outputs/files_paths_long_grid_header_1file.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'env', 'long', 'grid' ]
[[cmd]]
name = "COLUMN=200 exa -lGh with several files dont produce extra columns even if there place for more"
shell = "exa -lGh /testcases/files/10_{bytes,KiB}"
environment = { COLUMNS = "200" }
stdout = { file = "outputs/files_paths_long_grid_header_2files.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'env', 'long', 'grid' ]

View File

@ -0,0 +1,2 @@
Permissions Size User Date Modified Name
.rw-r--r-- 10 cassowary  1 Jan 12:34 /testcases/files/10_bytes

View File

@ -0,0 +1,2 @@
Permissions Size User Date Modified Name Permissions Size User Date Modified Name
.rw-r--r-- 10 cassowary  1 Jan 12:34 /testcases/files/10_bytes .rw-r--r-- 10k cassowary  1 Jan 12:34 /testcases/files/10_KiB