I recently published an update to s9e\TextFormatter that adds a return value to s9e.TextFormatter.preview(). The method now returns the last node modified, which will be either an element or a text node. If no node was modified it will return the preview element. Using this node, it's possible to scroll the preview element to show what's being changed. I published a demo at http://s9e.github.io/TextFormatter/scroller.html -- If you modify the text at the bottom, it scrolls to the bottom and if you modify things at the top, it scrolls back to the top. This demo uses getBoundingClientRect() and scrollIntoView() (see scrollToNode() in the demo's source) but there may be better ways to do this.
I don't know whether it can be turned into something useful, I'm just hoping someone will have a good idea. ?
Note that there's no way to use this feature to scroll the preview based on the cursor position. I have no idea how that could be done in this context. It probably can't be done, at least not properly.