YAS Style
JuliaFormatter.YASStyle — TypeYASStyle()Formatting style based on YASGuide and JuliaFormatter#198.
Configurable options with different defaults to DefaultStyle are:
always_for_in= truealways_use_return= trueimport_to_using= truejoin_lines_based_on_source= truepipe_to_function_call= trueremove_extra_newlines= trueseparate_kwargs_with_semicolon= trueshort_to_long_function_def= truewhitespace_in_kwargs= falsewhitespace_ops_in_indices= trueyas_style_nesting= false
Configuration File Example
The .JuliaFormatter.toml which represents these settings is
style = "yas"Or to use YASStyle except change one of the settings:
style = "yas"
remove_extra_newlines = falseDirect Usage
format("file.jl", YASStyle())Or to use YASStyle except change one of the settings:
format("file.jl", YASStyle(), remove_extra_newlines=false)Differences from DefaultStyle
There are three main differences between YASStyle and DefaultStyle. They are based on alignment and line break behaviors.
- Arguments are aligned to just after the start of the opener
[, {, (, etc.
function_call(arg1,
arg2)As you can see from the above the closer sticks to the final argument.
Nesting (line breaks) only occur when the margin of the next argument exceeds the maximim limit.
function_call(arg1, arg2,
arg3)arg3 exceeded the margin limit and so it was placed on the following line.
Nesting =
Unlike DefaultStyle, assignment operations = are not nested. That is, the following
my_function(arg1, arg2) = arg1 * arg2Is not nested to
my_function(arg1, arg2) =
arg1 * arg2It is highly recommended setting short_to_long_function_def to true. This option transforms the above to a long function definition if it exceeds the maximum margin.
function my_function(arg1, arg2)
arg1 * arg2
endAdditional Options
The YASStyle supports the additional option variable_call_indent, which is set to [] by default. It allows calls without aligning to the opening parenthesis:
# Allowed with and without `Dict in variable_call_indent`
Dict{Int,Int}(1 => 2,
3 => 4)
# Allowed when `Dict in variable_call_indent`, but
# will be changed to the first example when `Dict ∉ variable_call_indent`.
Dict{Int,Int}(
1 => 2,
3 => 4)