YAS Style
JuliaFormatter.YASStyle — Type
YASStyle()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)