LS: smart indentation

Implementation of smart indentation that uses new syntax trees
Also, it feels like the caller should be making this judgment