I've found it not work well when I split view and maybe when I open new window.
Summary:
Added watching after each created window (I hope it is OK).
Unregistered event listener for LayoutChanged after view closed. Don't know if it hurt anything. Probably the event will never be fired after view close anyway.
Added overflow for start/end in OnSettingsSaved() (or was it intentional to not count the overflow there?)
Visible start and end are counted from min/max of what is visible on each view. Possibly can be processed whole file when one view is at start and other at end.
Fixed bug in IsAboveChange() - was not counting above change but above visible (and carets could write text outside visible area)
I've found it not work well when I split view and maybe when I open new window. Summary: