I’ve come across a few instances recently where the built-in formatter is breaking otherwise working code. As an example, take a Phoenix component with a moderately long default string attribute:
attr :text_color, :string, default: "text-gray-900 hover:text-primary-700 dark:text-gray-400 dark:hover:text-white"
attr :border, :string, default: "border focus:outline-none"
def button(assigns) do
end
This code works fine, except that with default settings the text_color
attribute gets broken into 2 lines and a new line added below:
attr :text_color, :string,
default: "text-gray-900 hover:text-primary-700 dark:text-gray-400 dark:hover:text-white"
attr :border, :string, default: "border focus:outline-none"
def button(assigns) do
end
The additional line between the two attr/3
statements breaks the component and results in a compiler error.
I’ve worked around this by adding line_length: 120
to my .formatter.exs file, but this is not an ideal workaround. I’m struggling to find a way to override the rule that’s causing this to break; can it be set to ignore attr/3
line length, for example, or even not apply the rule in this file type?