From 9fe558183bb322fb2e3fd5fbb71c21090440aeaf Mon Sep 17 00:00:00 2001 From: Frederick Zhang Date: Sat, 9 Aug 2025 01:01:48 +1000 Subject: [PATCH] fix: use default disk.columns when only other disk.* configs exist (#1776) I configured `[disk.name_filter]` and after upgrading to v0.11.0, the disk widget became empty since `disk.columns` was parsed as an empty vector unless I added `disk.columns` to my config as well. --- src/options.rs | 2 +- src/options/config/disk.rs | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/options.rs b/src/options.rs index 2a105e97..ed3b669c 100644 --- a/src/options.rs +++ b/src/options.rs @@ -407,7 +407,7 @@ pub(crate) fn init_app(args: BottomArgs, config: Config) -> Result<(App, BottomL DiskTableWidget::new( &app_config_fields, &styling, - config.disk.as_ref().map(|cfg| cfg.columns.as_slice()), + config.disk.as_ref().and_then(|cfg| cfg.columns.as_deref()), ), ); } diff --git a/src/options/config/disk.rs b/src/options/config/disk.rs index d6c32a51..2e1f7a4e 100644 --- a/src/options/config/disk.rs +++ b/src/options/config/disk.rs @@ -16,7 +16,7 @@ pub(crate) struct DiskConfig { /// A list of disk widget columns. #[serde(default)] - pub(crate) columns: Vec, // TODO: make this more composable(?) in the future, we might need to rethink how it's done for custom widgets + pub(crate) columns: Option>, // TODO: make this more composable(?) in the future, we might need to rethink how it's done for custom widgets } #[cfg(test)] @@ -24,10 +24,17 @@ mod test { use super::DiskConfig; #[test] - fn empty_column_setting() { + fn none_column_setting() { let config = ""; let generated: DiskConfig = toml_edit::de::from_str(config).unwrap(); - assert!(generated.columns.is_empty()); + assert!(generated.columns.is_none()); + } + + #[test] + fn empty_column_setting() { + let config = r#"columns = []"#; + let generated: DiskConfig = toml_edit::de::from_str(config).unwrap(); + assert!(generated.columns.unwrap().is_empty()); } #[test]