From 8f615af44ee399fc29db4e137214fec77b85f82f Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Thu, 5 Apr 2018 13:23:48 +0900 Subject: [PATCH 1/3] Add a test for #2569 --- tests/source/imports_block_indent.rs | 4 ++++ tests/target/imports_block_indent.rs | 6 ++++++ 2 files changed, 10 insertions(+) create mode 100644 tests/source/imports_block_indent.rs create mode 100644 tests/target/imports_block_indent.rs diff --git a/tests/source/imports_block_indent.rs b/tests/source/imports_block_indent.rs new file mode 100644 index 00000000000..9333beb34a2 --- /dev/null +++ b/tests/source/imports_block_indent.rs @@ -0,0 +1,4 @@ +// rustfmt-imports_indent: Block + +// #2569 +use apns2::request::notification::{Notificatio, NotificationBuilder, Priority, SilentNotificationBuilder}; diff --git a/tests/target/imports_block_indent.rs b/tests/target/imports_block_indent.rs new file mode 100644 index 00000000000..2c424a69c00 --- /dev/null +++ b/tests/target/imports_block_indent.rs @@ -0,0 +1,6 @@ +// rustfmt-imports_indent: Block + +// #2569 +use apns2::request::notification::{ + Notificatio, NotificationBuilder, Priority, SilentNotificationBuilder, +}; From 636de8313d27d459b36a208326f9907b41da1c16 Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Thu, 5 Apr 2018 13:24:18 +0900 Subject: [PATCH 2/3] Put imports list on the next line if it exceeds max width --- src/imports.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/imports.rs b/src/imports.rs index f631f4b9c26..5b7c16ecc75 100644 --- a/src/imports.rs +++ b/src/imports.rs @@ -366,7 +366,8 @@ fn rewrite_nested_use_tree( }; let list_str = write_list(&items[first_index..], &fmt)?; - let result = if list_str.contains('\n') && context.config.imports_indent() == IndentStyle::Block + let result = if (list_str.contains('\n') || list_str.len() > remaining_width) + && context.config.imports_indent() == IndentStyle::Block { format!( "{}{{\n{}{}\n{}}}", From 97ec417e74485526992d1abf5fe709d434834898 Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Thu, 5 Apr 2018 13:27:42 +0900 Subject: [PATCH 3/3] Add trailing comma when using mixed layout with block indent --- src/lists.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/lists.rs b/src/lists.rs index 05b1a7ce296..d0e9863f2f4 100644 --- a/src/lists.rs +++ b/src/lists.rs @@ -172,11 +172,10 @@ where let limit = match tactic { _ if pre_line_comments => return DefinitiveListTactic::Vertical, - ListTactic::Mixed => return DefinitiveListTactic::Mixed, ListTactic::Horizontal => return DefinitiveListTactic::Horizontal, ListTactic::Vertical => return DefinitiveListTactic::Vertical, ListTactic::LimitedHorizontalVertical(limit) => ::std::cmp::min(width, limit), - ListTactic::HorizontalVertical => width, + ListTactic::Mixed | ListTactic::HorizontalVertical => width, }; let (sep_count, total_width) = calculate_width(items.clone()); @@ -188,7 +187,10 @@ where { DefinitiveListTactic::Horizontal } else { - DefinitiveListTactic::Vertical + match tactic { + ListTactic::Mixed => DefinitiveListTactic::Mixed, + _ => DefinitiveListTactic::Vertical, + } } } @@ -276,8 +278,7 @@ where if last && formatting.ends_with_newline { match formatting.trailing_separator { - SeparatorTactic::Always => separate = true, - SeparatorTactic::Vertical if result.contains('\n') => separate = true, + SeparatorTactic::Always | SeparatorTactic::Vertical => separate = true, _ => (), } }