Align function arguments on their own lines
Haskell, 115 bytes

import Data.Lists
f x|(a,b:c)&lt;-span(/='(')x,(d,e)&lt;-span(/=')')c=a++b:intercalate(",\n "++(a&gt;&gt;" "))(splitOn", "d)++e


Usage example:

*Main&gt; putStrLn $ f "fn f(a: i32, b: f64, c: String) -&gt; (String, Vec&lt;i32&gt;) {"
fn f(a: i32,
     b: f64,
     c: String) -&gt; (String, Vec&lt;i32&gt;) {


How it works:

bind
  a: everything before the first (
  b: the first (
  c: everything after the first (
  d: everything of c before the first )
  e: everything of c from the first ) to the end

construct the output string by concatenating
  a
  b
  splitting d at the argument separator ", " and rejoining it with ",\n " followed by (length a) spaces    
  e