mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-04 04:39:16 +00:00
Optionally put the opening paren on the previous line for args
This commit is contained in:
parent
b7579f6f6d
commit
fdd7baeae9
@ -19,6 +19,7 @@ pub struct Config {
|
||||
pub newline_style: ::NewlineStyle,
|
||||
pub fn_brace_style: ::BraceStyle,
|
||||
pub fn_return_indent: ::ReturnIndent,
|
||||
pub fn_args_paren_newline: bool,
|
||||
pub struct_trailing_comma: bool,
|
||||
pub struct_lit_trailing_comma: ::lists::SeparatorTactic,
|
||||
}
|
||||
|
@ -5,5 +5,6 @@ tab_spaces = 4
|
||||
newline_style = "Unix"
|
||||
fn_brace_style = "SameLineWhere"
|
||||
fn_return_indent = "WithArgs"
|
||||
fn_args_paren_newline = true
|
||||
struct_trailing_comma = true
|
||||
struct_lit_trailing_comma = "Vertical"
|
||||
|
25
src/items.rs
25
src/items.rs
@ -130,13 +130,26 @@ impl<'a> FmtVisitor<'a> {
|
||||
let ret_str = self.rewrite_return(&fd.output);
|
||||
|
||||
// Args.
|
||||
let (one_line_budget, multi_line_budget, arg_indent) =
|
||||
self.compute_budgets_for_args(&mut result, indent, ret_str.len(), newline_brace);
|
||||
let (one_line_budget, multi_line_budget, mut arg_indent) =
|
||||
self.compute_budgets_for_args(&result, indent, ret_str.len(), newline_brace);
|
||||
|
||||
debug!("rewrite_fn: one_line_budget: {}, multi_line_budget: {}, arg_indent: {}",
|
||||
one_line_budget, multi_line_budget, arg_indent);
|
||||
|
||||
result.push('(');
|
||||
if one_line_budget <= 0 {
|
||||
if config!(fn_args_paren_newline) {
|
||||
result.push('\n');
|
||||
result.push_str(&make_indent(arg_indent));
|
||||
arg_indent = arg_indent + 1;
|
||||
result.push('(');
|
||||
} else {
|
||||
result.push_str("(\n");
|
||||
result.push_str(&make_indent(arg_indent));
|
||||
}
|
||||
} else {
|
||||
result.push('(');
|
||||
}
|
||||
|
||||
result.push_str(&self.rewrite_args(&fd.inputs,
|
||||
explicit_self,
|
||||
one_line_budget,
|
||||
@ -330,7 +343,7 @@ impl<'a> FmtVisitor<'a> {
|
||||
}
|
||||
|
||||
fn compute_budgets_for_args(&self,
|
||||
result: &mut String,
|
||||
result: &String,
|
||||
indent: usize,
|
||||
ret_str_len: usize,
|
||||
newline_brace: bool)
|
||||
@ -365,8 +378,6 @@ impl<'a> FmtVisitor<'a> {
|
||||
|
||||
// Didn't work. we must force vertical layout and put args on a newline.
|
||||
if let None = budgets {
|
||||
result.push('\n');
|
||||
result.push_str(&make_indent(indent + 4));
|
||||
// 6 = new indent + `()`
|
||||
let used_space = indent + 6;
|
||||
let max_space = config!(ideal_width) + config!(leeway);
|
||||
@ -375,7 +386,7 @@ impl<'a> FmtVisitor<'a> {
|
||||
// TODO take evasive action, perhaps kill the indent or something.
|
||||
} else {
|
||||
// 5 = new indent + `(`
|
||||
budgets = Some((0, max_space - used_space, indent + 5));
|
||||
budgets = Some((0, max_space - used_space, indent + 4));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user