]> git.lizzy.rs Git - rust.git/commitdiff
scale WidthHeuristics by max_width
authorPascal Seitz <pascal.seitz@gmail.com>
Sun, 11 Feb 2018 18:44:47 +0000 (19:44 +0100)
committerPascal Seitz <pascal.seitz@gmail.com>
Tue, 13 Feb 2018 18:43:56 +0000 (19:43 +0100)
scale WidthHeuristics by max_width

rustfmt-config/src/config_type.rs
rustfmt-config/src/lib.rs
rustfmt-config/src/options.rs

index 51642570fdfda215c3ab5c2976cc590b22d76133..81d1c11f56cc7a7bb9b38a3228fdef6c476234be 100644 (file)
@@ -359,7 +359,8 @@ pub fn print_docs() {
 
             fn set_heuristics(&mut self) {
                 if self.use_small_heuristics.2 {
-                    self.set().width_heuristics(WidthHeuristics::default());
+                    let max_width = self.max_width.2;
+                    self.set().width_heuristics(WidthHeuristics::scaled(max_width));
                 } else {
                     self.set().width_heuristics(WidthHeuristics::null());
                 }
index cbfd236dc37e8a4610331ffd2b1cd583c42c2d42..3b6dca769d96eb5cb783cb5775a8913970e455e5 100644 (file)
     file_lines: FileLines, FileLines::all(), false,
         "Lines to format; this is not supported in rustfmt.toml, and can only be specified \
          via the --file-lines option";
-    width_heuristics: WidthHeuristics, WidthHeuristics::default(), false,
+    width_heuristics: WidthHeuristics, WidthHeuristics::scaled(100), false,
         "'small' heuristic values";
 }
 
index bff6d2298d3b61bba18509e72ca69c711a970694..396c5e4fc9f29850e470aa16b00a8a2c14429e01 100644 (file)
@@ -220,17 +220,17 @@ pub fn null() -> WidthHeuristics {
             single_line_if_else_max_width: 0,
         }
     }
-}
-
-impl Default for WidthHeuristics {
-    fn default() -> WidthHeuristics {
+    // scale the default WidthHeuristics according to max_width
+    pub fn scaled(max_width: usize) -> WidthHeuristics {
+        let mut max_width_ratio: f32 = max_width as f32 / 100.0; // 100 is the default width -> default ratio is 1
+        max_width_ratio = (max_width_ratio * 10.0).round() / 10.0; // round to the closest 0.1
         WidthHeuristics {
-            fn_call_width: 60,
-            struct_lit_width: 18,
-            struct_variant_width: 35,
-            array_width: 60,
-            chain_width: 60,
-            single_line_if_else_max_width: 50,
+            fn_call_width: (60.0 * max_width_ratio).round() as usize,
+            struct_lit_width: (18.0 * max_width_ratio).round() as usize,
+            struct_variant_width: (35.0 * max_width_ratio).round() as usize,
+            array_width: (60.0 * max_width_ratio).round() as usize,
+            chain_width: (60.0 * max_width_ratio).round() as usize,
+            single_line_if_else_max_width: (50.0 * max_width_ratio).round() as usize,
         }
     }
 }