Expressions can generally be split after commas, operators, and opening parentheses if the line is indented, e.g.:
proc fact(n: int): int =
if n <= 1:
1
else:
`*`(n,
fact(
n -
1))
Note that if you don't have an indentation after the first line break, the parser seems to assume that you wrote two separate statements and forgot to end them properly.
Line breaks in proc declarations are a bit more permissive, in that you can have line breaks practically anywhere between the parentheses, though it's probably a good idea to do that only after commas for readability.
I don't know if there's a hard and fast rule. This is what I found out through experimentation a while ago.