Optimization in KDE Base
Improve the smart-ranges so they don't confine child-ranges to each other, without significant performance-overhead in the case of non-overlapping children.
This undocumented behavior was very hard to deal with in complex applications like KDevelop's C++ support, and hard to debug.
Now the child-ranges are sorted by end-cursor, and each range maintains the count of later ranges it is overlapped by. This allows efficient manipulation and efficient rendering.
This includes a lot of #ifdeffed debugging and verification code, that has proven that it works quite well.
Rendering of overlapped child-ranges works too. Whenever overlapped children are encountered, a new KateRenderRange is created for the additional overlapping children.