Snippet Injection for Function Autocompletion

Functions are completet as snippets with its parameters as tabstops.
Exampels:
  func foo(bar string) -> foo(${1:bar string})
Fuctions as parameters are allowed too:
  func foo(f func(bar int), baz int) ->
    foo(${1:f func(${2:bar int})}, ${3:baz int})