Me porting Runestone from UIKit to AppKit.

Currently leaning towards having separate implementations of TextView for UIKit and AppKit with shared logic moved into separate types. The alternative is a single implementation with lots of if-else-endif macros.

It makes for some duplicated logic but also means that the two implementations can easily be maintained and implemented in isolation.

@simonbs I really dislike maintaining macro “if” based multiplatform code. I always try to structure my way out of it, like what you describe.

Much easier to read and reason about I think.