LS: smart indentation

Implementation of smart indentation that uses new syntax trees
Don't need the type annotation, but I don't actually mind it.