I'm trying to make customising the app itself a similar thing, and as easy as, using the UI module.
This is a great idea.
One thing I could see being really powerful in this module is a ui.View type class for each element in the editor. You could have a classes for Gutter, TabVC, etc. Calling functions or setting properties on these could combine functionality from many different sources.
I think to implement this, it would make sense to have a custom theme for the module.
Say I was working with a Gutter class that describes the gutter on the left side of the editor (with the line numbers). If I called a method like add_subview on this class, it would call an objc_util function to make that happen. Setting properties could also wrap objc_util functions.
Certain properties could be set to perform other actions when set, though. If I set the property background_color of Gutter, the module would be smart enough to change the corresponding property in the JSON file of the theme, instead of calling an objc_util function, since themes are more stable/permanent.
This could create an easy programmatic interface for scripts to control the appearance of the editor, and would be a good use of classes.
In this case, we'd be using classes not for their powers of subclassing, but for their power to make code efficient, readable, and convenient.