diff --git a/src/configuration/builder.rs b/src/configuration/builder.rs index 81b0275..f0e5ad6 100644 --- a/src/configuration/builder.rs +++ b/src/configuration/builder.rs @@ -49,6 +49,10 @@ impl ConfigurationBuilder { self.insert("lineWidth", (value as i32).into()) } + pub fn indent_width(&mut self, value: u32) -> &mut Self { + self.insert("indentWidth", (value as i32).into()) + } + /// The kind of newline to use. /// Default: `NewLineKind::LineFeed` pub fn new_line_kind(&mut self, value: NewLineKind) -> &mut Self { @@ -136,6 +140,7 @@ mod tests { config .new_line_kind(NewLineKind::CarriageReturnLineFeed) .line_width(90) + .indent_width(2) .text_wrap(TextWrap::Always) .emphasis_kind(EmphasisKind::Asterisks) .strong_kind(StrongKind::Underscores) @@ -146,7 +151,7 @@ mod tests { .ignore_end_directive("test"); let inner_config = config.get_inner_config(); - assert_eq!(inner_config.len(), 10); + assert_eq!(inner_config.len(), 11); let diagnostics = resolve_config(inner_config, &Default::default()).diagnostics; assert_eq!(diagnostics.len(), 0); } @@ -161,6 +166,7 @@ mod tests { let mut config_builder = ConfigurationBuilder::new(); let config = config_builder.global_config(global_config).build(); assert_eq!(config.line_width, 90); + assert_eq!(config.indent_width, 2); assert_eq!(config.new_line_kind == NewLineKind::CarriageReturnLineFeed, true); } @@ -170,6 +176,7 @@ mod tests { let mut config_builder = ConfigurationBuilder::new(); let config = config_builder.global_config(global_config).build(); assert_eq!(config.line_width, 80); // this is different + assert_eq!(config.indent_width, 2); assert_eq!(config.new_line_kind == NewLineKind::LineFeed, true); } } diff --git a/src/configuration/resolve_config.rs b/src/configuration/resolve_config.rs index 6d7fd79..241d058 100644 --- a/src/configuration/resolve_config.rs +++ b/src/configuration/resolve_config.rs @@ -43,6 +43,12 @@ pub fn resolve_config( global_config.line_width.unwrap_or(80), &mut diagnostics, ), + indent_width: get_value( + &mut config, + "indentWidth", + global_config.indent_width.unwrap_or(2).into(), + &mut diagnostics, + ), new_line_kind: get_value( &mut config, "newLineKind", diff --git a/src/configuration/types.rs b/src/configuration/types.rs index 76d1afe..8a64be1 100644 --- a/src/configuration/types.rs +++ b/src/configuration/types.rs @@ -8,6 +8,7 @@ use serde::Serialize; #[serde(rename_all = "camelCase")] pub struct Configuration { pub line_width: u32, + pub indent_width: u32, pub new_line_kind: NewLineKind, pub text_wrap: TextWrap, pub emphasis_kind: EmphasisKind,