All work

mySublimeBasis

Typed base classes and a mock layer for writing Sublime plugins.

Source on GitLab Sublime Text · MPL-2.0 · v0.7.0
A generic base class, MyBase parameterized by a CommandArguments model (1,390 lines), sits above a grid of eleven plugin base classes. Rows are App, Window, View, and Buffer; columns are command and listener. Six sync classes extend the sublime_plugin types (cyan) and five async classes use sublime_aio (amber): App command, Window command, and the App, View, and Buffer listeners each have an async twin. Three cells are empty because the class does not exist: View has no async command, Buffer has no command, and Window has no listener. MyBase[I: CommandArguments] 1,390 lines command listener App sync async sync async Window sync async View sync sync async Buffer sync async sublime_plugin sublime_aio 11 classes

A much more ergonomic & efficient framework for plugins, and the shared foundation for mine: typed command-argument models, helpers for views and windows, and a mock layer that stands in for Sublime's modules so plugin logic can be tested as ordinary Python.

It also bridges newer PyPI packages into Sublime's Python host before Package Control carries them.