gleam icon indicating copy to clipboard operation
gleam copied to clipboard

Formatter: no line-breaking for long boolean expressions

Open edkelly303 opened this issue 3 years ago • 1 comments

In Gleam 0.12.0

fn something() -> Bool {
  let some_long_variable_name = 1
  let some_other_long_variable_name = 2
  let some_third_long_variable_name = True
  let some_fourth_long_variable_name = False
  some_long_variable_name > some_other_long_variable_name || some_third_long_variable_name && some_fourth_long_variable_name
}

gleam format doesn't seem to attempt to break the the boolean expression over multiple lines, no matter how long it gets.

Not sure what the best place to break would be. Perhaps start by breaking on any || or &&s?

some_long_variable_name > some_other_long_variable_name 
  || some_third_long_variable_name 
  && some_fourth_long_variable_name

edkelly303 avatar Nov 07 '20 18:11 edkelly303

Something like that would be good, though I don't mind the exact formatting so much.

I think we could expand it more generally to any binary operations too.

lpil avatar Nov 07 '20 18:11 lpil

There is also something like this. I also think it looks better if the break is on operators!

massivefermion avatar Nov 06 '22 09:11 massivefermion

Another example:

pub fn to_string(color color: Color) -> String {
  int.to_string(color.red) <> ", " <> int.to_string(color.green) <> ", " <> int.to_string(
    color.blue,
  ) <> ", " <> float.to_string(color.alpha)
}

inoas avatar Nov 28 '22 13:11 inoas

I think this can be closed now!

giacomocavalieri avatar Apr 08 '24 13:04 giacomocavalieri

Thank you

lpil avatar Apr 08 '24 17:04 lpil