mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Added option for tighter punctuation in types. fixes #489
This commit is contained in:
parent
b236819f72
commit
dba2d8afd5
@ -73,6 +73,13 @@ configuration_option_enum! { Density:
|
||||
CompressedIfEmpty,
|
||||
}
|
||||
|
||||
configuration_option_enum! { TypeDensity:
|
||||
// No spaces around "=" and "+"
|
||||
Compressed,
|
||||
// Spaces around " = " and " + "
|
||||
WhiteSpace,
|
||||
}
|
||||
|
||||
impl Density {
|
||||
pub fn to_list_tactic(self) -> ListTactic {
|
||||
match self {
|
||||
@ -278,6 +285,8 @@ create_config! {
|
||||
fn_args_density: Density, Density::Tall, "Argument density in functions";
|
||||
fn_args_layout: StructLitStyle, StructLitStyle::Visual, "Layout of function arguments";
|
||||
fn_arg_indent: BlockIndentStyle, BlockIndentStyle::Visual, "Indent on function arguments";
|
||||
type_punctuation_density: TypeDensity, TypeDensity::WhiteSpace,
|
||||
"Determines if '+' or '=' are wrapped in spaces in the punctuation of types";
|
||||
// Should we at least try to put the where clause on the same line as the rest of the
|
||||
// function decl?
|
||||
where_density: Density, Density::CompressedIfEmpty, "Density of a where clause";
|
||||
|
17
src/types.rs
17
src/types.rs
@ -21,6 +21,7 @@ use lists::{format_item_list, itemize_list, format_fn_args};
|
||||
use rewrite::{Rewrite, RewriteContext};
|
||||
use utils::{extra_offset, span_after, format_mutability, wrap_str};
|
||||
use expr::{rewrite_unary_prefix, rewrite_pair, rewrite_tuple};
|
||||
use config::TypeDensity;
|
||||
|
||||
// Does not wrap on simple segments.
|
||||
pub fn rewrite_path(context: &RewriteContext,
|
||||
@ -424,7 +425,12 @@ impl Rewrite for ast::TyParam {
|
||||
result.push_str(&bounds);
|
||||
}
|
||||
if let Some(ref def) = self.default {
|
||||
result.push_str(" = ");
|
||||
let eq_str = if context.config.type_punctuation_density == TypeDensity::Compressed {
|
||||
"="
|
||||
} else {
|
||||
" = "
|
||||
};
|
||||
result.push_str(eq_str);
|
||||
let budget = try_opt!(width.checked_sub(result.len()));
|
||||
let rewrite = try_opt!(def.rewrite(context, budget, offset + result.len()));
|
||||
result.push_str(&rewrite);
|
||||
@ -467,8 +473,15 @@ impl Rewrite for ast::Ty {
|
||||
ast::TyObjectSum(ref ty, ref bounds) => {
|
||||
let ty_str = try_opt!(ty.rewrite(context, width, offset));
|
||||
let overhead = ty_str.len() + 3;
|
||||
Some(format!("{} + {}",
|
||||
let plus_str = if context.config.type_punctuation_density ==
|
||||
TypeDensity::Compressed {
|
||||
"+"
|
||||
} else {
|
||||
" + "
|
||||
};
|
||||
Some(format!("{}{}{}",
|
||||
ty_str,
|
||||
plus_str,
|
||||
try_opt!(bounds.rewrite(context,
|
||||
try_opt!(width.checked_sub(overhead)),
|
||||
offset + overhead))))
|
||||
|
Loading…
Reference in New Issue
Block a user